收藏 分享(赏)

图像Ch3.5-6.ppt

上传人:tkhy51908 文档编号:6212710 上传时间:2019-04-02 格式:PPT 页数:36 大小:3.71MB
下载 相关 举报
图像Ch3.5-6.ppt_第1页
第1页 / 共36页
图像Ch3.5-6.ppt_第2页
第2页 / 共36页
图像Ch3.5-6.ppt_第3页
第3页 / 共36页
图像Ch3.5-6.ppt_第4页
第4页 / 共36页
图像Ch3.5-6.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、3.5 图像分析,MATLAB的图像处理工具箱(Image Processing Tool Box)支持多种标准的图像处理操作,以方便用户对图像进行分析和调整。这些图像处理(分析)操作主要包括:,获取像素值及其统计数据; 分析图像,抽取其主要结构信息; 调整图像,突出其某些特征或抑制噪声。,3.5.1 像素值及其统计MATLAB的影像处理工具箱提供了多个函数以返回与构成图像的数据值相关的信息。这些函数能够以多种形式返回图像数据的信息,主要包括:选定像素的数据值(pixval函数和impixel函数);沿图像中某个路径的数据值(improfile函数);图像数据的轮廓图(imcontour函数)

2、;图像数据的柱状图(imhist函数);图像数据的摘要统计值(mean2函数、std2函数和 corr2函数);图像区域的特征度量(inffeature函数)。,(1) 像素选择1) pixval函数当光标在图像上移动时,该函数以交互的方式显示像素的数据值。另外,该函数还可以显示两个像素之间的欧几里得距离。2) impixel函数impixel函数可以返回选中像素或像素集的数据值。用户可以直接将像素坐标作为该函数的输入参数,或用鼠标选中像素。,例如,在下面的例子中,首先调用impixel函数,然后在 显示的canoe.tif图像中用鼠标点中三个点,代码如下:imshow canoe.tif;v

3、als=impixel,(2) 强度描述图在MATLAB影像处理工具中,提供了improfile函数用于沿着图像中一条直线段路径或直线路径计算并绘制其强度(灰度)值。 imshow debye1.tif;improfile,一段直线路经:,直线路经:,RGB=imread(flowers.tif);figure(1);imshow(RGB);improfile 运行后得下页图。在图上确定直线段或直线路径(本例 为直线路径)后,按回车键,则得到以下一图所示的轨迹强 度图。由图可知,improfile函数绘制的强度图是将红色、绿 色和蓝色分离开了,各自均表达为独立的线条图形。,直线段路经:,直线路

4、经:,(3) 图像轮廓图可利用MATLAB影像处理工具箱中的imcontour函数显示灰度图的轮廓。I=imread(rice.tif);imshow(I)figure;imcontour(I),(4) 图像柱状图图像柱状图可以用来显示索引图像或灰度图像中的灰度分布。I=imread(rice.tif);imhist(I,64)柱状图的峰值出现在100附近,这是因为大米堆的背景色为深灰色所致。,3.5.2 图像分析,Matlab中的图像分析技术可以提取图像的结构信息。例如,可以利用影像处理工具箱中提供的edge函数来探测边界。,(1) 灰度图像的边缘:edge函数BW=edge(I,metho

5、d)返回与I大小一样的二进制图像BW,其中数值1代表找到的边缘,数值0代表其他像素。Method为下列字符串之一:sobel 用sobel算子检测边缘;prewitt用prewitt算子检测边缘;roberts用roberts算子检测边缘;,log使用高斯滤波器的拉普拉斯运算对I进行滤波,通过寻找0相交检测边缘;zerocross使用指定的滤波器对I滤波后,寻找0相交检测边缘。BW=edge(I,method,thresh)用thresh指定灵敏度阈值,所有不强于thresh的边缘都被忽略。BW=edge(I,method,thresh,direction)对于sobel和prewitt方法指

