实验八  数字图像处理初探

 

一、实验目的

了解有关数字图像处理的基本概念,熟悉Matlab软件中关于数字图像处理的基本命令,掌握利用Matlab软件进行数字图像处理的简单方法。

 

二、相关知识

随着计算机技术的日益发展和普及,数字图像处理技术已经从专业术语变成了普通老百姓的日常用语。其实,图像处理是一门实用的学科,同时又需要一定的理论基础,其理论与许多数学方法相关。

    系统地学习数字图像处理需要相当长的时间,我们这里通过一个实验,使大家能够利用Matlab软件对数字图像处理有一个基本概念,能够完成一些基本的操作。

    首先,数字图像以一定的格式存放在计算机的存储器中(如磁盘),常见的格式有BMPTIFPCX等等,因此我们要进行数字图像处理,需要完成的第一项工作就是把图像读到计算机的内存中,以便进行进一步的处理。在Matlab中,函数imread()完成此项工作。我们用下面一小段Matlab语句即可实现将图像“rice.tif”显示在一个图像窗口的左边,将其轮廓图显示在该窗口的右边。

    I=imread('rice.tif');

subplot(1,2,1);

imshow(I)

subplot(1,2,2);

imcontour(I);

这里,imread(‘rice.tif’)将磁盘上的图像文件rice.tif读入内存变量I中,subplot(1,2,1)生成一个可以横向放置2幅图像的窗口,并设置下一显示位置在左边,imshow(I)显示图像Isubplot(1,2,2)准备下一图像的显示位置,imcontour(I)生成图像I的轮廓并显示在窗口的右边,其结果如下:

数字图像一般可分为二值图、灰度图和真彩图等几类。

我们再看下面一段程序:

bw=imread('text.tif');

bw2=imcomplement(bw);

subplot(1,2,1),imshow(bw)

subplot(1,2,2),imshow(bw2)

这里函数imcomplement(bw)完成对二值图像text.tifbw)的求补运算,(即原来黑的变白的,原来白的变黑的。)其结果如下:

该函数也可以用于灰度图像,此时图像的数据被255减,关于灰度图像的结果如下:

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]表示将图像的大小调整为320X480

函数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.从磁盘上读入图像’moon.tif’,将其显示在一个可以显示2幅图像的窗口中的左边,求出 ’moon.tif’的轮廓,并将其显示在上述窗口的右边。

2.从磁盘上读入图像’saturn.tif’,将该图像显示在一个可以显示4幅图像(两行两列)的左上角显示该图像;求出该图像的补图像,将结果显示在右上角;将原图分别顺时针旋转45度和逆时针旋转45度,保持输出图像大小不变,将结果分别显示在左下角和右下角。

3.从磁盘上读入图像’cameraman.tif’,将其分别放大到1.5倍(用’bilinear’方法)和2.6倍(用’bicubic’方法),显示在不同的图像窗口中。

4.从磁盘上读入图像’lena.tif’,将其放大2倍,并将结果用BMP格式以’lena.bmp’为文件名,写入磁盘。(用imwrite命令,该命令的用法请用help imwrite查看)

5.完成实验报告。