Matlab图象处理工具箱

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab图象处理工具箱
3.1 Matlab图象处理初步
读入、显示图象
Imread函数用于读入各种图像文件,其语 法格式为:
I=imread(‘filename.fmt’) [X,map]=imread(‘filename.fmt’) 其中参数fmt指定了图像的格式。可选的值 为cur\bmp\hdf\ico\jpg\pcx\png\tif和xwd。 默认的文件目录为当前MATLAB的工作目 录。
uint8 uint16 double
[0, 255] [0, 65535] [0, 1]
读入、显示图象
I=imread(‘pout.tif’) ; imshow(I); whos; size(I);
源自文库
f=imread(‘D:\myimage \lena256.jpg’) ;
实现直方图均衡化
上图的pout.tif图像对比较低,为了观察图 像当前状态下分布情况,可以通过使用 imhist函数创建描述该图像灰度分布的直方 图。首先使用figure命令创建一个新的图像 窗口,避免直方图覆盖图像数组I的显示结 果。其程序如下:
实现直方图均衡化
I=imread(‘pout.tif’) ; imshow(I);
figure, imhist(I);
实现直方图均衡化
由运行结果可知,图像没有覆盖整个灰度 范围[0,255],仅在较狭窄范围内,同时图 像中灰度值的高低区分不明显,无较好的 对比度。可以通过调用histeq函数将图像的 灰度值扩展到整个灰度范围中,从而达到 提高数组I的对比度。其程序如下:
读入、显示图象
Imshow Imshow函数是最常用的显示各种图像函数 ,其语法如下: imshow(I,n) imshow(I,[low high]) imshow(BW) imshow(X,map)
读入、显示图象
Imshow(RGB) imshow(I,n)和imshow(I,[low high])用于显示灰度 图像,n为灰度级数目,默认值为256。[low high] 为图像数据的值域。在很多情况下,经过处理的 图像数据的值域都会发生变化。比如对一幅 double型的灰度图像滤波后,图像数据的值域已 不在[0,1]中了,如果还用前面的显示方法,则得不到 正确的结果.如果清楚地知道数据的值域[low high] 可以使用调用imshow(I,[low high]).否则可用空间
imfinfo('pout2.jpg')
图象处理的应用例子
估计图象背景 图像rice.tif中心位置的背景亮度高于其它部 分的亮度,使用imopen函数和一个半径为 15的圆盘形结构元素对输入的图像I进行形 态打开操作。形态打开操作将会删除那些 不完全包括在半径为15的圆盘中的对象, 从而实现背景亮度的估计,其程序如下:
clear; close all; I=imread('rice.tif') ; imshow(I); bg=imopen(I,strel('disk',15) ); I2=imsubtract(I,bg); figure, imshow(I2);
图象处理的应用例子
调节图象对比度
从图可看出,修改后的图像很暗,可以使用imadjust 函数来调节图像的对比度,并显示调节后的效果。
读入、显示图象
向量为参数,即imshow(I,[]). imshow(BW)用于显示二值图像,图像的数据类 型可以是double和uint8,值域为或者; imshow(X,map)用于显示索引图像,X为数据图 像矩阵,map为调色板; Imshow(RGB)用于 真彩色图像。 colorbar Colorbar函数用于显示颜色条,并将图像中使用 到的色彩排列在图像旁边,这样可以根据图像的 色彩确定各像素的值。这对于用图像表示灰度范 围不在通常范围的情况非常有用。
imwrite(I2, ‘pout2.jpg’) ; imwrite(I2, ‘D:\myimage \pout2.jpg’) ;
I3=imread(‘pout2.jpg’); Figure,imshow(I3)
检查新生成文件的内容
利用imfinfo函数可以观察上述语句写了什 么内容在磁盘上。值得注意的是:在 imfinfo函数语句行未尾不要加上分号,以 保证MATLAB能够显示图像输出结果;另 外,要保证此时的路径与调用imwrite时的 路径一致。其程序如下:
读入、显示图象
>> I=imread('trees.tif'); >> imshow(I) >> colormap(jet(64)) >> colorbar
读入、显示图象
Montage 多帧图像指的是包含不止一幅图像的图像 ,MATLAB中支持多帧图像的文件格式有 HDF和TIFF两种。多帧图像的显示方式也 有两种,一种是显示多帧图像中的一帧, 另一种是同时显示多帧图像的所有帧。例 如读取图像mri的第3帧,我们可以用下列 语句实现:
读入、显示图象
Montage(I) %拼接灰度图像 Montage(X,map) %拼接索引图像 Montage(RGB) %拼接真彩色图像 下面的例子将序列图像拼接显示. load mri montage(D,map)
读入、显示图象
Immovie 在MATLAB中,我们不但可以单独显示多帧,同 时显示所有帧,还可以用动画的方式显示帧, Immovie函数即可以将多帧图像转换成MATLAB 动画,其语法格式为: Mov=immovie(X,map) Immovie只能使用索引图像,因此如果要将其它 类型的图像转换成动画,首先要转换成索引图像 。要在MATLAB中播放这个动画,首先要指定调 色板。
读入、显示图象
Colorbar函数语法格式如下: colorbar('vert') colorbar('horiz') colorbar(h) Colorbar 其中colorbar(‘vert’)、colorbar(‘horiz’)分别指定了 颜色的显示方式为垂直或水平,默认值为垂直。 colorbar(h)将颜色条放在指定的坐标轴h上。
Name Size
Bytes Class
I 291x240
69840 uint8 array
Grand total is 69840 elements using 69840 bytes
读入、显示图象
图像读取函数为:imread,并把读取出来的图像 pout.tif存储在一个名为I的数组中,然后使用 imshow来显示数组I,使用whos命令来查看图像 数据I是如何存储在内存中,用size命令查看图像 的大小。
实现直方图均衡化
I2=histeq(I); figure, imshow(I2);
figure, imhist(I2);
保存图象
将新调节后的图像I2保存到磁盘中。假设 希望将该图像保存为JPG格式图像文件, 使用imwrite函数并指定一个文件名,该文 件的扩展名为.jpg。其程序为:
保存图象
image(X);
读入、显示图象
colormap(map); 为了用image函数显示由矩阵表示的图像 ,MATLAB将矩阵的每个元素对应到当前 调色板的一行,并取这一行的颜色值作为 该点的颜色。因此显示图像时必须先指定 调色板,才能真实地表示图像。 例如:MATLAB预存的一组图像数据,包 含图像矩阵X和调色板矩阵map,下面的
读入、显示图象
subimage(X,map) %在一个窗口里显示多个索引 图像。 subimage(I) %在一个窗口里显示多个灰度图像。 subimage(RGB) %在一个窗口里显示多个真彩图 像。 subimage(x,y,…) %将图像按指定的坐标(x,y)显 示. 下面的例子将显示两幅具有不同调色板的图像.
读入、显示图象
Load filename.ext Load filename-ASCTT Load filename-MAT Load(‘filename’) Load filename.ext可以读取名为filename的ASCII 文件,文件可以存储各列用空格分开的ASCII格式 的变量值. Load filename-ASCTT和Load filename-MAT决定是以ASCII格式还是以二进制 格式读取变量
通过使用最大类间方差法找到图片的一个合适的阈值函 数graythresh和im2bw创建一个新的二值图像bw,其程 序如下:
图象处理的应用例子
clear;close all; I=imread('rice.tif') ; imshow(I); bg=imopen(I,strel('disk', 15));
图象处理的应用例子
原始图象减去背景图象
将背景图像bg从原始图像I中减去,从而创建一个新的 、背景较为一致的图像,其程序如下:
bg=imopen(I,strel(‘disk’, 15)); I2=imsubtract(I,bg)); figure, imshow(I2); I3=imadjust(I2,stretchlim(I2 ),[0,1]); figure, imshow(I3);
图象处理的应用例子
对图象作二值化变成二进制图象
读入、显示图象
一般可以用下例语句放映动画: Colormap(map),movie(mov) 例如 load mri mov=immovie(D,map); colormap(map); movie(mov)
读入、显示图象
Subimage MATLAB提供的subplot函数虽然能将一个 图像窗口分成几个部分,但同一个图像窗 口内只能有一个调色板。而MATLAB图像 处理工具箱的Subimage函数可在一个图像 窗口内使用多个调色板,使得各种图像能 在同一个图像窗口中显示。 Subimage函数的语法格式为:
读入、显示图象
>> load trees >> [X2,map2]=imread('fore st.tif'); >> subplot(121),subimage( X,map) >> subplot(122),subimage( X2,map2)
读入、显示图象
I=imread(‘pout.tif’) ; imshow(I); whos; size(I);
读入、显示图象
在MATLAB中读取图像还经常使用load这个命令 。load的功能是从*.mat文件中读取变量。 Load格式为: load filename %把名为filename的*.mat文件中 存储变量读入MATLAB的工作空间,各变量名为 存储时的变量名。 load filename X Y %把名为filename的*.mat文件 中存储的X和Y变量读入MATLAB的工作空间。
读入、显示图象
当用字符串格式文件名称时, Load(‘filename’)可 以直接读取名为filename的*.mat文件. 例如
[I,map]=imread('pout.tif'); save newfile I map load newfile I whos
读入、显示图象
MATLAB及图像处理工具箱的显示功能非 常强大,不仅可以用来显示各种类型的图 像,还可以用多种方式显示图像及图像序 列。下面对这些函数进行介绍。 1、image Image是MATLAB本身提供的最原始的图 像显示函数,其使用格式如下:
读入、显示图象
语句用来显示图。 load clown image(X) colormap(map)
读入、显示图象
说明:clown也是MATLAB预存的一个mat文 件,里面包含一个数据矩阵X和一个调色板 map。另一个与 image函数相似的函 数是imagesc,两者 的区别在于imagesc 能够自动调整值域 范围: figure,imagesc(X)
读入、显示图象
mri=uint8(zeros(128,128,1,27)); for frm=1:27 [mri(:,:,:,frm),map]=imread('mri.tif',frm); end imshow(mri(:,:,:,3),map) 另外还可以同时显示多帧图像中的所有帧 ,这是由montage函数完成,其语法为:
相关文档
最新文档