基础篇10-频域滤波(下)--实现

本节介绍各类频率滤波器的构造和使用方法。

目录

1 引言

2 低通/高通滤波器

2.1 理想低通

2.2 高斯低通

2.3 理想高通

3 带通滤波器

3.1 理想带通

3.2 高斯带通

3.3 正弦带通

4 其他频率滤波器

4.1 导数滤波器

4.2 Gabor滤波器

5 小结


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(直流项)在频域中的位置。取值如下:
  1. 'dc_center': 直流分量(零频率)位于图像中心,默认值。
  2. '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年上半年完成全部内容,欢迎加收藏。但由于到了假期,更新的速度不会很快。

在专栏全部完成之前,所有内容将一直免费。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值