图像与内核的卷积,内核是两个函数的乘积

信息处理 图像处理 过滤器 信号分析 卷积 傅立叶
2022-01-30 11:36:13

假设G(i,j)是关于点之间距离的高斯衰减函数ij的图像。此外,D(i,j)是图像在这些点上的值之间的差异。现在,在每一点i我需要计算相邻图像的总和G(i,j)D(i,j),这是两个函数的乘积。这是一个类似卷积的操作:对于每个点,我在每个相邻点添加一个函数的贡献。但是,我不知道这是否可以表示为卷积,因为 G 和 D 是不同变量的函数:距离(原始高斯滤波器)和图像强度差异。我需要帮助将总和表示为卷积运算的组合,以便在不需要循环的情况下轻松地在程序中对其进行编码。此外,它可以让我在频域中做到这一点。任何帮助将不胜感激!

2个回答

它相当于一个双边滤波器。您可以将内核移动到图像的每个局部部分以进行点积,然后将它们相加以获得循环中的结果。在matlab 编程中还有一个 O(1) 的快速实现供您参考。相关出版物有:

  1. KN Chaudhury、D. Sage 和 M. Unser,“使用三角范围内核的快速 O(1) 双边滤波”,IEEE 图像处理汇刊,第一卷。20,没有。2011 年 11 月 11 日。

  2. KN Chaudhury,“用于双边滤波和非局部均值的可移位 O(1) 算法的加速”,arXiv:1203.5128v1。

我假设高斯核是位置偏移不变的。所以归一化意味着内核内部元素的总和等于1。对于3 * 3的高斯内核,它是

1/16  2/16  1/16
2/16  4/16  2/16
1/16  2/16  1/16

双边滤波器也可以用高斯核与强度核乘积的积分K因子进行归一化。您可以同时尝试观察归一化对图像数据的影响。

令*表示卷积操作,G表示高斯内核,&h& 其他一些内核,我是你的形象。

卷积是线性运算:G*H*一世=G*(H*一世)

梯度运算也是线性运算。

(G*一世)=(G)*一世

出于这个原因,如果你首先区分你的内核然后应用它,你最终会得到平滑的渐变。实际上,这就是 Sobel 所取得的成就:

http://en.wikipedia.org/wiki/Sobel_operator

如果在应用 Sobel 之前进一步平滑图像,这实际上会产生与增加内核大小相同的效果。

有关差异和高斯技巧的更多信息,我还建议您查看 http://en.wikipedia.org/wiki/Difference_of_Gaussians