收藏 分享(赏)

图像处理常用命令matlab.doc

上传人:saw518 文档编号:6212668 上传时间:2019-04-02 格式:DOC 页数:32 大小:186.50KB
下载 相关 举报
图像处理常用命令matlab.doc_第1页
第1页 / 共32页
图像处理常用命令matlab.doc_第2页
第2页 / 共32页
图像处理常用命令matlab.doc_第3页
第3页 / 共32页
图像处理常用命令matlab.doc_第4页
第4页 / 共32页
图像处理常用命令matlab.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、1. 读入并显示一幅图像clear %清除所有的工作平台变量close all %关闭已打开的图形窗口I=imread (pout.tif); %读取图像 pout.tif(该图像是图像处理工具箱自带的图像),%存储在一个名为 I 的数组中imshow(I) %显示图像 I2. 检查内存中的图像whos %查看图像数据 I 是如何存储在内存中的。3. 实现直方图均衡化figure %生成一个新的图形窗口,避免后面的图像覆盖前面图像的显示imhist(I) %创建描述图像 I 灰度分布的直方图I2=histeq(I); %将图像的灰度值扩展到整个灰度范围,从而提高图像数组 I 的对比度。figu

2、re,imshow(I2) %显示修改过的图像 I2figure,imhist(I2) %显示拓展后的灰度值的分布情况4. 保存图像imwrite(I2,pout.png); %将图像 I2 以 PNG 图像文件格式保存到磁盘5. 检查新生成文件的内容imfinfo(pout2.png) %观察保存的图像文件信息图像处理的高级应用主要对一幅灰度图像 rice.tif 进行一些较为高级的操作为例说明整个过程。1. 读取和显示图像clear %清除所有的工作平台变量close all %关闭已打开的图形窗口I=imread(rice.png); %读取图像 rice.png (该图像是图像处理工具

3、箱自带的图像 )imshow(I) %显示图像2. 估计图像背景background=imopen(I,strel(disk,15); %对图像 I 进行形态学开操作,删除那些不完全包括%在半径为 15 的圆盘中的对象,实现对背景亮度的估计figure,imshow(background)figure,surf(double(background(1:8:end,1:8:end),zlim(0 255); %以表面形式显示背景3. 从原始图像中减去背景图像I2=imsubtract(I,background); %将背景图像 background 从原始图像 I 中减去figure,imsho

4、w(I2)4. 调节图像对比度I3=imadjust(I2,stretchlim(I2),0 1); %调节图像的对比度figure,imshow(I3);5. 使用阈值操作将图像转换为二进制图像level=graythresh(I3);bw=im2bw(I3,level);figure,imshow(bw)6. 检查图像中的对象个数labeled,numObjects=bwlabel(bw,4); %确定图像中的米粒个数numObjects1017. 检查标记矩阵grain=imcrop(labeled) %选择并显示已标记的对象和部分背景内的像素RGB_label=label2rgb(la

5、beled,spring,C,shuffle); %将标记矩阵显示为一副伪彩色的索引图像,在伪彩色的彩色图像中,%标记矩阵中的每一个对象都将被映射为相关调色板中的不同颜色imshow(RGB_label);8.计算图像中对象的统计属性graindata=regionprops(labeled,basic) %测量图像或者区域的属性,并返回一个结构数组。当用于一个标记图像时,%它还为每一个标记分量创建一个结构元素。graindata(51).Area %显示第 51 个元素的属性graindata(51).BoundingBox,graindata(51).Centroid %寻找最近的边缘和中

6、心allgrains=graindata.Area; %创建一个新的向量 allgrains,其包含每个米粒的范围allgrains(51) %查看第 51 个元素的范围max(allgrains) %获取最大的米粒大小biggrain=find(allgrains=404) %返回最大米粒的标记号mean(allgrains) %获取米粒的平均大小hist(allgrains,20) %绘制包含 20 个柱的直方图图像格式:是存储图像采用的文件格式。不同的操作系统、不同的图像处理软件,所支持的图像格式都有可能不同。在实际应用中经常会遇到的图像格式有:BMP、GIF 、TIFF、PCX、JPE

7、G、PSD、PCD、WMF 等。*(1) BMP(Bitmap)文件*(2)GIF 文件*(3)TIF 文件*(4)JPEG 文件图像类型:是指数组数值与像素颜色之间定义的关系,它与图像格式概念有所不同。在 MATLAB 图像处理工具箱中,有五种类型的图像 :(1) 二进制图像在一幅二进制图像中,每一个像素将取两个离散数值(0 或 1)中的一个,从本质上说,这两个数值分别代表状态“开”(on)或“关”(off)。二进制图像仅使用 unit8 或双精度类型的数组来存储 。在图像处理工具箱中,任何返回一幅二进制图像的数组均使用 unit8 逻辑数组存储该图像,并且使用一个逻辑标志来指示 unit8

8、 逻辑数组的数据范围。若逻辑状态为“开” (on ) ,数组范围为0,1;若为 “关” (off) ,则数组范围为0,255。(2) 索引图像索引图像:是一种把像素值直接作为 RGB 调色板下标的图像。在 MATLAB 中,索引图像包含有一个数据矩阵 X 和一个颜色映射(调色板)矩阵map。 数据矩阵:可以是 unit8、unit16、双精度类型的;颜色映射矩阵 map:是一个 m3 的数据矩阵,其中每个元素的值均为 0,1之间的双精度浮点型数据,map 矩阵的每一行分别表示红色、绿色和蓝色的颜色值。索引图像可把像素值直接映射为调色板数值,每一个像素的颜色通过使用 X 的数值作为 map 的下

9、标来获得,如值 1 指向矩阵 map 中的第一行,值 2 指向第二行,依此类推。颜色映射通常与索引图像存储在一起,当装载图像时,MATLAB 自动将颜色映射表与图像同时装载。图像矩阵与颜色映射表之间的关系依赖于图像数据矩阵的类型。如果图像数据矩阵是双精度类型,则数据 1 指向矩阵 map 中的第一行,数据值 2 将指向 map 中的第二行,依此类推;如果图像矩阵是 unit8 或 unit16 类型时,将产生一个偏移,即 数值 0 表示矩阵 map 中的第一行,数据值 1 将指向 map 中的第二行,依此类推。(3) 灰度图像灰度图像通常由一个 unit8、unit16、双精度类型的数组来描述

10、,其实质是一个数据矩阵I,该矩阵中的数据均代表了在一定范围内的灰度级 ,每一个元素对应于图像的一个像素点,通常 0 代表黑色,1、255、65 535(针对不同存储类型)代表白色。(4) 多帧图像多帧图像是一种包含多幅图像或帧的图像文件,又称为多页图像或图像序列。在 MATLAB 中,它是一个四维数组,其中第四维 用来指定帧的序号。在一个多帧图像数组中,每一幅图像必须有相同的大小和颜色分量,每一幅图像还要使用相同的调色板。另外,图像处理工具箱中的许多函数(如:imshow)只能对多幅图像矩阵的前两维或三维进行操作,也可以对四维数组使用这些函数,但是必须单独处理每一帧。如果将一个数组传递给一个函

11、数,并且数组的维数超过该函数设计的超作维数,那么得到的结果是不可预知的。(5) RGB 图像RGB 图像 又称为真彩色图像,它是利用 R、G、B 三个分量表示一个像素的颜色,R、G、 B 分别代表 红、绿、篮 3 种不同的颜色,通过三基色可以合成出任意颜色。所以对一个尺寸为 nm 的彩色图像来说,在 MATLAB 中则存储为一个 nm3 的多维数据数组,其中数组中的元素定义了图像中的每一个像素的红、绿、篮颜色值。图形文件格式把 RGB图像存储为 24 位的图像,红、绿、篮分量分别占用 8 位。MATLAB 的 RGB 数组可以是双精度的浮点型、8 位或 16 位无符号的整数类型。在一个双精度类

12、型的 RGB 数组中,每一个颜色分量都是一个0,1 范围内的数值。如:颜色分量为(0,0,0)的像素将显示为 黑色 ;颜色分量为(1,1,1) 的像素将显示为白色。每一个像素的三个颜色分量都存储在数组的第三维中。如:像素(10,5)的红、绿、篮颜色值分别保存在元素 RGB(10,5,1)、RGB(10,5,2)、RGB(10,5,3)中。例:创建一个简单的 RGB 图像,该图像包含某一范围内不中断的红、绿、篮颜色分量,另外,针对每一个颜色分量各创建一幅图像来加以对比:RGB=reshape(ones(64,1)*reshape(jet(64),1,192),64,64,3);R=RGB(:,:

13、,1);G=RGB(:,:,2);B=RGB(:,:,3);subplot(2,2,1);imshow(R);subplot(2,2,2);imshow(G);subplot(2,2,3);imshow(B);subplot(2,2,4);imshow(RGB);(1)图像颜色浓淡处理(图像抖动)X=dither(RGB,map) %通过抖动算法将真彩色图像 RGB 按指定的颜色(调色板)map 转换成索引色图像 XX=dither(RGB,map,Qm,Qe) %利用给定的参数 Qm,Qe 从真彩色图像 RGB 中产生索引色图像 X。%Qm 表示沿每个颜色轴反转颜色图的量化(即对于补色各颜色

14、轴)的位数,%Qe 表示颜色空间计算误差的量化误差。%如果 Qe 1,越亮输出值越减弱;缺省 gamma=1,表示线性变换。newmap=imadjust(map,low high,bottom top,gamma)对索引图像的颜色图进行变换。如果low high和bottom top均为 23 矩阵,则 gamma为 13 向量,imadjust 函数分别调整红、绿、蓝成分,调整后的颜色图 newmap 大小与原来的 map 一样。RGB=imadjust(RGB1,)对 RGB 图像 RGB1 的每个图像块进行调整。与调整颜色图一样,通过指定low high和bottom top均为 23

15、 矩阵,gamma 为 13 向量,对每个图像块可以使用不同的参数值。如果 top bottom,则图像颜色或灰度将倒置,即倒置变换,得到原图的底片。输入图像可以是 uint8 或双精度类型值,输出图像与输入图像类型一样。2)函数 :brighten 函数该函数的用法为:brighten(beta)使现有颜色图变成更亮或更暗的图。如果 0 beta 1,则颜色图增亮;1beta 0,则颜色图变暗。brighten(beta)可以使用 brighten(-beta)还原。MAP=brighten(beta)返回当前使用的颜色图的更亮或更暗变换后的颜色图 MAP,但不改变现有的显示。NEWMAP=

16、brighten(MAP,beta)返回指定颜色图 MAP 的更亮或更暗变换后的新颜色图 NEWMAP,但不改变显示。brighten(FIG,beta)增强图 FIG 的所有物体。3)直方图调整法在 MATLAB 中,histeq 函数用直方图均衡增强对比度。直方图均衡通过转换灰度图像亮度值或索引图像的颜色图值来增强图像对比度,输出图像的直方图近似与给定的直方图相匹配。J=histeq(I,hgram)转换灰度图像 I,使输出图像 J 的直方图具有 length(hgram)个条,近似与 hgram 相匹配。向量 hgram 包含等间隔条灰度值的整数计数个数。J=histeq(I,N)将灰度

17、图像 I 转化成具有 N 个离散灰度级的灰度图像 J,N 缺省值为 64。J,T=histeq(I)返回灰度级变换,使 J 的灰度级与 I 的灰度级相匹配。NEWMAP=histeq(X,MAP,hgram)变换索引图像 X 的颜色图,使索引图像(X,NEWMAP)的灰度级成分与 hgram 相匹配。返回变换后的颜色图 NEWMAP,length(hgram)必须与 size(MAP,1)一样。输入图像可以是 uint8 或双精度类型。输出颜色图通常为双精度类型。输出 T 也是双精度类型。(2)图像平滑图像平滑主要用于受干扰而质量降低的图像,在 MATLAB 图像处理工具箱中有关图像噪声的函数

18、有:1)向图像增加噪声:imnoise 函数该函数的用法为:J=imnoise(I,type,)向灰度图像 I 中增加 type 类型噪声。Type 为下列字符串之一:gaussian:增加 GAUSS 白噪声;salt c=222 272 300 272 222 194;r=21 21 75 121 121 75;BW=roipoly(I,c,r);figure(1);imshow(I);figure(2);imshow(BW);(2)其他选择方法MATLAB 图像处理工具箱中提供了可以实现按灰度选择区域 的函数 roicolor 函数,其语法格式为:BW=roicolor(A,low,hi

19、gh)其功能是:按指定的灰度范围分割图像,返回二值掩模 BW,low,high 为所要选择区域的灰度范围。如果 low 大于 high,则返回为空矩阵。BW=roicolor(A,v)其功能是:按向量 v 中指定的灰度值来选择区域。下面是一个按灰度分割图像中的目标的程序清单:I=imread(rice.tif);I=imread(rice.png);BW=roicolor(I,128,255);figure(1);imshow(I);figure(2);imshow(BW);3.6.2 特定区域滤波MATLAB 图像处理工具箱中提供的 roifilt2 函数用于对特定区域进行滤波,其语法格式为

