您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 第13章 二值图像的描述和处理
第13章二值图像的描述与处理本章内容属于图像分析,操作对象为二值图像。主要内容:z邻域、连通z二值图像的轮廓特征描述z区域的面积和周长z区域的形状描述z直线的检测-Hough变换13.1.1邻域与连通邻域和连通是图像的基本几何特性之一;一幅数字图像是像素点的集合;像素有长度:可认为数字图像中每一个像素占据一个正方形网格单元,长度为1。13.1邻域、连通x-1xx+1y-1p3p2p1yp4pp0y+1p5p6p7邻域的概念:z是指由某个像素(x,y)及其附近的像素所形成的区域,例如常用的3×3邻域。z邻域分为4邻域和8邻域,8邻域更为常用。13.1邻域、连通1)4邻域与4连通4邻域:zp0、p2、p4、p6称为p的4邻域。zp和p0、p2、p4、p6均为4连通(连接)x-1xx+1y-1p3p2p1yp4pp0y+1p5p6p7x-1xx+1y-1p3p2p1yp4pp0y+1p5p6p72)8邻域与8连通8邻域:p0~p7称为p的8邻域。8连通:p和p1、p0和p2均为8连通(连接)3)连通成分几个概念:(1)连通成分:二值图像中互相连通的1像素的集合。(2)孔:被1像素包围的0像素的集合叫做孔。(3)单连通成分/多重连通成分1像素连通成分不含孔时,叫做单连通;含有一个或多个孔的连通成分叫做多重连通成分。连通成分示例0000000000000001111000110100000000000000000000001011000111100111100011110010010001000001011000110000111100010000孔多重连通成分单连通成分13.1.2区域的连通分量标记二值图像若有多个目标区域,常常需要对每个目标区域进行标记。标记:使二值图像中的每一个区域(连通分量)都有一个单独的灰度值(或颜色)。区域标记示例标记前——二值图像背景0目标1255标记后灰度L2150灰度L1200灰度L3100演示:具体算法参考教材标记后不同的区域有不同的灰度值13.2二值图像的轮廓特征描述13.2.1二值图像的边界追踪边界追踪:也称为边缘追逐、轮廓追踪边界(轮廓)是描述物体的重要特征。边界追踪:确定目标的边界轮廓(坐标),将轮廓用单像素来描述。梨的原始图像梨的边界芒果的原始图像芒果的边界z追踪的目的:9通过轮廓线完全分割目标与背景;9可以通过边界来计算目标的面积、周长、形状参数等。13.2二值图像的轮廓特征描述13.2二值图像的轮廓特征描述z追踪的算法很多,例如虫随法,R-2-3-4算法,十字追踪法等等,虫随法是一种较好的算法。z虫随法边界追踪的基本思想:¾图像中的一个目标或物体,必定存在一个封闭的边界;¾假定边界上有一个虫子,虫子沿边界爬行一周,其轨迹即为目标的轮廓。13.2二值图像的轮廓特征描述虫随法的追踪方法要点:¾如何开始:行扫描方式,首先找到追踪的初始边界像素——找出第1个边界像素;¾中间过程如何进行:从初始边界像素开始,顺(逆)时针查找下一个边界像素,选择最左(右)边的像素为边界像素——避免找到区域内部。¾如何结束追踪:回到初始边界像素(的坐标)。追踪时,要解决4个问题:4个问题z什么是边界像素?z如何找到第1个边界像素?z如何搜索下一个边界像素?z如何结束搜索?z边界像素的灰度值为1(就是255);z以(行)扫描方式找到第1个边界像素——可通过由上至下,从左至右的行扫描,得到的第1个灰度值为1的像素;z搜索已知边界像素的8邻域,但要有搜索策略——沿轮廓的外切线方向找,避免找到区域内部;z若搜索回到第1个边界像素的坐标,则结束搜索。灰度为255灰度为0要沿外切线方向查找下一个边界像素找到第1个边界像素,设置为特殊的灰度值在第1个边界像素附近找到第2个边界像素顺时针追踪方向第1个边界搜索结束方向:D1E=0第2个边界像素搜索开始方向:D2S=D1E+1x-1xx+1y-1yy+107654321第2个边界像素搜索结束方向:D2E=0第3个边界像素搜索开始方向:D3S=D2E+1确定扫描方向:从左至右,行扫描直到重新找到第1个像素的坐标后,结束所围区域的灰度值均为1边界灰度值也是1追踪的演示追踪的边界如何描述?——采用链码8链码的8个方向:x-1xx+1y-1yy+107654321链码:767444221起始像素P(x,y)可用一个一维数组存放链码,每个数组单元存放一个码字13.2.2用链码描述轮廓特征13.3区域的面积与周长13.3.1周长连通分量周长L可以8链码编码的长度表示:8链码共8个方向,其中方向码为0、2、4、6时,像素间距的长度为1;方向码为1、3、5、7时,像素间距的长度为21/2,周长L的计算公式为:L=N1+N2×21/2其中N1表示方向码为为0、2、4、6时的个数;N2为方向码为1、3、5、7时的个数。z二值图像中某个区域的面积:用该区域像素数的总和来表示。z如果二值图像的大小为M×N,目标区域用1像素来表示,则区域的面积S可表示为:1f(x,y),f(x,y)S1M0x1N0y==∑∑−=−=if区域面积实际是二值图像中白像素的点数。13.3.2面积13.4区域的形状描述目的:根据某一类物体的形状,以便将其从其它物体中区分出来。关键:要找到能够描述物体形状特征的特征参数。以下介绍一些基本的形状描述参数。13.4.1最小外接矩形(MER)z当从一幅图像中识别某一个物体时,或许需要计算物体的最大长度、宽度及长宽比等参数,这时将用到最小外接矩形的概念。z最小外接矩形:MinimumEnclosingRectangle:简称MER外接矩形和最小外接矩形?外接矩形:刚好能够包容目标区域的矩形外接矩形:四边和目标相切不是外接矩形目标背景如何找到目标的外接矩形?9通过自上而下及自下而上的行扫描,可以得到图像中目标区域的最小和最大行序号y1、y2,两者相减即为物体的宽度;9通过自左至右及自右至左的列扫描,可以得到目标区域的最小和最大列序号x1、x2,两者相减即为物体的长度。宽度=x2-x1y1y2x1x2高度=y2-y1通过行、列扫描方式:最小外接矩形(MER)的引入:但是,由于目标在图像中的位置或走向常常是随机的;水平或垂直方向的距离并不一定是物体的最大长度;在此情况下,必须找出物体的最小外接矩形(MER),进而获得这几个参数。。(a)几个不同位置的外接矩形(b)最小外接矩形最小外接矩形的长度、宽度与长宽比即为我们所说的最大长度、宽度及长宽比。定义:最小外接矩形是指面积最小的外接矩形——这时,主轴方向一定处于水平或垂直方向。α主轴方向最大长度宽度最小外接矩形的求法:1)一般的图像处理软件包会直接提供求MER的函数。2)自行编程求MER的方法:以2°左右的增量旋转图像,并记录目标区域的外接矩形面积。在以上记录中找出最小值——这就是最小外接矩形MER。图像处理软件中一般都提供了旋转的函数。例如在IMAQVision中函数IPI_Rotate也可以实现旋转功能。图像的旋转演示13.4.2矩形度矩形度R:反映一个物体与矩形相似程度的参数R=S0/SR其中,SO是该物体的面积,SR是其MER的面积。S0SRR反映了一个物体对其MER的充满程度,R在0~1之间。z对于矩形物体R取得最大值1.0,z对于圆形物体R取值为π/4,z对于纤细、弯曲的物体取值变小。13.4.3圆形度圆形度C:评价一个区域的形状接近圆的程度的量。其中,L是区域的周长,S是区域的面积。指标C也常常被称为密集度或分散度,面积相同、几何形状不同的物体,周长越小,越紧凑。SLC/2=13.4.3圆形度9当区域是圆形形状时,C取最小值4π,圆形是最紧凑的;9其它任何形状的区域,均有C>4π;9正方形形状的C=16,9正三角形形状的C=36/31/2。区域的几何形状越复杂,则其分散度越大。形状因子C有二义性。还需要借助其它的条件来加以区分。演示:简单形状的识别如果没有现成的形状参数,则需要用户自行设计一个或多个形状参数——这也是图像分析中具有创新性的工作。如何识别这类目标?13.5直线的检测——Hough变换在基于计算机视觉的实际检测中,常常需要检测特定的直线或曲线。例如,通过直线或曲线来引导智能车辆行走。农业中的智能车辆则希望沿着植株行方向行走,以利于定向定点作业。参考图像库中的导航图片但在实际中,获取图像的背景较为复杂,标志直线或曲线或许部分被淹没在背景中;在此情况下,Hough变换是一种非常有效的进行直线或曲线检测的方法。(一)Hough变换的基本原理通过检测参数空间中的点,来检测图像空间(x-y坐标系)中的一条直线。qk参数空间xy图像空间k,q的含义??z设直线l在图像空间(x-y坐标系)的方程为:y=kx+q其中,k和q为实参数。z对上式进行变换,得:q=-xk+y类似x-y坐标系,可以用k,q值为坐标构造一个参数空间(k-q)图像空间与参数空间的关系如何?或者,如何在参数空间表示一条直线?图像空间x-y坐标系yxl0y=k0x+q0结论:图像空间中的一条直线对应于参数空间中的一个点。因为已知斜率和截距,就可确定一条直线。k0qkq0参数空间推广一下:图像空间中的每条直线在参数空间中由单独一个点表示;图像空间中某条直线的任何一部分都对应于参数空间的同一个点。(实际上直线长度是无法度量的)yxl0y=k0x+q0k0qkq0图像空间参数空间13.5直线的检测——Hough变换直线检测的主要思想:(1)首先检测图像中所有可能的直线像素——通过边缘检测算法实现;(直线可能出现在边缘、边界)(2)将通过这些像素的所有直线变换到参数空间的对应点(对过边缘点的所有直线的斜率k与截距q进行统计);(3)在参数空间检测频繁出现的点(k0,q0);(4)找到(k0,q0)点,即可通过斜率(k0)确定该直线。(2)Hough变换的实现步骤直线的参数方程比较适合于理解Hough变换的原理,但是在检测垂直线条和参数的非线性离散化时会遇到困难。一般编程实现时,把直线表示成以下的极坐标形式:θθsincosyxs+=参数空间变为θ-S空间对一幅M×N的图像,θ的范围为0~180º;S的范围:0~22NM+ssθθsyxθs(x,y)具体步骤:(1)设置一个二维数组作为累计数组A[s,θ],第一维θ表示角度,θ范围在0°~180°;第二维s代表距离,s范围在0~。(2)采用边缘检测算子检测直线像素,并二值化。(3)逐行、逐列扫描像素,当出现边缘像素时,让θ从0°逐渐变化到179°,步长为1°或2°,按公式s=xcosθ+ysinθ计算对应的距离,并使累计数组的对应累计单元A[s,θ]加1,直至处理完所有像素。(4)搜索累计数组A[s,θ]的高值单元A[s0,θ0],则所检测的直线为:。22NM+000θθsincosyxs+=intCVICALLBACKHough_thansform(){int*fptr;smax=sqrt(width*width+height*height);fptr=calloc(smax*180,sizeof(int));//开辟一个大小为smax×180的二维数组for(y=0;yheight;y++){for(x=0;xwidth;x++){IPI_GetPixelValue(DestImage,x,y,&gray_value);if(gray_value==255.0){for(t=0;t180;t++)//角度t的范围为0~180度{s=abs(x*cos(t*3.14159/180.0)+y*sin(t*3.14159/180.0)+0.5);//利用极坐标公式计算距离*(fptr+s*180+t)=*(fptr+s*180+t)+1;//累计单元加1}}}}}二维数组smax180首地址ftpr第S行第t列第S行、第t列的地址为:(fptr+s*180+t)//寻找累计单元中的最大值max=0;for(s=0;ssma
本文标题:第13章 二值图像的描述和处理
链接地址:https://www.777doc.com/doc-4376389 .html