实验一 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*3 imshow(RGB);
1
将这一图写入到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) 程序运行后得到如下的结果:
2
左边是原图,中间和右边是旋转后的结果,注意右边的图像和中间图像的区别,右边的图像是由参数’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.实验收获、体会。
3
实验二 图像的增强
一. 实验目的
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)直接的灰度变换曲线可以取得增强对比度的效果,对于低值灰度的图像,有时使用对数变换效果更好。对数变换可以扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节更容易看清楚。
对数变换的灰度映像采用如下表达式:
g(x,y)?log(f(x,y)?1)
2. 直方图均衡化
函数:histeq
功能:实现对输入图像的直方图均衡化。 语法格式:
4
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 噪声种类及参数说明 种类 gaussian localvar passion salt pepper speckle
参数 m,v v 无 无 v 说明 均值为m,方差为v的高斯噪声 均值为0,方差为v的高斯白噪声 泊松噪声 椒盐噪声 均值为0,方差为v的均匀分布随机噪声 三. 实验内容
5