20、:J=roifilt2(h,I,BW)其功能是:使用滤波器 h 对图像 I 中用二值掩模 BW 选中的区域滤波。J=roifilt2(I,BW,fun)J=roifilt2(I,BW,fun,P1,P2,)其功能是:对图像 I 中用二值掩模 BW 选中的区域作函数运算 fun,其中 fun 是描述函数运算的字符串,参数为 P1、P2 、。返回图像 J 在选中区域的像素为图像 I 经 fun 运算的结果,其余部分的像素值为 I 的原始值。例:对指定区域进行锐化滤波的程序清单:I=imread(eight.tif);c=222 272 300 272 222 194;r=21 21 75 121

21、121 75;BW=roipoly(I,c,r);h=fspecial(unsharp);J=roifilt2(h,I,BW);subplot(1,2,1);imshow(I);subplot(1,2,2);imshow(J);由运行结果可知:右上角的硬币发生了变化,而其他硬币保持不变。3.6.3 特定区域填充MATLAB 图像处理工具箱中提供的 roifill 函数用于对特定区域进行填充,其语法格式为:J=roifill(I,c,r)其功能是:填充由向量 c、r 指定的多边形,c 和 r 分别为多边形各顶点的 X、Y 坐标。它是通过解边界的拉普拉斯方程,利用多边形边界的点的灰度平滑的插值得到

