我不明白有人会如何提出一个简单的称为内核的3x3矩阵,因此将其应用于图像时会产生一些令人敬畏的效果。示例:http://en.wikipedia.org/wiki/Kernel_(image_processing)。为什么行得通?人们是如何提出这些内核的(试错法?)?是否有可能证明它适用于所有图像?
最佳答案
直观地讲,图像I与内核K的卷积会生成一个新图像,该图像是通过对每个像素的所有附近像素(由K权重加权)计算出加权总和而形成的。即使您不知道什么是卷积是的,这个想法似乎仍然很合理。您可以使用它来产生模糊效果(通过对附近像素进行高斯加权)或锐化边缘(通过从其相邻像素减去每个像素,而在其他任何地方都不施加权重)。实际上,如果您知道需要进行所有操作这些操作,尝试编写一个给定I和K进行附近像素加权总和的函数,并尝试尽可能积极地优化该函数(因为您可能会经常使用它)。
为了从那里获得卷积的概念,您可能需要具有傅里叶变换和傅里叶级数的背景。卷积在该领域是一个很自然的想法-如果您计算两个图像的傅立叶变换并将其相乘,最终将计算出卷积的变换。数学家已经解决了一段时间,可能是回答了一个很自然的问题:“哪个函数的傅立叶变换是由另外两个傅立叶变换的乘积定义的?”,从那时开始,找到连接只是一个时间问题。由于傅里叶变换已经广泛用于计算中(例如,在网络中的信号处理中),我的猜测是具有傅里叶级数背景的人注意到他们需要将内核K应用于图像I,然后意识到这是当在频率空间中完成操作时,这种方法更容易实现,并且计算效率更高。
老实说,我不知道真实的历史是什么,但这是一个很合理的解释。
希望这可以帮助!
关于c - 为什么与内核进行卷积有效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18970864/