同态滤波及其实现

一、同态滤波

对于一幅由物理过程产生的图像f(x,y),可以表示为照射分量i(x,y)和反射分量r(x,y)的乘积。0<i(x,y)<∞,0<r(x,y)<1。i(x,y)描述景物的照明,变化缓慢,处于低频成分。r(x,y)描述景物的细节,变化较快,处于高频成分。

因为该性质是乘性的,所以不能直接使用傅里叶变换对i(x,y)和r(x,y)进行控制,因此可以先对f(x,y)取对数,分离i(x,y)和r(x,y)。令z(x,y) = ln f(x,y) = ln i(x,y) + ln r(x,y)。在这个过程中,由于f(x,y)的取值范围为[0, L-1],为了避免出现ln(0)的情况,故采用ln ( f(x,y) + 1 ) 来计算。

然后取傅里叶变换,得到 Z(u,v) = Fi(u,v) + Fr(u,v)。

然后使用一个滤波器,对Z(u,v)进行滤波,有 S(u,v) = H(u,v) Z(u,v) = H(u,v)Fi(u,v) + H(u,v)Fr(u,v)。

滤波后,进行反傅里叶变换,有 s(x, y) = IDFT( S(u,v) )。

最后,反对数(取指数),得到最后处理后的图像。g(x,y) = exp^(s(x,y)) = i0(x,y)+r0(x,y)。由于我们之前使用ln ( f(x,y)+1),因此此处使用exp^(s(x,y)) - 1。  i0(x,y)和r0(x,y)分别是处理后图像的照射分量和入射分量。



二、滤波器H(u,v)

由于我们会得到动态范围很大,但我们感兴趣的部分很暗,无法辨认细节的图像。这可以认为或者实际上就是由于光照不均所造成的。为了减少光照的影响,增强图像的高频部分的细节,我们可以使用同态滤波来增强对比度,增强细节。

在此情况下,我们可以通过衰减低频成分,增强高频成分来达到我们的目的。通常可以采用如下高斯高通滤波器的变形滤波来对图像进行处理。



其中,选择rh > 1, rl < 1可以达到衰减低频,增强高频的目的,常数c控制函数坡度的锐利度。D(u,v)和D0与我们之前说低通滤波的时候意义一样。分别表示和频率中心的距离和截止频率。D0越大,对细节的增强越明显,最后归一化之后显示的图像越亮。对于不同的图像,D0的取值差别很大。对于特定的D0,有的图像显示之后是黑乎乎的一片,而有的图像却是整体白亮。

三、代码实现

在使用matlab代码使用如上所说的滤波器H(u,v)进行同态滤波的时候,基本过程和我们之前介绍进行低通滤波器的时候,进行频率域滤波的过程基本一致。理想低通滤波器、Butterworth滤波器和高斯滤波器(matlab)

只不过,在填充图像之前,先对图像进行对数化。在最后提取左上角的部分之后,对图像进行反对数化(取指数),然后再归一化,得到最终的图像。

1. 同态滤波函数代码如下:

该函数为HomoFilter,输入为需要进行同态滤波的灰度图像(灰度级L = 256),同态滤波器的参数rh,rl,c和D0。输出为滤波后的图像(已经归一化到[0, L-1])。

function [image_out] = HomoFilter(image_in, rh, rl, c, D0)
% 同态滤波器
% 输入为需要进行滤波的灰度图像,同态滤波器的参数rh, rl,c, D0
% 输出为进行滤波之后的灰度图像

[m, n] = size(image_in);
P = 2*m;
Q = 2*n;

% 取对数
image1 = log(double(image_in) + 1);

fp = zeros(P, Q);
%对图像填充0,并且乘以(-1)^(x+y) 以移到变换中心
for i = 1 : m
    for j = 1 : n
        fp(i, j) = double(image1(i, j)) * (-1)^(i+j);
    end
end
% 对填充后的图像进行傅里叶变换
F1 = fft2(fp);

% 生成同态滤波函数,中心在(m+1,n+1)
Homo = zeros(P, Q);
a = D0^2; % 计算一些不变的中间参数
r = rh-rl;
for u = 1 : P
    for v = 1 : Q
        temp = (u-(m+1.0))^2 + (v-(n+1.0))^2;
        Homo(u, v) = r * (1-exp((-c)*(temp/a))) + rl;
    end
end

%进行滤波
G = F1 .* Homo;

% 反傅里叶变换
gp = ifft2(G);

% 处理得到的图像
image_out = zeros(m, n, 'uint8');
gp = real(gp);
g = zeros(m, n);
for i = 1 : m
    for j = 1 : n
        g(i, j) = gp(i, j) * (-1)^(i+j);
        
    end
