数字图像处理实验指导书(带源程序)
- 格式:doc
- 大小:1.90 MB
- 文档页数:23
实验一Matlab图像处理工具箱的初步练习一. 实验目的1. 掌握有关数字图像处理的基本概念;2. 熟悉Matlab图像处理工具箱;3. 熟悉使用Matlab进行数字图像的读出和显示;4. 熟悉运用Matlab指令进行图像旋转和缩放变换。
二. 练习1. 文件的读入与显示(1) 运行Matlab。
(2) MATLAB窗口构成:在缺省的情况下,由三个窗口组成。
命令窗口(command window)、命令历史(command history)、工作空间(workspace)。
注意:缺省窗口的设置步骤为:MATLAB菜单/view选项/Desktop layout/default。
(3) 调入一个文件:i=imread('pout.tif');%注意:前面的“%”是用于注释的,不会被执行,只是说明这个语句的作用。
此时的i出现在什么窗口?是什么类型的变量?大小是多少?(4) 显示这幅图:imshow(i);(5) 将变量i转置成j,即j=i';显示j即imshow(j);%在胸前左侧花纹怎么会跑到右边的呢?举一个例子加以验证:设a=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15];b=a’;此时的b与a有什么区别?(6) 写入到一个新的图像文件'abc.tif'中,即imwrite(j,'abc.tif')。
(7) 清除变量命令:clear执行这个命令后,workspace窗口中的变量有没有?怎么验证?(8) 清除用户开设的窗口命令:close all(9) 调入图像文件'abc.tif'并显示。
问题:(1) 操作符“’”是图像的转置的意思,转置两次后,是否回到原图像?(2) 命令后的符号“;”所起的作用是什么?(3) 命令是否可以大写母?2. 灰度图像分别选择不同的灰度级(如2、4、16、64、128个)来显示同一幅图像(如testpat1.tif)。
i=imread('testpat1.tif');figure,imshow(i,2) %显示2个灰度级figure,imshow(i,4) %显示4个灰度级figure,imshow(i,16) %显示16个灰度级figure,imshow(i,64) %显示64个灰度级figure,imshow(i,128) %显示128个灰度级3. RGB图像RGB = imread('ngc6543a.jpg');%RGB为650*600*3imshow(RGB);将这一图写入到abc.jpg文件中去,并用“画图”进行编辑。
使用菜单“图像”/“属性”,将此图的尺寸改为300*300,其效果如何?问题:(1) 将一幅图像改变它的尺寸时,其分辨率是不改变?(使用windows的“图画”工具)(2) 如何使用“画图”中的拉伸功能,实现图像的缩小?(3) 2006年,市场上100万像素是什么意思?4. 在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。
5. 函数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’ 实现的,该参数表示将旋转后的图像取与原图像相同的中心部分输出。
三. 实验内容1.从磁盘上读入图像“cameraman.tif”,将其分别放大到1.5倍(用“bilinear”方法)和2.6倍(用“bicubic”方法),显示在不同的图像窗口中。
2.从磁盘上读入图像“lena.tif”,将其放大2倍,并将结果用BMP格式以“lena.bmp”为文件名,写入磁盘。
(用imwrite命令,该命令的用法请用help imwrite查看)3.给定一幅图像,如lena.bmp,分别将其顺时针旋转450,逆时针旋转300。
4. 给定一幅图像,如lena.bmp,以不同灰度级显示,比较显示的不同效果。
四. 实验报告要求1.实验目的;2.实验基本原理;3.实验步骤4.源程序;5.处理前后的图像;6.实验结论;7.实验收获、体会。
实验二图像的增强一. 实验目的1. 熟悉直方图的计算和显示;2. 熟悉通过算术运算进行图像增强的方法;3. 熟悉运用直方图变换进行图像增强的原理。
二. 实验原理1. 直方图在数字图像处理中,一种最简单和最有用的工具是直方图,它概括了一幅图像的灰度级内容。
(1)函数:imhist(I,n)功能:显示指定图像的直方图。
语法格式:Imhist(I,n)Imhist(X,map)[counsts,x]=imhist(…)说明:I为输入图像,n为指定的灰度级数目,默认值为256。
Imhist(X,map)计算和显示索引色图像为X的直方图,map为调色板。
[counsts,x]=imhist(…)返回直方图数据向量counts或相应的色彩值向量x。
(2)函数:imadjust功能:将图像的灰度值映像为一个新的数值范围。
语法格式:J=imsdjust(I,[low_in high_in],[low_out high_out],gamma)newmap=imadjust(map,[low high],[bottom top],gamma)说明:I是输入图像矩阵,J是经过直方图变换后的输出图像矩阵。
Low_in参数和high_in参数分别用来指定输入图像需要映像的灰度范围,参数Low_out和high_out指定输出图像所在的灰度范围。
newmap=imadjust(map,[low high],[bottom top],gamma)命令是调整索引色图像的调色板map。
此时若[low high]和[bottom top]都是2×3矩阵,就根据它们的值分别调整R、G、B三个分量。
不管I属于哪一类,此处指定的强度值的范围均为[1,0]。
如果I是unint8,则会将用户指定的值乘以255,然后将得到的结果作为实际的强度使用。
如果I是unint16,则会乘以65536。
Gamma是一个可选参数。
一般来说灰度间的映像是直线,但是通过调整gamma参数可以使其变为非线性的映像。
(3)直接的灰度变换曲线可以取得增强对比度的效果,对于低值灰度的图像,有时使用对数变换效果更好。
对数变换可以扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节更容易看清楚。
对数变换的灰度映像采用如下表达式:(+=yxfxyg),)1,)log((2. 直方图均衡化函数:histeq功能:实现对输入图像的直方图均衡化。
语法格式:J=histeq(I,hgram)J= histeq(I,n)[J,T]= histeq(I,…)newmap= histeq(X,map,hgram)newmap= histeq(X,map)[newmap,T]=histeq(X,…)说明:其中,n表示输出图像的灰度级数目,是一个可选参数,缺省值为64。
J=histeq(I,hgram)是将原图像I的直方图变成用户指定的向量hgram,hgram中的各元素值域为[0,1]。
[J,T]=histeq(I,…)返回能从图像I的灰度直方图变换成图像J的直方图的变换T。
newmap= histeq(X,map)用来对索引图像进行处理,索引图像的返回值newmap将是输出图像的调色板。
J= histeq(I,n)将原图像I转换成具有指定灰度级数目的输出图像J。
newmap= histeq(X,map,hgram)将索引图像X的直方图变成用户指定的向量hgram,hgram中的各元素值域为[0,1]。
[newmap,T]=histeq(X,…)返回能从索引图像I的直方图变成索引图像J的直方图的变换T。
3. 直方图规定化在Matlab中可以调用函数J=histeq(I,hgram)来实现直方图规定化。
其中hgram是由用户指定的矢量,规定将原始图像I的直方图近似变换成hgram,hgram中的每一个元素都在[0,1]中。
4. 代数运算Matlab工具箱中提供了一个函数imnoise来给图像增添噪声。
函数:imnoise功能:给图像增添不同种类的噪声。
语法格式:J=imnoise(I,type)J=imnoise(I,type,parameters)说明:其中,参数type指定噪声的种类,parameters是与噪声种类有关的集体参数。
I是输入图像,J 是对I增添噪声后的输出图像。
如表2-1所示。
表2-1 噪声种类及参数说明三. 实验内容1. 直方图(1)同时显示一幅图像(如pout.tif)及其直方图。
参考程序:I=imread('pout.tif');subplot(1,2,1);imshow(I);title('原图像');axis square;subplot(1,2,2);imhist(I);title('图像的直方图');axis square;(2)通过对比度扩展增强图像rice.tif的对比度。
要求:将该图像从灰度范围[0.15,0.9] 映像到[0,1],同时显示原图像及其直方图,变换后的图象及其直方图,并说明实验效果有何变化。
参考程序:I=imread('rice.tif');subplot(2,2,1);imshow(I);title('原图像');subplot(2,2,2);imhist(I);title('原图像直方图');J=imadjust(I,[0.15 0.9],[0 1]);subplot(2,2,3);imshow(J);title('变换后图像');subplot(2,2,4);imhist(J);title('变换后图像直方图');结论:通过将图像从灰度范围[0.15,0.9]映像到[0,1],图像的对比度明显增加。