22、多边形内部的点。通常可以利用对指定区域的填充来“擦”掉图像中的小块区域。J=roifill(I)其功能是:由用户交互选取填充的区域。选择多边形的角点后,按 Enter 键确认选择,用空格键和 Del 键表示取消一个选择 。J=roifill(I,BW)其功能是:用掩模图像 BW 选择区域。J,BW=roifill()其功能是:在填充区域的同时还返回掩模图像 BW。J=roifill(x,y,I,xi,yi)x,y,J,BW,xi,yi=roifill()其功能是:在指定的坐标系 XY 下填充由向量 xi,yi 指定的多边形区域。例:下面是一个为填充指定的区域程序清单:I=imread(rice

23、.tif);I=imread(rice.png);c=52 72 300 270 221 194;r=71 21 75 121 121 75;J=roifill(I,c,r);subplot(1,2,1);imshow(I);subplot(1,2,2);imshow(J);参考教材:数字图像处理及 MATLAB 实现余成波编著 重庆大学出版社 TN911.732.2 图形图像文件的读取图形图像文件操作 相关的函数已 MAT 文件加载或保存矩阵数据 Load、save加载或保存图形文件格式的图像,如 BMP、TIFF 等 Imread、imwrite显示加载到 MATLAB7.0 中的图像 I

