MATLAB数字图像处理基本操作及空域滤波.docx
- 文档编号:9134302
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:13
- 大小:476.98KB
MATLAB数字图像处理基本操作及空域滤波.docx
《MATLAB数字图像处理基本操作及空域滤波.docx》由会员分享,可在线阅读,更多相关《MATLAB数字图像处理基本操作及空域滤波.docx(13页珍藏版)》请在冰点文库上搜索。
MATLAB数字图像处理基本操作及空域滤波
实验一MATLAB数字图像处理基本操作及空域滤波
实验目的
1、了解有关数字图像处理的基本概念,熟悉Matlab软件中关于数字图像处理的基本命令,掌握利用Matlab软件进行数字图像处理的简单方法。
2、了解并掌握直方图统计方法以及分段线性拉伸、直方图均衡等亮度调整算法,通过观察对这些运算建立感性认识。
3、掌握空域滤波中常用的平滑和锐化滤波器。
实验内容
1.观察各类图像的直方图;操作LUT灰度对照表,进行分段线性拉伸;采用直方图均衡方法对低对比度的图像进行对比度增强。
2.掌握图像模板卷积运算的实质,认识各种模板的处理效果;
3.掌握邻域平均及中值滤波降噪方法的特点,认识其功能及适用场合;
4.掌握拉普拉斯算子、Sobel算子、Prewitt算子和Isotropic算子的特点,认识其功能及适用场合。
实验原理
1、数字图像以一定的格式存放在计算机的存储器中(如磁盘),常见的格式有BMP,TIF,PCX等等,要进行数字图像处理,第一项工作就是把图像读到计算机的内存中,以便进行进一步的处理。
在Matlab中,函数imread()完成此项工作。
下面一小段Matlab语句即可实现将图像“rice.tif”显示在一个图像窗口的左边,将其轮廓图显示在该窗口的右边。
I=imread('rice.tif');
subplot(1,2,1);
imshow(I)
subplot(1,2,2);
imcontour(I);
这里,imread(‘rice.tif’)将磁盘上的图像文件rice.tif读入内存变量I中,subplot(1,2,1)生成一个可以横向放置2幅图像的窗口,并设置下一显示位置在左边,imshow(I)显示图像I,subplot(1,2,2)准备下一图像的显示位置,imcontour(I)生成图像I的轮廓并显示在窗口的右边。
数字图像一般可分为二值图、灰度图和真彩图等几类。
bw=imread('text.tif');
bw2=imcomplement(bw);
subplot(1,2,1),imshow(bw)
subplot(1,2,2),imshow(bw2)
这里函数imcomplement(bw)完成对二值图像text.tif(bw)的求补运算。
(即原来黑的变白的,原来白的变黑的。
)该函数也可以用于灰度图像,此时图像的数据被255减。
在Matlab中,函数imresize(X,M,method)可用来改变图像的大小,其中X表示图像,实数M>0是放大倍数,method用来选择计算数据的方法,其可取值及意义分别为:
“nearest”—最近邻插值法,“bilinear”—双线性插值法,“bicubic”—双三次插值法。
下面这段程序调整图像的大小:
I=imread('circuit.tif');
J=imresize(I,1.25);
imshow(I)
figure,imshow(J)
也可以指定目标图像的大小,此时imresize()的调用格式为:
Y=imresize(X,[320,480])
其中[320,480]表示将图像的大小调整为320
480。
函数imrotate对图像进行旋转操作,我们看如下的程序段:
I=imread('cameraman.tif');
J=imrotate(I,-15,'bilinear');
K=imrotate(I,-15,'bilinear','crop');
imshow(I)
figure,imshow(J)
figure,imshow(K)
注意右边的图像是由参数“crop”实现的,该参数表示将旋转后的图像取与原图像相同的中心部分输出。
2、直方图的定义
图象的灰度直方图是一个函数,表示数字图象中每一灰度级与该灰度级出现的频数(即具有这一灰度级的象素数目)间的对应关系:
M为一幅图象所包含的象素总数;N(b)为图象中灰度值为b的象素总数。
通常,以灰度值b为横坐标,N(b)为纵坐标。
直方图是图象中象素灰度值的一阶概率分布密度的一种近似。
3、对比度增强
对比度增强又称为点运算,逐点改变输入图象的每一象素的灰度,而各象素的位置不改变,一般用来拓宽图象的灰度范围。
(1)灰度变换法(LUT对照)
典型的对比度拉伸灰度变换关系如图1所示,其对应关系如下:
式中,f、g分别表示输入及输出图象,、、为折线段的斜率,a、b决定低、中、高灰度级的范围。
选择不同的、、、a、b、ga及gb数值,可得到各种各样的灰度拉伸效果。
灰度变换前后的灰度变化范围是不变的,对一部分灰度区域的扩张(感兴趣区)都是以其它区域的压缩为代价的。
可见,输出和输入图象之间各点的灰度是按照一定的映射关系相联系的,这种映射关系在计算机中则是通过一个查照表(look-uptable,即LUT)实现的。
通过LUT对照改变了图象中不同灰度特性趋于的对比度或反差(contrast),达到改善视觉效果的目的。
(2)直方图均衡
直方图均衡(histogramequalization)就是通过点运算使输入图像的灰度分布较为均匀,使图像具有较好的视觉效果。
设r,s分别为原图和新图的灰度,r(r),s(s)分别为原图及新图的概率密度函数,则均衡变换为原图像的累积分布函数:
对于离散图像,均衡转换公式为:
其中,Lmax指图像中的最大灰度值(对于灰度图像就是255)。
下面给出直方图均衡化增强图像对比度的MATLAB程序:
I=imread(‘原图像名.gif);%读入原图像
J=histeq(I);%对原图像进行直方图均衡化处理
Imshow(I);%显示原图像
Title(‘原图像’);%给原图像加标题名
Figure;imshow(J);%对原图像进行屏幕控制;显示直方图均衡化后的图像
Title(‘直方图均衡化后的图像’);%给直方图均衡化后的图像加标题名
Figure;subplot(1,2,1);%对直方图均衡化后的图像进行屏幕控制;作一幅子图作为并排两幅图的第1幅图
Imhist(I,64);%将原图像直方图显示为64级灰度
Title(‘原图像直方图’);%给原图像直方图加标题名
Subplot(1,2,2);%作第2幅子图
Imhist(J,64);%将均衡化后图像的直方图显示为64级灰度
Title(‘均衡变换后的直方图’);%给均衡化后图像直方图加标题名
处理后的图像直方图分布更均匀了,图像在每个灰度级上都有像素点。
从处理前后的图像可以看出,许多在原始图像中看不清楚的细节在直方图均衡化处理后所得到的图像中都变得十分清晰。
4、图像平滑和锐化的空间域方法都可表示为模板卷积的形式。
如可将邻域平均处理看作一个作用于图象f(m,n)的低通滤波器,该滤波器的脉冲响应为H(r,s),用离散卷积表示如下:
k、l由邻域大小决定,一般取k=l=1(即33窗口);H(r,s)为加权函数,称为掩模(mask)或模板。
这种离散卷积运算等价于用模板中心点逐一对准每一象素f(m,n),然后将模板元素和它所“压上”的图象元素对应相乘,再求和,其结果就是该中心点象素平滑后的输出
。
图像锐化也可以用类似的方法表示。
常用的平滑模板算子有:
用于锐化或检测边缘的常用模板算子有:
拉普拉斯算子:
Sobel算子:
Prewitt算子:
Isotropic算子:
实验步骤
1.读入图像“moon.tif”,将其显示在一个可以显示2幅图像的窗口中的左边,求出“moon.tif”的轮廓,并将其显示在上述窗口的右边。
2.读入图像“cameraman.tif”,将该图像显示在一个可以显示4幅图像(两行两列)的左上角显示该图像;求出该图像的补图像,将结果显示在右上角;将原图分别顺时针旋转45度和逆时针旋转45度,前者保持输出图像大小不变,后者保持图像完全显示,将结果分别显示在左下角和右下角。
3.读入图像“cameraman.tif”,将其分别放大到1.5倍(用“bilinear”方法)和2.6倍(用“bicubic”方法),显示在不同的图像窗口中。
4.读入图像“moon.tif”,将其放大2倍,并将结果用BMP格式以“moon1.bmp”为文件名,写入磁盘。
(用imwrite命令,该命令的用法请用helpimwrite查看)
5.读入图像“pout.tif”,对获取的数字图像进行分段线性拉伸,参数自己任意给出。
6、显示“pout.tif”的原图、经过均衡化处理过的图像及相应直方图。
7.对图像“cameraman.tif”采用实验原理中给出的算子进行各种增强和平滑处理并显示结果。
实验思考题
1.直方图是什么概念?
它反映了图像的什么信息?
2.直方图均衡化是什么意思?
它的主要用途是什么?
3.邻域平均和中值滤波各适用于那些图像平滑处理?
4.拉普拉斯算子、Sobel算子、Prewitt算子和Isotropic算子进行图像增强处理时各自的特点是什么?
实验报告要求
1.给出图像处理的源程序和结果。
2.对实验结果进行简要分析。
例程:
1、
f=imread('cameraman.tif');
subplot(1,2,1);
imshow(f);
subplot(1,2,2);
imcontour(f);
2、
f=imread('cameraman.tif');
subplot(2,2,1);
imshow(f);
subplot(2,2,2);
imshow(imcomplement(f));
subplot(2,2,3);
imrotate(f,45,'bilinear','crop');
subplot(2,2,4);
imrotate(f,-45,'bilinear','loose');
3、
f=imread('cameraman.tif');
imshow(imresize(f,1.5,'bilinear'));
figure;
imshow(imresize(f,2.6,'bicubic'));
4、
f=imread('moon.tif');
imwrite(imresize(f,2),'moon1.bmp');
5、6、
f=imread('pout.tif');
f1=histeq(f);
imshow(f);
figure,imhist(f,64);
figure,imshow(f1);
figure,imhist(f1,64);
[m,n]=size(f);
f2=double(f);
fori=1:
m
forj=1:
n
iff2(i,j)<70
f3(i,j)=0.5*f2(i,j);
elseiff2(i,j)>=70&f2(i,j)<160
f3(i,j)=4*(f2(i,j)-70)+35;
elseiff2(i,j)>=160
f3(i,j)=0.5*f2(i,j)+215;
end
end
end
end
end
figure,imshow(f3,[]);
7、
f=double(imread('cameraman.tif'));
h1=[111;111;111]./9;
h2=[111;121;111]./10;
h3=[121;242;121]./16;
h4=[111;101;111]./8;
h5=[00.250;0.2510.25;00.250]./2;
lap=[0-10;-14-1;0-10];
sobel1=[10-1;20-2;10-1];
sobel2=sobel1';
prewitt1=[10-1;10-1;10-1];
prewitt2=prewitt1';
isot1=[10-1;1.4140-1.414;10-1];
isot2=isot1';
subplot(3,4,1);
imshow(imfilter(f,h1),[]);
subplot(3,4,2);
imshow(imfilter(f,h2),[]);
subplot(3,4,3);
imshow(imfilter(f,h3),[]);
subplot(3,4,4);
imshow(imfilter(f,h4),[]);
subplot(3,4,5);
imshow(imfilter(f,h5),[]);
subplot(3,4,6);
imshow(imfilter(f,lap),[]);
subplot(3,4,7);
imshow(imfilter(f,sobel1),[]);
subplot(3,4,8);
imshow(imfilter(f,sobel2),[]);
subplot(3,4,9);
imshow(imfilter(f,prewitt1),[]);
subplot(3,4,10);
imshow(imfilter(f,prewitt2),[]);
subplot(3,4,11);
imshow(imfilter(f,isot1),[]);
subplot(3,4,12);
imshow(imfilter(f,isot2),[]);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 数字图像 处理 基本 操作 空域 滤波