Matlab图像处理教程及方法.ppt_第1页
Matlab图像处理教程及方法.ppt_第2页
Matlab图像处理教程及方法.ppt_第3页
Matlab图像处理教程及方法.ppt_第4页
Matlab图像处理教程及方法.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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),FIL

2、ENAME参数指定文件名。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非零时,所有像素的灰度值上移或下移,使整个图像更暗或 更亮。Fa0,暗区变亮,亮区变暗。,/2、图像的点运算,三、灰度的对数变换,c为尺度比例常数,s为源灰度值,t为变换后的目标灰度值。k为常数。灰度的对数变换可以增强一幅图像中较暗部分的细节,可用来扩展被压缩的高值图像中的较暗像素。广泛应用于频谱图像的显示中。,Warning:log函数会对输入图像矩阵s中的每个元素进行 操作,但仅能处理double类型的矩阵。而从图像文件中得到的 图像矩阵大多是uint8类型的,故需先进行im2

6、double数据类型 转换。,I=imread(nir.bmp);%读入图像 F=fft2(im2double(I);%FFT F=fftshift(F);%FFT频谱平移 F=abs(F); T=log(F+1);%频谱对数变换 figure;imshow(F,);title(未经变换的频谱); figure;imshow(T,);title(对数变换后);,/2、图像的点运算,三、灰度的Gamma变换,其中,x、y的取值范围为0,1。esp为补偿系数,r则为Gamma系数。 Gamma变换是根据r的不同取值选择性的增强低灰度区域的对比度 或者高灰度区域的对比度。,J=imadjust(I,

7、low_in high_in,low_out high_out,gamma),I=imread(nir.bmp); figure;imshow(imadjust(I,0.75); %gamma=0.5 title(Gamma 0.5);,原NIR图像,Gamma 0.5,四、灰度阈值变换及二值化,Gamma 1.5,T为指定阈值,BW=im2bw(I,level);%level为人工设定阈值范围为0 ,1,thresh=graythresh(I);%自动设定所需的最优化阈值,OTSU算法:最大类间方差法自动单阈值分割。,Kapur算法:一维直方图熵阈值算法,niblack算法:局部阈值分割 阈

8、值的计算公式是T = m + k*v,其中m为以该像素点为中心的区域的平均灰度值,v是该区域的标准差,k是一个系数。,kittlerMet : 表示kittler 最小分类错误(minimum error thresholding)全局二值化算法。,原图像,直接阈值分割 0.25,自动阈值分割,OTSU算法分割,KittlerMet算法,Niblack算法,Kapur算法,/2、图像的点运算,五、直方图均衡化,J,T=histeq(I);%J为输出图像,T为变换矩阵,图像易受光照、视角、方位、噪声等的影响。使得同一类图像的不同变形体之间的差距有时大于该类图像与另一类图像之间的差距,影响图像识别

9、、分类。图像归一化就是将图像转换到唯一的标准形式以抵抗各种变换,从而消除同类图像不同变形体之间的外观差异。也称为图像灰度归一化。,原图像及直方图,图像变亮后灰度均衡化,图像变暗后灰度均衡化,/3、图像的几何变换,一、图像平移,正变换,逆变换,strel %用来创建形态学结构元素 translate(SE,y x)%原结构元素SE上y和x方向平移 imdilate%形态学膨胀,/3、图像的几何变换,I=imread(nir.bmp); se=translate(strel(1),180 190); B=imdilate(I,se); figure;subplot(1,2,1),subimage(

10、I);title(原图像); subplot(1,2,2),subimage(B);title(平移后图像);,/3、图像的几何变换,二、图像镜像,B=imtransform(A,TFORM,method); TFORM=makeform(transformtype,Matrix);%空间变换结构,参数transformtype指定了变换的类型,常见的affine为二维或 多维仿射变换,包括平移、旋转、比例、拉伸和错切等。 Matrix为相应的仿射变换矩阵。,A=imread(nir.bmp); height,width,dim=size(A); tform=maketform(affine,

11、-1 0 0;0 1 0;width 0 1); B=imtransform(A,tform,nearest); tform2=maketform(affine,1 0 0;0 -1 0;0 height 1); 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,

12、0 1 0;1 0 0;0 0 1); B=imtransform(A,tform,nearest); figure;imshow(A); figure;imshow(B);imwrite(B,nir转置后图像.bmp);,/3、图像的几何变换,三、图像转置,/3、图像的几何变换,四、图像中心旋转,B=imrotate(A,angle,method,crop);,angle为旋转角度,正值为逆时针旋转。可选参数method为imrotate函数 指定插值方法。crop选项会裁减旋转后增大的图像,保持和原图像 同样大小。,A=imread(nir.bmp); B=imrotate(A,30,ne

13、arest,crop); figure;imshow(B);imwrite(B,逆时针中心旋转30度.bmp);,逆时针30度,/4、空间域图像增强,一、噪声添加,h=imnoise(I,type,parameters);,type为噪声类型,合法值如下:,添加高斯白噪声,添加椒盐噪声,/4、空间域图像增强,二、空间域滤波,滤波过程就是在图像f(x,y)中逐点移动模板,使模板中心和点(x,y)重合,滤波器 在每一点(x,y)的响应是根据模板的具体内容并通过预先定义的关系来计算的。,B=imfilter(f,w,option1,option2,);,f 为要进行滤波操作的图像。 w为滤波操作使用

14、的模板,为一个二维数组,可自己定义。 option1是可选项,包括: 1、边界选项(symmetric、replicate、circular) 2、尺寸选项(same、full) 3、模式选项(corr、conv),原图像,滤波后图像,三、滤波器设计,/4、空间域图像增强,h=fspecial(type,parameters),parameters为可选项,是和所选定的滤波器类型type相关的 配置参数,如尺寸和标准差等。 type为滤波器的类型。其合法值如下:,/4、空间域图像增强,四、中值滤波,h=medfilt2(I1,m,n);,m和n为中值滤波处理的模板大小,默认3*3,中值滤波本质

15、上是一种统计排序滤波器。中值不同于均值,是指排序 队列中位于中间位置的元素的值。中值滤波并非线性滤波器。对于某 些类型的随机噪声具有非常理想的降噪能力。典型的应用就是消除椒 盐噪声。,/4、空间域图像增强,五、图像锐化,图像锐化主要用于增强图像的灰度跳变部分,主要通过运算导数(梯度)或有限差分来实现。主要方法有:Robert交叉梯度,Sobel梯度,拉普拉斯算子,高提升滤波,高斯-拉普拉斯变换。,Robert交叉梯度,w1对接近正45边缘有较强响应,w2对接近负45边缘有较强响应。,Sobel交叉梯度,对水平边缘有较大响应,对垂直边缘有较大响应,拉普拉斯算子,I=imread(nir.bmp)

16、; I=double(I);%双精度化 w1=-1 0;0 1; w2=0 -1;1 0; G1=imfilter(I,w1,corr,replicate);%正45梯度 G2=imfilter(I,w2,corr,replicate);%负45梯度 G=abs(G1)+abs(G2);%计算Robert梯度 figure;imshow(G,); figure;imshow(abs(G1),); figure;imshow(abs(G2),);,Robert交叉梯度,I=imread(nir.bmp); Id=double(I);%双精度化 h_1=fspecial(log,5,0.5);%大

17、小为5,sigma=0.5的LOG算子 I_1=imfilter(Id,h_1,corr,replicate); figure;imshow(uint8(abs(I_1),); h_2=fspecial(log,5,2);%大小为5,sigma=2的LOG算子 I_2=imfilter(Id,h_2,corr,replicate); figure;imshow(uint8(abs(I_2),);,高斯-拉普拉斯锐化,/5、频率域图像增强,用傅里叶变换表示的函数特征可以完全通过傅里叶反变换进行重建而不丢失任何信息,吉布斯现象Gibbs phenomenon(又叫吉布斯效应): 将具有不连续点的周

18、期函数(如矩形脉冲)进行傅立叶级数展开后,选取有限项进行合成。当选取的项数越多,在所合成的波形中出现的峰起越靠近原信号的不连续点。当选取的项数很大时,该峰起值趋于一个常数,大约等于总跳变值的9%。这种现象称为吉布斯现象。,幅度谱,相位谱,功率谱,一、傅里叶变换,/5、频率域图像增强,I=fft2(x);%快速傅里叶变换 I=fft2(x,m,n);,x为输入图像;m和n分别用于将x的第一和第二维规整到指定的长度。 当m和n均为2的整数次幂时算法的执行速度要比m和n均为素数时快。,I1=abs(I);%计算I的幅度谱 I2=angle(I);%计算I的相位谱 Y=fftshift(I);%频谱平

19、移,I=ifft2(x);%快速傅里叶逆变换 I=ifft2(x,m,n);,幅度谱,相位谱,平移后的相位谱,function out = imidealflpf(I,freq) %imidealflpf函数 构造高斯频域低通滤波器 M,N = size(I); out = ones(M,N); for i=1:M for j=1:N if (sqrt(i-M/2)2+(j-N/2)2)freq) out(i,j)=0; end end end,理想低通,function out = imgaussflpf(I,sigma) %imgaussflpf函数 构造高斯频域低通滤波器 M,N = s

20、ize(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); end end,高斯低通,/6、彩色图像处理,色彩模型:RGB模型、CMY模型、CMYK模型、HIS模型、 HSV模型、YUV模型、YIQ模型。,RGB模型,国际照明委员会(CIE)规定以蓝(435.8nm)、绿(546.1nm)和红(700nm)作为主原色。,RGB_image=cat(3,PR,PG,PB);%将PR、PG、PB三个矩阵在第3个维度上进行级联,进行图像合成 PR=RGB_image(:,:,1);

21、%提取红色分量 PG=RGB_image(:,:,2);%提取绿色分量 PB=RGB_image(:,:,3);%提取蓝色分量,Matlab中一幅RGB图像可表示为一个M*N*3的3维矩阵。其中每一个 彩色像素都在特定空间位置的彩色图像中对应红、绿、蓝3个分量。,CMY模型,CMY模型是采用(Cyan、Magenta、Yellow)青、品红、 黄色3中基本原色按一定比例合成颜色。由于色彩的显 示是由光线被物体吸收掉一部分之后反射回来的剩余 光线产生,故CMY模型又称为减色法混色模型。当光 都被吸收时成为黑色,都被反射时为白色。,CMY模型主要用于彩色打印机和 复印机等。,CMYK模型,CMY模

22、型在实际使用中,青、品红 和黄色等比例混合后的黑色并不纯, 为产生真正的黑色,专门加入第四 种颜色黑色。得到CMYK模型。用 于四色打印。,cmy=imcomplement(rgb);%rgb转成cmy rgb=imcomplement(cmy);cmy转成rgb,HSI模型,HIS模型是从人的视觉系统出发,直接使用颜色三要素色调(Hue)、饱和度(Saturation)和亮度(Intensity)来描述颜色。 亮度指人眼感觉光的明暗程度。光的能量越大,亮度越大。 色调由物体反射光线中占优势的波长决定。反映颜色的本质。 饱和度指颜色的深浅和浓淡程度,饱和度越高,颜色越深。 HIS色彩空间比RG

23、B彩色空间更符合人的视觉特性。亮度和色度具有可分离特性,使得图像处理和机器视觉中大量灰度处理算法都可在HIS彩色空间中方便使用。,色调,强度,饱和度,其中,/7、形态学图像处理,一、二值图像腐蚀,I2=imerode(I,SE); SE=strel(shape,parameters);,I为原始图像,可以是二值或者灰度图像。 shape指定了结构元素的形状。 parameters是和输入shape有关的参数。,/7、形态学图像处理,二、二值图像膨胀,I2=imdilate(I,SE); SE=strel(shape,parameters);,I为原始图像,可以是二值或者灰度图像。 shape指

24、定了结构元素的形状。 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);,Ibw为一幅输入二值图像。 conn为可选参数,指明提取连通分量是4连通还是8连通。默认为8。 L为连通分量标注图像。 num为二值图像Ibw中连通分量个数。,/7、形态学图像处理

25、,五、bwmorph函数,Iout=bwmorph(I,operation,n),/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(Itophat); figure,sur

26、f(double(Itophat(1:8:end,1:8:end),zlim(0 255); I2=imadjust(Itophat); figure,imshow(I2);,原图像三维可视化效果,顶帽变换后的三维可视化效果,顶帽变换后图像,对比度拉伸后效果,/8、图像分割,一、图像分割概述,图像分割一般采用的方法有边缘检测(edge detection)、边界跟踪(edge tracing)、区域生长(region growing)、区域分离和聚合等。 图像分割算法一般基于图像灰度值的不连续性或其相似性。 不连续性是基于图像灰度的不连续变化分割图像,如针对图像的边缘有边缘检测、边界跟踪等算法

27、。 相似性是依据事先制定的准则将图像分割为相似的区域,如阈值分割、区域生长等。,二、边缘检测,图像的边缘点是指图像中周围像素灰度有阶跃变化或屋顶变化的那些像素点,即灰度值导数较大或极大的地方。 边缘检测可以大幅度的减少数据量,并且剔除不相关信息,保留图像重要的结构属性。 边缘检测基本步骤:平滑滤波、锐化滤波、边缘判定、边缘连接。,边缘检测算法: 基于一阶导数:Roberts算子、Sobel算子、Prewitt算子 基于二阶导数:高斯-拉普拉斯边缘检测算子 Canny边缘检测算法,Matlab实现,1)、基于梯度算子的边缘检测,BW=edge(I,type,thresh,direction,no

28、thinning),thresh是敏感度阈值参数,任何灰度值低于此阈值的边缘将不会被检测到。默认值为空矩阵,此时算法自动计算阈值。,direction指定了我们感兴趣的边缘方向,edge函数将只检测direction中指定方向的边缘,其合法值如下:,可选参数nothinning,指定时可以通过跳过边缘细化算法来加快算法运行的速度。默认是thinning,即进行边缘细化。,2)、基于高斯-拉普拉斯算子的边缘检测,BW=edge(I,log,thresh,sigma),sigma指定生成高斯滤波器所使用的标准差。默认时,标准差为2。滤镜大小n*n,n的计算方法为:n=ceil(sigma*3)*2

29、+1。,3)、基于Canny算子的边缘检测,BW=edge(I,canny,thresh,sigma),thresh是敏感度阈值参数,默认值为空矩阵。此处为一列向量,为算法指定阈值的上下限。第一个元素为阈值下限,第二个元素为阈值上限。如果只指定一个阈值元素,则默认此元素为阈值上限,其0.4倍的值作为阈值下限。如阈值参数没有指定,则算法自行确定敏感度阈值上下限。,b1=imread(nir.bmp); h58=fspecial(gaussian,5,0.8); b=imfilter(b1,h58); bw1=edge(b,sobel);%sobel算子 bw2=edge(b,prewitt);%

