同态滤波(Homomorphic Filtering)

参考自《Digital Image Processing 3rd ed.》R. Gonzalez, p. 311-315

1. 同态滤波原理

基本流程

  • 同态滤波(Homomorphic Filtering)本质上是一种频域滤波器
  • 首先,图像
    可以表示为照明-反射模型(illumination-reflection model):

    其中,

    表示照明部分,
    表示反射部分
  • 对上式进行变换:

    对两边分别取傅立叶变换

    得到:

    可简写为:

    其中,

    分别表示
    的傅立叶变换
  • 应用频域滤波器
    ,得到:
  • 将滤波后的结果从频域反变换回空域:

    即可得

    为经过频率滤波后的图像。
  • 同态滤波算法的整体流程图为:

特点分析

  • 同态滤波通过

    运算将图像的照明部分和反射部分分开,

    通常来讲,图像的照明部分是慢变的部分,集中在低频部分,而反射部分属于快变部分,倾向于集中在高频部分,可以根据这个性质,对图像进行频域滤波

滤波器

的选择

  • 根据具体需求,对滤波器

    进行设计,实现对低频、高频部分的增强或压制
  • 一个常用的频域滤波器如下所示:

    为一个倒高斯滤波器的形状,直观上想,可以减弱低频部分(照明)的影响,强调高频部分(反射),使得纹理部分更突出。其一维、二维示意图如下:

2. Matlab代码实现

  • 以下图为例:
clear
close all
%% 设置滤波器参数
r_h = 0.5;
r_l = 0.25;
D_0 = 10;
c = 1;
%% 读取图片并进行傅立叶变换
img = im2double(imread('1.tif'));
max0 = max(img(:));
min0 = min(img(:));
img = log(img+1e-12);
img_f = fftshift(fft2(img));
%% 获取滤波器
[h,w] = size(img_f);
[x,y] = meshgrid(-w/2:w/2,-h/2:h/2);
H = h_generate_2d(r_h,r_l,c,x,y,D_0,D_0);
H = imresize(H,[h,w]);
%% 进行频域滤波
img_f_filter = img_f.*H;
%% 显示频谱
figure,
set(gcf,'position',[100,100,1020*1,520*0.6]);
subplot(1,3,1);colormap gray;
imagesc(log(abs(img_f)+1e-12));
title('滤波前频谱')
subplot(1,3,2);colormap gray;
imagesc(H);
title('滤波器')
subplot(1,3,3);colormap gray;
imagesc(log(abs(img_f_filter)+1e-12));
title('滤波后频谱')
%% 反变换到空域
img_out = real(ifft2(ifftshift(img_f_filter)));
img_out = exp(img_out);
img_out = (img_out-min(img_out(:)));
img_out = img_out/max(img_out(:));
img_out=img_out*(max0-min0)+min0;
img = exp(img);
%% 显示结果图片
figure,
set(gcf,'position',[100,100,1020*0.8,520*0.6]);
subplot(1,2,1);
imagesc(img);colormap gray;colorbar
title('原始图片')
subplot(1,2,2);
imagesc(img_out);colormap gray;colorbar
title('同态滤波后图片')
%% 滤波器计算函数
function h = h_generate_2d(r_h,r_l,c,x,y,D_0,D_1)h = (r_h-r_l)*(1-exp(-c*(x.^2+y.^2)/(D_0^2+D_1^2)))+r_l;
end

  • 运行结果:
  • 使用另一张图,调节滤波器参数后,结果如下:

