您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 第4章MATLAB图像处理工具箱
第4章图像灰度变换Matlab对图像的处理功能主要集中在它的图像处理工具箱(ImageProcessingToolbox)中。图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、数学形态学处理等图像处理操作。图像处理工具箱主要有:*ImageAcquisitionToolbox(图像采集工具箱)*ImageProcessingToolbox(图像处理工具箱)*SignalProcessingToolbox(信号处理工具箱)*WaveletToolbox(小波分析工具箱)*StatisticsToolbox(统计工具箱)*BioinformaticsToolbox(生物信息学工具箱)4.1MATLAB图像处理程序的特点上手容易,开发周期短,见效快。程序代码编写量明显较小有专门的图像处理工具箱MATLAB程序不能脱离MATLAB平台而独立存在4.2图像处理工具箱的图像类型图像处理工具箱支持4种图像类型,它们是:真彩色图像(RGBimages)索引色图像(indeximages)灰度图像(intensityimages)二值图像(binaryimages)Matlab还支持由多帧图像组成的图像序列真彩色图像真彩色图像用R、G、B3个分量表示1个像素的颜色,数据结构是一个m×n×3的多维数组。如果读取图像中(100,50)处像素值,可以查看三元组(100,50,1:3)。真彩色图像可用双精度存储,亮度值范围是[0,1]常用存储方法是无符号整型存储,亮度值范围为[0,255]图1真彩色图像的结构真彩色图像数据格式双精度类:Double(每个像素占8个字节)整数类:Uint8(每个像素占1个字节)数组大小:m×n×3(:,:,1)-红色分量(:,:,2)-绿色分量(:,:,3)-蓝色分量像素取值:[0,1]数组大小:m×n×3(:,:,1)-红色分量(:,:,2)-绿色分量(:,:,3)-蓝色分量像素取值:[0,255]RGB图像的表示方法-三幅分量图像合成索引色图像索引图像是把像素值作为RGB调色板下标的图像。索引色图像包含2个结构,一个是调色板map;另一个是图像数据矩阵X。调色板是一个有3列和若干行的色彩映像矩阵,矩阵每行代表一种色彩,通过3个分别代表红、绿、蓝颜色强度的双精度数,形成一种特定颜色。图像数据是uint8或是双精度的。Matlab中调色板的色彩强度是[0,1]中的浮点数,0代表最暗,1代表最亮。图2索引色图像的结构索引图像的数据格式双精度类:Double(每个元素占8个字节)整数类:Uint8(每个元素占1个字节)图像数组大小:m×n图像元素取值:[1,p]调色板矩阵:p×3图像数组大小:m×n图像元素取值:[0,p-1]调色板矩阵:p×3索引图像的double与uint8型123401230000.06270.062700010.29020.6270.6270.38200.35781doubleuint8图像数据调色板索引图像的表示方法读入一幅索引图像的语句如下:[X,map]=imread(‘trees.tif’);显示一幅索引图像,可使用语句:imshow(X,map)或者:image(X)%用系统当前的颜色表显示索引图像colormap(map)%将系统当前颜色表设置为map举例:[X,map]=imread(‘trees.tif’);image(X)其效果等同于:imshow(X,colormap)举例:[X,map]=imread(‘trees.tif’);image(X)colormap(map);其效果等同于:imshow(X,map)MATLAB提供了一些预定义的彩色表imshow(X,hsv)imshow(X,autumn)imshow(X,copper)imshow(X,gray(64))灰度图像存储灰度图像只需要一个数据矩阵,数据类型可以是double也可以是uint8。存储时会使用一个默认的调色板来显示图像。二值图像与灰度图像相同,二值图像只需一个数据矩阵,每个像素只有2个灰度值。可以采用uint8或double类型存储,工具箱中以二值图像作为返回结果的函数都使用uint8类型。图像序列图像处理工具箱支持将多帧图像连接成图像序列。使用cat函数将分散图像合并成图像序列,前提是各图像尺寸必须相同。将A1、A2、A3、A4、A5五幅图像合并成一个图像序列A,Matlab语句为A=cat(1,A1,A2,A3,A4,A5),1维,纵向排列A=cat(2,A1,A2,A3,A4,A5),2维,横向排列A=cat(3,A1,A2,A3,A4,A5),3维,竖向排列图像序列也可以产生一个四维数组,图像帧的序号在图像的长、宽、颜色后构成第四维。一个包含了5幅400×300真彩色图像的序列,大小为400×300×3×5一个包含了5幅400×300灰度或是索引图像的序列,其大小为400×300×1×5A=cat(4,A1,A2,A3,A4,A5),4维提取其中一帧(如第2帧):A(:,:,:,2)4.3Matlab图像类型转换索引图像灰度图像真彩图像二值图像数据矩阵1.dither函数功能:图像抖动把RGB图像转换成索引图像把灰度图像转换成二值图像。格式:X=dither(RGB,map)BW=dither(I)(1)RGB图像抖动成索引图像I=imread('autumn.tif');map=pink(1024);X=dither(I,map);imshow(I);figure,imshow(X,map);colorbar(2)灰度图像抖动成二值图像I=imread('rice.png');bw=dither(I);imshow(I);figure,imshow(bw);2.gray2ind函数功能:将灰度图像转换成索引图像。格式:[X,map]=gray2ind(I,n)n的缺省值为64。I=imread('cameraman.tif');[X,map]=gray2ind(I,16);subplot(121),imshow(I);subplot(122),imshow(X,map);3.grayslice函数功能:通过设定阈值将灰度图像转换成索引色图像。格式:X=grayslice(I,n)I=imread('cameraman.tif');X=grayslice(I,16);imshow(I);figure,imshow(X,bone(16));功能:将灰度图像、索引色图像和真彩色图像转化成二值图像。格式:BW=im2bw(I,level)BW=im2bw(X,map,level)BW=im2bw(RGB,level)level是一个归一化阈值,取值在[0,1]。4.im2bw函数I=imread('autumn.tif');X=im2bw(I,0.5);imshow(I);figure,imshow(X);功能:将索引图像转换成灰度图像。格式:I=ind2gray(X,map)5.ind2gray函数功能:将索引色图像转换成真彩色图像。格式:RGB=ind2rgb(X,map)例:[I,map]=imread('m83.tif');X=ind2rgb(I,map);imshow(I,map);figure,imshow(X);6.ind2rgb函数功能:将一个数据矩阵转换成一幅灰度图像。格式:I=mat2gray(A)7.mat2gray函数I=imread('rice.png');J=filter2(fspecial('sobel'),I);K=mat2gray(J);figure,imshow(I),figure,imshow(K)功能:将一幅真彩色图像转换成灰度图像。格式:I=rgb2gray(RGB)例:RGB=imread('autumn.tif');X=rgb2gray(RGB);imshow(RGB);figure,imshow(X);8.rgb2gray函数转换效果图功能:将真彩色图像转换成索引色图像。格式:[X,map]=rgb2ind(RGB,n)例:RGB=imread('autumn.tif');[X,map]=rgb2ind(RGB,128)imshow(RGB);figure,imshow(X,map);9.rgb2ind函数4.4图像文件的读写和查询imread:读取图形文件格式的图像;imwrite:写入图形文件格式的图像;imfinfo:获取图像的信息;load\save:以Mat文件加载或保存矩阵数据;imshow:显示加载到Matlab中的图像。函数imread可完成图形图像文件的读取操作,其语法如下一般:A=imread(filename,fmt)索引图像:[X,map]=imread(filename,fmt)[X,map]=imread(‘m83.tif’,‘tif’)1图形图像文件的读取imdata=imread('ngc6543a.jpg');image(imdata)imread函数可以从图形文件中以特定位宽读取图像。读取的大多数图像均为8bit。加载到内存中时,就存储在类uint8中。对于索引图像来说,即使图像阵列的本身为uint8或uint16,imread函数仍然将颜色映像表读取并存储到一个双精度的浮点类型阵列中。2图形图像文件的写入(保存)imwrite函数可以完成图形图像文件的写入操作,其语法为:imwrite(A,filename,fmt)imwrite(X,map,filename,fmt)缺省的保存方式:uint8数据格式。Matlab中许多图像都是8bit,不需要双精度的浮点数据。imwrite(X,map,‘lena.bmp’,‘bmp’)A=imread('onion.png');B=A(50:100,100:150,:);imwrite(B,'onion-part.png')C=imread('onion-part.png');subplot(1,2,1)image(A);axisimage;title('全部')subplot(1,2,2)image(C);axisimage;title('部分')3图形图像文件信息的查询imfinfo函数用于从图像文件中查询其信息。所获取信息依文件类型不同而不同,至少包含下面内容文件名文件格式文件格式的版本号文件修改时间文件的字节大小图像的宽度(像素)图像的长度(像素)每个像素的位数图像类型(RGB图像、灰度图像还是索引图像)imfinfo('autumn.tif')info=Filename:[1x64char]FileModDate:'01-十月-199616:19:44'FileSize:27387Format:'jpg'FormatVersion:''Width:600Height:650BitDepth:24ColorType:'truecolor'FormatSignature:''NumberOfSamples:3CodingMethod:'Huffman'CodingProcess:'Sequential'Comment:{[1x69char]}4图像文件的显示图像显示函数imshow。其语法格式如下灰度图像imshow(I)imshow(I,n)imshow(I,[lowhigh])二值图像imshow(BW)索引图像imshow(X,map)真彩色图像imshow(RGB)其中n为灰度级数目,缺省值为256。[lowhigh]为图像数据的值域。索引图像及其显示索引图像包括数据矩阵X和颜色映像矩阵map。其中map是一个p×3的数据矩阵,其每个元素的值均为[0,1]之间双精度浮点型数据。map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。而数据矩阵X可以是
本文标题:第4章MATLAB图像处理工具箱
链接地址:https://www.777doc.com/doc-4465701 .html