MATLAB在图像处理中的应用(2)

2019-04-09 12:47

图6 原图 图7 旋转九十度的图像后的图像

小结:MATLAB语言中通过调用imrotate函数来实现图像旋转,对比图6、图7,可见图7逆时针旋转了90°。

3、用直方图均衡实现图像增强

直方图均衡化是利用直方图的统计数据进行直方图的修改,能有效的处理原始图像的直方图分布情况,使各灰度级具有均匀的概率分布,通过调整图像灰度值的动态范围,自动地增加整个图像的对比度,以致图像具有较大的反差,大部分细节比较清晰。当图像对比度较低,即灰度直方图分布区间较窄时,可用直方图均衡实现灰度分布区间展宽而达到图像增强的效果。 图像直方图均衡化 具体代码为:

I=imread('cameraman.Tif') %读入图像文件

[J,T]=histeq(I) %对图像进行均衡化,并提取转换曲线结构 figure %新建图形

subplot (2,2,1) %选择2×2区中的1号区 imhist(I) %调用函数画出原始图像柱状图 title('原始图像的柱状图') %标题为原始图像的柱状图 subplot(2,2,2) %选择2×2区中的2号区 imshow(J) %显示均衡化后的图像 title ('均衡化后结果') ; %标题为均衡化后结果 subplot(2,2,3) %选择2×2区中的3号区 imhist(J) %获取图像数据直方图 title ('直方图均衡后柱状图') %标题为直方图均衡后柱状图 subplot(2,2,4) %选择2×2区中的4号区 plot((0:255),T:255) %均衡化转曲线图 title ('转换曲线') %标题为转换曲线

运行结果如图8所示。

6

图8 原图及均衡化后图像对比图

小结:如图所示,观察原始图像与直方图均衡后的柱状图,可见MATLAB语言中直方图均衡化能有效的处理原始图像的直方图分布情况,使各灰度级具有均匀的概率分布。 图像增强对比举例如下: 程序如下:

f = imread('moon.tif'); %导入图片moon图 subplot(2,2,1); %选择2×2个区中的1号区 imshow(f); %显示原图 title('原图像'); %图标注为原图像 subplot(2,2,2); %选择2×2个区中的2号区 imhist(f); %计算原图的直方图 ylim('auto'); %显示原图的直方图 g = histeq(f, 256); %直方图均衡化 subplot(2,2,3); %选择2×2个区中的3号区 imshow(g); %显示均衡后的图像 title('增强后的图像'); %标题为增强后的图像 subplot(2,2,4); %选择2×2个区中的4号区 imhist(g); %均衡化后的直方图

ylim('auto'); %显示均衡化后的直方图如图9

运行结果如图9所示。

7

图9 直方图均衡化图像增强对比图

小结:如图所示,第2行1列的图是直方图均衡后的图,显得比1行1列的原图更加清晰,灰度级减少,两图对应右侧的直方图,后者更加均匀。 4、求灰度直方图问题

为了提高处理速度, 减少机器资源占用, 在进行图像处理时, 通常会将彩色图像灰度化。灰度图像是具有256 个灰度级的黑白图像, 可将亮度化为0~255共256个级别, 0 最暗(全黑),255 最亮( 全白)。图像的灰度值一般分布在一定范围内, 可以用灰度直方图表示。图像灰度直方图反映的是一幅图像中灰度级与其出现概率之间的关系。 现求matlab库图‘camerman.tif’的灰度直方图。 程序如下:

f=imread('cameraman.tif'); %读入cameraman图像 [m,n]=size(f); %计算图像大小

gray_area=zeros(1,256) %计算灰度层表面的面积 for k=0:255 %以k作为变量用for循环 ind = find(f == k); %循环体判断每个像素的频率 gray_area(k+1) = length(ind); %计算不同灰度直方图 end %结束for循环 hist=zeros(1,256); %计算直方图

for k=0:254 %以k作为变量用for循环

hist(k+1)=gray_area(k+2)-gray_area(k+1); %循环体判断每个像素的频率 end %结束for循环 hist=hist/numel(f); %直方图标准化

