所以我尝试创建一个函数,它将对2D图像数据应用一个5乘5的平滑内核,它将返回一个与数据形状相同的2D Numpy数组。以下是我目前所掌握的情况。在
def applyFilter( data, kernel ):
ret = np.zeros_like(data)
KI = kernel.shape[0]//2
KJ = kernel.shape[1]//2
d=np.zeros_like(kernel)
for i in range(KI, data.shape[0]-KI):
for j in range(KJ, data.shape[1]-KJ):
d=np.array(data[i-KI:i+KI+1,j-KJ:j+KJ+1])
d.shape=(1,25)
k=np.array(kernel)
k.shape=(1,25)
ret[i,j]=np.dot(d,k)
return ret
我要做的是,对于所有在各自范围内的I和j,通过求每个I和j的5×5邻域的点积来求其5×5邻域的加权平均数(我将数据的形状改为(1,25)以使计算更容易)在范围和内核中(由于前面的原因,对内核的形状做了相同的处理)。但是,我收到一个错误,它说:
^{pr2}$有人能帮我找出错误并指引我走上正确的道路吗?如果可能的话,我想保留这个结构,因为我在一个计算入门课上,不允许我使用高级计算技术。在
目前没有回答
相关问题 更多 >
编程相关推荐