1、数字图像处理实验报告课 程 数字图像处理 实验名称 Matlab图像处理基础 专业班级 信息0803 姓 名 林一新 学 号 0909082112 实验日期 2010/12/6 教师审批签字 二一年十二月六日一、实验目的(1)理解Matlab的矩阵运算和数字图像处理的关系(2)掌握直方图均衡化和标准化算法二、实验内容(1)利用Matlab的图像处理工具箱中提供的函数进行“直方图均衡化”和“直方图标准化”(2)使用Matlab的矩阵运算功能,开发自己的直方图均衡化算法的Matlab代码。三、实验原理1.图像文件的读取利用imread函数可以完成图像文件的读取操作。常用语法格式为:I=imread
2、(filename,fmt)或I=imread(filename.fmt);其作用是将文件名用字符串filename表示的、扩展名用字符串fmt(表示图像文件格式)表示的图像文件中的数据读到矩阵I中。当filename中不包含任何路径信息时,imread会从当前工作目录中寻找并读取文件。2.图像文件的写入(保存)利用imwrite完成图像的输出和保存操作,也完全支持也完全支持上述各种图像文件的格式。其语法格式为: imwrite(I,filename,fmt)或imwrite(I,filename.fmt);其中的I、filename和fmt的意义同上所述。注意事项:当利用imwrite函数保
3、存图像时,MATLAB默认的保存方式是将其简化为uint8的数据类型。3.图像文件的显示图像的现实过程是将数字图像从一组离散数据还原为一幅可见图像的过程。MATLAB的的图像处理工具箱提供了多种图像显示技术。例如imshow可以直接从文件显示多种图像;image函数可以将矩阵作为图像 ;colorbar函数可以用来显示颜色条;montage函数可以动态显示图像序列。这里仅对常用的显示函数进行介绍。4. 求反Matlab不支持 uint8数据类型的矩阵运算,所以首先要将图像数据转换为双精度类型,计算完成后再转换为unit8类型I=double(I);I=256-1-I;I=uint8(I);5.
4、 线性点运算:J=I*0.43+60;6. 对数变换:I2=42*log(1+I);7. 伽马校正:g=imadjust(I,0.3);8. 图像减法:Z = imsubtract(X,Y)B=imopen(I,strel(disk,15);9. 图像加法:J = imadd(I,50); 添加常数到图像10. 图像添加噪声:J=imnoise(I,salt & pepper,0.005);J = IMNOISE(I,gaussian,M,V) 四、源程序:I=imread(D:My Documents新建文件夹1280x960.jpg);I1=double(I);%转换为双精度类型I2=25
5、6-1-I1;%求反I3=uint8(I2);%转换为unit8类型subplot(3,3,1);imshow(I);title(原始图像);subplot(332);imshow(I3);title(求反图像)subplot(333);J=I1*0.35+70;J1=uint8(J);imshow(J1);title(线性点运算)subplot(334);K=42*log2(1+I1);K1=uint8(K);imshow(K1);title(对数变换)subplot(335);g=imadjust(I,0.3);imshow(g);title(伽马校正)subplot(336);J=ima
6、dd(I,50);imshow(J);title(图像加法)subplot(337);Z=imsubtract(I,50);imshow(Z);title(图像减法)subplot(338);M=imnoise(I,salt & pepper,0.08);imshow(M);title(椒盐噪声)subplot(339);N=imnoise(I,gaussian,0,0.02);imshow(N);title(高斯噪声) 五、运行结果六、实验小结 通过此次实验我们掌初步握了用matlab处理图像。在MATlab中用imread()函数可以读入图像,用imshow()可以显示图像,用MATLAB语言中图像数据与信息的读取方法,通过调用imfinfo()函数可以显示图像的相关信息等。并且掌握和实现了灰度变换处理来增强图像,加入椒盐噪声,高斯噪声,求反,点运算等,为下次顺利完成实验二打下基础。