分析频域滤波和空域滤波的各自特点_同态滤波原理及其matlab实现相关推荐

  1. 第三章、空域滤波(空域滤波基础)

    一.空域滤波基础 1.理论基础 线性系统响应:卷积理论 1.卷积的离散表达式,基本上可以理解为模板地数学表达式 2.卷积的冲击响应函数h(x,y),称为空域卷积模板. 2.卷积 输出 = 输入 * 系 ...

  2. 分析频域滤波和空域滤波的各自特点_IIR数字滤波器设计(数字信号处理)

    ~~ 如果有什么问题可以在我的个人博客留言 ,我会及时回复.欢迎来访交流 ~~ IIR数字滤波器设计(数字信号处理) 一.实验目的 1.熟悉双线性变换法设计IIR数字滤波器的原理与方法. 2.掌握II ...

  3. 【OpenCV图像处理】十五、图像空域滤波(上)

    1.空域滤波介绍 空域滤波是一种邻域处理方法,通过直接在图像空间中对邻域内像素进行处理,达到平滑或锐化图像的作用.此外,在图像识别中,通过滤波还可以抽出图像的特征作为图像识别的特征模式. 空域滤波是图 ...

  4. matlab 空域滤波,MATLAB--空域滤波学习笔记

    空域滤波 空域滤波是指对图像中每个像素为中心的邻域进行预定义操作,然后用得到的结果代替邻域中心像素点的像素值.滤波器的中心访问输入图像中的每个像素,就生成了滤波后的图像. 空域滤波器可分为线性空域滤波 ...

  5. 现代数字通信第八章——阵列信号处理与空域滤波

    主要内容: 阵列信号模型 空间谱估计 空域滤波 一.阵列接收信号模型 1.均匀线阵 \quadK个窄带信号分别从θ1,θ2,⋯,θk\theta_1,\theta_2,\cdots,\theta_kθ ...

  6. 图像增强实战:空域滤波、频域滤波和退化恢复滤波器(附全部代码)

    Airshow 图像增强 一.设计背景 受天气状况.空气质量.成像距离.成像设备性能.相对运动等多种因素的影响,2022 年 11 月第十四届中国国际航空航天博览会现场的空中飞行表演的图像存在退化和不 ...

  7. 频域和空域滤波的比较

    一,空域滤波器 空域滤波是在图像空间中借助模板对图像进行领域操作,处理图像每一个像素的取值都是根据模板对输入像素相应领域内的像素值进行计算得到的.空域滤波基本上是让图像在频域空间内某个范围的分量受到抑 ...

  8. 空域滤波算法对比分析(超级全面哒)——Python代码

           代码包括椒盐噪声,高斯噪声,均值滤波,中值滤波,高斯滤波,Sobel滤波,Laplace滤波和对应的系统函数以及三种常用的参数分析,MSE,PSNR,SSIM. 太久没写博客了,懒得把知 ...

  9. 图像变换及频域滤波(高斯滤波,巴特沃兹滤波器,高斯滤波器)

    \ 实验目的: 1.掌握怎样利用傅立叶变换.DCT进行频域滤波 2.掌握频域滤波的概念及方法 3.熟练掌握频域空间的各类滤波器 4.利用MATLAB程序进行频域滤波 实验原理: 频域滤波分为低通滤波和 ...

最新文章

  1. python测试程序的qps和响应时间代码_Python并发请求下限制QPS(每秒查询率)的实现代码...
  2. 去除icon图标特效,阴影,反光
  3. 【笔记】Comparison of Object Detection and Patch-Based Classification Deep Learning Models on Mid- to La
  4. 分布式监控系统Zabbix3.2监控数据库的连接数
  5. python创建数组并运行_python-Cython中从现有数组和变量创建新数组...
  6. 2.3.3 Zero Sum 和为零(DFS)
  7. svnserver 修改配置后重启
  8. yum install 命令报错Could not retrieve mirrorlist
  9. 18年华为没有1项原创发明
  10. 黄页宝贝工具栏软件发布了
  11. 什么是命名路由?命名路由,命名路由意义
  12. 根据一年的周数得到日期
  13. Node* create()的含义
  14. ARM开发板配置rzsz
  15. 用Qt写的平均绩点计算器
  16. 【让AI为面试赋能系列】利用GPT回答网友的面试题1.0
  17. 学习笔记(8):C#急速入门-变量的命名规则
  18. 日历选择:周一到周日固定、选择当前周、上一周、下一周的日期。
  19. cir,pir,cbs,pbs单位
  20. 关于华为实名认证的一些常见问题解答

热门文章

  1. Linux系统下如何配置SSH?如何开启SSH?
  2. 华为机试HJ108:求最小公倍数
  3. 华为机试HJ33:整数与IP地址间的转换
  4. 量子计算机的系统论思考,量子计算机发展带来的思考..doc
  5. 天 月_财务结算专业术语快来学习!月结和月结30天的区别
  6. webrtc java api_java – 使用WebSockets实现WebRTC信令
  7. 自动化用例设计原则+web自动化框架
  8. 技术选型都做不好,难怪自动化做得这么费力...
  9. java输出矩形_java输出长方形求解答
  10. idea怎么拉不同的git分支_idea中git分支、合并与使用