30、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,nirbwprewitt.bmp); figure;imshow(bw3);imwrite(bw3,nirbwroberts.bmp); figure;imshow(bw4);imwrite(bw4,nirbwlog.bmp); figure;imshow(

31、bw5);imwrite(bw5,nirbwcanny.bmp);,Sobel算子,roberts算子,prewitt算子,log算子,canny算子,分析,1、边缘定位精度方面: Roberts算子和Log算子定位精度较高。Roberts算子简单直观,Log算子利用二阶导数零交叉特性检测边缘。但Log算子只能获得边缘位置信息,不能得到边缘方向信息。 2、边缘方向的敏感性: Sobel算子、Prewitt算子检测斜向阶跃边缘效果较好,Roberts算子检测水平和垂直边缘效果较好。Log算子不具有边缘方向检测功能。Sobel算子能提供最精确的边缘方向估计。 3、去噪能力: Roberts算子和L

32、og算子虽然定位精度高,但受噪声影响大。 Sobel算子和Prewitt算子模板相对较大因而去噪能力较强,具有平滑作用,能滤除一些噪声,去掉一部分伪边缘,但同时也平滑了真正的边缘,降低了其边缘定位精度。 总体来讲,Canny算子边缘定位精确性和抗噪声能力效果较好,是一个折中方案。,三、Hough变换直线检测,/8、图像分割,步骤: 利用hough()函数执行霍夫变换,得到霍夫矩阵; 利用houghpeaks()函数在霍夫矩阵中寻找峰值点; 利用houghlines()函数在之前两步结果的基础上得到原二值图像 中的直线信息。,H,theta,rho=hough(BW,param1,val1,pa

33、ram2,val2),1、霍夫变换(针对二值图像),2、寻找峰值houghpeaks,peaks=houghpeaks(H,numpeaks,param1,val1,param2,val2),peaks是一个Q*2的矩阵,每行的两个元素分别为某一峰值点在Hough矩阵中的行、列索引,Q为找到的峰值点的数目。,3、提取直线段houghlines,lines=houghlines(BW,theta,rho,peaks,param1,val1,param2,val2),返回值lines的结构,I1=imread(004.jpg); I=rgb2gray(I1); %旋转图像并寻找边缘 rotI=im

34、rotate(I,33,crop); BW=edge(rotI,canny); %执行Hough变换并显示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矩阵中最大值0.3倍的峰值 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矩阵图像中标出峰

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论