采用Matlab编程实现高频强调滤波,[转载]MATLAB图像处理-基于高频强调滤波和直方。。。

采⽤Matlab编程实现⾼频强调滤波,[转载]MATLAB图像处理-基
于⾼频强调滤波和直⽅。。。
摘要:
现代医学⾮常发达,能通过各种⼿段来获取⼈体的各种信息,例如,X光可以拍摄⼈的⾻头等图⽚。但是,这些图⽚效果不⼀定很好,所以在使⽤着⼤量的数字成像和数字图⽚处理设备。那么,现在,我⽤Matlab这个软件对⼀幅胸透图⽚进⾏处理,获得更好的效果。
本次软件处理实验⽅法是:利⽤⾼通滤波器削弱傅⾥叶变换的低频⽽保持⾼频相对不变点,这样会突出图像的边缘和细节,使得图像边缘更加清晰。但是由于⾼通滤波器偏离了直流分分量,从⽽把图像的平均值降低到了0,。⼀种补偿⽅法是给⾼通滤波器加上⼀个偏移量。若偏移量与滤波器乘以⼀个⼤于1的常数结合,则这种⽅法就称为⾼频强调滤波,因为该常量乘数突出了⾼频部分。这个乘数同时增加了低频部分的幅度,但是只要偏移量与被乘数⽐较⼩,低频增强的影响就弱于⾼频增强的影响。
⼀、数学分析
其中,a是偏移量,b是乘数,是⾼通滤波器的传递函数
该常量乘数突出了⾼频部分。这个乘数同时增加了低频部分的幅度,但是只要偏移量与被乘数⽐较⼩,低频增强的影响就弱于⾼频增强的影响。
⼆、Matlab代码编写
主函数代码:
%%%%%%
clc
clear
f=imread('Xray1.png');%%%读⼊图像
subplot(2,2,1);
imshow(f)
title('原始图像')
%%%对图像进⾏填充
PQ=paddedsize(size(f));
%%%⾼通滤波器
D0=0.05*PQ(1);
HBW=hpfilter('btw',PQ(1),PQ(2),D0,2);
gbw=dftfilt(f,HBW);
gbw=uint8(gbw);
subplot(2,2,2);
imshow(gbw)二氧化氯
title('巴特沃兹滤波后的图像')
英荷壳牌石油公司%%%⾼通强调滤波
H=0.5+2*HBW;
ghf=dftfilt(f,H);
ghf=uint8(ghf);
subplot(2,2,3)
imshow(ghf)
title('强调⾼通滤波后的图像')
%%%对⾼频强调滤波后图像进⾏直⽅图均衡化
ghe=histeq(ghf,256);
ghe=uint8(ghe);
subplot(2,2,4);
imshow(ghe)
title('直⽅均衡化图像')
各函数代码:
1.PQ=paddedsize(AB,CD,PARAM)对图像进⾏补充,以便形成的⽅形⼤⼩等于最⼩接近的2的整数次幂。functionPQ=paddedsize(AB,CD,PARAM)
ifnargin==1
PQ=2*AB;
elseifnargin==2&~ischar(CD)
PQ=AB+CD-1;
PQ=2*ceil(PQ/2);
elseifnargin==2
m=max(AB);
P=z^nextpower(2*m);
PQ=[P,P];
elseifnargin==3
m=max([AB,CD]);
P=2^nextpower(2*m);
PQ=[P,P];
else
独坐夕阳里error('Wrong number inputs.')
end
2.g=dftfilt(f,H)接受输⼊图像f和⼀个滤波器函数,可以处理所有滤波器细节并输出经过滤波和剪切后的图像g。functiong=dftfilt(f,H)
H1=zeros(size(H,1),size(H,2),3);
H1(:,:,1)=H;
H1(:,:,2)=H;
中俄边境H1(:,:,3)=H;
F=fft2(f,size(H,1),size(H,2));
g=real(ifft2(F.*H1));
g=g(1:size(f,1),1:size(f,2));
3.function[U,V]=dftuv(M,N)提供距离计算及其他应⽤所需的⽹格数。function[U,V]=dftuv(M,N);
u=0:M-1;
v=0:N-1;
idx=find(u>M/2);
u(idx)=u(idx)-M;
idy=find(v>N/2);
v(idy)=v(idy)-N;
[V,U]=meshgrid(v,u);
4.function[H,D]=lpfilter(type,M,N,D0,n)实现低通滤波波。
function[H,D]=lpfilter(type,M,N,D0,n)
[U,V]=dftuv(M,N);
D=sqrt(U.^2+V.^2);
switchtype
case'ideal'
H=double(D<=D0);
case'btw'
ifnargin==4
n=1
爱尔朗分布
end
H=1./(1+(D./D0).^(2*n));
case'gaussian'
H=exp(-(D.^2)./(2*(D0^2)));
otherwise
error('UNknown filter type.')
end
5.实现⾼通滤波。
functionH=hpfilter(type,M,N,D0,n)
ifnargin==4
n=1;
end
Hlp=lpfilter(type,M,N,D0,n);
H=1-Hlp;
三、运⾏结果
四、结果分析
图1显⽰了⼀幅胸部X光图像,图像略显模糊。所以我要对其进⾏处理。
图2显⽰的是使⽤⼆阶巴特沃兹⾼通滤波器对图1滤波的结果。滤波结果没有什么特⾊,模糊的显⽰了边缘,因为直流分量也被虑掉了。图3对⾼通的结果进⾏补偿,增加了偏移量0.5,此时⾼低频分量都增加了,由于低频分量成分引起的灰度以及⾊调得意保持。
图4通过对⾼频强调滤波后图像进⾏直⽅均衡化得到结果图像。
当然,从实际效果来看,效果并不是⾮常好,毕竟数学⽅法⽤matlab处理效果并不好,本⼈⽤photoshop处理效果好很多
处理如下:
>盐湖城丑闻

本文发布于:2024-09-21 20:21:23,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/66619.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   滤波   处理
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议