资源描述:
《实验一 图像点运算增强》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实用标准实验一图像点运算增强一、实验目的1、熟练掌握在MATLAB中图像读取、显示、存储等操作。2、理解直方图的概念及应用,实现图像直方图的显示,及通过直方图均衡和直方图规定化方法对图像进行修正。二、实验原理1、基本函数:1)imread:该函数用于读入各种图像文件。2)imwrite:该函数用于写入图像文件。3)imfinfo:该函数用于读取图像文件的有关信息。4)imshow:该函数用于图像文件的显示。5)rgb2gray:该函数用于把真彩图像转换为灰度图像。6)imhist:函数用于数字图像的直方图计算或显示。7)i
2、madjust:函数用于数字图像的灰度或颜色调整。2、基本原理:1)直方图均衡化:是将一已知灰度概率密度分布的图像经过某种变换,变成一幅具有均匀灰度概率密度分布的新图像.其结果是扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果.histeq函数用于数字图像的直方图均衡化。J=histeq(I,n) 均衡化后的级数n,缺省值为64。文档实用标准2)直方图规定化:需要变换直方图使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度,这时可采用比较灵活的直方图规定化。J=histeq(I,hgram)"直方图
3、规定化",即将原是图象I的直方图变换成用户指定的向量hgram(即指定另一幅图像的直方图数据向量)。方法.三、实验内容1、读取图像彩色图像lily.tif:①查看彩色图像数据结构、数据类型;②将彩色图像转换为灰度图像,并存储为lily1.tif;③将图像变暗,灰度值减小42个灰度级,将变暗图像存储为lily2.tif;④同一窗口显示图像lily1、lily2,以及图像对应的直方图。(title)closeall;clearall;a=imread('e:hjjlily.tif');%将lily.tif读入imfinfo
4、('e:hjjlily.tif');%显示彩色图像的数据结构及类型b=rgb2gray(a);%将彩色图像转化为灰度图像c=double(b);%进行图像运算前,先将uint8转化为doubled=c-42;%将图像的灰度值减小42个灰度级f=uint8(d);%运算完后,将图像的数据类型转换成uint8subplot(2,2,1);imshow(b);title('lily1.tif');subplot(2,2,2);imshow(f);title('lily2.tif');subplot(2,2,3);imhist
5、(b);文档实用标准subplot(2,2,4);imhist(f);图1原图的数据结构及类型图2程序执行得到的图像文档实用标准2、读取图像pout.tif①对其做灰度变换处理,显示变换前后的图像和直方图。②对其进行直方图均衡化,显示变换前后图像和对应直方图。closeall;clearall;a=imread('pout.tif');%将图片读入figure(1);subplot(2,2,1);imshow(a);title('pout1.tif');%显示原图subplot(2,2,3);imhist(a);%观察原图
6、的直方图,以便进行调整b=imadjust(a,[75/255,170/255],[]);%对原图进行灰度调整c=histeq(a);%对原图进行直方图均衡化subplot(2,2,2);imshow(b);title('pout2.tif');subplot(2,2,4);imhist(b);figure(2);subplot(2,2,1);imshow(a);title('pout1.tif');subplot(2,2,2);imshow(c);title('pout3.tif');subplot(2,2,3);imh
7、ist(a);subplot(2,2,4);imhist(c);文档实用标准图三灰度变换图四直方图均衡化文档实用标准3、读入图像lena.bmp与lily1.tif,执行直方图规定化。使lena图像的灰度分布与lily1大致相同,显示变换前后图像及对应直方图。closeall;clearall;a=imread('e:imagelily.tif');%读入图像lily.tifb=imread('e:imagelena.bmp');%读入图像lena.bmpc=rgb2gray(a);%将lily.tif彩色图像转换
8、为灰度图像lily1.tif[y,x]=imhist(c);%对lily1.tif进行直方图均衡化d=histeq(b,y);%将lena.bmp按lily1.tif进行直方图规定化subplot(2,2,1);imshow(c);title('lily1.tif');subplot(2,2,2);im