




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图像:(1)模拟图像:光学图像、模拟电视图像等。处理速度快,但精度和灵活度差。(2)数字图像:数码相机、数字电视等。是将连续的模拟图像经过离散化处理后得到的计算机可以识别及处理的点阵图像。数字图像像素数字图像的优点:(1)精度高:目前计算机可将模拟图像转化成高精度数字图像(2)处理方便:数字图像是一组数据,可利用计算机对其处理(3)重复性好:数字图像可比模拟图像有正常的保质时间图像的不同类型及在matlab中的显示1.数字图像(按纪录方式分):(1)矢量图像:利用数学的矢量方式纪录图像内容。以线条和色块为主,容易放大、缩小或旋转,且不易失真,精确度高,可以绘制3D图像。但是不易做成色彩丰富的图像。(2)位图图像:将图像中每一个像素点转换成一个数据。如果以8位记录,可以表现出256种颜色(),所以色彩丰富。通常有:16色,256色,增强16位和真彩色24位().但随着颜色数和分辨率的提高,存储空间大,且较易失真。用数码相机和扫描仪获得的图像都属于位图。3)象素:是图像在计算机显示中的度量单位,可以变化,可大可小。4)分辨率:是用于度量图像在显示器中清晰程度的一个参数,分辨率越高,图像越清晰。分辨率是与象素相关的,即单位长度上的象素数就是分辨率。由此可知,分辨率越高,象素的几何尺寸就越小。5)图像文件的大小:指一幅图像在计算机中保存时所占用的磁盘空间,其大小与所用的颜色模式有关。灰度图像中的每一个灰度象素只占用一个字节(8位),RGB图像中红、绿、蓝各占用一个字节。另外,图像文件的大小也直接与其分辨率有关,原因是当分辨率增加时,一幅图像所包含的象素量急剧增加。6)句柄:就是对象的代号或标志,它能使计算机方便地找到所需要的对象并加以相应的操作。MATLAB中的句柄图形对象包括轴、文本、菜单、控制框、图像等。
2.几种常见的MATLAB
图像文件格式简介:
A)BMP格式。即位图文件,整幅图可视为一个数字矩阵。它包括1、4、8、24位非压缩图像,8位RLE(行程编码)图像。文件内容包含文件头、位图信息数据块和图像数据。选择BMP格式保存一幅灰度模式图像时,可选择以Windows格式保存。而且在选中4位或8位位图时,还可选压缩(RLE)项,在用RLE方式压缩保存后图像将毫无损失。这是用得最广的图像格式之一。
B)TIFF格式。处理1、4、8、24位非压缩图像,1、4、8、24位packbit压缩图像,1位CCITT压缩图像等。文件内容包括:文件头、参数指针表与参数域、参数数据表和图像数据四部分。是一种用途广泛的文件格式,其特点是可移植性好,几乎所有的扫描仪及在Windows、Macintosh平台上常用的版面设计软件都支持TIFF文件格式。但图像文件结构比较复杂,不压缩时文件比较大。C)JPEG格式。是一种联合图像专家组的图像压缩格式,是目前所用对静止灰度或彩色图像的压缩标准。它实际上定义了3种编码系统:
a.基于DCT有损编码基本系统,用于绝大多数压缩场合;
b.用于高压缩比、高精度或渐进重建应用的扩展编码系统;
c.用于无失真应用场合的无损系统。JPEG没有规定文件格式、图像分辨率或所用的彩色空间模型,这使它适用于MATLAB。D)PCX格式。可处理1、4、8、16、24位等图像数据。文件内容包括文件头、图像数据、扩展调色板数据。E)XWD格式。1、8位Zpixmaps,Xybitmaps,1位XYPixmaps。F)TGA格式。处理1、4、8、16、24位非压缩图像和行程编码图像。文件包由5个固定长度字段和3个可变长度字段组成。G)HDF格式。有8位,24位光栅图像数据集。
3.MATLAB图像文件类型:
根据数据矩阵和图像象素颜色匹配关系,MATLAB中图像可分为:索引图像、灰度图像、二值图像和RGB图像。1)索引图像:它的数据信息包括一个数据矩阵和一个双精度色图矩阵,它的数据矩阵中的值直接指定该点的颜色为色图矩阵中的某一种。色图矩阵中,每一行表示一种颜色,每行有三个数据,分别表示该种颜色中红、绿、蓝的比例情况,所有元素值都在[0,1]内。数据矩阵(图片)像素点对应双精度色图矩阵(色彩)………………2)灰度图像:数据矩阵中的元素值一般都在[0,1]或[0,255]之间,灰度图像根据这些数据利用线性插值来和色图中的颜色种类匹配。
灰度图像读入matlab中是一个二维的平面矩阵,其中行与列的乘积代表其图片中像素点的个数。注意:灰度图像一般看起来是一副黑白图像,但是色彩明暗度较二值图像更为丰富。因为每一个像素点的取值在[0,1]或[0,255]之间。……………………............像素点取值:[0,1]或[0,255]mnm*n个像素,如1024*7683)二值图像:数据矩阵中的元素值只是0或1。读入matlab也是一个二维矩阵。注意:二值图像读入matlab中也是一个二维的平面矩阵,但像素点取值只限于0,1。4)RGB图像:图像中每个象素的颜色用三个数据来存储,分别指定红、绿、蓝三原色在象素颜色中的比例关系,组成一个三维数组,读入matlab后是一个三维的矩阵。
注意:美术教科书中称红、黄、蓝为三原色,讲的是绘画颜料的使用。一般电视光色等光色是红、绿、蓝。RGB图像就是采用红、绿、蓝作为三原色的,其中R为红色,G为绿色,B为蓝色。上图是一个2048*1536大小的图像,其中这个三维矩阵的第一维就是上图中第一层代表红色数值,第二维为第二层代表绿色数值,第三维为第三层代表蓝色数值。也可以这样理解:将索引图像中的数据矩阵中每一个像素点直接加载上色图矩阵中对应的颜色值。图像在图像(x1,y1)点的RGB值是(r,g,b)
MATLAB图像处理工具箱
Matlab是一种基于向量(数组)而不是标量的高级程序语言,因而Matlab从本质上就提供了对图像的支持。数字图像实际上是一组有序离散的数据,使用Matlab可以对这些离散数据形成的矩阵进行一次性的处理。
Matlab对图像的处理功能主要集中在它的图像处理工具箱(ImageProcessingToolbox)中。图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、数学形态学处理等图像处理操作。
图像处理工具箱主要有:
*ImageAcquisitionToolbox(图像采集工具箱)
*
ImageProcessingToolbox(图像处理工具箱)
*
SignalProcessingToolbox(信号处理工具箱)
*
WaveletToolbox(小波分析工具箱)
*
StatisticsToolbox(统计工具箱)
*
BioinformaticsToolbox(生物信息学工具箱)1Matlab中的图像类型及类型转换
Matlab中的数字图像是由一个或多个矩阵表示的,Matlab强大的矩阵运算功能完全可以应用于图像,那些适用于矩阵运算的语法对Matlab中的数字图像同样适用。
1.1图像和图像数据缺省:double(64位浮点数)uint8(无符号8位整型)1.2图像处理工具箱所支持的图像类型
图像处理工具箱支持4种图像类型,它们是:真彩色图像(RGBimages)索引色图像(indeximages)灰度图像(intensityimages)二值图像(binaryimages)
Matlab还支持由多帧图像组成的图像序列
真彩色图像真彩色图像用R、G、B3个分量表示1个像素的颜色,数据结构是一个m×n×3的多维数组。如果要读取图像中(100,50)处像素值,可以查看三元组(100,50,1:3)。真彩色图像可用双精度存储,亮度值范围是[0,1]常用存储方法是无符号整型存储,亮度值范围为[0,255]
真彩色图像数据格式双精度类:Double(每个像素占8个字节)
整数类:Uint8(每个像素占1个字节)数组大小:m×n×3(:,:,1)-红色分量(:,:,2)-绿色分量(:,:,3)-蓝色分量像素取值:[0,1]数组大小:m×n×3(:,:,1)-红色分量(:,:,2)-绿色分量(:,:,3)-蓝色分量像素取值:[0,255]
图1真彩色图像的结构
索引色图像索引图像是把像素值作为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.35781
doubleuint8图像数据调色板
灰度图像
存储灰度图像只需要一个数据矩阵,数据类型可以是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)
1.3图像文件的读写和查询imread:读取图形文件格式的图像;
imwrite:写入图形文件格式的图像;
imfinfo:获取图像的信息;
load\save:以Mat文件加载或保存矩阵数据;
imshow:显示加载到Matlab中的图像。
函数imread可完成图形图像文件的读取操作,其语法如下,
一般:A=imread(filename,fmt)
索引图像:[X,map]=imread(filename,fmt)
[X,map]=imread(‘m83.tif’,‘tif’)图形图像文件的读取存储图像数据的矩阵名图像调色板图像文件名文件格式一个例子:图像Imread读入Matlab中的矩阵A(一个三维矩阵)Matlab窗口Imread命令读入的A是一个三维的数据为uint8位的矩阵命令窗口imread函数可以从任何Matlab支持的图形文件中以特定的位宽读取图像。读取的大多数图像均为8bit。加载到内存中时,就存储在类uint8中。
对于索引图像来说,即使图像阵列的本身为uint8或uint16,imread函数仍然将颜色映像表读取并存储到一个双精度的浮点类型阵列中。
对A(1536*2048*3,uint8)的解释如下图:通过左图的表示,这样这个三维矩阵A就可以表示成一个彩色矩阵,也就是一张数字图像可以在matlab中读成一个矩阵A值得注意的是数据类型,上面记录的数据是uint8型,关于数据类型,有如下内容:在图像(x1,y1)点的RGB值是(r,g,b)且数据为uint8位图形图像文件的写入(保存)imwrite函数可以完成图形图像文件的写入操作,其语法为:imwrite(A,filename,fmt)imwrite(X,map,filename,fmt)缺省的保存方式:uint8数据格式。Matlab中许多图像都是8bit,不需要双精度的浮点数据。imwrite(X,map,‘lena.bmp’,‘bmp’)图形图像文件信息的查询imfinfo函数用于从图像文件中查询其信息。所获取信息依文件类型不同而不同,至少包含下面内容文件名文件格式文件格式的版本号文件修改时间文件的字节大小图像的宽度(像素)图像的长度(像素)每个像素的位数图像类型(RGB图像、灰度图像还是索引图像)
imfinfo('autumn.tif')imfinfo函数可以观察图像信息文件此处没有分号得到图像信息其他几个图像处理命令介绍Colorbar:Displaycolorbar(MATLABfunction)显示彩条Imagesc:Scaledataanddisplayasimage(MATLABfunction)缩放数据并显示图像Immovie:Makemoviefrommultiframeindexedimage由多帧图像制作图像Imtool:DisplayimageintheImageViewer在imagetool中显示图像Montage:Displaymultipleimageframesasrectangularmontage将多个图像帧显示为矩形蒙太奇Subimage:Displaymultipleimagesinsinglefigure在单个图形中显示多个图像1.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可以是double和uint8型的,调用格式如下:
imshow(X,map)
例如一幅包含256色的uint8索引图像,使用一个仅有16色的调色板显示,则所有数值大于或等于15的像素都将被显示为调色板的最后一个颜色。
借助不同的调色板显示图像,X=imread('cameraman.tif');map=pink(256);imshow(X,map);colorbar;%显示颜色条灰度图像及其显示
一幅灰度图像是一个数据矩阵I,其中数据均代表了在一定范围内的颜色灰度值。Matlab把灰度图像用数据矩阵的形式进行存储,每个元素则表示了图像中的每个像素。矩阵元素可以是doudle、uint8整数类型。多数情况下,灰度图像很少和颜色映像表一起保存,但在显示灰度图像时,Matlab仍然在后台使用系统预定义的缺省灰度颜色映像表。
(1)灰度图像显示最基本的调用格式
imshow(I)Matlab中imshow函数使用一个灰度级系统调色板(R=G=B)来显示灰度图像。如果I是double型,若像素值为0.0,则显示为黑色,1.0则显示为白色,0.0和1.0之间的像素值将显示为灰影。
imshow函数显示灰度图像imshow(I,n)以下语句将显示一幅32个灰度级的图像I。imshow(I,32)
(2)使用明确指定的灰度级数目(3)某些情况下,可能将一些超出数据惯例范围的数据显示为一幅灰度图像☆对于double型数组为[0,1],对于uint8型数组为[0,255]为了将超过数据范围的数据显示为图像,用户可以直接定义数据范围,其调用格式如下,
imshow(I,[lowhigh])
其中low、high分别为数据的最小和最大值。如果用户使用一个空矩阵[]指定数据范围,imshow将自动进行数据标度。
RGB图像及其显示imshow函数显示RGB图像的调用格式如下,imshow(RGB)参数RGB是一个m×n×3的数组。对于RGB中的每一个像素(r,c),imshow显示数值(r,c,1∶3)所描述颜色。每个屏幕像素使用24位颜色系统直接显示真彩图像,系统给每个像素的红、绿、蓝颜色分量分配8位(256级),这样就有1000多万种颜色(224)。
二进制图像及其显示
显示二进制图像用如下语句,imshow(BW)二进制图像是一个逻辑类,仅包括0和1两个数值,像素0显示为黑色,像素1显示为白色。在显示时,也可以通过NOT(~)命令,对二进制图像取反,使数值0显示为白色,1显示为黑色。例如:BW=imread(‘circles.png’);imshow(BW);figure,imshow(~BW);
显示的结果如下图所示。
二进制图像显示效果
直接从磁盘显示图像通常在显示图像前首先调用imread函数装载图像,将数据存储为Matlab工作平台中的变量。如果不在显示图像前装载图像,则使用以下命令格式进行图像文件显示,
imshowfilename
imshowrice.pngimshow(‘rice.png’)多幅图像文件的显示figure,imshow功能:新建一个图像窗口,用于显示新图像(从而不让新的图像覆盖原来图像)。
创建新的图像窗口,每个图像显示在一个窗口中
调用imshow函数显示图像I=imread(′rice.png′)J=filter2([12;-1-2],I)%用模板[12;-1-2]对图像滤波imshow(I)figure,imshow(J,[])用imshow显示滤波前后的图像
subplot(m,n,k),imshow%绘制并显示m行n列第k个子图例:X1=imread('rice.png');X2=imread('coins.png');X3=imread('bag.png');subplot(1,3,1),imshow(X1);subplot(1,3,2),imshow(X2);subplot(1,3,3),imshow(X3);
子图显示子图显示效果
以图像的形式输出,函数为image(imshow)image的格式是:image(C)image(x,y,C)image(…,’PropertyName’,PropertyValue,…)image(‘PropertyName’,PropertyValue,…)handle=image(…)其中,x,y分别表示图像显示位置的左上角坐标,C表示所需显示的图像。函数imagesc与image函数类似,但是可以自动标度输入数据。关于image中各参数的意义可以使用helpimage查询Matlab输出的图像矩阵AImage/imshow一个image的例子:得到图像输出窗口点击DataCursor按钮并将光标移动到图像的一个位置可以得到此处的数据信息,如右图所示:imshow和image:图像的显示是最为重要的,用imshow和image都可以显示图像,但是有一定的区别。用的不对,可能出错或得到一张空白图或者是彩色图显示成颗粒状、反相黑白图等等。image是用来显示附标图像,即显示的图像上有x,y坐标轴的显示,可以看到图像的像素大小,而imshow只是显示图像。它们都可以用subplot来定位图像显示的位置。
image显示imshow显示显示真彩色图像像素如果是uint8类型,要求数据范围为0-255,如是double型,则其数据范围为0-1。uint16数据类型与uint8类似,取值范围为0-65536。多帧图像的电影片段若一个tif图像文件包含有多帧图像,一般用immovie来实现创建电影片段功能,以下调用将根据多帧索引图像X创建电影片段。
mov=immovie(X,map)
mri=uint8(zeros(128,128,1,27));forframe=1:27[mri(:,:,:,frame),map]=imread('mri.tif',frame);endmov=immovie(mri,map);movie(mov);将mri.tif的每一帧读入图相应的图像帧中1.5Matlab图像类型转换索引图像进行滤波时,必须把它转换为RGB图像,否则光对图像的标进行滤波是毫无意义的。
索引图像灰度图像真彩图像二值图像数据矩阵索引图像灰度图像二值图像RGB图像Gray2indInd2grayInt2rgbRgb2grayRgb2ind三层变一层一层变三层(方法研究)Im2bw涉及到阈值选择,即多少作为黑白图像的分界线,一个阈值选择函数:graythresh。一个转换函数例如:W=im2bw(W,graythresh(W))工具箱中提供了许多图像类型转换的函数,从函数名称可以看出它们的功能。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);
抖动效果图
功能:将灰度图像转换成索引图像。格式:[X,map]=gray2ind(I,n)按照指定灰度级n把灰度图像I转换成索引图像X,map为gray(n),n的缺省值为64。例:
I=imread('cameraman.tif');[X,map]=gray2ind(I,16);imshow(X,map);figure,imshow(I);
2.gray2ind函数功能:通过设定阈值将灰度图像转换成索引色图像。格式:X=grayslice(I,n)
例:I=imread('cameraman.tif');X=grayslice(I,16);imshow(I);figure,imshow(X,bone(16));
3.grayslice函数功能:将灰度图像、索引色图像和真彩色图像转化成二值图像。格式: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,[aminamax])I=mat2gray(A)
7.mat2gray函数
功能:将一幅真彩色图像转换成灰度图像。格式: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函数图像处理中一些注意问题当前路径存放变量默认路径改变路径各种图片和编写的M文件和程序放在默认路径图像保存中的失真问题:A=imread(‘山水照片.jpg’);imshow(A);得到:大小为2048*1536用此处保存得到图片再读入和imshow得到保存白边,大小为335*470解决方案:程序中直接采用imwrite写入磁盘,这样大小就不会改变。一般bmp格式较不易失真。最常碰到的问题有:①图像读入imread,应是上文提过的MATLAB支持的7种格式之一,显示图像用imshow(h)语句,h为图像句柄;输出图像若需要永久保存,可用imwrite(h,map,’filename.bmp’,’bmp’),写入存储器。注意在该语句前要设置调色板,即map=(gray(256))。②要注意图像格式的转化。不同的图像格式对应不同的处理方式,如果处理与格式不符,将引起错误。③尽管MATLAB允许未定义使用数组,但在实际应用中这样经常出错,特别是遇到在double和uint8型之间的转换时。所以最好还是养成用前定义的习惯,避免出现不必要的错误。④在做完一定量的运算后,一般要用Clear清除内存变量,以防影响后面的程序运行。⑤
一般默认路径在matlab安装文件下的work文件夹中,程序和资源都放在此,如果需要引用新的文件,应事先指明路径。⑥应注意语句结尾“;”的使用,特别是图像处理中。⑦应做好程序的注释工作。2图像处理技术2.1图像的代数运算2.2图像的几何变换2.3图像的灰度变换与直方图2.4图像的增强滤波2.5图像的空间变换2.6图像边缘检测与分割2.1图像代数操作2.1.1图像代数的异常处理计算结果异常:<0:0>255:255计算结果类型无效:四舍五入A1=imread('1.jpg'); A2=imread('2.jpg'); B=imdivide(imadd(A1,A2),2);
应考虑使用imlincomb B=imlincomb(0.5,A1,0.5,A2);
2.1.2相加运算imadd两幅图像叠加
I=imread('Girl.bmp'); J=imread('LENA256.bmp'); K=imadd(I,J,'uint16'); subplot(2,2,1),imshow(I)subplot(2,2,2),imshow(J)subplot(2,2,3),imshow(K,[])图像整体亮度增加I=imread('LENA256.bmp');J=imadd(I,50);subplot(1,2,1),imshow(I)subplot(1,2,2),imshow(J)2.1.3减法运算imsubtract两幅图像相减
I=imread('LENA256.bmp'); J=imread('Girl.bmp'); Iq=imsubtract(I,J); subplot(2,2,1),imshow(I)subplot(2,2,2),imshow(J)subplot(2,2,3),imshow(Iq)
图像整体亮度减小I=imread('LENA256.bmp');J=imsubtract(I,50);subplot(1,2,1),imshow(I)subplot(1,2,2),imshow(J)2.1.4乘法运算immultiply亮度缩放I=imread('LENA256.bmp');J=immultiply(I,0.5);K=immultiply(I,2);subplot(1,3,1),imshow(I)subplot(1,3,2),imshow(J)subplot(1,3,3),imshow(K)两幅图像相乘(通常无意义) I=imread('LENA256.bmp'); J=imread('Girl.bmp'); Iq=immultiply(I,J); imshow(Iq)2.1.5除法运算imdivide亮度缩放I=imread('LENA256.bmp');J=imdivide(I,0.5);K=imdivide(I,2);subplot(1,3,1),imshow(I)subplot(1,3,2),imshow(J)subplot(1,3,3),imshow(K)两幅图像比例变换
I=imread('LENA256.bmp'); J=imread('Girl.bmp'); Iq=imdivide(I,J); imshow(Iq)2.2.1图像平移正变换逆变换strel%用来创建形态学结构元素translate(SE,[yx])%原结构元素SE上y和x方向平移imdilate%形态学膨胀2.2图像的几何变换I=imread('nir.bmp');se=translate(strel(1),[180190]);B=imdilate(I,se);figure;subplot(1,2,1),subimage(I);title('原图像');subplot(1,2,2),subimage(B);title('平移后图像');2.2.2图像镜像B=imtransform(A,TFORM,method);TFORM=makeform(transformtype,Matrix);%空间变换结构Method合法值含义‘bicubic’双三次插值‘bilinear’双线性插值‘nearest’最近邻插值参数transformtype指定了变换的类型,常见的’affine’为二维或多维仿射变换,包括平移、旋转、比例、拉伸和错切等。Matrix为相应的仿射变换矩阵。A=imread('nir.bmp');[height,width,dim]=size(A);tform=maketform('affine',[-100;010;width01]);B=imtransform(A,tform,'nearest');tform2=maketform('affine',[100;0-10;0height1]);C=imtransform(A,tform2,'nearest');figure;imshow(A);figure;imshow(B);imwrite(B,'nir水平镜像.bmp');figure;imshow(C);imwrite(B,'nir垂直镜像.bmp');原图像水平镜像图像垂直镜像图像A=imread('nir.bmp');tform=maketform('affine',[010;100;001]);B=imtransform(A,tform,'nearest');figure;imshow(A);figure;imshow(B);imwrite(B,'nir转置后图像.bmp');2.2.3图像转置2.2.4图像中心旋转B=imrotate(A,angle,method,’crop’);angle为旋转角度,正值为逆时针旋转。可选参数method为imrotate函数指定插值方法。‘crop’选项会裁减旋转后增大的图像,保持和原图像同样大小。
A=imread('nir.bmp');B=imrotate(A,30,'nearest','crop');figure;imshow(B);imwrite(B,'逆时针中心旋转30度.bmp');逆时针30度2.3图像的灰度变换与直方图在计算机中一幅二维数字图像表示为一个矩阵,该矩阵中的元素是位于相应坐标位置的图像灰度值。对图像处理,包括对彩色图像的处理,往往都是对像素灰度的操作,所以对图像进行灰度变换是图像处理过程中最简单、最基础内容。在图像处理中,直接对像素进行的操作称为空间域(简称空域)处理。2.3.1图像的灰度变换函数imadjust完成灰度图像的灰度变换。语法格式为:g=imadjust(p,[low_inhigh_in],[low_outhigh_out],gamma)其中p为读入到MATLAB中的待变换图像矩阵;
[low_inhigh_in]指定p图像中被执行变换操作的灰度范围,[low_outhigh_out]是p图像中的像素变换后被映射到low_out~high_out的灰度级上。参数gamma是指变换映射方式,默认gamma取作1,完成线性映射,这时变换前后的灰度级没有被加权;当gamma小于1,则映射被加权至更高的灰度级;相反当gamma大于1,输出则被加权映射至较低灰度级。
几种灰度变换过程:将football.jpg灰度级0.1~0.6范围的像素线性变换到0~1上,效果如图所示p=imread('football.jpg');g1=imadjust(p,[0.10.6],[]);subplot(1,2,1);imshow(p);xlabel('(a)');subplot(1,2,2);imshow(g1);xlabel('(b)');将图像p向高灰度级变换,gamma取0.6,效果如图所示g2=imadjust(p,[],[],0.6);subplot(2,2,3);imshow(g2);xlabel('(c)');将图像p做灰度倒相变换,即输出源图的负片,gamma取1,如图所示。g3=imadjust(p,[01],[10]);subplot(2,2,4);imshow(g3);xlabel('(d)');2.3.2灰度直方图图像灰度直方图描述了一幅图像的灰度级内容,即各个灰度级像素数目的统计。直方图统计各个灰度像素的分布概率,是灰度级的函数,它反映不出该像素在图像中的二维坐标。通过灰度直方图的形状,可以判断该图像的清晰度和黑白对比度。MATLAB通过命令imhist给出图像直方图。语法格式为:h=imhist(p,b)其中p为读入的图像矩阵,参数b指明直方图统计时显示的整个灰度级分段数目。省略b时,表明灰度级不分段,这也是imhist的默认调用方式。如:uint8数据格式的图像,当b=2时,灰度分为0~127及128~256两个区段。显示图像p的灰度直方图时,先要把RGB彩色图像p变换为灰度图像I。运行下列程序得到如图所示直方图。p=imread('football.jpg');I=rgb2gray(p);imhist(I);2.3.3直方图均衡化当一幅图像基调过暗或过亮时,需要对其进行必要的处理,使得图像明暗均匀,视觉效果变得更为理想。通过直方图均衡化做适当的调整,即把一幅已知灰度概率分布图像中的像素灰度做某种映射变换,使它变成一幅具有均匀概率分布的新图像,使图像视觉效果更加清晰。直方图均衡的MATLAB函数为histeq,其基本语法格式为:g=histeq(p,outlev)
其中p为读入的图像矩阵,outlev为输出图像的灰度级数。outlev的默认值为64,即64个灰度级,这样对图像的细节有一定改变。通常将其赋值为256,即全灰度级。对tire.tif进行直方图均衡,效果如图所示。p=imread('tire.tif');subplot(2,2,1);imshow(p);xlabel('(a)');subplot(2,2,2);imhist(p);xlabel('(b)');g=histeq(p);subplot(2,2,3);imshow(g);xlabel('(c)');subplot(2,2,4);imhist(g);xlabel('(d)');2.4图像的增强滤波上节介绍过的直方图均衡化是图像增强中常用的一种方法,此外,图像增强技术还包括图像平滑滤波、图像锐化等。本节将从线性与非线性、平滑与锐化等角度介绍一些实用的空域图像增强技术。1空域滤波概述图像增强技术从总体上可分为空域增强和频域增强两大类。空域增强也称为空间增强,是直接对图像中的像素进行操作的一种增强过程。空域增强从根本上讲是以图像的灰度映射变换为基础的像素处理技术。空域增强方法大致可分为对比度拉伸、平滑滤波和锐化滤波。灰度拉伸主要是利用点运算来修改图像像素灰度值;而平滑和锐化均是利用模板来修改(卷积运算)像素灰度值,从实现方法上讲是基于图像滤波的操作过程。空域滤波是在图像空间中借助模板对图像进行邻域操作的,输出图像每一个像素的取值都是根据模板对输入像素相应邻域内的像素值进行计算得到的,也叫邻域去噪算法。2空域滤波分类根据模板特点不同可以将空域滤波分为线性和非线性两大类。按照空域滤波器的功能不同,又可将其分为平滑滤波器和锐化滤波器。平滑滤波器可以用低通滤波实现;锐化滤波器是用高通滤波实现的,具体可分为以下3类。1)均值滤波均值滤波也称线性平滑滤波,其输出的像素值是由邻域像素的平均值决定。2)中值滤波中值滤波也称为非线性平滑滤波,其基本原理与均值滤波不同之处在于:中值滤波的输出像素值是由邻域像素的中间值而不是平均值决定,中值滤波的名字也因此而得。与均值滤波相比,中值滤波对灰度发生聚变的像素不如均值滤波那么敏感,因此中值滤波能尽量保存图像的细节,模糊效应较少,适于消除图像中孤立噪声。3)锐化滤波锐化滤波就是可以使用微分对图像进行处理,以此来锐化由于邻域平均导致的图像模糊。图像处理中最常用的微分是利用图像沿某方向上的灰度变化率,即梯度进行的。3基于MATLAB的空域增强滤波基于MATLAB图像处理的空域滤波,首先要定义滤波器,然后调用定义好的滤波器进行滤波。imnoise是MATLAB提供的图像噪声模拟函数,其基本语法格式为:pn=imnoise(p,’type’,para)其中pn为添加噪声的输出图像,p为原图像,type指定噪声的类型,para为每种类型噪声的参数。常用的噪声有:gaussian(高斯噪声)、salt&pepper(椒盐噪声)、speckle(均值为0均匀分布的随机噪声)等。fspecial函数用来预定义滤波器,语法格式为:h=fspecial(’type’,para)其中h为预定义的滤波器,参数type指定滤波器的种类,para为与滤波器相关的参数。滤波器的种类type可以为:Gaussian(高斯低通滤波器)、laplacian(拉普拉斯算子)
log(拉普拉斯高斯算子)、prewitt(Prewitt算子)
sobel(Sobel算子)、average(均值滤波器)unsharp(对比度增强滤波器)imfilter用来实现线性空间滤波的函数,语法格式为:hp=imfilter(p,w,filter_mode,boundary_options,size_options)其中hp为经过滤波后输出图像,p为原图像,w为滤波模板,filter_mode指定滤波中使用相关核(corr)还是卷积核(conv)。boundary_options控制边界填充方式为边界复制(replicate)、边界循环(circular)还是边界对称(symmetric)。size_options可以为same或者full两者之一。medfilt2是一个二维中值滤波函数,语法格式为:hp=medfilt2(p,[mn],padopt)其中hp为经过滤波后输出的图像,p为原图像,m及n规定了邻域大小,padopt指定了边界填充方式,默认方式为zeros对添加了椒盐噪声的图像分别进行均值滤波和中值滤波,滤波前后效果如图所示。p=imread('coins.png');p0=imnoise(p,'salt&pepper‘,0.02);%添加椒盐噪声H1=fspecial('average',[34]);%设计均值滤波器H1p1=imfilter(p0,H1,'replicate');%用滤波器H1对图像p0进行滤波p2=medfilt2(p0,[3,3],'zeros');%对图像p0进行中值滤波subplot(2,2,1),imshow(p);%显示原图及处理后的图像subplot(2,2,2),imshow(p0);subplot(2,2,3);imshow(p1);subplot(2,2,4);imshow(p2);均值滤波和中值滤波((a)原图像;(b)添加椒盐噪声后图像;(c)均值滤波后图像;(d)中值滤波后图像)对含有噪声的原图像进行锐化,得到如图所示图像。p0=imread('moon.tif');p=im2double(p0);%将图像数据类型转换为doubleH1=fspecial('laplacian',0);%设计拉普拉斯滤波器H1H2=fspecial('log',[55],0.5);%设计高斯-拉普拉斯滤波器H2hp1=imfilter(p,H1,'replicate');%用滤波器H1对图像p进行滤波hp2=imfilter(p,H2,'replicate');%用滤波器H2对图像p进行滤波p1=p-hp1;%还原灰度色调p2=p-hp2;%还原灰度色调subplot(1,3,1),imshow(p0);subplot(1,3,2),imshow(p1);subplot(1,3,3);imshow(p2);拉普拉斯波和高斯-拉普拉斯滤波(a)原图像;(b)laplace滤波图像;(c)高斯laplace滤波图像2.3图像的空间变换图像的空间变换也称为图像的几何变换,是指将用户获得或设计的原始图像,按照需要产生大小、形状和位置的变化。常用的图像几何变换包括图像的缩放、图像的剪切及图像的旋转等内容。1图像比例缩放图像比例缩放是指将给定的图像在x轴方向按比例缩放fx倍,在y轴方向按比例缩放fy倍,从而获得一幅新的图像。有fx=fy和fx≠fy两种情况。比例缩放所产生的图像中的像素可能在原图像中找不到相应的像素点,这样就必须进行插值处理。图像插值处理常用的方法有两种,一种是最邻近插值法,另一种是通过一些插值算法来计算相应的像素值。MATLAB中提供了三种图像插值方法,即最近邻插值、双线性插值和双三次插值。函数imresize对图像进行插值缩放,语法格式为:ps=imresize(p,m,method)其中ps为变换后图像,p为输入图像,m放大倍数(当m<1时缩小),method为插值方法的选择项,可选最近邻插值法(nearest)、双线性插值法(bilinear)及双三次插值法(bicubic),默认使用最近邻插值法。另外一种语法格式为:ps=imresize(p,[mn],method)其中m和n分别为变换后图像长宽。对liftingbody.png图像进行缩小,其效果如图所示。p=imread('liftingbody.png');w=input('pleaseinputanumber:');%交互输入缩小为0.2倍ps=imresize(p,w);%缩小变换imshow(p);figure;imshow(ps);对liftingbody.png图像进行缩小前后的效果(a)原图像;(b)缩小后拉伸显示后图像2图像剪切用函数imcrop交互实现图像区域选取功能,用于剪切图像中的一个矩形子图,可用鼠标选取这个矩形,也可以通过参数指定这个矩形顶点的坐标。语法格式为:pc=imcrop(p)或pc=imcrop(p,rectangle)其中pc为剪切后的图像,p为输入图像,rectangle为四个变量指定的一个矩形区域,即[leftbottomwidthheight],数组中的四个变量分别表示矩形左下角的横坐标、纵坐标、矩形长度及宽度。对liftingbody.png图像进行剪切,其效果如图所示。p=imread('liftingbody.png');pc=imcrop(p,[80180260220]);%输入矩形尺度进行选取subplot(1,2,1);imshow(p);subplot(1,2,2);imshow(pc);3图像旋转图像的旋转是以图像的中心为原点,将图像上的所有像素都旋转一个相同的角度。在图像进行旋转的时候,各像素的坐标必然发生变化,使得旋转之后不能正好落在整数坐标处,因此同缩放一样,也需要进行插值,插值方法也与缩放的插值方法一样,完全相同,即可用3种方法对图像进行插值旋转,默认的插值方法是最近邻插值法。通过函数imrotate实现对图像的旋转,语法格式为:
pr=imrotate(p,angle,method)或pr=imrotate(p,angle,method,crop)其中pr为旋转后得到的图像,p为输入图像,angle为指定的旋转度数,参数method用于指定插值的方法,可选值为nearest(最近邻法),bilinear(双线性插值)及bicubic(双三次插值),默认值为nearest。参数crop允许用户对旋转后的图像进行自动剪切,使返回的图像与原图大小相同。对liftingbody.png图像进行旋转,其效果如图所示。p=imread('liftingbody.png');angle=input('pleaseinputangle:');%输入旋转角度为45度pr=imrotate(p,angle,'bilinear');%使用双线性插值方法实现旋转变换subplot(1,2,1);imshow(p);subplot(1,2,2);imshow(pr);2.4图像边缘检测与分割图像分割是将数字图像分割成互不相交(不重叠)的有意义的子区域的过程。其目的是使各个区域与景物中以某种方式描述的物体相对应,以便进行高层次的图像解释、图像识别等处理。1边缘检测概述图像分割是基于图像像素灰度值的基本特性--不连续性与相似性中来进行的。区域内部像素一般具有灰度相似性,区域之间边界上一般具有灰度不连续性。根据图像灰度级突变进行图像分割的方法中,边缘检测通过检测包含不同区域的边缘来解决图像分割问题。边缘检测最通用的方法是检测灰度值的不连续性,灰度值的不连续是指在不同区域之间的边缘上像素灰度值的变化往往比较剧烈,一般利用图像一阶导数的极大值或者二阶导数的过零点信息提供判断边缘点的依据。边缘的物理意义图像边缘的产生物体的边界、表面方向的改变、不同的颜色、光照的变化物体的边界表面方向变化不同颜色区域光照明暗灰度图像中边缘的类型阶梯状边缘屋脊状边缘线条状边缘为什么要提取边缘?边缘是最基本的图像特征之一:可以表达物体的特征边缘特征对于图像的变化不敏感几何变化,灰度变化,光照方向变化可以为物体检测提供有用的信息是一种典型的图像预处理过程原始图像输出结果模式识别预处理特征提取如何提取边缘?(灰度图象)灰度图象边缘提取的主要思想:抑制噪声(低通滤波、平滑、去噪、模糊)边缘特征增强(高通滤波、锐化)边缘定位原始图像中间结果图像边缘抑制噪声增强边缘边缘定位2梯度算子图像中任一像素点,用二维函数f(x,y)来表示,而梯度定义为向量∇f:向量幅值为:为简化计算,通常省略开方或通过取绝对值来近似计算,即或梯度向量的含义在于,它总是指向f(x,y)在点(x,y)处的最大变化率方向。最大变化率是用方向α角来衡量的,即原理:若所求的一阶层数(梯度)高于某一阈值,则可确定该点为边缘点。为了能估计出Gx及Gy值,通常使用一些经典的模板来做数字化近似。有Sobel模板、Prewitt模板、Roberts模板等。MATLAB提供了边缘函数(edge)实现对图像边缘的检测,语法格式为:[e,s]=edge(p,'method',para)其中p为输入图像,method是边缘检测的类型,para为与edge对应的参数,e为与p同样大小的逻辑矩阵,在检测到边缘的位置时值为1,其它位置则为0,s为一可选参数。Roberts模板(算子)Roberts算子又称为Roberts交叉算子,它是利用局部差分算子寻找边缘的模板,它在2×2邻域上计算对角导数。在实际应用中,为了简化计算,常用梯度函数的Roberts绝对值来近似。另外还可以用Roberts最大值算子来计算。Roberts边缘检测算子如图所示:(a)Roberts-x
(b)Roberts-y-10010-110Roberts边缘检测器的语法格式如下:[e,s]=edge(p,'roberts',thresh,direct)其中p为输入图像,thresh为指定的阈值T,若T值未指定,则函数edge自动选择一个值。direct为检测边缘的首选方向,通常可选作horizontal(水平)、vertical(垂直)或both(默认值)。Roberts算子的一个主要问题是计算方向差分时对噪声敏感。Sobel模板(算子)Sobel提出一种将方向差分运算与局部平均相结合的方法,即Sobel算子。是在以f(x,y)为中心的3×3邻域上计算x和y方向的偏导数,其模板如图所示
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年项目管理关键指标设计的考点试题及答案
- 玻璃制品安全生产与应急预案考核试卷
- 生物农药在病虫害防治中的综合评价考核试卷
- 证券从业资格证考试心理准备试题及答案
- 磷肥工艺优化与节能减排考核试卷
- 2025年【金属非金属矿山支柱】模拟考试题及答案
- 机械加工中的智能供应链管理考核试卷
- 油田投球机安装施工方案
- 复述上面已经提到的主题以下是新的个主题名称考核试卷
- 园艺师参与科研项目的必要性试题及答案
- 非上市公司的期权激励方案两篇
- 福建省能源石化集团有限责任公司招聘笔试真题2024
- 专业税务顾问服务合同范本
- 第8课《集字练习》课件-【知识精研】六年级上册书法北师大版
- DB37-T 5312-2025 《建筑施工安全防护设施技术标准》
- 基于Scrum的软件产品自动化测试框架研究
- 2025年广东韶关南雄市卫生健康局下属事业单位招聘工作人员67人历年高频重点模拟试卷提升(共500题附带答案详解)
- 2025年度商铺租赁代理服务合同(含独家代理权)
- (完整版)中医医院医疗设备配置标准(2012年)
- 高压配电室操作规程(3篇)
- 2025护坡护岸施工及验收规范
评论
0/150
提交评论