使用内核进行图像去噪 - Python

时间:2013-04-01 21:21:16

标签: python image

所以我试图创建一个函数,将一个5乘5平滑内核应用于2D图像数据,这将返回一个与数据形状相同的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各自的范围,通过找到5-by-5的点积找到其5 x 5邻居的加权平均值每个i和j的5个邻居(我将数据的形状改为(1,25)以允许计算更容易)在范围和内核中(出于前一原因对内核的形状做了相同的操作)。但是,我收到的错误是:

Traceback (most recent call last):
  File "/Users/jbunker7/Documents/Comp 116/M2_COMP116-003/P5.py", line 40, in <module>
    result = applyFilter(data, kernel)
  File "/Users/jbunker7/Documents/Comp 116/M2_COMP116-003/P5.py", line 30, in applyFilter
    ret[i,j]=np.dot(d,k)
ValueError: matrices are not aligned

有人可以帮我识别错误并引导我走上正确的道路吗?如果可能的话,我希望保留这种结构,因为我在介绍性计算课程中,并且我不允许使用高级计算技术。

0 个答案:

没有答案