subplot(121); %选择1×2个区中的1号区 imshow(f); %显示图

subplot(122);stem([1:1:256],hist,'.'); %选择1×2个区中的2号区

8

axis([1 256 0 max(hist)]); %显示直方图

运行结果如图10所示。

图10 camerman的灰度直方图

小结:如图所示是原始图像与其灰度直方图,可见其灰度级与其出现概率之间的关系。 5、利用滤波削弱噪声污染

实际图像在形成、传输的过程中,由于各种干扰因素的存在会受到噪声的影响。一般噪声是不可预测的随机信号,它影响图像的输入、采集、处理的各个过程以及输出结果的全过程,因此它需要采用适当的方法去认识和避免,在MATLAB中消除噪声污染的方法有①线性滤波(线性低通滤波器最常用的是线性平滑滤波器,这种滤波器的所有系数都是正的,也称邻域平均。邻域平均减弱或消除了傅立叶变换的高频分量,对噪声的消除有所增强,但是由于平均而使图像变得更为模糊,细节的锐化程度逐渐减弱。)②中值滤波中值滤波可以保留目标边缘,这是中值滤波器相对于均值滤波器的最大优势。中值滤波具有去噪的性能,可以消除孤立的噪声点,可以用来减弱随机干扰和脉冲干扰,但是边缘不模糊。)(③锐化滤波。图像锐化处理的目的是使模糊图像变得清晰,锐化滤波器减弱或消除了傅立叶空间的低频分量,保留高频分量,从而加强了图像的轮廓,使图像看起来比较清晰。)下面调用中值滤波的程序来说明MATLAB在减少噪声污染方面的应用。 程序举例如下:

I=imread('trees.tif'); %导入图片trees图

subplot(2,2,1); %选择2×2个区中的1号区

imshow(I); %显示原图像 title(''原始图像') %标题为原始图像

J=imnoise(I,'salt & pepper',0.02); %添加盐椒噪声,噪声密度为0.02 subplot(2,2,2); %选择2×2个区中的2号区 imshow(J); %显示添加盐椒噪声后的图像 title(''添加盐椒噪声后的图像') %标题为添加盐椒噪声后的图像

9

K1=medfilt2(J); %在默认的3×3的邻域窗中进行中值滤波 subplot(2,2,3); %选择2×2个区中的3号区

imshow(K1); %显示默认的3×3的邻域窗的中值滤波图像 title('默认的3×3的邻域窗的中值滤波图像’) %标题为默认的3×3的邻域窗的中值滤波图像 K2=medfilt2(J,[5 5]); %在5×5的邻域窗中进行中值滤波¨ subplot(2,2,4); %选择2×2个区中的4号区 imshow(K2); %显示5×5的邻域窗的中值滤波图像 title(''5×5的邻域窗的中值滤波图像') %标题为5×5的邻域窗的中值滤波图像

运行结果如图11所示。

图11 滤波后的图像与原图像对比图

小结:图11中1行1列为原始图像,1行2列为有噪声的图像,MATLAB语言中通过调用medfilt2函数进行中值滤波,且在默认的临域窗中数值越大噪声处理效果越好。 6、图形的剪裁处理

MATBLE定义的NaN常数可以用于表示那些不可用的数据,利用这种特性,可以将图形中需要剪裁部分对应的函数值设置成NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来,从而达到对图形进行剪裁的目的。例如,绘制两个球面,其中一个球在另一个球里面,将外面的球裁掉一部分,以便能看到里面的球。可使用下面的程序:

[x,y,z]=sphere(20); %绘制出位于原点、半径为1的单位球体 z1=z; %把z赋予z1

z1(:,1:4)=NaN; %将大球裁掉一部分1 c1=ones(size(z1)); %第一个曲面 surf(3*x,3*y,3*z1,c1); %生成外面的大球 hold on %设置图形保持状态 z2=z; %把z赋予z2

10


MATLAB在图像处理中的应用(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:地质导向钻井技术的发展

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: