MATLAB 图像处理命令使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB 图像处理命令使用

1.MATLAB中图像处理的一些简单函数

A、imread

imread函数用于读入各种图像文件,其一般的用法为

[X,MAP]=imread(‘filename’,‘fmt’)

其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的图像文件(可以加上文件的路径)。

例:[X,MAP]=imread(’flowers.tif’,’tif’);

比较读取二值图像,灰度图像,索引图像,彩色图像的X和MAP的特点,可以利用size 函数用来显示数组的维数,了解数据的特点。

B=size(a) 返回数组a 的维数。

B、imwrite

imwrite函数用于输出图像,其语法格式为:

imwrite(X,map,filename,fmt)

imwrite(X,map,filename,fmt)按照fmt指定的格式将图像数据矩阵X和调色板map写入文件filename。

C、imfinfo

imfinfo函数用于读取图像文件的有关信息,其语法格式为

imfinfo(filename,fmt)

imfinfo函数返回一个结构info,它反映了该图像的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。

2.MATLAB中图像文件的显示

imshow

imshow函数是最常用的显示各种图像的函数,其语法如下:

imshow(X,map)

其中X是图像数据矩阵,map是其对应的颜色矩阵,若进行图像处理后不知道图像数据的值域可以用[]代替map。

(1)二进制(二值)图像显示方法,在MATLAB中一幅二值图像是uint8或双精度的,该矩阵仅包含0和1。如果希望工具箱中的函数能将图像理解为二进制的,那么所有数据都要是逻辑数据,必须对其进行设置(将所有数据标志均设置on).可以对数据利用“~”取反操作实现图像逆转即黑白反色。

(2)灰度图像的显示方法,正常情况下无需指定灰度图像的调色板格式。可以是使用imshow函数指定要显示灰度级数目,格式 imshow(I,n),n为指定的灰度级数目。用户也可以指定数据的范围,格式imshow(I,[low high])其中low 和high参数分别为数据数组的最小值和最大值。如果为空矩阵([]),那么imshow 函数将自动进行数据标度。

(3)索引图像,imshow(x,map)对于x的每个个像素,imshow显示存储map 中相应行的颜色。

(4) RGB图像的显示,它直接对颜色进行描述而不使用调色板,格式imshow(RGB)。 RGB(:,:,1)RGB(:,:,2) RGB(:,:,3)(5)特殊显示,如多幅图像的显示,需要显示多幅图像时。可以使用figure 语句,它的功能就是重新打开一个图像显示窗口。例:

I=imread(‘rice.tif’);

Imshow(I);

J=imread(‘flowers.tif’);

figure,imshow(J);

也可以将多幅图像显示在同一个单独的图像窗口中,有两种方法:一种是联合imshow和subplot函数;另一种是联合使用subimage函数和subplot函数,subplot(m,n,p)这种格式将图形窗口划分为m*n个矩形显示区域并激活第p个显示区域。

A

[x1,map1]=imread('trees.tif');

[x2,map2]=imread('forest.tif');

subplot(1,2,1),imshow(x1,map1)

subplot(1,2,2),imshow(x2,map2)

B

[x1,map1]=imread('trees.tif');

[x2,map2]=imread('forest.tif');

subplot(1,2,1),subimage(x1,map1)

subplot(1,2,2),subimage(x2,map2)

3.MATLAB中灰度直方图的显示

MATLAB图像处理工具箱提供了imhist函数来计算和显示图像的直方图,imhist 函数的语法格式为:

imhist(I,n)

imhist(X,map)

其中imhist(I,n)计算和显示灰度图像I的直方图,n为指定的灰度级数目,默认值为256。imhist(X,map)计算和显示索引色图像X的直方图,map为调色板。例:

I = imread('rice.tif');

imshow(I)

figure, imhist(I)

4.对比度增强

如果原图像f(x,y)的灰度范围是[m,M],我们希望调整后的图像g(x,y)的灰度范围是[n,N],那么下述变换,,就可以实现这一要求。

MATLAB图像处理工具箱中提供的imadjust函数,可以实现上述的线性变换对比度增强。Imadjust函数的语法格式为:

J = imadjust(I,[low_in high_in],[low_out high_out])

J = imadjust(I,[low_in high_in],[low_out high_out])返回图像I经过直方图调整后的图像J,[low_in high_in]为原图像中要变换的灰度范围,[low_out high_out]指定了变换后的灰度范围。其详细的用法可参见《计算机图像处理与识别技术》。

例:

I = imread('pout.tif');

J = imadjust(I,[0.3 0.7],[]);

imshow(I), figure, imshow(J)

5.图像类型转换:

上表中函数有类似的调用格式:函数的输入参数是图像数据矩阵(如果是索引图像,那么输入参数还包括调色板),返回值是转换后的函数(包括索引函数的调色板),只有函数im2bw的调用格式不同,其输入参数中还包括一个截取阈值,超过此阈值的像素被截取为1否则为0。示例:

A、load trees

BW = im2bw(X,map,0.4);

imview(X,map),imview(BW)

B、

I = imread('snowflakes.png');

X = grayslice(I,16);

imview(I)

imview(X,jet(16))

6.MATLAB还提供了图像存储类型之间的转换函数

这些函数包含im2doble、im2uint8和 im2uint16,这些函数可以自动的进行原始数据的重新标度和偏移.调用格式简单,输入为图像矩阵,输出为转换后的图像:如:以下命令将一个描述双精度RGB1图像的矩阵(数据范围为[0,1]转换为uint8的图像矩阵([0,255]范围内)RGB2=im2uint8(rgb1);也可以使用MATLAB函数对图像存储类型进行转换。例如,double函数可以将uint8或 uint16的数据转化为双精度数据。存储类型之间的转变将改变matlab及其工具箱理解图像数据的

相关文档
最新文档