《Matlab图像处理教程及方法》由会员分享,可在线阅读,更多相关《Matlab图像处理教程及方法(65页珍藏版)》请在金锄头文库上搜索。
1、Matlab 数字数字图像像处理理/1、图像的读取和显示/2、图像的点运算/4、空间域图像增强/5、频率域图像增强/6、彩色图像处理/7、形态学图像处理/8、图像分割/9、特征提取内容安排内容安排/3、图像的几何变换/1、图像的读取和显示一、图像的读取一、图像的读取A=imread(FILENAME,FMT)FILENAME 指定图像文件的完整路径和文件名。如果在work工作目录下只需提供文件名。FMT为图像文件的格式对应的标准扩展名。I_1=imread(D:10.06.08nirTTC10377.BMP);%读入图像二、图像的写入二、图像的写入imwrite(A,FILENAME,FMT)
2、FILENAME参数指定文件名。FMT为保存文件采用的格式。imwrite(I6,nirdilatedisk2TTC10373.bmp);/1、图像的读取和显示三、图像的显示三、图像的显示imshow(I,low high)I为要显示的图像矩阵。low high为指定显示灰度图像的灰度范围。高于high的像素被显示成白色;低于low的像素被显示成黑色;介于High和low之间的像素被按比例拉伸后显示为各种等级的灰色。figure;imshow(I6);title(The Main Pass Part of TTC10373);figure;%创建一个新的窗口figure;subplot(m,n
3、,p);imshow(I);Subplot(m,n,p)含义为:打开一个有m行n列图像位置的窗口,并将焦点位于第p个位置上。/1、图像的读取和显示四、图像的格式转换四、图像的格式转换im2bw(I,LEVEL);rgb2gray;从RGB图创建灰度图,存储类型不变。im2uint8 将图像转换成uint8类型阈值法从灰度图、RGB图创建二值图。LEVEL为指定的阈值;(0,1)。im2double 将图像转换成double类型/2、图像的点运算 灰度直方图描述了一副图像的灰度级统计信息,主要应用于图像分割和图像灰度变换等处理过程中。从数学角度来说,图像直方图描述图像各个灰度级的统计特性,它是图
4、像灰度值的函数,统计一幅图像中各个灰度级出现的次数或概率。归一化直方图可以直接反映不同灰度级出现的比率。横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。imhist(I);%灰度直方图I=imread(red.bmp);%读入图像figure;%打开新窗口M,N=size(I);%计算图像大小counts,x=imhist(I,32);%计算有32个小区间的灰度直方图counts=counts/M/N;%计算归一化灰度直方图各区间的值stem(x,counts);%绘制归一化直方图一、图像直方图一、图像直方图图像直方图归一化图像直方图归一化/2、图
5、像的点运算二、灰度的线性变换二、灰度的线性变换Fa1时,输出图像的对比度将增大;Fa1时,输出图像对比度将减小。Fa=1且Fb非零时,所有像素的灰度值上移或下移,使整个图像更暗或更亮。Fafreq) out(i,j)=0; end endend理想低通function out = imgaussflpf(I,sigma)%imgaussflpf函数 构造高斯频域低通滤波器M,N = size(I);out = ones(M,N);for i=1:M forj=1:N out(i,j) = exp(-(i-M/2)2+(j-N/2)2)/2/sigma2); endend高斯低通/6、彩色图像处
6、理色彩模型:RGB模型、CMY模型、CMYK模型、HIS模型、 HSV模型、YUV模型、YIQ模型。RGB模型国际照明委员会(CIE)规定以蓝()、绿()和红(700nm)作为主原色。RGB_image=cat(3,PR,PG,PB);%将PR、PG、PB三个矩阵在第3个维度上进行级联,进行图像合成PR=RGB_image(:,:,1);%提取红色分量PG=RGB_image(:,:,2);%提取绿色分量PB=RGB_image(:,:,3);%提取蓝色分量Matlab中一幅RGB图像可表示为一个M*N*3的3维矩阵。其中每一个彩色像素都在特定空间位置的彩色图像中对应红、绿、蓝3个分量。CMY
7、模型CMY模型是采用(Cyan、Magenta、Yellow)青、品红、黄色3中基本原色按一定比例合成颜色。由于色彩的显示是由光线被物体吸收掉一部分之后反射回来的剩余光线产生,故CMY模型又称为减色法混色模型。当光都被吸收时成为黑色,都被反射时为白色。CMY模型主要用于彩色打印机和复印机等。CMYK模型CMY模型在实际使用中,青、品红和黄色等比例混合后的黑色并不纯,为产生真正的黑色,专门加入第四种颜色黑色。得到CMYK模型。用于四色打印。cmy=imcomplement(rgb);%rgb转成cmyrgb=imcomplement(cmy);cmy转成rgbHSI模型HIS模型是从人的视觉系统
8、出发,直接使用颜色三要素色调模型是从人的视觉系统出发,直接使用颜色三要素色调(Hue)、饱和度()、饱和度(Saturation)和亮度()和亮度(Intensity)来描述)来描述颜色。颜色。亮度指人眼感觉光的明暗程度。光的能量越大,亮度越大。色调由物体反射光线中占优势的波长决定。反映颜色的本质。饱和度指颜色的深浅和浓淡程度,饱和度越高,颜色越深。HIS色彩空间比色彩空间比RGB彩色空间更符合人的视觉特性。亮度和色彩色空间更符合人的视觉特性。亮度和色度具有可分离特性,使得图像处理和机器视觉中大量灰度处度具有可分离特性,使得图像处理和机器视觉中大量灰度处理算法都可在理算法都可在HIS彩色空间中
9、方便使用。彩色空间中方便使用。色调色调强度强度饱和度饱和度其中/7、形态学图像处理一、二值图像腐蚀一、二值图像腐蚀I2=imerode(I,SE);SE=strel(shape,parameters);I为原始图像,可以是二值或者灰度图像。shape指定了结构元素的形状。parameters是和输入shape有关的参数。合法取值合法取值功能描述功能描述arbitrary或为空任意自定义结构元素disk圆形结构元素square正方形结构元素rectangle矩形结构元素line线性结构元素pair包含2个点的结构元素diamond菱形的结构元素octagon8角形的结构元素/7、形态学图像处理二
10、、二值图像膨胀二、二值图像膨胀I2=imdilate(I,SE);SE=strel(shape,parameters);I为原始图像,可以是二值或者灰度图像。shape指定了结构元素的形状。parameters是和输入shape有关的参数。原图像腐蚀后膨胀后/7、形态学图像处理三、其他二值图像运算三、其他二值图像运算SE=strel(shape,parameters);I2=imopen(I,SE);%开运算I3=imclose(I,SE);%闭运算Ihm=bwhitmiss(I,SE1,SE2);%击中击不中变换四、连通分量提取四、连通分量提取L num=bwlabel(Ibw,conn);
11、Ibw为一幅输入二值图像。conn为可选参数,指明提取连通分量是4连通还是8连通。默认为8。L为连通分量标注图像。num为二值图像Ibw中连通分量个数。/7、形态学图像处理五、五、bwmorph函数函数Iout=bwmorph(I,operation,n)合法取值功能描述bridge桥接有单个像素缝隙分割的前景像素clean清楚孤立的前景像素diag围绕对角线相连的前景像素进行填充fill填充单个像素的孔洞hbreak去掉前景中的H形连接majority如果点P的8领域中一半以上像素为前景像素,则P为前景像素,否则为背景。remove去除内部像素(无背景像素相邻的前景)shrink将物体收缩为
12、一个点或者带洞的环形skel骨骼化图像spur去除“毛刺”thicken粗化物体thin将物体细化至最低限度相连的线形/7、形态学图像处理六、顶帽变换六、顶帽变换解决非均匀光照问题。顶帽变换定义为图像f与图像f的开运算之差。a=imread(red.bmp);I=rgb2gray(a);figure,surf(double(I(1:8:end,1:8:end),zlim(0 255),colormapgray;%显示图像I的三维可视化效果bg=imopen(I,strel(disk,15);%开运算Itophat=imsubtract(I,bg);%顶帽变换figure,imshow(Itop
13、hat);figure,surf(double(Itophat(1:8:end,1:8:end),zlim(0 255);I2=imadjust(Itophat);figure,imshow(I2);原图像三维可视化效果顶帽变换后的三维可视化效果顶帽变换后图像对比度拉伸后效果/8、图像分割一、图像分割概述一、图像分割概述 图像分割一般采用的方法有边缘检测(edge detection)、边界跟踪(edge tracing)、区域生长(region growing)、区域分离和聚合等。 图像分割算法一般基于图像灰度值的不连续性或其相似性。 不连续性是基于图像灰度的不连续变化分割图像,如针对图像的
14、边缘有边缘检测、边界跟踪等算法。 相似性是依据事先制定的准则将图像分割为相似的区域,如阈值分割、区域生长等。二、边缘检测二、边缘检测 图像的边缘点是指图像中周围像素灰度有阶跃变化或屋顶变化的那些像素点,即灰度值导数较大或极大的地方。 边缘检测可以大幅度的减少数据量,并且剔除不相关信息,保留图像重要的结构属性。 边缘检测基本步骤:平滑滤波、锐化滤波、边缘判定、边缘连接。边缘检测算法边缘检测算法:基于一阶导数:Roberts算子、Sobel算子、Prewitt算子基于二阶导数:高斯-拉普拉斯边缘检测算子Canny边缘检测算法Matlab实现实现1)、基于梯度算子的边缘检测BW=edge(I,typ
15、e,thresh,direction,nothinning)type合法取值梯度算子sobelsobel算子prewittprewitt算子rebertsrobert算子thresh是敏感度阈值参数,任何灰度值低于此阈值的边缘将不会被检测到。默认值为空矩阵,此时算法自动计算阈值。direction指定了我们感兴趣的边缘方向,edge函数将只检测direction中指定方向的边缘,其合法值如下:direction合法值合法值边缘方向边缘方向horizontal水平方向水平方向vertical竖直方向竖直方向both所有方向所有方向可选参数nothinning,指定时可以通过跳过边缘细化算法来加快
16、算法运行的速度。默认是thinning,即进行边缘细化。2)、基于高斯-拉普拉斯算子的边缘检测BW=edge(I,log,thresh,sigma)sigma指定生成高斯滤波器所使用的标准差。默认时,标准差为2。滤镜大小n*n,n的计算方法为:n=ceil(sigma*3)*2+1。3)、基于Canny算子的边缘检测BW=edge(I,canny,thresh,sigma)thresh是敏感度阈值参数,默认值为空矩阵。此处为一列向量,为算法指定阈值的上下限。第一个元素为阈值下限,第二个元素为阈值上限。如果只指定一个阈值元素,则默认此元素为阈值上限,其倍的值作为阈值下限。如阈值参数没有指定,则算
17、法自行确定敏感度阈值上下限。b1=imread(nir.bmp);h58=fspecial(gaussian,5,0.8);b=imfilter(b1,h58);bw1=edge(b,sobel);%sobel算子bw2=edge(b,prewitt);%prewitt算子bw3=edge(b,roberts);%roberts算子bw4=edge(b,log); %log算子bw5=edge(b,canny);%canny算子figure;imshow(bw1);imwrite(bw1,nirbwsobel.bmp);figure;imshow(bw2);imwrite(bw2,nirbwp
18、rewitt.bmp);figure;imshow(bw3);imwrite(bw3,nirbwroberts.bmp);figure;imshow(bw4);imwrite(bw4,nirbwlog.bmp);figure;imshow(bw5);imwrite(bw5,nirbwcanny.bmp);Sobel算子roberts算子prewitt算子log算子canny算子分析分析1、边缘定位精度方面: Roberts算子和Log算子定位精度较高。Roberts算子简单直观,Log算子利用二阶导数零交叉特性检测边缘。但Log算子只能获得边缘位置信息,不能得到边缘方向信息。2、边缘方向的敏感
19、性: Sobel算子、Prewitt算子检测斜向阶跃边缘效果较好,Roberts算子检测水平和垂直边缘效果较好。Log算子不具有边缘方向检测功能。Sobel算子能提供最精确的边缘方向估计。3、去噪能力: Roberts算子和Log算子虽然定位精度高,但受噪声影响大。 Sobel算子和Prewitt算子模板相对较大因而去噪能力较强,具有平滑作用,能滤除一些噪声,去掉一部分伪边缘,但同时也平滑了真正的边缘,降低了其边缘定位精度。总体来讲,Canny算子边缘定位精确性和抗噪声能力效果较好,是一个折中方案。 三、三、Hough变换直线检测变换直线检测/8、图像分割步骤:步骤:1.利用hough()函数
20、执行霍夫变换,得到霍夫矩阵;2.利用houghpeaks()函数在霍夫矩阵中寻找峰值点;3.利用houghlines()函数在之前两步结果的基础上得到原二值图像中的直线信息。H,theta,rho=hough(BW,param1,val1,param2,val2)1、霍夫变换(针对二值图像)Param合法值含义ThetaResolutionHough矩阵中a轴方向上单位区间长度,0,90RhoResolutionHough矩阵中p轴方向上单位区间长度,0,norm(size(BW)2、寻找峰值houghpeakspeaks=houghpeaks(H,numpeaks,param1,val1,p
21、aram2,val2)Param合法值含义Threshold峰值的阈值,默认为0.5*max(H(:)NHoodSize在每次检测出一个峰值后,NHoodSize指出了在该峰值周围需要清零的邻阈信息。以向量M N形式给出,其中M、N均为正奇数。默认为大于等于size(H)/50的最小奇数peaks是一个Q*2的矩阵,每行的两个元素分别为某一峰值点在Hough矩阵中的行、列索引,Q为找到的峰值点的数目。3、提取直线段houghlineslines=houghlines(BW,theta,rho,peaks,param1,val1,param2,val2)Param合法值含义FillGap线段合并
22、的阈值:如果对应于Hough矩阵某一个单元格(相同的a和p)的2个线段之间的距离小于FillGap,则合并为1个直线段。默认值为20MinLength检测的直线段的最小长度阈值:如果检测出的直线线段长度大于MinLength,则保留,否则丢弃。默认值为40。域含义point1直线段的端点1point2直线段的端点2theta对应在霍夫矩阵中的arho对应在霍夫矩阵中的p返回值返回值lines的结构的结构I1=imread(004.jpg);I=rgb2gray(I1);%旋转图像并寻找边缘rotI=imrotate(I,33,crop);BW=edge(rotI,canny);%执行Hough
23、变换并显示Hough矩阵H,T,R=hough(BW);figure;imshow(H,XData,T,YData,R,InitialMagnification,fit);xlabel(theta),ylabel(rho);axis on,axis normal,hold on;%在Hough矩阵中寻找前5个大于Hough矩阵中最大值倍的峰值P=houghpeaks(H,5,threshold,ceil(0.3*max(H(:);x=T(P(:,2);y=R(P(:,1);%由行、列索引转换成实际坐标plot(x,y,s,color,white);%在Hough矩阵图像中标出峰值位置%找出并绘
24、制直线lines=houghlines(BW,T,R,P,FillGap,5,MinLength,7);%合并距离小于5的线段,丢弃所有长度小于7的直线段figure,imshow(rotI),hold onmax_len=0;for k = 1:length(lines)%依次标出各条直线段 xy=lines(k).point1;lines(k).point2; plot(xy(:,1),xy(:,2),x,LineWidth,2,Color,green); %绘制线段端点 plot(xy(1,1),xy(1,2),x,LineWidth,2,Color,yellow); plot(xy(2
25、,1),xy(2,2),x,LineWidth,2,Color,red); %确定最长的线段 len=norm(lines(k).point1-lines(k).point2); if(lenmax_len) max_len=len; xy_long=xy; endend%高亮显示最长线段plot(xy_long(:,1),xy_long(:,2), LineWidth,2,Color,cyan);原图像Hough矩阵旋转并检测最长直线段/9、特征提取特征提取的一般原则:特征提取的一般原则:选择在同类图像之间差异较小(较小的类内距),在不同类别的图像之间差异较大(较大的类间距)的图像特征。一、
26、简单区域描绘子一、简单区域描绘子周长:区域边界上的像素数目。面积:区域中像素数目。致密性:(周长)2/面积。区域的质心。灰度均值:区域中所有像素的平均值。灰度中值:区域中所有像素的排序中值。包含区域的最小矩形。最小或最大灰度级。大于或小于均值的像素数。欧拉数:区域中的对象数减去这些对象的孔洞数。D=regionprops(L,properties);L为一个标记矩阵,通过连通1区域标注函数bwlabel得到。Properties合法值合法值含义含义Area区域内像素总数BoundingBox包含区域的最小矩形Centroid区域的质心ConvexHull包含区域的最小凸多边形EquivDiam
27、eter和区域有着相同面积的圆的直径EulerNumber区域中的对象数减去这些对象的孔洞数二、主成分分析(二、主成分分析(Principal Component Analysis,PCA)COEFF,SCORE,latent=pincomp(X); X为原始样本组成n*d的矩阵,其每一行是一个样本特征向量,每一列表示样本特征向量的一维。 COEFF:主成分分量,也是样本协方差矩阵的本征向量。 SCORE:主成分,X的低维表示。 latent:一个包含着样本协方差矩阵本征值的向量。X=1,2;3,3;3,5;4,5;5,6;6,5;8,7;9,3;7,6;XCOEFF,SCORE,latent=princomp(X);%主成分分析COEFF%主成分分量SCORE%主成分latent%X样本协方差矩阵的本征值谢谢v