您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 第2章 MATLAB图像处理工具箱
第2章MATLAB图像处理工具箱2.1MATLAB图像处理初步2.1.1图像处理的基本操作1.读入并显示一幅图像clear%清除所有的工作平台变量closeall%关闭已打开的图形窗口I=imread('pout.tif');%读取图像pout.tif%(该图像是图像处理工具箱自带的图像)%存储在一个名为I的数组中imshow(I)%显示图像I2.检查内存中的图像whos%查看图像数据I是如何存储在内存中的。3.实现直方图均衡化figure%生成一个新的图形窗口%避免后面的图像覆盖前面图像的显示imhist(I)%创建描述图像I灰度分布的直方图I2=histeq(I);%将图像的灰度值扩展到整个灰度%范围,从而提高图像数组I的对比度figure,imshow(I2)%显示修改过的图像I2figure,imhist(I2)%显示拓展后的灰度值的%分布情况4.保存图像imwrite(I2,'pout.png');%将图像I2以PNG图像文件格式保存到磁盘5.检查新生成文件的内容imfinfo('pout.png')%观察保存的图像文件信息2.1.2图像处理的高级应用主要对一幅灰度图像rice.png进行一些较为高级的操作为例说明整个过程。1.读取和显示图像clear%清除所有的工作平台变量closeall%关闭已打开的图形窗口I=imread('rice.png');%读取图像rice.png%该图像是图像处理工具箱自带的图像imshow(I)%显示图像2.估计图像背景background=imopen(I,strel('disk',15));%对图像I进行形态学开操作,删除那些不完全%包括在半径为15的圆盘中的对象%实现对背景亮度的估计%strel(‘disk’,15)创建一个扁平的、圆盘状的%结构元素,15为圆盘的半径figure,imshow(background);figure,surf(double(background(1:8:end,1:8:end))),zlim([0255]);%以表面形式显示背景3.从原始图像中减去背景图像I2=imsubtract(I,background);%将背景图像background从原始图像I中减去figure,imshow(I2)4.调节图像对比度I3=imadjust(I2,stretchlim(I2),[01]);%调节图像的对比度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(labeled,@spring,'C','shuffle');%将标记矩阵显示为一副伪彩色的索引图像,%在伪彩色的彩色图像中,标记矩阵中的每一个%对象都将被映射为相关调色板中的不同颜色imshow(RGB_label);8.计算图像中对象的统计属性graindata=regionprops(labeled,'basic')%调节图像中对象或区域的属性,%并将这些属性返回到一个结构体数组中graindata(51).Area%显示第51个元素的大小graindata(51).BoundingBox,graindata(51).Centroid%寻找最近的边缘和中心allgrains=[graindata.Area];%创建一个新的向量allgrains,%其包含每个米粒的范围allgrains(51)%查看第51个元素的范围max(allgrains)%获取最大的米粒大小biggrain=find(allgrains==404)%返回最大米粒的标记号mean(allgrains)%获取米粒的平均大小hist(allgrains,20)%绘制包含20个柱的直方图2.2MATLAB图像处理工具箱简介2.2.1常用图像格式图像格式:是存储图像采用的文件格式。不同的操作系统、不同的图像处理软件,所支持的图像格式都有可能不同。在实际应用中经常会遇到的图像格式有:BMP、GIF、TIFF、PCX、JPEG、PSD、PCD、WMF等。(1)BMP(Bitmap)文件:是MicrosoftWindows所定义的图像文件格式。(2)GIF文件:是CompuServeG公司最先在网络中用于在线传送图像数据。(3)TIF文件:是由Aldus公司与微软公司共同开发设计的图像文件格式。(4)JPEG文件:是对静止灰度或彩色图像的一种国际压缩标准,其正式的名称为“连续色调静态图像的数字压缩和编码”,已在数字照相机上得到广泛应用,当选用有损压缩方式时其可节省相当大的空间。2.2.2MATLAB图像类型图像类型:指数组数值与像素颜色之间定义的关系,它与图像格式概念有所不同。在MATLAB图像处理工具箱中,有五种类型的图像:(1)二进制图像:在一幅二进制图像中,每一个像素将取两个离散数值(0或1)中的一个,从本质上说,这两个数值分别代表状态“开”(on)或“关”(off)。二进制图像仅使用uint8或双精度类型的数组来存储。在图像处理工具箱中,任何返回一幅二进制图像的函数均使用uint8逻辑数组存储该图像,并且使用一个逻辑标志来指示uint8逻辑数组的数据范围。若逻辑状态为“开”(on),数组范围为[0,1];若逻辑状态为“关”(off),则数组范围为[0,255]。(2)索引图像:是一种把像素值直接作为RGB调色板下标的图像。•在MATLAB中,索引图像包含有一个数据矩阵X和一个颜色映射(调色板)矩阵map。•数据矩阵X可以是uint8、uint16、双精度类型的;•颜色映射矩阵map:是一个m×3的数据矩阵,其中每个元素的值均为[0,1]之间的双精度浮点型数据,map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。•索引图像可把像素值直接映射为调色板数值,每一个像素的颜色通过使用X的数值作为map的下标来获得,如值1指向矩阵map中的第一行,值2指向第二行,依此类推。•颜色映射通常与索引图像存储在一起,当装载图像时,MATLAB自动将颜色映射表与图像同时装载。•图像矩阵与颜色映射表之间的关系依赖于图像数据矩阵的类型。•如果图像数据矩阵是双精度类型,则数据值1指向矩阵map中的第一行,数据值2将指向map中的第二行,依此类推;•如果图像矩阵是uint8或uint16类型时,将产生一个偏移,即数据值0表示矩阵map中的第一行,数据值1将指向map中的第二行,依此类推。例:显示索引图像,并说明与颜色映射表的关系。解:在M文件编辑器中输入下面的代码:[X,map]=imread(‘canoe.tif’);%输入图像文件image(X);%显示图像colormap(map)%设置颜色表(3)灰度图像灰度图像通常由一个uint8、uint16、双精度类型的数组来描述,其实质是一个数据矩阵I,该矩阵中的数据均代表了在一定范围内的灰度级,每一个元素对应于图像的一个像素点,通常0代表黑色,1、255、65535(针对不同存储类型)代表白色。例:灰度图像显示。解:在M文件编辑器中输入下面的代码:I=imread(‘trees.tif’);%将图像格式文件读入imagesc(I,[01]);%显示图像colormap(gray)%设置颜色表(4)多帧图像(多页图像、图像序列):是一种包含多幅图像或帧的图像文件。•在MATLAB中,它是一个四维数组,其中第四维用来指定帧的序号。•在一个多帧图像数组中,每一幅图像必须有相同的大小和颜色分量,每一幅图像还要使用相同的调色板。另外,图像处理工具箱中的许多函数(如:imshow)只能对多幅图像矩阵的前两维或三维进行操作,也可以对四维数组使用这些函数,但是必须单独处理每一帧。如果将一个数组传递给一个函数,并且数组的维数超过该函数设计的超作维数,那么得到的结果是不可预知的。例:loadmrisize(D)imshow(D(:,:,:,5))(5)RGB图像(真彩色图像):它是利用R、G、B三个分量表示一个像素的颜色,R、G、B分别代表红、绿、篮3种不同的颜色,通过三基色可以合成出任意颜色。所以对一个尺寸为n×m的彩色图像来说,在MATLAB中则存储为一个n×m×3的多维数据数组,其中数组中的元素定义了图像中的每一个像素的红、绿、篮颜色值。图形文件格式把RGB图像存储为24位的图像,红、绿、篮分量分别占用8位。•MATLAB的RGB数组可以是双精度的浮点型、8位或16位无符号的整数类型。•在一个双精度类型的RGB数组中,每一个颜色分量都是一个[0,1]范围内的数值。如:颜色分量为(0,0,0)的像素将显示为黑色;颜色分量为(1,1,1)的像素将显示为白色。•每一个像素的三个颜色分量都存储在数组的第三维中。如:像素(10,5)的红、绿、篮颜色值分别保存在元素RGB(10,5,1)、RGB(10,5,2)、RGB(10,5,3)中。例:RGB图像显示。解:在M文件编辑器中输入下面的代码:RGB=imread(‘greens.jpg’);%图像格式文件读入image(RGB)%显示RGB图像在上面的RGB图像中,要确定像素(12,9)的颜色,可以在命令行中输入:RGB(12,9,:)按回车键,得到:ans(:,:,1)=26ans(:,:,2)=56ans(:,:,3)=32例:创建一个简单的RGB图像,该图像包含某一范围内不中断的红、绿、篮颜色分量,另外,针对每一个颜色分量各创建一幅图像来加以对比:RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);R=RGB(:,:,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);2.2.3MATLAB图像类型转换(1)图像颜色浓淡处理(图像抖动)X=dither(RGB,map)%通过抖动算法将真彩色图像RGB按指定的颜色%(调色板)map转换成索引色图像XX=dither(RGB,map,Qm,Qe)%利用给定的参数Qm,Qe从真彩色图像RGB中%产生索引色图像X%Qm表示沿每个颜色轴反转颜色图的量化%(即对于补色各颜色轴)的位数,%Qe表示颜色空间计算误差的量化误差。%如果QeQm,则不进行抖动操作。%Qm的默认值是5,Qe的默认值是8。BW=dither(I)%通过抖动算法将矩阵I中的灰度图像%转换为二进制图像。注意:•输入图像可以是双精度类型或8位无符号类型,其他参数必须是双精度类型。•如果输出的图像是二值图像或颜色种类少于256的索引图像时,为uint8类型,否则为doule型。例:由RGB图像产生一个索引图像使用索引图像chess.met的颜色图map,通过抖动map中的颜色,产生RGB图像autumn.tif的近似索引图像。loadchess;imshow(X,map)RGB=imread('autumn.tif');subplot(1,2,1);imshow(RGB);Y=dither(RGB,map);subplot(1,2,2);imshow(Y,map);(2)灰度图像转换为索引图像[X,map]=gray2ind(I,n)%按指定的灰度级数n和颜色图map,将灰度%图像I转换成索引色图像X,n的默认值为64例:将灰度图像pout.tif转化成索引图像X,颜色图分别为gray(512)和gray(128)。I=imread('pout.tif');[I1,map1]
本文标题:第2章 MATLAB图像处理工具箱
链接地址:https://www.777doc.com/doc-4484439 .html