基于内核Python的图像去噪

2024-10-03 04:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我尝试创建一个函数,它将对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}$

有人能帮我找出错误并指引我走上正确的道路吗?如果可能的话,我想保留这个结构,因为我在一个计算入门课上,不允许我使用高级计算技术。在


Tags: 数据infordatanpzerosrangekernel