• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

同态滤波详解

mp admin 4年前 (2015-10-09) 4711次浏览 0个评论 扫描二维码

利用广义叠加原理对同态系统进行滤波。
同态滤波是把频率过滤和灰度变换结合起来的一种图像处理方法,它依靠图像的照度/ 反射率模型作为频域处理的基础,利用压缩亮度范围和增强对比度来改善图像的质量。使用这种方法可以使图像处理符合人眼对于亮度响应的非线性特性,避免了直接对图像进行傅立叶变换处理的失真。
同态滤波的基本原理是:将像元灰度值看作是照度和反射率两个组份的产物。由于照度相对变化很小,可以看作是图像的低频成份,而反射率则是高频成份。通过分别处理照度和反射率对像元灰度值的影响,达到揭示阴影区细节特征的目的。
图像从物理过程中产生时, 它的值正比于物理源的辐射能量, 因此, 图像 f(x,y)的能量一定是非零且有限的。函数 f(x,y)可由 2 个分量来表示: 这 2 个分量相应地称为入射分量和反射分量, 分别用 i(x,y) 和 r(x,y)表示。那么最后形成的数字图像 f(x,y)可表示为

采用( 1) 式的成像模型不能直接对照射和反射的频率部分分别进行操作, 因为 2 个函数乘积的傅里叶变换是不可分的。即 F ( f ( x , y ) ) ≠F ( i( x , y ) ) F( r( x , y ) ) 。反射分量 r( x , y ) 反映图像的内容, 它随图像细节的不同在空间作快速变化, 是频域的高频分量。入射分量 i( x , y ) 在空间上常具有缓慢变化的特点, 是频域中的低频分量。采用同态分析方法,就是先对上式两边取对数, 把 2 个相乘的分量变为 2 个相加的分量, 它们分别代表了图像的高频分量和低频分量。假设两边取傅里叶变换, 那么有




( 4) 式表明, 照明分量的频谱可以与反射分量的频谱分离开。根据它们反映的空间变化特征, 照明分量的频谱基本上位于低频部分, 反射分量的频谱位于高频部分。这时, 增强技术都可用于求解这 2 个分量。典型的同态滤波法是: 原图先经对数变
换和快速傅里叶变换, 变为频率域中的 2 个分离的变量, 然后根据不同需要, 选用不同的传递函数实现不同的增强。经过频域处理的图像再经快速傅里叶逆变换及指数变换, 就可得到增强的图像。用滤波函数 H ( u, v) 对 Z( u, v) 进行处理, 那么从( 4) 式可得:
这样, 选择适当的滤波函数 H ( u, v) 就可以对图像中照明分量的反射分量进行不同程度的处理,使照度不均匀的图像获得良好的改善。滤波后做反变换, 得:

逆傅里叶变换到空域, 令

s( x , y ) = i′( x , y ) + r′( x , y ) 

可见, 增强后的图像是由对应照度分量与反射分量两部分叠加而成。
再将上式两边取指数, 最后取对数得到滤波后,图像的同态滤波函数:

( 8) 式可分别用于求解照度分量和反射分量。利用照明反射模型处理一幅图像属于同态滤波技术, 同态滤波器 H ( u, v) 滤波示意图如图 1 所示。

同态滤波最关键的是用(4) 式将照射分量和反射分量分开, 用同态滤波器对其进行处理。
图像照射分量通常以空间域的慢变化为特征,反射分量往往引起突变, 特别是在物体的边缘部分。这些特性使得图像的低频部分跟照射相联系,而高频部分和反射相联系。一幅图像的照明分量通常用慢变化来表征, 而反射分量则倾向于急剧变换。所以图像取对数后得到傅里叶变换的低频部分主要对应照度分量, 而高频部分主要对应反射分量。适当选择滤波器函数将会对傅里叶变换中的低频部分和高频部分产生不同的响应, 处理结果会使像元灰度的动态范围或图像对比度得到增强。

同态滤波函数的确定
以 Rh 代表高频增益, Rl 代表低频增益, D( u,v) 表示频率( u, v) 距滤波器中心( u0, v 0) 的距离。传统的同态滤波函数如图 2 所示。当 Rh> 1, Rl> 1 时,该滤波函数能同时抑制照明分量和增强反射分量,从而满足动态范围压缩和对比度增强两种效果要求。处理目的不同, 可构造不同的滤波器。频域内经常使用的高通滤波器为高斯型高通滤波器, 滤波函数为

利用( 9) 式可以构造一个高通滤波器对图像做增强处理。对高斯型高通滤波器稍加修改, 可得以下高斯型高通滤波函数:

式中: D0 是 u0 和 v 0 为 0 时的 D( u, v) 值, 表示截止频率。对于一幅 M ×N 的图像, 傅里叶变换后的中心在( M / 2, N / 2) , 因此, ( 10) 式需做平移处理。

部分代码演示如下:

function I3 = test_tontai(I)

I=double(rgb2gray(I));
[M,N]=size(I);
rL=0.5;
rH=4.7;%可根据需要效果调整参数
c=2;
d0=10;
I1=log(I+1);%取对数
FI=fft2(I1);%傅里叶变换
n1=floor(M/2);
n2=floor(N/2);
for i=1:M
    for j=1:N
        D(i,j)=((i-n1).^2+(j-n2).^2);
        H(i,j)=(rH-rL).*(exp(c*(-D(i,j)./(d0^2))))+rL;%高斯同态滤波
    end
end
I2=ifft2(H.*FI);%傅里叶逆变换
I3=real(exp(I2));
subplot(122),imshow(I3,[]);title('同态滤波增强后');



Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明同态滤波详解
喜欢 (0)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!