end
% 指数处理
ge = exp(g)-1;
% 归一化到[0, L-1]
mmax = max(ge(:));
mmin = min(ge(:));
range = mmax-mmin;
for i = 1 : m
    for j = 1 : n
        image_out(i,j) = uint8(255 * (ge(i, j)-mmin) / range);
    end
end

end

2. 测试代码如下:

clear all;
close all;
clc;

image1 = imread('10.bmp');
[m, n] = size(image1);

image2 = HomoFilter(image1, 2, 0.25, 1, 80);

% 显示图像
subplot(1,2,1), imshow(image1), title('原图像');
subplot(1,2,2), imshow(image2), title('D0 = 80');

3. 结果如下:


可以看到,经过同态滤波之后的图像,图像可以看到更多的细节,降低了照射分量的影响。

下面是对另一幅图像的同态滤波结果,可以看到,对于D0与上面一样,都为80的情况下,图片一片黑乎乎。当D0等于500的时候,可以看到很多的细节。说明了对于不同的图像,D0的差别可能很大。



  • 31
    点赞
  • 195
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
目录 第1章最优的FIR滤波器设计 1.1频率取样的FIR滤波器设计 1.1.1约束条件 1.1.2设计误差 1.2最优的FIR滤波器设计 1.2.1一般最优滤波器 1.2.2加权最优滤波器 1.2.3反对称FIR滤波器 1.2.4微分FIR滤波器 1.3IIR与FIR数字滤波器的比较 第2章基于神经网络的案例分析与实现 2.1农作物虫情预测 2.1.1基于神经网络的虫情预测原理 2.1.2BP网络设计 2.2模型参考控制 2.2.1模型参考控制概念 2.2.2模型参考控制实例分析 2.3神经网络控制的应用 2.3.1机器人神经网络数字控制 2.3.2神经网络的跟踪迭代学习控制 第3章通信系统调制与解调分析与实现 3.1载波提取分析 3.1.1幅度键控分析 3.1.2相移键控分析 3.1.3频移键控分析 3.1.4正交幅度调制 3.2调制与解调的Simulink模块 3.2.1DSBAM调制解调 3.2.2SSBAM调制解调 3.2.3DSBSCAM调制解调 3.2.4FM调制解调 3.2.5PM调制解调 第4章BP神经网络算法分析与实现 4.1BP网络模型结构 4.2BP学习规则 4.3BP网络的训练函数 4.4BP网络的实现 4.5BP网络的限制 4.6BP方法的改进 第5章飞机偏航阻尼器性能分析与设计 5.1飞机偏航阻尼器设计 5.2数学模型及MATLAB描述 5.3校正前系统性能分析 5.3.1计算开环特征值 5.3.2求取系统的单位脉冲响应 5.4校正设计 5.4.1根轨迹法设计 5.4.2下洗滤波器设计 5.5校正后系统性能分析 5.5.1观察从方向舵到偏航角速度通道的闭环脉冲响应 5.5.2验证设计的下洗滤波器固定了飞机的螺旋模态问题 第6章感知器网络算法分析与实现 6.1感知器结构 6.2感知器的学习 6.3感知器的局部性 6.4感知器的“异域”问题 6.5感知器的神经网络训练函数 6.6感知器网络的实现 6.7线性分类问题的扩展讨论 6.8线性可分限制的解决方法 第7章FIR滤波器结构分析与设计实现 7.1FIR滤波器的结构 7.1.1直接型结构 7.1.2级联型结构 7.1.3频率抽样型结构 7.1.4快速卷积型结构 7.2线性相位FIR数字滤波器的特性 7.2.1线性相位FIR滤波器幅度特性 7.2.2线性相位FIR滤波器零点特性 7.3基本窗函数法的FIR滤波器设计 7.3.1窗函数的原理 7.3.2矩形窗 7.3.3汉宁窗 7.3.4海明窗 7.3.5布莱克曼窗 7.3.6凯赛窗 第8章图像阈值分割算法分析与应用 8.1灰度阈值分割 8.1.1灰度图像二值化 8.1.2灰度图像多区域阈值分割 8.2直方图阈值分割 8.2.1直方图阈值双峰法 8.2.2动态阈值法 8.3最大熵阈值分割 8.4分水岭法 第9章状态方程求解分析与设计实现 9.1系统数学模型 9.2系统的状态变量分析 9.2.1状态方程与系统函数之间的转换 9.2.2状态方程的变换域符号求解分析 9.2.3状态方程的时域符号求解分析 9.2.4系统方程的数值求解分析 第10章奈奎斯特稳定性判据及其应用 10.1频域分析基本概念 10.1.1频率特性 10.1.2频率特性曲线绘制的方法 10.1.3奈奎斯特稳定判据 10.1.4对数频率稳定判据 10.1.5开环频域性能指标 10.2Bode图 10.3Nyquist图 10.4系统稳定性的判定 10.4.1用Bode图法判断系统稳定性 10.4.2用Nyquist曲线法判断系统稳定性 第11章基于频域滤波的图像分析与实现 11.1有限冲激响应滤波 11.1.1频率变换法 11.1.2频率抽样法 11.1.3窗函数法 11.1.4频率响应矩阵 11.2低通滤波 11.2.1理想低通滤波器 11.2.2巴特沃斯低通滤波器 11.2.3高斯低通滤波器 11.3高通滤波 11.3.1理想高通滤波器 11.3.2巴特沃斯高通滤波器 11.3.3高斯高通滤波器 11.4高斯带阻滤波 11.4.1理想带阻滤波器 11.4.2巴特沃斯带阻滤波器 11.4.3高斯带阻滤波器 11.5同态滤波 第12章控制系统数学模型分析与实现 12.1连续系统 12.1.1微分方程 12.1.2传递函数 12.1.3状态空间描述 12.2离散系统 12.2.1差分方程 12.2.2离散传递函数(Z传递函数) 12.2.3离散状态空间模型 12.3数学模型的MATLAB相关函数 12.3.1传递模型的函数 12.3.2零极点模型函数 12.3.3状态空间模型函数 第13章径向基网络算法分析与实现 13.1径向基网络模型 13.2径向基网络的学习算法 13.3广义回归神经网络 13.4径向基网络的训练函数 13.5径向基网络的实现 13.5.1径向基函数网络在散布设计中的影响 13.5.2用于模式分类的RBF网络 13.5.3用于网络的逼近 13.6基于RBF网络的非线性滤波 13.7RBF网络与多层感知器的比较 第14章MIMOOFDM通信系统设计与实现 14.1MIMOOFDM通信系统设计 14.2MIMO系统 14.3OFDM技术 14.4MIMOOFDM系统 14.5空间分组编码 14.6STBC的MIMOOFDM系统设计 14.6.1STBC的MIMOOFDM系统模型分析 14.6.2STBC的MIMOOFDM系统性能分析 14.7STBC的MIMOOFDM系统MATLAB实现 第15章图像分割算法的MATLAB实现 15.1区域分割 15.1.1区域生长法 15.1.2分裂合并法 15.2边缘分割 15.2.1梯度算子 15.2.2一阶微分算子 15.2.3二阶微分算子 15.3彩色空间分割 15.3.1基于像元的分割方法 15.3.2聚类算法 第16章雷达信号、语音的模拟与实现 16.1雷达信号的产生 16.1.1脉冲幅度调制 16.1.2线性调频信号 16.1.3相位编码信号 16.1.4相位编码脉内线性调频混合调制信号 16.2噪声和杂波的产生 16.2.1随机热噪声 16.2.2杂波的模拟与实现 16.3小波在语音信号处理中的应用 16.3.1小波在语音信号增加中的应用 16.3.2小波在语音信号压缩中的应用 第17章根轨迹分析与MATLAB函数实现 17.1根轨迹的概述 17.1.1根轨迹法的基本概念 17.1.2根轨迹方程 17.1.3绘制根轨迹的基本条件 17.2二阶系统的根轨迹分析 17.3MATLAB根轨迹相关函数 17.3.1pzmap函数 17.3.2rlocus函数 17.3.3rlocfind函数 17.3.4sgrid函数 17.3.5zgrid函数 17.3.6damp函数 第18章Hopfield网络算法与应用 18.1离散Hopfield网络 18.2连续Hopfield网络 18.3联想记忆 18.4Hopfield网络结构 18.5Hopfield网络模型学习过程 18.6几个重要结论 18.7Hopfield网络的应用 第19章图像统计分析与滤波分析的函数实现 19.1图像的统计特性 19.1.1图像均值 19.1.2图像的标准差 19.1.3图像的相关系数 19.1.4图像的等高线 19.2空间域滤波 19.2.1图像加入噪声 19.2.2中值滤波器 19.2.3自适应滤波器 19.2.4排序滤波 19.2.5锐化滤波 第20章自组织神经网络的设计与应用 20.1常用的几种联想学习规则 20.1.1内星学习规则 20.1.2外星学习规则 20.1.3科荷伦(Kohonen)学习规则 20.1.4阈值学习规则 20.2自组织竞争神经网络的结构 20.3自组织竞争神经网络的设计 20.3.1网络初始化 20.3.2网络学习规则 20.3.3网络训练 20.4自组织竞争网络的应用 第21章控制系统稳定性判定分析与实现 21.1方程特征根判定稳定性 21.2lienardChipard判据判定系统稳定性 21.3根轨迹法判定稳定性 21.4传递函数极点法判断系统稳定性 21.5李亚普诺夫第二法判定系统稳定性 21.6频率法判定系统稳定性 21.6.1Bode图判定系统的稳定性 21.6.2Nyquist曲线判断系统稳定性 第22章线性神经网络算法分析与应用 22.1线性神经网络的模型 22.2WH学习规则 22.3线性网络的训练函数 22.4线性神经网络的构建 22.5网络训练 22.6线性网络的实现 22.7线性网络的局限性 22.8系统辨识 第23章信源编译码MATLAB模块实现 23.1信源编译码 23.1.1信源编码 23.1.2信源译码 23.2MATLABSimulink通信系统仿真实例 23.2.1MATLAB编码实例 23.2.2Simulink信道实例 23.2.3MATLABSimulink信道实例 第24章数字基带调制解调Simulink模块实现 24.1数字幅度调制解调 24.1.1数字幅度调制模块 24.1.2数字幅度解调模块 24.2数字频率调制解调 24.2.1数字频率调制模块 24.2.2数字频率解调模块 24.3数字相位调制解调 24.3.1数字相位调制模块 24.3.2数字相位解调模块 24.4调制与解调的Simulink应用 第25章功率谱估计方法分析与设计实现 25.1功率谱估计 25.1.1经典功率谱估计法 25.1.2改进的直接法估计 25.1.3AR模型功率谱估计 25.1.4部分现代谱估计的非参数方法 25.2MUSIC法功率谱估计 附录AMATLAB R2016a安装说明 参考文献
胡广书编著的《数字信号处理(附光盘理论算法与实现第3版研究生教学用书)》系统地介绍了数字信号处理的理论、相应的算法及这些算法的软件与硬件实现。全书共16章,分为上、下两篇。上篇是经典数字信号处理的内容,包括离散时间信号与离散时间系统的基本概念、 Z变换及离散时间系统分析、离散傅里叶变换、傅里叶变换的快速算法、离散时间系统的相位与结构、数字滤波器设计(IIR、FIR及特殊形式的滤波器)、信号的正交变换(正交变换的定义与性质、K—L变换、DCT及其在图像压缩中的应用)、信号处理中若干典型算法(如抽取与插值、子带分解、调制与解调、反卷积、SVD、独立分量分析及同态滤波)、数字信号处理中的有限字长问题及数字信号处理的硬件实现等;下篇是统计数字信号处理的内容,包括平稳随机信号的基本概念、经典功率谱估计、参数模型功率谱估计、维纳滤波器及自适应滤波器等。 《数字信号处理(附光盘理论算法与实现第3版研究生教学用书)》介绍了数字信号处理中所涉及到的绝大部分MNfLAB文件,并给出了使用的具体实例。所附光盘中的120多个用MATLAB编写的信号处理程序可用于求解书中的绝大部分例题并绘制其插图。 《数字信号处理(附光盘理论算法与实现第3版研究生教学用书)》阐述了数字信号处理的基础理论与概念,同时尽量反映该学科在近30年来的新
同态滤波是一种常用的图像增强方法,它可以有效地处理光照不均匀或者对比度较低的图像。在Matlab中,可以使用以下步骤实现同态滤波: 1. 读取图像:使用imread函数读取待处理的图像,并将其转换为灰度图像。 2. 对数变换:对灰度图像进行对数变换,将原始图像的灰度值映射到较大的动态范围上。可以使用log函数实现对数变换。 3. 频域变换:对对数变换后的图像进行傅里叶变换,将图像从空域转换到频域。可以使用fft2函数实现二维傅里叶变换。 4. 滤波器设计:设计一个合适的滤波器,通常使用高通和低通滤波器的组合。可以选择高斯滤波器或者巴特沃斯滤波器。 5. 滤波操作:将频域中的图像与设计好的滤波器进行卷积操作,得到滤波后的频域图像。 6. 频域逆变换:对滤波后的频域图像进行傅里叶逆变换,将图像从频域转换回空域。可以使用ifft2函数实现二维傅里叶逆变换。 7. 反对数变换:对逆变换后的图像进行反对数变换,将灰度值映射回原始范围。可以使用exp函数实现反对数变换。 8. 显示结果:使用imshow函数显示滤波后的图像。 下面是同态滤波Matlab代码示例: ```matlab % 读取图像并转换为灰度图像 img = imread('image.jpg'); gray_img = rgb2gray(img); % 对数变换 log_img = log(1 + double(gray_img)); % 频域变换 fft_img = fft2(log_img); % 滤波器设计 H = fspecial('gaussian', size(fft_img), 10); H = 1 - H; % 滤波操作 filtered_img = fft_img .* H; % 频域逆变换 ifft_img = ifft2(filtered_img); % 反对数变换 exp_img = exp(real(ifft_img)) - 1; % 显示结果 imshow(exp_img, []); % 相关问题: 1. 什么是同态滤波? 2. 同态滤波的作用是什么? 3. 还有哪些常用的图像增强方法? ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值