1
我有一個尺寸爲(3,2)
的二維數組,我必須使用最近鄰居,線性和雙三次插值方法重新採樣,以便尺寸變成(4,3)
。二維numpy陣列的二次採樣
我正在使用Python,numpy
和scipy
爲此。
如何實現輸入數組的重採樣?
我有一個尺寸爲(3,2)
的二維數組,我必須使用最近鄰居,線性和雙三次插值方法重新採樣,以便尺寸變成(4,3)
。二維numpy陣列的二次採樣
我正在使用Python,numpy
和scipy
爲此。
如何實現輸入數組的重採樣?
有一個很好的教程,使用卷積here重新採樣。
對於整數因子向上擴展:
import numpy
import scipy
from scipy import ndimage, signal
# Scale factor
factor = 2
# Input image
a = numpy.arange(16).reshape((4,4))
# Empty image enlarged by scale factor
b = numpy.zeros((a.shape[0]*factor, a.shape[0]*factor))
# Fill the new array with the original values
b[::factor,::factor] = a
# Define the convolution kernel
kernel_1d = scipy.signal.boxcar(factor)
kernel_2d = numpy.outer(kernel_1d, kernel_1d)
# Apply the kernel by convolution, seperately in each axis
c = scipy.signal.convolve(b, kernel_2d, mode="valid")
注意的因素可以爲每個軸不同,而且你也可以申請卷積順序,在每個軸上。雙線性和雙立方體的內核也顯示在鏈接中,雙線性內插使用三角形信號(scipy.signal.triang
)和雙立方體是片段函數。
您還應該介意內插圖像的哪一部分是有效的;沿着邊緣沒有足夠的內核支持。
就三維圖像而言,雙三次插值是三者中最好的選擇。
什麼意思是重新取樣?你有沒有鏈接來解釋這意味着什麼? –
實際上,我需要將低分辨率圖像轉換爲高分辨率,但使用numpy。 – Joel
我不認爲這是可能的,除非你有一個更好的分辨率的原始圖像。一旦拍攝完圖像,該圖像中就沒有子像素信息... –