卷积定理的证明(魔幻滤镜)

 2025-08-13 10:36:01  阅读 963  评论 0

摘要:Gabor滤波,可以实现上图类似的魔幻效果。本文只是预先给出原理部分和源代码实现,实际的应用于实践部分在后续文章。Gabor滤波本文首先看看Gabor到底为何物,它的各种参数都有什么含义,以及如何用C++和Python实现它。这是纯干货,虽然枯燥了点,但是后续的应用应该会更有意思

Gabor滤波,可以实现上图类似的魔幻效果。本文只是预先给出原理部分和源代码实现,实际的应用于实践部分在后续文章。

Gabor滤波

本文首先看看Gabor到底为何物,它的各种参数都有什么含义,以及如何用C++和Python实现它。这是纯干货,虽然枯燥了点,但是后续的应用应该会更有意思。不着急,我们慢慢来。

以下定义翻译引用自维基百科:

在图像处理领域,以Dennis Gabor命名的Gabor滤波器,是一种用于纹理分析的线性滤波器,即它主要分析的是,图像在某一特定区域的特定方向上是否有特定的频率内容。当代许多视觉科学家认为,Gabor滤波器的频率和方向的表达与人类的视觉系统很相似,尽管并没有实验性证据和函数原理能证明这一观点。研究发现,Gabor滤波器特别适合于纹理表示和辨别。在空间域中,2D Gabor滤波器是由正弦平面波调制的高斯核函数。

其脉冲响应定义为定义为一个正弦波(对于二维Gabor滤波器是平面波)乘以高斯函数。因为乘法卷积性质(卷积定理),由于乘法卷积性质,Gabor滤波器的脉冲响应的傅立叶变换是调和函数的傅立叶变换和高斯函数傅立叶变换的卷积。该滤波器具有表示正交方向的实部和虚部。两个分量可以构成复数或单独使用。

复数形式

实部

虚部

其中

如果你了解傅立叶变换的基础,那么你应该知道,图像可以视为各个方向的一系列不同频率的正弦波叠加而成。变换中的“像素”表示波的强度,“像素”的位置表示波的频率和方向。 在实践中,人们只想选择特定频率和特定方向的特定波。Gabor变换是许多所谓的带通滤波器之一,它允许你“切割”傅立叶变换,只隔离特定的信息。另一个重要信息是,每个傅立叶“像素”是一个复数值(包含实部和虚部)。

二维Gabor核函数由一个高斯包络函数和一个余弦函数相乘得出,其中θ,ϕ,γ,λ,σ为参数。

A complex Gabor filter is defined as the product of a Gaussian kernel times a complex sinusoid.

Gaussian envelope mentiond in this method determines the width of the Gaussian kernel.

Paper--- Fingerprint Image Enhancement: Algorithm and Performance Evaluation

需要注意的是,(x,y)是原始坐标,(x',y')是旋转后的坐标。在(x,y)坐标系中,Gabor只能沿x轴或y轴拉伸,但不能对角拉伸。但是上述最后两个公式允许Gabor能够在(x',y')坐标系中沿任何方向被拉伸(由θ定义)。

Python实现

维基百科给出了Gabor函数的Python实现。放在下面供参考。

Gabor函数的OpenCV实现

跟其他滤波器(高斯,Sobel)等一样,需要先确定一个卷积核,然后用次卷积核通过滑窗法对输入图像进行卷积运算,得到输出图像。Gabor函数的OpenCV实现getGaborKernel函数,正是为了得到这个卷积核的。为在OpenCV中的

getGaborKernel

函数里需要传入的参数除了上述5个外,还需要传入卷积核的大小。
cv::Mat getGaborKernel(Size ksize, double sigma, double theta, double lambd, double gamma, double psi=CV_PI*0.5, int ktype=CV_64F );
cv2.getGaborKernel(ksize, sigma, theta, lambda, gamma, psi, ktype)

各参数含义

ksize:返回的滤波器的大小,即Gabor核的大小。如果ksize=(a,b),那么Gabor核的大小即为axb像素。与许多其他的卷积核一样,这个尺寸一般取奇数而且为正方形。

sigma:σ是Gabor过滤器中实用的高斯函数的标准差。

theta:θ是Gabor函数的平行条纹的法线方向。有效值为从0~360度的实数。

lambda:λ是上述方程中正弦因子的波长。有效值应大于2,以像素为单位。

gamma:γ是空间宽高比,表示Gabor滤波器的椭圆度

psi:ψ是相位偏移。有效值为-180度~180度,0度和180度对应的方程与原点对称,-90度和90度的方程分别于原点成中心对称,可两项直角坐标系中的余弦函数。

ktype:像素类型。

OpenCV的Gabor源码

源码在opencv\sources\modules\imgproc\src\gabor.cpp

仔细看上下两种实现的话,可以明显看出OpenCV的实现参考了维基百科的Python实现。只不过在加了一个确定卷积和大小的参数而已。而且在这个参数为(0,0)的时候,采用的正是维基百科中的方法。

版权声明:我们致力于保护作者版权,注重分享,被刊用文章【卷积定理的证明(魔幻滤镜)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;

原文链接:https://www.yxiso.com/zhishi/2091246.html

发表评论:

关于我们
院校搜的目标不仅是为用户提供数据和信息,更是成为每一位学子梦想实现的桥梁。我们相信,通过准确的信息与专业的指导,每一位学子都能找到属于自己的教育之路,迈向成功的未来。助力每一个梦想,实现更美好的未来!
联系方式
电话:
地址:广东省中山市
Email:beimuxi@protonmail.com

Copyright © 2022 院校搜 Inc. 保留所有权利。 Powered by BEIMUCMS 3.0.3

页面耗时0.0433秒, 内存占用1.93 MB, 访问数据库24次

陕ICP备14005772号-15