我处理图像,像素可以有的最大值是255,但是在旋转图像后进行卷积时,值会急剧增加,达到1000s,因此会给我一个白色图像。这背后的原因是什么?
以下是代码:
h.extend([scipy.misc.imrotate(h[0], 15*i, 'bicubic') for i in range(1, 12)])
h = np.asarray(h)
print h.shape
R = []
for i in range(0, 12):
R.append(scipy.signal.convolve2d(self.img, h[i], mode = 'same'))
R = np.asarray(R)
rt = np.zeros(self.img.shape)
x, y = self.img.shape
print (x,y)
for i in range(0, x):
for j in range(0, y):
for k in range(0, 12):
if k == 0:
max_er = R[k][i, j]
#print max_er
if(R[k][i, j]>max_er):
max_er = R[k][i, j]
rt[i, j] = max_er
答案 0 :(得分:0)
我不是二维卷积的专家,但我会解释一维卷积,希望你能看到它与二维卷积的关系。卷积定义如下(对于离散序列):
(f*g)[n] = sum over all i f[i] * g[n-i]
f
和g
需要紧凑支持(即无法将非零值关闭到无穷大)。例如,将f和g取为:
f = 1,1,1,1
g = 1,1,1,1
f*g = 1,2,3,4,3,2,1
如您所见,f
和g
的卷积导致的值大于任一序列输入中的值。大致这可能是因为a+b
和a*b
可能导致值大于a
或b
中存在的值。简而言之,没有理由相信卷积将仅限于输入值。
2D卷积定义为:
(f*g)[m,n] = sum over all j sum over all i f[i,j] * g[m-i,n-j]
答案 1 :(得分:0)
您可以使用名为astropy的librairy。你有很多函数可以进行卷积等。你可以处理图像/数据表等...