实验1 图像的特性及图像处理初步1 实验目的了解MatLab软件/语言学,会使用MatLab的图像处理工具箱(Image Processing Toolbox)。
使学生初步具备使用该软件处理图像信息的能力,并能够利用该软件完成本课程规定的其他实验和作业。
了解图像的基本特性,以及对图像进行简单运算后其性质的变化,学习对图像进行基本处理并评价处理结果。
2 实验要求学生应当基本掌握MatLab的操作,掌握MatLab图像处理工具箱中最常用的函数的用法,会用该软件调入/保存图像数据,会利用该软件对图像进行简单的计算,例如四则运算等,并观察运算的结果加深对于象素和数值之间的关系的理解。
原始图像3 实验内容与步骤(1) 学习MatLab的基本操作(2) 调入并显示图像 lena.giflane = imread('lena.gif');figure;imshow(lane);(3) 在图像 lena.gif 和图像的数据上进行加减乘除一个常数观察计算结果l1 = imadd(lane,100);figure;imshow(l1);title('加法')l2 = imsubtract(lane,50);figure;imshow(l2);title('减法')l3 = immultiply(lane,0.6);figureimshow(l3)title('乘法')l4 = imdivide(lane,2);figureimshow(l4);title('除法');加法从图中可以看出,当加法处理时,图像灰度值增加而变亮,减法时图像灰度值减小而变暗,由于乘法参数为0.6,相当于减小灰度值;而(4) 利用 imcrop 函数对图像lena.gif 的头部进行剪裁,然后显示剪裁的结果l5 = imcrop(lane,[55,50,180,212]);figureimshow(l5)title('剪切')4 思考题/问答题(1)简述MatLab软件的特点1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2) 具有完备的图形处理功能,实现计算结果和编程的可视化;3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。
(2)M atLab软件可以支持那些图像文件格式答:JPEG,BMP,PCX,TIFF,PNG,GIF,HDF,ICO,CUR,XWD,RAS,PBM,PGM,PPM (3)说明函数 imread 的用途格式以及各种格式所得到图像的性质从图像文件中读取数据,调用格式为A = imread(filename,fmt),其作用是将文件名用字符串filename表示的,扩展名用fmt表示的图像文件中的数据读到矩阵A 中。
如果filename所指的为灰度级图像,则A为一个二维矩阵;如果filename所指的为RGB图像,则A为一个m×n×3的三维矩阵。
Filename表示的文件名必须在MATLAB的搜索路径范围内,否则需指出其完整路径。
(4)为什么用I = imread(‘lena.tif’) 命令得到的图像 I 不可以进行算术运算?tif文件一般为多帧文件,有点像动画,含有三维信息,而算术运算只针对而且信息的图像。
实验2 图像的增强1 实验目的学习常见的图像增强的方法,并实际体会图像增强前后画质的变化,了解几种不同增强方式用于不同图像处理所取得的效果,培养处理实际图像的能力。
2 实验要求利用MatLab工具箱中关于图像增强的函数,计算本指导书中指定图像的直方图,并对其进行灰度增强处理,自己编制程序实现MatLab工具箱中函数以外的图像增强算法,对于本指导书中指定的图像进行处理3 实验内容与步骤(1) 调入并显示图像cells.gif(2) 计算并显示图像的直方图(3) 对图像进行直方图均衡增强,显示均衡后的图像及其直方图,观察结果并与原图像进行对比(4) 使用指数、对数方法对图像进行增强,显示增强后的图像及其直方图,观察结果并与原图像进行对比编写的总程序如下:cells = imread('cells.gif')figuresubplot(1,2,1)imshow(cells)title('原始图像')subplot(1,2,2)imhist(cells)title('原始直方图')figure %均衡增强hence = histeq(cells)subplot(1,2,1)imshow(hence)title('均衡后图像')subplot(1,2,2)imhist(hence)title('均衡后直方图')i = mat2gray(cells)K = log(255*i+1)/log(256); %对数处理变换figure;subplot(121);imshow(K);title('对数变换图像')subplot(122);imhist(K);title('对数变换后直方图')l = (exp(log(256)*i)-1)/255; %指数变换figure;subplot(121);imshow(l);title('指数变换图像') subplot(122);imhist(l);title('指数变换后直方图')所得的图像如下:由图可见,均衡以及指数变换处理后图片灰度分布更均匀,图像也更清晰;而对数变换效果不明显,相当于是实现了反差的效果,将图像整体加亮。
5 思考题(1)小结一下本实验所用的增强方法本实验用了各种算术的方法实现了图像的增强,实质上只是改变了点的像素值,为点运算。
(2)什么条件下可以使用对数或指数增强技术?对数变换能扩展低灰度值,压缩高灰度值,使低灰度值图像更清晰;指数变换能扩展高灰度值,压缩低灰度值,适用于高灰度图像。
实验3 图像的算术运算1. 实验目的了解图像的算术运算在数字图像处理中的应用,体会图像算术运算处理的过程和处理前后图像的变化。
2. 实验要求掌握基本的图像算术运算及相关的 MatLab 程序能够针对本实验指导书中提出的问题自行确定适当的算术运算方法进行处理,能够预先估计处理效果,并能对于结果作出正确的讨论。
3. 实验内容与步骤(1) 进一步阅读有关资料并熟悉MatLab的基本操作(2) 图像算术运算的应用之一a) 调入并显示 array1.gif 和 array2.gif 二幅的内容为数字阵列的图像(这二幅图像中所有数字的位置排列都是规则的而且字体和字号完全相同仅有少量数字不一样)b) 考虑使用适当的图像算术运算方法找出二幅图像中不同的数字及其所处的位置c) 图像array3.gif 与 array2.gif 中的数字完全一样但是数字的位置略有不同以array3.gif 代替 array2.gif 进行上述处理观察其结果并与前面的结果进行比较d) 显示/记录处理结果并做出报告(3) 图像算术运算的应用之二a) 调入并显示图像 CARS1.bmp ~ CARS6.bmp 共六幅图像(这些图像为某交通监视系统获取的一系列图像)b) 为了完成交通的自动监管需要为图像识别系统提供不带背景的车辆照片考虑使用适当的图像算术运算方法达到得到这一目的提示为了得到车辆的图像必须去除图像的背景而图像的背景可以通过多幅图像的平均而近似取得c) 显示/记录处理结果并做出报告(4) 图像的算术运算的应用之三a) 调入并显示noisy400.bmpb) 注意观察上述图像(请注意这幅图像实际上包括了64幅小图像)并对原始图像的状况进行评价c) 图像的噪声是加性噪声考虑使用适当的图像算术运算方法去除噪声d) 进行处理并显示处理后的结果4. 实验结果(1) 程序代码如下clear[Im,map] = imread('array1.gif'); % 输入图像array1.gif I1 = ind2gray(Im,map);[Im,map] = imread('array2.gif'); % 输入图像array2.gif I2 = ind2gray(Im,map);[Im,map] = imread('array3.gif'); % 输入图像array3.gif I3 = ind2gray(Im,map);D1=I1-I2+0.5; % 得到I1和I2的差,加上0.5调解背景亮度D2=I1-I3+0.5; % 得到I1和I3的差,加上0.5调解背景亮度figure(1)imshow(D1);title('图像array1-array2+0.5');figure(2)imshow(D2);title('图像array1-array3+0.5');得到图像array1-array2+0.5图像array1-array3+0.5由图可看出,array1和array2图像相似度比较高,减法运算时显示出了两图像之间的差别,而array2和array3之间因为字号和字体不一致,减法运算结果显示处像素二者完全不同。
(2)代码如下:clear[Im,map] = imread('CARS1.bmp'); % 输入图像CARS1.bmpC1 = ind2gray(Im,map);[Im,map] = imread('CARS2.bmp'); %输入图像CARS2.bmpC2 = ind2gray(Im,map);[Im,map] = imread('CARS3.bmp'); %输入图像CARS3.bmpC3 = ind2gray(Im,map);[Im,map] = imread('CARS4.bmp'); %输入图像CARS4.bmpC4 = ind2gray(Im,map);[Im,map] = imread('CARS5.bmp'); %输入图像CARS5.bmpC5 = ind2gray(Im,map);[Im,map] = imread('CARS6.bmp'); %输入图像CARS6.bmpC6 = ind2gray(Im,map);figure(1)subplot(2,3,1), imshow(C1);title('ͼÏñCARS1.bmp');subplot(2,3,2), imshow(C2);title('ͼÏñCARS2.bmp');subplot(2,3,3), imshow(C3);title('ͼÏñCARS3.bmp'); subplot(2,3,4), imshow(C4);title('ͼÏñCARS4.bmp'); subplot(2,3,5), imshow(C5);title('ͼÏñCARS5.bmp'); subplot(2,3,6), imshow(C6);title('ͼÏñCARS6.bmp');B=C1/6+C2/6+C3/6+C4/6+C5/6+C6/6; % µþ¼Ó6·ùͼÏñÈ¡µÃ±³¾° figure(2)imshow(B); % ÏÔʾµþ¼ÓÈ¡µÃµÄ±³¾°Í¼Ïñ title('µþ¼ÓÈ¡µÃµÄ±³¾°Í¼Ïñ');figure(3)subplot(2,3,1), imshow(C1-B+0.5);title('ͼÏñC1-B'); subplot(2,3,2), imshow(C2-B+0.5);title('ͼÏñC2-B'); subplot(2,3,3), imshow(C3-B+0.5);title('ͼÏñC3-B'); subplot(2,3,4), imshow(C4-B+0.5);title('ͼÏñC4-B'); subplot(2,3,5), imshow(C5-B+0.5);title('ͼÏñC5-B'); subplot(2,3,6), imshow(C6-B+0.5);title('ͼÏñC6-B'); 调入的六张图如下:图像CARS1.bmp 图像CARS2.bmp 图像CARS3.bmp图像CARS4.bmp 图像CARS5.bmp 图像CARS6.bmpCARS1.bmp 图像CARS2.bmp 图像CARS3.bmp 图像CARS4.bmp 图像CARS5.bmp 图像CARS6.bmp叠加后显示的背景为叠加取得的背景图像去除背景后得到的图像图像C1-B图像C2-B 图像C3-B图像C4-B 图像C5-B 图像C6-BC1-B图像C2-B 图像C3-B图像C4-B 图像C5-B 图像C6-B通过图3结果显示,图片背景全部被剔除出,只可见形势的骑车图像。