Python中2D图像的非均匀采样

时间:2015-03-05 00:36:15

标签: python opencv image-processing numpy computer-vision

我有一个2D图像,可以用Python表示为Numpy数组。我需要对这种图像进行下采样,使得下采样更多地发生在侧面,而不是在中心。更具体地说,让我们说下采样率为2,中心为4,边界为4,其他点为中间距离(相对于中心距离)。换句话说,我在下面的代码中寻找nonUniformDownsample函数:

img = cv2.imread("flower.jpg") 
img_focused = nonUniformDownsample(image=img, centerVal=2, borderVal=4)

1 个答案:

答案 0 :(得分:1)

我不确定我理解你的问题/目标,但评论scipy.interpolate.griddata应该有效。你可以使用这样的东西:

X,Y = np.meshgrid(np.linspace(-1,1,100), np.linspace(-1,1,100))
A = np.sin(9.5*pi*X) + np.sin(9.5*np.pi*Y)

此处A如下所示:

enter image description here

n = 50
X_, Y_ = np.meshgrid(np.linspace(-1,1,n), np.linspace(-1,1,n))
X_ = (3*X_**3 + X_) / 4
Y_ = (3*Y_**3 + Y_) / 4

x = np.dstack((X,Y)).reshape((100*100, 2))
xi = np.dstack((X_,Y_)).reshape((n*n, 2))
A_ = griddata(x, A.flat, xi, method='cubic')

A_看起来像这样:

enter image description here