24、mage、imagesc信息查询 Imfinfo、ind2rgb2.2.1 图形图像文件的读取主要调用格式:A=imread(filename,fmt) X,map=imread(filename,fmt)=imread(filename) =imread(URL, )=imread(,idx) (CUR,ICO,and TIFF only) =imread(,idx) (CUR,ICO,and TIFF only)=imread(,frames,idx) (GIFF only)=imread(,ref) (HDF only)=imread(,BackgroundColor,BG) (PNG

25、only)A,map,alpha=imread() (CUR,ICO,and PNG only)最基本调用格式:X,map=imread(filename,fmt)*imread(rice.png,5); %读取 rice.png 文件的第 5 帧图像*RGB=imread(earth.jpg); %将图像 earth.jpg 读入 MATLAB7.0 工作平台,读取数据矩阵为变量 RGB2.2.2 图形图像文件的写入与显示1用 imwrite 来完成图形图像文件的写人操作:基本调用格式:imwrite (X,map,filename,fmt)load clown %根据 MAP 格式(MATLAB 数据文件格式)装载图像imwrite(X,map,clown.jpg) %保存为一幅包含小丑图像的 JPG 文件2可用 image 函数显示图像,其语法格式:image(C) image(x,y,C) image(,PropertyName,PropertyValue, )image(PropertyName,PropertyValue, ) handle=image()函数 imagesc 与 image 函数类似,但是它可以自动标度输入数据

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 图形图像

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报