当前位置:网站首页>Matlab学习12-图像处理之图像增强
Matlab学习12-图像处理之图像增强
2022-08-03 11:30:00 【CHengYuP】
前言
图像增强基本思路是:
允许一定频率通过(保留某些频率分量),限制或消减另外一些频率(消除某些频率分量)。
转移函数的优劣是滤波器优劣的关键。
频域增强方法根据滤波特点,特别是消除或保留的频率分量可以分为:
- 低通滤波
基本原理:
保留图像中的低频分量而除去高频分量。
作用:
除去或消弱噪声影响并模糊边缘轮廓,属于图像平滑处理技术。因为:图像中的边缘和噪声对应图像傅里叶频谱中的高频部分。
包括:
·理想低通滤波器(ILPF)
·巴特沃斯低通滤波器(BLPF)
·指数低通滤波器(ELPF)
·梯形低通滤波器(TLPF)
·高斯低通滤波器(GLPF)
- 高通滤波
基本原理:
保留图像中的高频分量而除去低频分量。
作用:
突出物体边缘轮廓,属于图像锐化处理技术。
因为:图像中的边缘对应图像傅里叶频谱中的高频部分。
效果:
锐化物体边缘,但光滑区域灰度减弱、变暗甚至接近黑色。
因为:图像中大部分能量集中在低频分量里,高通滤波将会滤除大部分低频分量。
包括:
·理想高通滤波器(IHPF)
·巴特沃斯高通滤波器(BHPF)
·指数高通滤波器(EHPF)
·梯形高通滤波器(THPF)
·高斯高通滤波器(GHPF)
·高频增强滤波器
·高频提升滤波器
- 带通&带阻滤波
- 同态滤波
一、理想低通滤波
效果
代码
%理想低通滤波
f1xy=imread("img/eight.tif");
subplot(2,3,1),imshow(f1xy),xlabel("(a)原始图像");
f2xy=imnoise(f1xy,'salt & pepper',0.05);
subplot(2,3,2),imshow(f2xy),xlabel("(b)噪声图像");
fxy=double(f2xy);
Fuv=fft2(fxy);
FftShift=fftshift(Fuv);
AbsFftShift=abs(FftShift);
LogAbsFftShift=log(AbsFftShift);
subplot(2,3,3),imshow(LogAbsFftShift,[]),xlabel("(c)噪声图像的傅里叶幅度谱对数图像"),colormap(gray),colorbar;
%图的尺寸
[N1,N2]=size(FftShift);
% 截至频率D0=50时的滤波效果
D0=50;
%中心点
n1=fix(N1/2);
n2=fix(N2/2);
for i=1:N1
for j=1:N2
d=sqrt((i-n1)^2+(j-n2)^2);
if(d<D0)
G(i,j)=FftShift(i,j);
else
G(i,j)=0;
end
end
end
% 反变换
G=ifftshift(G);
g=ifft2(G);
g=uint8(real(g));
subplot(2,3,4),imshow(g),xlabel("(d)滤波图像(D0=50)");
D0=80;
for i=1:N1
for j=1:N2
d=sqrt((i-n1)^2+(j-n2)^2);
if(d<D0)
G(i,j)=FftShift(i,j);
else
G(i,j)=0;
end
end
end
% 反变换
G=ifftshift(G);
g=ifft2(G);
g=uint8(real(g));
subplot(2,3,6),imshow(g),xlabel("(e)滤波图像(D0=80)");
二、巴特沃斯低通滤波
效果
代码
% 巴特沃斯低通滤波
f1xy=imread("img/eight.tif");
subplot(2,3,1),imshow(f1xy),xlabel("(a)原始图像");
f2xy=imnoise(f1xy,'salt & pepper',0.05);
subplot(2,3,2),imshow(f2xy),xlabel("(b)噪声图像");
% 傅里叶变换
fxy=double(f2xy);
Fuv=fft2(fxy);
FftShift=fftshift(Fuv);
AbsFftShift=abs(FftShift);
LogAbsFftShift=log(AbsFftShift);
subplot(2,3,3),imshow(LogAbsFftShift,[]),xlabel("(c)噪声图像的傅里叶幅度谱对数图像"),colormap(gray),colorbar;
[N1,N2]=size(FftShift);
% 阶数n=2,截至频率D0=40时的滤波效果
n=2;
D0=40;
%中心点
n1=fix(N1/2);
n2=fix(N2/2);
for i=1:N1
for j=1:N2
d=sqrt((i-n1)^2+(j-n2)^2);
H=1/(1+(sqrt(2)-1)*(d/D0)^(2*n));
G(i,j)=H*FftShift(i,j);
end
end
% 反变换
G=ifftshift(G);
g=ifft2(G);
g=uint8(real(g));
subplot(2,3,4),imshow(g),xlabel("(d)滤波图像({\itn}=2,{\itD}0=40)");
% 阶数n=2,截至频率D0=60时的滤波效果
n=2;
D0=60;
%中心点
n1=fix(N1/2);
n2=fix(N2/2);
for i=1:N1
for j=1:N2
d=sqrt((i-n1)^2+(j-n2)^2);
H=1/(1+(sqrt(2)-1)*(d/D0)^(2*n));
G(i,j)=H*FftShift(i,j);
end
end
% 反变换
G=ifftshift(G);
g=ifft2(G);
g=uint8(real(g));
subplot(2,3,6),imshow(g),xlabel("(e)滤波图像(n=2,D0=60)");
三、高斯高通滤波
效果
代码
% 高斯高通滤波
fxy=imread("img/lena.bmp");
subplot(2,2,1),imshow(fxy),xlabel("(a)原始图像");
% 傅里叶幅度谱的对数图像显示
fxy=double(fxy);
Fuv=fft2(fxy);%二维傅里叶变换
ShiftFuv=fftshift(Fuv);
AbsShiftFuv=abs(ShiftFuv);%傅里叶幅度谱
LogAbsShiftFuv=log(AbsShiftFuv);%傅里叶幅度谱可视化
subplot(2,2,2),imshow(LogAbsShiftFuv,[]),xlabel("(b)傅里叶幅度谱对数图像");
% 截至频率D0=10时的滤波效果
[N1,N2]=size(ShiftFuv);
D0=10;
%中心点
n1=fix(N1/2);
n2=fix(N2/2);
for i=1:N1
for j=1:N2
d=sqrt((i-n1)^2+(j-n2)^2);
Huv=1-exp(-d^2/(2*D0^2));% 高斯高通公式
G(i,j)=Huv*ShiftFuv(i,j);
end
end
% 反变换
G=ifftshift(G);
g=ifft2(G);
g=uint8(real(g));
subplot(2,2,3),imshow(g),xlabel("(c)滤波图像(D0=10)");
% 截至频率D0=20时的滤波效果
[N1,N2]=size(ShiftFuv);
D0=20;
%中心点
n1=fix(N1/2);
n2=fix(N2/2);
for i=1:N1
for j=1:N2
d=sqrt((i-n1)^2+(j-n2)^2);
Huv=1-exp(-d^2/(2*D0^2));
G(i,j)=Huv*ShiftFuv(i,j);
end
end
% 反变换
G=ifftshift(G);
g=ifft2(G);
g=uint8(real(g));
subplot(2,2,4),imshow(g),xlabel("(d)滤波图像(D0=20)");
总结
频域增强与空域增强的关系
空域滤波增强分为平滑滤波和锐化滤波。
·从空域的角度看,平滑滤波能够减少局部灰度起伏和噪声干扰;
·从频域的角度看,灰度起伏和噪声干扰具有较高的频率,滤除它可以采用具有低通能力的频域滤波器。
空域滤波增强的基本原理是利用图像与模板的卷积来进行。
·根据卷积定理,空域中图像与模板的卷积等于图像的傅里叶变换和模板的傅里叶变换在频域的乘积。
·根据图像频域增强的基本原理,频域图像增强是频域原始图像与频域传递函数的乘积,即图像的傅里叶变换与频域传递函数的乘积。
点击获取源码
边栏推荐
- 最牛逼的集群监控系统,它始终位列第一!
- Babbitt | Metaverse daily must-read: Players leave, platforms are shut down, and the digital collection market is gradually cooling down. Where is the future of the industry?...
- 小身材有大作用——光模块基础知识(一)
- thymeleaf中的日期格式转化
- The effects of the background and the Activiti
- 实至名归!九章云极DataCanvas公司荣获智能制造领域多项殊荣
- What is the ERC20 token standard?
- html网页如何获取后台数据库的数据(html + ajax + php + mysql)
- Activiti产生的背景和作用
- Analysis of the idea of the complete knapsack problem
猜你喜欢
LeetCode 899 Ordered queue [lexicographical order] HERODING's LeetCode road
巴比特 | 元宇宙每日必读:玩家离场,平台关停,数字藏品市场正逐渐降温,行业的未来究竟在哪里?...
GET 和 POST 有什么区别?
ETL data cleaning case in MapReduce
LyScript 实现对内存堆栈扫描
Activiti产生的背景和作用
【一起学Rust 基础篇】Rust基础——变量和数据类型
What is the relationship between The Matrix and 6G?
Summary of redis basics - data types (strings, lists, sets, hashes, sets)
微信小程序获取用户手机号码
随机推荐
智能合约是什么?
成为优秀架构师必备技能:怎样才能画出让所有人赞不绝口的系统架构图?秘诀是什么?快来打开这篇文章看看吧!...
试题G:单词分析 ← 第十一届蓝桥杯大赛第二场省赛赛题
LeetCode——622.设计循环队列
Skills required to be a good architect: How to draw a system architecture that everyone will love?What's the secret?Come and open this article to see it!...
赛灵思MPSOC裸机下的 USB调试实验
fast planner中拓扑路径搜索
【二分查找详解外加递归写法】附有全部代码
在线生成接口文档
性能优化|从ping延时看CPU电源管理
What is the ERC20 token standard?
多态详细讲解(简单实现买票系统模拟,覆盖/重定义,多态原理,虚表)
build --repot
ThreadLocal源码解析及使用场景
巴比特 | 元宇宙每日必读:玩家离场,平台关停,数字藏品市场正逐渐降温,行业的未来究竟在哪里?...
Skills required to be a good architect: How to draw a system architecture that everyone will love?What's the secret?Come and open this article to see it!...
complete knapsack problem
JS快速高效开发技巧指南(持续更新)
【LeetCode—第2题 两数之和 代码详解 】附有源码,可直接复制
XDR平台架构与关键技术解析