6、定方向;direction为字符串:horizontal表示水平方向, vertical表示垂直方向,both表示两个方向(缺省 值)。,实例:,1)图像分析中的灰度边缘检测实例RGB=imread(flowers.tif);figure(1); imshow(RGB);%RGB图转换为灰度图像I=rgb2gray(RGB);figure(2); imshow(I);colorbar(horiz);%边缘检测ED=edge(I,sobel,0.08);figure(3); imshow(ED);,2) Sobel边界探测器和Canny边界探测器在图像分析中的应用实例。操作的对象仍以前面提到ri

7、ce.tif图像为例。I=imread(rice.tif);BW1=edge(I, sobel);BW2=edge(I, canny);figure(1),imshow(BW1);figure(2),imshow(BW2);,(2) 四叉树分解,四叉树分解是一种常用的分裂方法。从整幅图像开始不断分裂得到各个区域,最终将具有一致性的像素分到同一个小块。,qtdecomp函数将一块图像分成四块等大小的方块,判断每块是否满足一致性标准,如果满足,则不再分解,否则,再进行细分成四块,并对每块进行判断,分解过程重复迭代下去,直到满足一致性标准。,S=qtdecomp(I,threshold)如果块中元素

8、最大值减去元素最小值大于threshold,则分解块。,I = 1 1 1 1 2 3 6 61 1 2 1 4 5 6 81 1 1 1 10 15 7 71 1 1 1 20 25 7 720 22 20 22 1 2 3 4 20 22 22 20 5 6 7 820 22 20 20 9 10 11 1222 22 20 20 13 14 15 16 ; S = qtdecomp(I,5); full(S)ans =4 0 0 0 2 0 2 00 0 0 0 0 0 0 00 0 0 0 1 1 2 00 0 0 0 1 1 0 04 0 0 0 2 0 2 00 0 0 0 0 0

9、 0 00 0 0 0 2 0 2 00 0 0 0 0 0 0 0,3.5.3 图像调整,(1) 对比度增强1) 对比度调整函数:imadjust函数该函数可用于调整灰度值或颜色图,其用法为:J=imadjust(I,low high,bottom top,gamma)将灰度图像I转换为图像J,使值从low到high与从 bottom到top相匹配。值大于high或小于low的被剪去,即小于low的值与bottom相匹配,大于high的值与top相匹配。使用该函数时可将low high)或bottom top指定为空矩阵,此时缺省值为0 1。gamma用来指定描述I和J值关系曲线的形状;ga

10、mma1,越亮输出值越减弱;缺省gamma=1,表示线性变换。,Example: I = imread(pout.tif); J = imadjust(I,0.3 0.7, ); imshow(I), figure, imshow(J),RGB1 = imread(flowers.tif); RGB2 = imadjust(RGB1,.2 .3 0; .6 .7 1, ); imshow(RGB1), figure, imshow(RGB2),2) 函数:brighten函数brighten(beta)使现有颜色图变成更亮或更暗的图。如果0beta1,则颜色图增亮;-1beta0,则颜色图变暗

11、。brighten(beta)可以使用brighten(-beta)还原。3) 直方图调整法在MATLAB中,histeq函数用直方图均衡增强对比度。直方图均衡通过转换灰度图像亮度值或索引图像的颜色图值来增强图像对比度,输出图像的直方图近似与给定的直方图相匹配。J=histeq(I,hgram)转换灰度图像I,使输出图像J的直方图具有length(hgram)个条,近似与hgram相匹配。,(2)图像平滑图像平滑主要用于由于受干扰而质量降低的图像,在 MATLAB图像处理工具箱中有关图像噪声的函数有:1)向函数增加噪声:imnoise函数2)二维中值滤波器:medfilt2函数3)状态统计滤波

