本节介绍各类频率滤波器的构造和使用方法。
目录
1 引言
频域滤波器通过傅里叶变换将图像转换到频率域进行处理,能够有效实现特定频率特征的提取或抑制。
根据频率选择方式和应用场景,主要分为以下类型:
(1) 低通滤波器 (Low-pass Filter):
- 特征选择:保留低频分量,抑制高频成分
- 图像效果:平滑细节、去噪,但可能产生边缘模糊
- 数学形式:理想/高斯/布特沃斯模型(衰减梯度不同)
- 应用场景:医疗图像去噪、工业检测中的纹理平滑
(2) 高通滤波器 (High-pass Filter)
- 特征选择:增强高频分量,削弱低频区域
- 图像效果:突出边缘/纹理,但会放大噪声
- 参数特性:截止频率误差敏感(误差±5%锐度变化显著)
- 应用场景:表面缺陷检测、显微图像增强
(3) 带通滤波器 (Band-pass Filter)
- 特征选择:通过中心频率两侧的对称频率区间(通常3dB带宽为标定值)
- 时空特性:在指纹识别中能有效分离周期性背景噪声
- 工程实现:常通过低通与高通级联实现
(4) 带阻滤波器 (Band-stop Filter)
- 反选操作:消除特定频段(如消除扫描图像的条纹噪声)
- 参数特性:带宽定义为-3dB衰减区间,衰减深度可达40dB以上
- 应用验证:需通过功率谱分析确定干扰频率
(5) 同态滤波器 (Homomorphic Filter)
- 双域处理:同时处理光照(低频)与反射分量(高频)
- 非线性优化:采用对数域频域混合处理提升动态范围
- 控制参数:高频增益>1,低频增益<1(典型值:高频1.5,低频0.5)
2 低通/高通滤波器
常见的频域低通滤波器有:理想低通、巴特沃斯低通、高斯低通等,对应的高通滤波器也是三类:理想高通、巴特沃斯高通、高斯高通。
其中高通滤波可以通过低通滤波器得到。
2.1 理想低通
Halcon使用gen_lowpass算子生成的低通滤波器。进而将生成的低通滤波器会与图像的傅里叶变换结果相乘,以实现低通滤波效果。
算子声明:
gen_lowpass (LowPass, Frequency, Norm, Mode, Width, Height )
参数说明:
- ImageLowpass (输出参数): 生成的频域低通滤波器。
- Frequency (输入参数): 截止频率。
- Norm (输入参数): 滤波器的归一化系数。取值为‘None’或‘n’,默认值为‘None’。
- Mode (输入参数): 滤波器的模式参数,规定了DC(直流项)在频域中的位置。取值如下:
- 'dc_center': 直流分量(零频率)位于图像中心,默认值。
- 'dc_edge': 直流分量位于图像边缘。
- Width, Height (输入参数): 滤波核的尺寸。默认值都为512,若设为 -1,Halcon 自动计算合适的尺寸。
实例:
* 读取图像
read_image(Image, 'example_image.png')
* 将图像转换为灰度图像(如果必要)
rgb1_to_gray(Image, GrayImage)
* 获取图像尺寸
get_image_size(GrayImage, Width, Height)
* 生成低通滤波器
gen_lowpass(Lowpass, 30.0, 'dc_center', Width, Height)
* 对图像进行傅里叶变换
fft_image(GrayImage, ImageFFT)
* 将傅里叶变换结果与低通滤波器相乘
mult_image(ImageFFT, Lowpass, FilteredFFT, 1, 0)
* 对滤波后的结果进行逆傅里叶变换
fft_image_inv(FilteredFFT, FilteredImage)
* 显示结果
dev_display(FilteredImage)
注意事项:
- Sigma 值的选择会影响滤波效果,较大的 Sigma 值会导致更强的平滑效果。
- Mode 参数决定了滤波器的频率中心位置,通常使用 'dc_center' 即可。
2.2 高斯低通
Halcon使用gen_gauss_filter算子生成频域高斯滤波器模板。
算子声明:
gen_gauss_filter( : ImageGauss : Sigma1, Sigma2, Phi, Norm, Mode, Width, Height : )
参数说明:
- ImageGauss (输出参数): 生成的高斯滤波核图像(灰度值表示滤波权重)。
- Sigma1 (输入参数): 高斯分布在主方向(未旋转时沿 x 轴)的标准差,控制平滑强度。
- Sigma2 (输入参数): 高斯分布在次方向(未旋转时沿 y 轴)的标准差。若设为 0,则自动与 Sigma1 相同(各向同性高斯)。
- Phi (输入参数): 高斯滤波器的旋转角度(弧度),默认 0 表示不旋转。
- Norm (输入参数): 归一化方式:'none': 不归一化(直接使用高斯值)。'sum': 滤波核权重总和为 1(默认,避免亮度偏移)。'max': 滤波核最大值归一化为 1。
- Mode (输入参数): 频域滤波时的频率中心模式:'dc_center': 直流分量(零频率)位于图像中心(默认)。'dc_edge': 直流分量位于图像左上角(边缘)。
- Width, Height (输入参数): 滤波核的尺寸。默认值都为512,若设为 -1,Halcon 自动计算合适的尺寸。
使用说明:
- Sigma1 和 Sigma2: 值越大,平滑效果越强,但会丢失更多细节。若 Sigma2 < Sigma1,滤波器呈各向异性(适用于特定方向平滑)。典型初始值:Sigma1 = Sigma2 = 3.0。
- Width 和 Height: 设为 -1 时,Halcon 自动计算合理尺寸(覆盖高斯分布 99.7% 的能量)。手动设置时需确保尺寸足够大(例如 Width = 2*ceil(3*Sigma1) + 1)。
- 归一化(Norm): 空间域滤波通常用 'sum',避免亮度偏移。频域滤波可选 'none',因为后续操作(如逆变换)可能隐含归一化。
实例:
* 生成高斯滤波核(尺寸需与图像一致)
get_image_size(GrayImage, Width, Height)
gen_gauss_filter(GaussKernelFreq, 30.0, 30.0, 0.0, 'none', 'dc_center', Width, Height)
* 图像傅里叶变换
fft_image(GrayImage, ImageFFT)
* 频域滤波(相乘)
mult_image(ImageFFT, GaussKernelFreq, FilteredFFT, 1, 0)
* 逆傅里叶变换
fft_image_inv(FilteredFFT, FilteredImage)
* 显示结果
dev_display(FilteredImage)
2.3 理想高通
Halcon中仅提供了一个理想高通滤波器算子gen_highpass,使用它生成高通滤波器的算子。
高通滤波器在图像处理中常用于增强高频信息(如边缘、细节),同时抑制低频信息(如平滑区域)。它通常用于频域滤波。
算子声明:
gen_highpass ( : ImageHighpass : Frequency, Norm, Mode, Width, Height : )
参数说明:
- ImageHighpass (输出参数): 生成的频域理想高通滤波器。
- Frequency (输入参数): 截止频率,用于控制高通滤波器的过渡区域。截止频率越低,保留的低频成分越多;越高则保留的高频成分越多。。
- Norm (输入参数): 滤波器的归一化系数。。
- Mode (输入参数): 滤波器的模式参数,规定了DC(直流项)在频域中的位置。
- Width, Height (输入参数): 滤波核的尺寸。默认值都为512,若设为 -1,Halcon 自动计算合适的尺寸。
实例:
* 读取图像
read_image(Image, 'example.png')
rgb1_to_gray(Image, GrayImage)
* 获取图像尺寸
get_image_size(GrayImage, Width, Height)
* 生成高通滤波器(截止频率为 40.0)
gen_highpass(Highpass, 40.0, 'dc_center', Width, Height)
* 对图像进行傅里叶变换
fft_image(GrayImage, ImageFFT)
* 将傅里叶变换结果与高通滤波器相乘
mult_image(ImageFFT, Highpass, FilteredFFT, 1, 0)
* 对滤波后的结果进行逆傅里叶变换
fft_image_inv(FilteredFFT, FilteredImage)
* 显示结果
dev_display(FilteredImage)
3 带通滤波器
3.1 理想带通
Halcon使用gen_bandpass算子生成的理想带通滤波器。进而将生成的带通滤波器会与图像的傅里叶变换结果相乘,以实现带通滤波效果。
算子声明:
gen_bandpass ( : ImageBandpass : MinFrequency, MaxFrequency, Norm, Mode, Width, Height : )
参数说明:
- ImageBandpass (输出参数): 生成的频域理想带通滤波器。
- MinFrequency/MaxFrequency (输入参数):最小/最大频率,两者的差对应着带通滤波器通带的宽度。
- Norm (输入参数): 滤波器的归一化系数。取值为‘None’或‘n’,默认值为‘None’。
- Mode (输入参数): 滤波器的模式参数,规定了DC(直流项)在频域中的位置。
- Width, Height (输入参数): 滤波核的尺寸。默认值都为512,若设为 -1,Halcon 自动计算合适的尺寸。
3.2 高斯带通
Halcon使用gen_std_bandpass算子生成标准带通滤波器的算子。它通常用于图像处理中的频域滤波,以提取特定频率范围内的信息。
算子声明:
gen_std_bandpass ( : ImageFilter : Frequency, Sigma, Type, Norm,
Mode, Width, Height : )
参数说明:
- ImageFilter(输出参数): 生成的频域高斯带通滤波器。
- Frequency (输入参数):带通滤波器通带的宽度。
- Sigma (输入参数): 滤波器的带宽(对应于标准差)。
- Type (输入参数):滤波器类型(可选‘sin’和‘gauss’,默认值是‘sin’)。
- Norm (输入参数): 滤波器的归一化系数。取值为‘None’或‘n’,默认值为‘None’。
- Mode (输入参数): 滤波器的模式参数,规定了DC(直流项)在频域中的位置。
- Width, Height (输入参数): 滤波核的尺寸。默认值都为512,若设为 -1,Halcon 自动计算合适的尺寸。
3.3 正弦带通
Halcon使用gen_sin_bandpass算子生成的正弦带通滤波器。
算子声明:
gen_sin_bandpass ( : ImageFilter : Frequency, Norm, Mode, Width, Height : )
参数说明:
- ImageFilter (输出参数): 生成的频域正弦带通滤波器。
- Frequency (输入参数):正弦带通滤波器的频率。
- Norm (输入参数): 滤波器的归一化系数。取值为‘None’或‘n’,默认值为‘None’。
- Mode (输入参数): 滤波器的模式参数,规定了DC(直流项)在频域中的位置。
- Width, Height (输入参数): 滤波核的尺寸。默认值都为512,若设为 -1,Halcon 自动计算合适的尺寸。
缺少实例:
4 其他频率滤波器
4.1 导数滤波器
Halcon使用gen_derivative_filter算子生成的频域导数滤波器。该滤波器可用于图像锐化和边缘检测等。
算子声明:
gen_derivative_filter ( : ImageDerivative : Derivative, Exponent, Norm, Mode, Width, Height : )
参数说明:
- ImageDerivative (输出参数): 生成的频域正弦带通滤波器。
- Derivative(输入参数):指明导数方向,取值为: {’x’, ’y’, ’xx’, ’xy’, ’yy’, ’xxx’, ’xxy’, ’xyy’, ’yyy’},默认值为’x’。
- Exponent(输入参数):指数项,用于反变换。
- Norm (输入参数): 滤波器的归一化系数。取值为‘None’或‘n’,默认值为‘None’。
- Mode (输入参数): 滤波器的模式参数,规定了DC(直流项)在频域中的位置。
- Width, Height (输入参数): 滤波核的尺寸。默认值都为512,若设为 -1,Halcon 自动计算合适的尺寸。
缺少实例:
4.2 Gabor滤波器
Halcon使用gen_gabor算子生成的频域Gabor滤波器。
Gabor 滤波器是一种常用于图像处理中的线性滤波器,特别适用于纹理分析、边缘检测和特征提取等任务。它结合了高斯函数和正弦波的特性,能够在特定方向和频率上有效地提取图像特征。
算子声明:
gen_gabor ( : ImageFilter : Angle, Frequency, Bandwidth, Orientation, Norm, Mode, Width, Height : )
参数说明:
- ImageFilter (输出参数): 生成的Gabor滤波器。
- Angle(输入参数):角度的范围于方向范围成反比。
- Frequency(输入参数):DC项与频域中心的距离。
- Bandwidth(输入参数):带宽范围。
- Orientation(输入参数):主方向。
- Norm (输入参数): 滤波器的归一化系数。取值为‘None’或‘n’,默认值为‘None’。
- Mode (输入参数): 滤波器的模式参数,规定了DC(直流项)在频域中的位置。
- Width, Height (输入参数): 滤波核的尺寸。默认值都为512,若设为 -1,Halcon 自动计算合适的尺寸。
5 小结
本节介绍了几类常见的频率滤波器的构建算子,包括低通、高通、带通,以及部分特殊的频域算子。这些算子在图像处理领域有着广泛的应用。
(初稿完成,最新更新2025-02-21)
本专栏将介绍基于Halcon的各种传统经典的数字图像处理技术,所介绍内容基本与Gonzalez的教材基本保持一致。作为学习和实践DIP技术的入门教程。
感谢大家的支持和浏览,本专栏将持续更新(每周至少更新1篇),每篇的篇幅控制在5000字左右,这样大家阅读起来也比较轻松。估计2025年上半年完成全部内容,欢迎加收藏。但由于到了假期,更新的速度不会很快。
在专栏全部完成之前,所有内容将一直免费。