[摘要]3.1.1 图像处理的基本操作 (1)读入并显示一幅图像 首先清除 MATLAB 所有的工作平台变量,关闭已打开的图形窗口。
其程序如下: clear; close all; 然后使用图像读取函数 imread 来读取一幅图像。
假设要读取图像 pout.tif,并将其存储在一个名为 I的数组中,其程序为: I=imread(′pout.tif′); 使用 imshow 命令来显示数组 I,其程序如下: imshow(I) 显示结果如图 3.1所示。
(2)检查内存中的图像 使用 whos命令来查看图像数据 I是如何存储在内存中,其程序为: whos MATLAB 做出的响应如下: Name Size Bytes Class I291 ×240 69840 uint8 array Grand totalis69840 elementsusing69840 bytes (3)实现直方图均衡化 如图 3.2所示,pout.tif图像对比较低,为了观察图像当前状态下亮度分布情况,可以通过 使用 imhist函数创建描述该图像灰度分布的直方图。
首先使用 figure命令创建一个新的图像 窗口,避免直方图覆盖图像数组 I的显示结果。
其程序为: figure,imhist(I); 运行结果如图 3.2 所示。
可以通过调用 histeq函数将图像的灰度值扩展到整个灰度范围中,从而达到提高数组 I的对比度。
其程序为: I2 =histeq(I); figure,imshow(I2); 运行结果如图 3.3所示。
此时修改过的图像数据保存在变量 I2中。
然后,再通过调用imhist函数观察其拓展后的灰度值的分布情况。
(4)保存图像 将新调节后的图像 I2保存到磁盘中。
假设希望将该图像保存为 PNG 格式图像文件,使 用 imwrite函数并指定一个文件名,该文件的扩展名为.png。
其程序为: imwrite(I2,′pout2.png′); (5)检查新生成文件的内容 利用 imfinfo函数可以观察上述语句写了什么内容在磁盘上。
值得注意的是:在 imfinfo函数语句行末尾不要加上分号,以保证 MATLAB 能够显示图像输出结果;另外,要保证此时的路 径与调用 imwrite时的路径一致。
imfinfo(′pout2.png′) 运行结果如下所示: ans= … Filename:′pout2.png′ FileModDate:′03-Jun-1999 15:50:25′ FileSize:36938 Format:′png′ FormatVersion:[ ] W idth:240 Height:291 BitDepth:8 ColorType:′grayscale′ 3.1.2 图像处理的高级应用 主要对一幅灰度图像 rice.tif进行一些较为高级的操作为例说明整个过程。
(1)读取和显示图像 首先清除 MATLAB 所有的工作平台变量,关闭已打开的图形窗口,读取和显示灰度图rice.tif,其程序如下: clear; close all; I=imread(′rice.tif′); imshow(I); 运行的结果如图 3.4所示。
(2)估计图像背景 图像 rice.tif中心位置的背景亮度要高于其他部分的亮度。
使用 imopen函数和一个半径 为 15的圆盘形结构元素对输入的图像 I进行形态打开操作。
形态打开操作将会删除那些不 完全包括在半径为 15的圆盘中的对象,从而实现背景亮度的估计,其程序如下: background =imopen(I,stre(′disk15)); (3)从原始图像中减去背景图像 将背景图像 background从原始图像 I中减去,从而创建一个新的、背景较为一致的图像, 其程序如下: I2 =imsubtract(I,background); figure,imshow(I2); 运行结果如图 3.5(a)所示。
(4) 调节图像对比度 从图 3.5(a)可以看出,修改后的图像很暗,可以使用 imadjust函数来调节图像的对比度,并显示调节后的效果。
I3 =imadjust(I2,stretchlim(I2),[0,1]); figure,imshow(I3); (5) 使用阀值操作将图像转换为二进制图像 通过使用函数 graythresh和 im2bw 创建一个新的二值图像 bw,其程序如下: level=graythresh(I3); bw =im2bw(I3,level); figure,imshow(bw); 运行结