Python腳本:增加3D圖表清晰度(插值法)

先貼效果圖:右邊是處理後

代碼:

from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
from scipy import interpolate
import matplotlib as mpl
import matplotlib.cm as cm

fig = plt.figure()
tmp=np.empty([12,16])
Z=[]
ax = Axes3D(fig)
adc=[31.6,32.1,31.4,31.6,31.2,31.0,30.8,31.4,31.0,30.9,30.4,
29.5,28.5,28.1,28.6,29.2,31.6,32.2,31.8,31.9,31.4,
31.2,31.1,31.9,31.2,31.3,31.3,31.0,30.6,30.0,29.8,
29.6,31.1,32.3,32.2,32.1,31.8,31.7,31.5,32.0,31.6,
31.3,31.7,31.1,30.3,29.7,30.9,30.7,28.5,31.1,31.6,
32.1,34.0,34.2,33.3,32.0,31.1,30.8,30.0,27.8,27.6,
27.9,28.8,30.8,27.4,26.6,26.5,28.3,34.1,34.7,33.7,
28.3,26.7,26.6,26.4,26.5,26.5,26.4,26.6,27.5,26.1,
25.8,25.9,26.8,32.5,34.5,31.9,30.3,26.9,26.5,26.3,
26.3,26.4,26.3,26.2,26.4,27.1,26.0,25.9,26.8,32.6,
32.9,31.5,31.1,27.3,26.4,26.3,26.3,26.3,26.3,26.3,
26.4,25.7,25.9,25.9,26.9,32.6,33.5,31.1,30.7,28.0,
26.4,26.3,26.2,26.3,26.3,26.3,26.3,25.8,25.9,26.1,
26.5,30.0,33.5,33.4,30.5,28.6,26.6,26.2,26.2,26.3,
26.2,26.2,26.4,28.2,28.0,25.8,25.7,26.3,28.0,29.1,
29.0,28.1,26.6,26.3,26.2,26.2,26.3,26.1,26.1,25.9,
25.5,25.5,25.5,25.6,25.7,25.9,26.1,26.4,26.2,26.1,
26.2,26.2,26.1,26.1,26.2,25.4,25.4,25.4,25.3,25.4,
25.3,25.1,25.4,25.6,26.1,26.2,26.1,26.2,26.2,26.2,26.5]

X = np.arange(0, 16, 1)

Y = np.arange(0, 12, 1)
X, Y = np.meshgrid(X, Y)

R = np.sqrt(X + Y)

for i in range(0,12):
    for j in range(0,16):
        tmp[i][j]=adc[i*16+j]

    
#二維插值
newfunc = interpolate.interp2d(X, Y, tmp, kind='cubic')#newfunc爲一個函數
# 計算100*100的網格上的插值
xnew = np.linspace(0,16,100)#x
ynew = np.linspace(0,12,100)#y
fnew = newfunc(xnew, ynew)#通過x,y計算的插值值保存到fnew
xnew, ynew = np.meshgrid(xnew, ynew)

ax.plot_surface(xnew, ynew, fnew, rstride=1, cstride=1, cmap='rainbow')
plt.show()
 

說明:

這是我在使用一款紅外溫度點陣傳感器的數據,它有16*12的點陣數據,在上面的代碼保存的數組有192個數字分別是這些像素點陣的溫度值,大概可以看到一個人的輪廓。

左邊是16*12,右邊通過插值函數interpolate.interp2d把原來的192個點增加到100*100個點,參數:kind='cubic'代表插值的方式爲3次多項式,實際上這幾行代碼就是把原來的數據轉換了一遍。。。

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章