采用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处理效果好很多
处理如下:
采用Matlab编程实现 高频强调滤波,[转载]MATLAB图像处理-基于高频强调滤波和直方均衡化图像增强...相关推荐
- 用matlab编程节点电压法求电路,MATLAB在电路中的应用
<MATLAB在电路中的应用>由会员分享,可在线阅读,更多相关<MATLAB在电路中的应用(59页珍藏版)>请在人人文库网上搜索. 1.MATLAB应用(三) Matlab在电 ...
- matlab编程实现卷积定理,利用时域(空域)卷积定理进行图像滤波(Matlab 实现)(二)...
引言 在 利用时域(空域)卷积定理进行图像滤波(Matlab 实现)(一)中我们知道了傅里叶变换是满足时域(空域)卷积定理的,在 从离散傅里叶变换到离散余弦变换 -- 公式证明 中我们也看到了离散余弦 ...
- matlab能倒入crv文件么,[转载]matlab GUI 编程——mcc转换m文件到应用程序
1.安装C编译器(前提是你的电脑已经安装了VC) >> mbuild -setup Please choose your compiler for building standalone ...
- MATLAB保存数据为dat格式,[转载] Matlab中的数据以.txt或.dat格式保存
具体命令是: 使用save * .txt -asciix x是一个变量 *. txt是文件名,该文件存储在当前工作目录中,然后在打开后可以将其打开,数据可以以指数形式保存. 看下面的例子: a = [ ...
- 用matlab编程实现h鲁棒控制算法,利用matlab实现H-infinity鲁棒控制
利用matlab实现H-infinity鲁棒控制 利用Matlab实现H∞控制 Prof. Dr.-Ing.F.Allgwer Institute for Systems Theory and Aut ...
- matlab编程是用c语言吗,matlab调用c语言编程.doc
实用标准文案 精彩文档 matlab与C语言混合编程 用C编写mex程序??大家都知道,matlab是一种解释型的编程环境,也就是说,跟以前的basic一样,是读一句执行一句的.这样做可以很方便的实现 ...
- matlab newff函数弃用了,[转载]MATLAB神经网络函数NEWFF()新旧用法差异
摘要 在Matlab R2010a版中,如果要创建一个具有两个隐含层.且神经元数分别为5.3的前向BP网络,使用旧的语法可以这样写: net1 = newff(minmax(P), [5 3 1]); ...
- matlab公式加装上横线,[转载]Matlab与Latex(公式编辑)
Matlab文本的Interpreter属性使我们能在图形中显示一个较为复杂的公式,例如在公式中除了有希腊字母外,还有分号.根号等数学符号. 当键入:>> set(text,'Interp ...
- matlab调用c语言驱动函数,[转载]Matlab调用C语言函数
3.3000 要得出以上的结果,那应该怎样做呢? 解决方法之一是要通过使用MEX文件,MEX文件使得调用C函数和调用Matlab的内置函数一样方便.MEX文件是由原C代码加上MEX文件专用的接口函数后 ...
最新文章
- Java实现把一个对象复制给另一个有相同字段属性的对象
- GNU make manual 翻译(四十三)
- CentOS 7 搭建CA认证中心实现https取证
- java spliterator,Java 8 之Stream Spliterator
- Proxmox VE2.2虚拟化安装配置学习笔记(三)
- 【原创】打造基于Dapper的数据访问层
- 畅捷通服务器系统,畅捷通
- Ember之Computed Properties计算属性
- redis读取连接超时问题
- echarts绘制地图
- 基于OLAP的时间维度设计
- 回归中的相关度和决定系数及应用
- time(0) 是什么意思?
- 基于STM32单片机的远程智能浇花花盆GSM短信浇水补光方案原理图程序设计
- 12031,终结你!
- OpenCV特征检测出现Unhandled exception at……Access violation reading location 0x00000000.
- python常用re正则表达式大全,查找指定内容
- 硬解直显模式实现抓图功能(二)
- pd15不能连接oracle11g,PowerDesigner15 使用时的十五个问题附解决方法
- Ubuntu 20.04开启热点(连着wify开wify)