12、器:ordfilt2函数4)二维自适应除噪滤波器:wiener2函数,详见5.4 图像的平滑,3.6 特定区域处理,3.6.1 区域的指定在进行图像处理时,有时只要对图像中某个特定区域进行处理,并不需要对整个图像进行处理。 MATLAB中对特定区域的处理是通过二值掩模来实 现的,通过选定一个区域后会生成一个与原图大小 相同的二值图像,选定的区域为白色,其余部分为 黑色。通过掩模图像,就可以实现对特定区域的选 择性处理。,(1) 多边形选择方法roipoly函数用于设定图像中的多边形区域,该函数返回与输入图像大小一致的二值图像BW,选中的区域值为1,其余的部分值为0。BW=roipoly(I,c

13、,r)其功能是:用向量c、r指定多边形各角点的X、Y轴的坐标。BW=roipoly(I)其功能是:让用户交互选择多边形区域,通过点击鼠标设定多边形区域的角点,用空格键和Del键撤销选择,按Enter键确认选择,确认后该函数返回与输入图像大小一致的二值图像BW,在多边形区域内像素值为1,其余区域内像素值为0。,下面是一个根据指定的坐标选择一个六边形区域的程序清单:I=imread(eight.tif);c=222 272 300 272 222 194;r=21 21 75 121 121 75;BW=roipoly(I,c,r);figure(1),imshow(I)figure(2),ims

14、how(BW),(2) 其他选择方法MATLAB图像处理工具箱中提供了可以实现按灰度选择区域的函数roicolor函数。BW=roicolor(A,low,high)其功能是:按指定的灰度范围分割图像,返回二值掩模 BW,low high为所要选择区域的灰度范围。BW=roicolor(A,v)其功能是:按向量v中指定的灰度值来选择区域。,下面是一个按灰度分割图像中的目标的程序清单:I=imread(rice.tif);BW=roicolor(I,128,255); %选择图像灰度范围在128%和255之间的像素。figure(1),imshow(I)figure(2),imshow(BW);

15、,I=imread(rice.tif); BW=roicolor(I,80,255); %选择图像灰度范围在80%和255之间的像素。 figure(1),imshow(I) figure(2),imshow(BW);,可用pixval函数检查像素的灰度值,3.6.2 特定区域滤波MATLAB图像处理工具箱中提供的roifilt2函数用于对特 定区域进行滤波,其语法格式为:J=roifilt2(h,I,BW)其功能是:使用滤波器h对图像I中用二值掩模BW选中的区域滤波。J=roifilt2(I,BW,fun)其功能是:对图像I中用二值掩模BW选中的区域作函数运算fun,其中fun是描述函数运算

16、的字符串。返回图像J在选中区域的像素为图像I经fun运算的结果,其余部分的像素值为I的原始值。,下面是一个对指定区域进行锐化滤波的程序清单:I=imread(eight.tif);c=222 272 300 272 222 194;r=21 21 75 121 121 75;BW=roipoly(I,c,r);h=fspecial(unsharp); %指定滤波算子为unsharp。J=roifilt2(h,I,BW);subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(J),3.6.3 特定区域填充 MATLAB图像处理工具箱中提供的roifill

17、函数用于对特定区域进行填充,其语法格式为:J=roifill(I,c,r)其功能是:填充由向量c、r指定的多边形,c和r分别为 多边形各顶点的X、Y坐标。利用多边形边界的点的灰度平滑的插值得到多边形内部的点。通常可以利用对指定区域的填充来“擦”掉图像中的小块区域。J=roifill(I)其功能是:用户交互选取填充的区域。选择多边形的角 点后,按Enter键确认选择,用空格键和Del键表示取消一个 选择。,I=imread(rice.tif);c=52 72 300 270 221 194;r=71 21 75 121 121 75;J=roifill(I,c,r);subplot(1,2,1),imshow(I)subplot(1,2,2),imshow(J),大作业,1、编写基本的图象处理工具程序,包括图象的读取、存储、显示、直方图均衡化、边缘检测、阈值化、基本形态学处理、离散傅立叶变换、小波变换、加噪、去噪、增强、图像分割、彩色图像处理等功能(可自己任意设计、增减功能)。2、要求使用Matlab编制程序,写出报告(包括:设计思路、算法、界面GUI(可选)、运行示例、源程序代码、心得体会等)。3、考试完后上交,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 图形图像

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报