机器视觉技术及应用-韩九强-课件5.ppt

上传人(卖家):晟晟文业 文档编号:4488017 上传时间:2022-12-14 格式:PPT 页数:64 大小:2.77MB
下载 相关 举报
机器视觉技术及应用-韩九强-课件5.ppt_第1页
第1页 / 共64页
机器视觉技术及应用-韩九强-课件5.ppt_第2页
第2页 / 共64页
机器视觉技术及应用-韩九强-课件5.ppt_第3页
第3页 / 共64页
机器视觉技术及应用-韩九强-课件5.ppt_第4页
第4页 / 共64页
机器视觉技术及应用-韩九强-课件5.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

1、 p面积测量面积测量p圆测量圆测量 p线弧测量线弧测量p角度测量角度测量第第5章章 尺寸测量技术尺寸测量技术 尺寸测量是机器视觉技术最普遍的应用行业,特别在自动化尺寸测量是机器视觉技术最普遍的应用行业,特别在自动化制造行业中,包括制造行业中,包括物件的长度、角度、孔径、直径、弧度物件的长度、角度、孔径、直径、弧度等等都是典型的物件待测几何参数。传统尺寸测量精度低、速度都是典型的物件待测几何参数。传统尺寸测量精度低、速度慢,无法满足大规模自动化生产的需要。基于机器视觉的尺慢,无法满足大规模自动化生产的需要。基于机器视觉的尺寸测量技术属于寸测量技术属于非接触性测量非接触性测量,具有,具有检测精度高

2、、速度快、检测精度高、速度快、成本低、便于安装成本低、便于安装等优点,不但可以等优点,不但可以获取在线产品的尺寸参获取在线产品的尺寸参数数,同时可对产品做出,同时可对产品做出在线实时判定和分拣在线实时判定和分拣,应用十分普遍。,应用十分普遍。第第5章章 尺寸测量技术尺寸测量技术 测量工件的各种尺寸参数,如长度测量、圆测量、角度测测量工件的各种尺寸参数,如长度测量、圆测量、角度测量、线弧测量、区域测量等,需要检测出工件相关区域的量、线弧测量、区域测量等,需要检测出工件相关区域的基本几何特征。因此,在提取出零件的边缘或零件的角点基本几何特征。因此,在提取出零件的边缘或零件的角点之后,如何检测工件的

3、几何特征、形状参数、位置尺寸等之后,如何检测工件的几何特征、形状参数、位置尺寸等是本章介绍的主要的内容。是本章介绍的主要的内容。第第5章章 尺寸测量技术尺寸测量技术工件检测的基本流程图工件检测的基本流程图5.1 长度测量长度测量 长度测量是尺寸测量技术中应用长度测量是尺寸测量技术中应用最为广泛最为广泛的一种测量。特的一种测量。特别对是测量精度高、速度快,对在线有形工件的实时别对是测量精度高、速度快,对在线有形工件的实时NG判定、监控分拣方面应用广泛。可分为直线间距离测量与判定、监控分拣方面应用广泛。可分为直线间距离测量与线段长度测量两种方式。线段长度测量两种方式。5.1.1 距离测量距离测量

4、直线拟合的最小二乘法直线拟合的最小二乘法 yaxb()iiiyaxb反映计算值反映计算值y与实际值与实际值 的偏差的偏差 iy令令当偏差的平方和最小时,则可以保证每个偏差都不会很大。于是直当偏差的平方和最小时,则可以保证每个偏差都不会很大。于是直线拟合的问题可归结为确定常数线拟合的问题可归结为确定常数a和和b,使得,使得 niiiniibaxybaF1212)(),(为最小为最小。0)(20)(211niiiniiiibaxybFbaxyxaF niiniiniiniinininiiiiixnaynbxxnyxyxna1121121111)(5.1.1 距离测量距离测量 直线拟合的直线拟合的H

5、ough变换方法变换方法 当给定图像空间的一些共线的点,就可以通过哈夫变换确当给定图像空间的一些共线的点,就可以通过哈夫变换确定连接这些点的直线方程,并计算直线间的距离。定连接这些点的直线方程,并计算直线间的距离。使用最小二乘法,可以方便快速的求解直线的方程。但是使用最小二乘法,可以方便快速的求解直线的方程。但是使用这种方法拟合出的用于定位距离的两条直线使用这种方法拟合出的用于定位距离的两条直线可能不平可能不平行行,这种情况下一般,这种情况下一般采用一条直线上多点到另一条直线的采用一条直线上多点到另一条直线的距离的平均值距离的平均值来近似计算。来近似计算。5.1.1 距离测量距离测量 距离测量

6、基本流程距离测量基本流程 5.1.1 距离测量距离测量 选择一个矩形工件作为检测选择一个矩形工件作为检测对象,需要测量工件上下边对象,需要测量工件上下边间的距离,使用间的距离,使用Hough变换变换对该工件宽度进行测量对该工件宽度进行测量Readimage(gongjian1.bmp,image);/读取图像读取图像showimage(image);/显示图像显示图像DrawRectangle(rect);/设置图像处理区域设置图像处理区域rectRectThresholdCovert(image,image1,rect,DIEDAITHRESHOLD,1);/区域图像二值化分割区域图像二值化

7、分割RectPointInvert(image1,image2,rect);/图像反色图像反色RectEdgeGet(image2,image3,rect,CONTOUR);/区区域边缘提取域边缘提取showimage(image3);/显示预处理之后的图像显示预处理之后的图像RectDistance(image3,image4,rect,HOUGHMINI,A,b,c);/距离测量函数距离测量函数/*处理结果标示部分处理结果标示部分*/showimage(image);SetColor(2,red);RectConvertToPoint(rect,left,top,right,bottom)

8、;GenLine(left,b,right,b,1);/标示线段标示线段GenLine(left,c,right,c,1);SetColor(2,white);GenRectangle(left,top,right,bottom);/标示方形框标示方形框CStringFormat(宽:宽:%f,A,str);GenText(10,10,20,str,green);/标示字符串标示字符串5.1.1 距离测量距离测量 距离测量距离测量 函数说明:所选区域中一对直线之间的距离测量函数说明:所选区域中一对直线之间的距离测量 调用格式:调用格式:RectDistance(image_origin,ima

9、ge_edge,rect,kind,width,Linex,Liney)参数说明:参数说明:image_origin:输入图像(单像素边缘图):输入图像(单像素边缘图)image_edge:输出图像:输出图像 rect:关注区域:关注区域 kind:算法类型(:算法类型(HOUGHMINI,AVERAGEX(水平线,(水平线,即最小二乘),即最小二乘),AVERAGEY(垂直线)(垂直线)width:所测宽度:所测宽度 Linex:起始点坐标:起始点坐标 Liney:终止点的坐标:终止点的坐标5.1.3 线段测量线段测量 在工件检测中,通常要测量多边形工件的边长,即测量两在工件检测中,通常要测

10、量多边形工件的边长,即测量两个端点间的线段的长度,这种测量称之为线段测量。线段个端点间的线段的长度,这种测量称之为线段测量。线段测量的核心是在工件图像中找到线段的两个端点,通常这测量的核心是在工件图像中找到线段的两个端点,通常这些端点是图像中的角点。因此,线段测量的重点是对图像些端点是图像中的角点。因此,线段测量的重点是对图像中的角点进行检测。中的角点进行检测。5.1.3 线段测量线段测量 线段测量基本流程图线段测量基本流程图5.1.3 线段测量线段测量 (a)工件原始图)工件原始图 (b)处理结果图)处理结果图多线段测量多线段测量 Readimage(test9.bmp,image);/读取

11、图像读取图像showimage(image);/显示图像显示图像DrawRectangle(rect);/设置图像处理区域设置图像处理区域rectRectMuchLines(image,image1,rect,0,1800,30,a30,b30,c30);/多线段测量函数多线段测量函数showimage(image1);/显示处理之后的图像显示处理之后的图像/*在源图像上对处理结果进行标示在源图像上对处理结果进行标示*/SetColor(2,green);GenPolyLine(b30,c30,30);GetDLength(a,length);for(i=0,length,1);d=(ci-1

12、0);f=(bi-10);GenText(f,d,20,L,red);/图中标明字符图中标明字符Le=(f+5);CStringFormat(%d,i,s1);GenText(e,d,20,s1,red);/再标明第再标明第i个线段号个线段号g=(20*i+2);GenText(300,g,20,L,white);/右上标明字符右上标明字符LCStringFormat(%d,i,s2);GenText(315,g,20,s2,red);/再标明第再标明第i个线段号个线段号GenDoubleText(330,g,20,ai,white);CStringFormat(%1f,ai,s3);GenT

13、ext(330,g,20,s3,red);/标明每个线段长度标明每个线段长度endfor();5.1.3 线段测量线段测量 线段测量线段测量函数说明:所选区域中多边形边长测量函数说明:所选区域中多边形边长测量调用格式:调用格式:RectMuchLines(image_origin,image_edge,rect,para1,para2,para3,LineD,pointx,pointy)参数说明:参数说明:image_origin:输入图像(灰度图):输入图像(灰度图)image_edge:输出图像:输出图像rect:区域:区域para1:高斯滤波窗口宽度:高斯滤波窗口宽度para2:阈值:阈

14、值para3:最小直线长度:最小直线长度 LineD:边长:边长poinx:角点的:角点的x坐标坐标pointy:角点的:角点的y坐标坐标5.2 面积测量面积测量 面积测量在工业测量领域中应用十分广泛,比如目前比较面积测量在工业测量领域中应用十分广泛,比如目前比较成熟的基于机器视觉技术的果品自动筛选设备,金属腐蚀成熟的基于机器视觉技术的果品自动筛选设备,金属腐蚀测试设备等,都是对面积测量技术的直接应用。本节主要测试设备等,都是对面积测量技术的直接应用。本节主要介绍两种面积测量的重要算法:区域标记法和基于轮廓矢介绍两种面积测量的重要算法:区域标记法和基于轮廓矢量的面积测量法。量的面积测量法。5.

15、2.1 基于区域标记的面积测量基于区域标记的面积测量 如果已知图像中待测物体的所在区域,则可通过如果已知图像中待测物体的所在区域,则可通过计算该区计算该区域内像素点的个数得到其面积域内像素点的个数得到其面积。若待测图像内可能有多个。若待测图像内可能有多个需要测量面积的物体,需要判定区域中的物体是否是独立需要测量面积的物体,需要判定区域中的物体是否是独立的物体,以及区域中的物体是否只是噪声。连通区域的标的物体,以及区域中的物体是否只是噪声。连通区域的标记可以有效地解决这一问题。它的目的就是给图像中每一记可以有效地解决这一问题。它的目的就是给图像中每一个连通的区域分配一个唯一的标记值。个连通的区域

16、分配一个唯一的标记值。5.2.1 基于区域标记的面积测量基于区域标记的面积测量 1)将图像二值化,对二值图像,从左)将图像二值化,对二值图像,从左到右,从上到下,依次检验每个像到右,从上到下,依次检验每个像素,如果发现某像素值为素,如果发现某像素值为1,则依,则依次检测该点的右上,正上,左上,次检测该点的右上,正上,左上,左前点共左前点共4个点的像素值,判断其个点的像素值,判断其是否与已标示区域连通,并标示物是否与已标示区域连通,并标示物体,将物体的像素值改为该像素所体,将物体的像素值改为该像素所在区域的标号;在区域的标号;2)依次逐行检测至扫描结束;)依次逐行检测至扫描结束;3)循环取得各点

17、的像素值,像素值就)循环取得各点的像素值,像素值就是标号;是标号;4)根据不同的标号,将像素加到对应)根据不同的标号,将像素加到对应的数组;的数组;5)计算各个连通区域的面积及个数等。)计算各个连通区域的面积及个数等。8连通判别算法连通判别算法5.2.1 基于区域标记的面积测量基于区域标记的面积测量 下图是一个具有多个漏孔的片状工件,可以用区域标记的方下图是一个具有多个漏孔的片状工件,可以用区域标记的方法来测量其中的每个漏孔面积,从而检测出不符合尺寸规格法来测量其中的每个漏孔面积,从而检测出不符合尺寸规格的漏孔。可得到工件的漏孔的个数、面积、位置信息。的漏孔。可得到工件的漏孔的个数、面积、位置

18、信息。多面积测量多面积测量Readimage(a.bmp,image);/读取图像读取图像showimage(image);/显示图像显示图像DrawRectangle(rect);/设置图像处理区域设置图像处理区域rectRectThresholdCovert(image,image1,rect,DIEDAITHRESHOLD,1);/区域图像二值化分割区域图像二值化分割RectImageFilter(image1,image2,rect,MEDIANFILTER);/图像滤波图像滤波RectPointInvert(image2,image3,rect);/图像反色图像反色RectMucha

19、rea(image3,rect,10,1000,A,b,c,d,m,n,p);/区域标记函数区域标记函数/*在源图像上对处理结果进行标示在源图像上对处理结果进行标示*/for(i=0,b,1);e=(ci+6);f=(di+6);SetColor(1,green);GenRectangle(ci,di,e,f,1);g=(di-15);h=(ci-5);GenDoubleText(h,g,15,Ai,red);CStringFormat(%1f,Ai,s1);GenText(h,g,15,s1,red);/显示图像面积显示图像面积endfor();5.2.1 基于区域标记的面积测量基于区域标记

20、的面积测量 区域图像标记区域图像标记函数说明:所选区域中连通域的标记,个数,以及面积计算函数说明:所选区域中连通域的标记,个数,以及面积计算调用格式:调用格式:RectMucharea(image_origin,rect,closearea,area,*total,xarea,yarea,label,width,height)参数说明:参数说明:image_origin:输入图像(二值图):输入图像(二值图)rect:关注区域:关注区域closearea:最小:最小/最大面积阈值参数最大面积阈值参数area:面积面积total:连通域个数:连通域个数xarea:连通域左上:连通域左上x坐标坐标

21、yarea:连通域左上:连通域左上y坐标坐标label:标记号:标记号width:连通域宽度:连通域宽度height:连通域高度:连通域高度5.2.2 基于轮廓向量的面积测量基于轮廓向量的面积测量 用于用于不规则区域不规则区域面积的测量。原理是按一定的方向对感兴趣面积的测量。原理是按一定的方向对感兴趣区进行边界跟踪,获得一组有序边界点。把前一边界点到当区进行边界跟踪,获得一组有序边界点。把前一边界点到当前边界点的路径,称前级向量;把当前边界点到下一边界点前边界点的路径,称前级向量;把当前边界点到下一边界点的路径,称次级向量。针对不同的方向结合前级向量和次级的路径,称次级向量。针对不同的方向结合

22、前级向量和次级向量,来判断当前边界点右侧像素是边界点、边界内点还是向量,来判断当前边界点右侧像素是边界点、边界内点还是边界外点。边界外点。用外轮廓所包含的面积减去其内部各个内轮廓所用外轮廓所包含的面积减去其内部各个内轮廓所包含的面积,就可以得出此连通域实体的面积。包含的面积,就可以得出此连通域实体的面积。5.2.2 基于轮廓向量的面积测量基于轮廓向量的面积测量 首先要对其进行二值化阈值分割,然后采用向量分析的方法来提首先要对其进行二值化阈值分割,然后采用向量分析的方法来提取其边缘轮廓。取其边缘轮廓。(a)零件原始图)零件原始图(b)测量效果图)测量效果图基于轮廓向量的面积测量基于轮廓向量的面积

23、测量5.2.2 基于轮廓向量的面积测量基于轮廓向量的面积测量 Readimage(k.bmp,i);/读取图像读取图像ConvertDepth24to8(i,i1);/24位图转换成位图转换成8位图位图showimage(i1);/显示图像显示图像ThresholdCovert(i1,i2,DIEDAITHRESHOLD,150);/图像二值化分割图像二值化分割showimage(i2);PointInvert(i2,i22);/图像反色图像反色showimage(i22);ContourAreas(i22,10,0,num,X,Y,i3,Area);/轮廓提取函数轮廓提取函数/求出目标的轮廓

24、,然后计算其中每个连通域的面积,并标示出来求出目标的轮廓,然后计算其中每个连通域的面积,并标示出来 showimage(i3);/显示处理之后的图像显示处理之后的图像/*在源图像上对处理结果进行标示在源图像上对处理结果进行标示*/for(i=0,num,1);h=(Xi+20);v=(Yi);CStringFormat(%1f,Areai,s);GenText(h,v,15,s,white);endfor();5.3 圆测量圆测量圆测量是尺寸测量技术中与长度测量并列的另一种应用最圆测量是尺寸测量技术中与长度测量并列的另一种应用最为广泛的测量方式。传统物理接触方式测量圆弧,参考点为广泛的测量方式

25、。传统物理接触方式测量圆弧,参考点太多,无法从整体上来把握其综合参数,速度慢而且精度太多,无法从整体上来把握其综合参数,速度慢而且精度非常低。而基于机器视觉技术的圆测量则可以大大提高工非常低。而基于机器视觉技术的圆测量则可以大大提高工件测量的速度和精度,凸显其优越性和重要性。件测量的速度和精度,凸显其优越性和重要性。在参数空间中,上式表示的是一个三维锥面。其物理意义是,图在参数空间中,上式表示的是一个三维锥面。其物理意义是,图像空间中的圆对应着参数空间中的一个点,而图像空间中的一个像空间中的圆对应着参数空间中的一个点,而图像空间中的一个点点 对应着参数空间中的一个三维直立圆锥,该点约束了通对应

26、着参数空间中的一个三维直立圆锥,该点约束了通过其的一个圆锥面的参数过其的一个圆锥面的参数 。5.3.1 正圆的测量方法正圆的测量方法 圆测量中的圆测量中的Hough变换方法变换方法 对于半径为对于半径为r,圆心为,圆心为 的圆,有解析表达式的圆,有解析表达式:12(,)a a22221)()(rayaxii(,)iix y12(,)a a r5.3.1 正圆的测量方法正圆的测量方法图像空间中的点对应图像空间中的点对应参数空间中的直立圆锥参数空间中的直立圆锥圆的参数空间表示圆的参数空间表示 对图像空间中的圆进行检测时,先计算图像每点的梯度信对图像空间中的圆进行检测时,先计算图像每点的梯度信息,然

27、后根据适当阈值求出边缘,再计算与边缘上的每一息,然后根据适当阈值求出边缘,再计算与边缘上的每一点像素距离为点像素距离为r的所有点的所有点 ,同时将对应,同时将对应 立方体立方体小格的累加器加小格的累加器加1。改变。改变r的值,再重复上述过程,当对全的值,再重复上述过程,当对全部边缘点变换完成后,对三维阵列的所有累加器的值进行部边缘点变换完成后,对三维阵列的所有累加器的值进行检验,其峰值格的坐标就对应着图像空间中圆形边界的圆检验,其峰值格的坐标就对应着图像空间中圆形边界的圆心心 。5.3.1 正圆的测量方法正圆的测量方法12(,)a a12(,)a a r12(,)a a r5.3.1 正圆的测

28、量方法正圆的测量方法 圆测量中的改进圆测量中的改进Hough变换方法变换方法 先通过先通过5.2节面积测量的方法求圆的面积,进而计算得到圆节面积测量的方法求圆的面积,进而计算得到圆的半径的半径r,这样三维空间又变成了二维空间问题。这时,这样三维空间又变成了二维空间问题。这时,可用一个二维累加数组(可用一个二维累加数组(a,b)进行统计,它的峰值能确)进行统计,它的峰值能确定圆的圆心位置。用这种方法可以大大减少计算量,节省定圆的圆心位置。用这种方法可以大大减少计算量,节省运算时间,提高检测速度,但是精度受圆面积测量的精度运算时间,提高检测速度,但是精度受圆面积测量的精度影响。影响。5.3.1 正

29、圆的测量方法正圆的测量方法 最小二乘法检测圆最小二乘法检测圆 最小二乘法也可以拟合圆,其原理是:选择曲线的数学模最小二乘法也可以拟合圆,其原理是:选择曲线的数学模型型f(x),通过使采样点的,通过使采样点的Y值与值与f(x)之差的平方和最小来确定之差的平方和最小来确定f(x)的系数。圆方程为:的系数。圆方程为:222)()(RByAx2222,2,aA bB cABR 令令:则圆方程变为参数则圆方程变为参数(a,b,c)的线性方程:的线性方程:022cbyaxyx5.3.1 正圆的测量方法正圆的测量方法只要求出只要求出a,b,c 即可以转化为圆的即可以转化为圆的3个参数:个参数:cbaRbBa

30、A421,2,222样本集样本集 中点到圆心的距离是:中点到圆心的距离是:),2,1(),(Niyxii222)()(ByAxdiii点点 到圆心的距离的平方与圆半径的平方的差为:到圆心的距离的平方与圆半径的平方的差为:(,)iix ycbyaxyxRdiiiiii22225.3.1 正圆的测量方法正圆的测量方法设设 为为 的平方和:的平方和:(,)Q a b ci求参数求参数a,b,c使得使得 值最小。值最小。(,)Q a b c0)(2),(22iiiiixcbyaxyxacbaQ0)(2),(22iiiiiycbyaxyxbcbaQ0)(2),(22cbyaxyxccbaQiiii222

31、2,cbyaxyxcbaQiiiii5.3.1 正圆的测量方法正圆的测量方法解方程组,并令:解方程组,并令:iiixxxNC2iiiiyxyxNDiiiiiixyxyxNxNE)(2223iiiyyyNG2iiiiiiyyxyNyxNH)(2232 NybxayxcGCDEDHCbDCGEGHDaiiii2222(5.3.1 正圆的测量方法正圆的测量方法(a)工件原始图)工件原始图 (b)最小二乘法拟合结果图)最小二乘法拟合结果图(c)Hough变换法拟合结果图变换法拟合结果图(d)Hough变换改进法拟合结果图变换改进法拟合结果图 Readimage(test88.bmp,image);/读

32、取图像读取图像showimage(image);/显示图像显示图像DrawRectangle(rect);/设置图像处理区域设置图像处理区域rectRectThresholdCovert(image,image1,rect,DIEDAITHRESHOLD,1);/区域图像二值化分割区域图像二值化分割RectEdgeGet(image1,image2,rect,CONTOUR);/区域轮廓提取区域轮廓提取RectCircle(image2,image3,rect,MINICIRCLE,X,Y,R);/单圆测量函数单圆测量函数/*在源图像上对处理结果进行标示在源图像上对处理结果进行标示*/show

33、image(image);SetColor(1,white);GenCircle(X,Y,R,1);SetColor(1,blue);b=(Y-20);SetColor(2,green);GenText(X,b,20,圆圆C1,white);/图中标记字符图中标记字符圆圆C1GenText(10,10,20,圆心:圆心:,white);/左上角标记字符左上角标记字符圆心圆心CStringFormat(%1f,X,string);GenText(60,10,20,string,red);/标记圆心横坐标值标记圆心横坐标值CStringFormat(“%1f,Y”,string1);GenText

34、(130,10,20,string1,red);/标记圆心纵坐标值标记圆心纵坐标值GenText(10,50,20,半径:半径:,white);/标记字符标记字符半径:半径:CStringFormat(%1f,R,s1);GenText(55,50,20,s1,red);/标记半径值标记半径值5.3.1 正圆的测量方法正圆的测量方法单圆测量单圆测量函数说明:所选区域中单个圆测量函数说明:所选区域中单个圆测量调用格式:调用格式:RectCircle(image_origin,image_edge,rect,kind,circlex,circley,circler)参数说明:参数说明:image_

35、origin:输入图像(边缘图,二值图):输入图像(边缘图,二值图)image_edge:输出图像:输出图像rect:区域:区域kind:算法类型(包括:算法类型(包括HOUGHCIRCLER(二值图),(二值图),HOUGHCIRCLE(二值图),(二值图),MINICIRCLE(边缘图),(边缘图),DIEDAICIRCLE(边缘图)(边缘图)circlex:圆心:圆心x坐标坐标circley:圆心:圆心y坐标坐标circler:圆半径:圆半径5.3.1 正圆的测量方法正圆的测量方法方法方法半径像素值半径像素值误差误差测量时间测量时间最小二乘法最小二乘法68.50.48%30msHough

36、变换法变换法68.90.18%18328ms改进改进Hough变换法变换法68.90.18%531ms圆测量误差计算结果圆测量误差计算结果 最小二乘拟合法速度最快,但精度较差;传统的最小二乘拟合法速度最快,但精度较差;传统的Hough变换法因变换法因为要进行为要进行3维拟合,所以速度很慢,但优点是精度高;改进维拟合,所以速度很慢,但优点是精度高;改进Hough变换法因为采用通过面积求半径的方法,使传统变换法因为采用通过面积求半径的方法,使传统Hough变变换的换的3维问题变为维问题变为2维问题,因此大大提高了的速度,而且精度也维问题,因此大大提高了的速度,而且精度也不错。不错。5.3.2 多圆

37、测量多圆测量多圆测量流程图多圆测量流程图首先对工件图像进行首先对工件图像进行轮廓提取;在得到多轮廓提取;在得到多个圆的轮廓后,把每个圆的轮廓后,把每个圆轮廓加入链表;个圆轮廓加入链表;然后对每个链表中的然后对每个链表中的像素利用最小二乘方像素利用最小二乘方法进行圆拟合。法进行圆拟合。Readimage(test8.bmp,image);/读取图像读取图像showimage(image);/显示图像显示图像DrawRectangle(rect);/设置图像处理区域设置图像处理区域rectRectThresholdCovert(image,image1,rect,DIEDAITHRESHOLD,1

38、);/区域图像二值化分割区域图像二值化分割RectImageFilter(image1,image2,rect,MEDIANFILTER);/图像滤波图像滤波RectEdgeGet(image2,image3,rect,EROSIONCONTOUR);/区域边缘提取区域边缘提取RectMuchCircle(image3,image4,rect,x,y,r);/多圆测量函数多圆测量函数GetDLength(r,p);/获取数组长度获取数组长度/*在源图像上对处理结果进行标示在源图像上对处理结果进行标示*/showimage(image);SetColor(2,red);GenCircles(x1

39、0,y10,r10);/画圆画圆SetColor(2,green);for(i=0,p,1);a=(xi);b=(yi-ri-5);GenText(a,b,20,C,white);c=(a+10);CStringFormat(%d,i,s1);GenText(c,b,20,s1,white);d=(i*20+50);GenText(10,d,20,半径半径C,green);/半径半径CCStringFormat(%d,i,s2);GenText(55,d,20,s2,red);/半径编号半径编号CStringFormat(“%1f,ri”,s3);GenText(100,d,20,s3,red

40、);/半径值半径值endfor();多圆测量结果图多圆测量结果图 5.3.3 利用曲率识别法识别圆利用曲率识别法识别圆 介绍一种用圆曲率来识别圆的方法,这种方法能分离圆介绍一种用圆曲率来识别圆的方法,这种方法能分离圆和其他多边形,进而求解出目标圆的参数。适用于和其他多边形,进而求解出目标圆的参数。适用于复杂复杂背景下多边形、椭圆等其他图形的圆测量。背景下多边形、椭圆等其他图形的圆测量。圆识别流程图圆识别流程图5.3.3 利用曲率识别法识别圆利用曲率识别法识别圆 原理:首先对图像进行轮廓提取,得到图像中所有图形原理:首先对图像进行轮廓提取,得到图像中所有图形的轮廓;再计算所有轮廓的质心和面积,进

41、而求解出其的轮廓;再计算所有轮廓的质心和面积,进而求解出其曲率;因为曲率;因为圆的曲率是常数圆的曲率是常数1,因此可以根据计算得到的,因此可以根据计算得到的各轮廓的曲率判别其是否为圆;剔除非圆的轮廓,对圆各轮廓的曲率判别其是否为圆;剔除非圆的轮廓,对圆轮廓进行拟合,得到圆的参数。其中计算图形面积可以轮廓进行拟合,得到圆的参数。其中计算图形面积可以采用本章面积测量一节中的方法。采用本章面积测量一节中的方法。5.3.3 利用曲率识别法识别圆利用曲率识别法识别圆 piareaycircularit2maxarea:面积,:面积,max:质心到轮廓点上的最大距离。圆的曲率:质心到轮廓点上的最大距离。圆

42、的曲率一般为一般为1,其他多边形的曲率小于,其他多边形的曲率小于1,可通过判断曲率的值来,可通过判断曲率的值来区别工件中的圆和其他多边形。在分离出圆后,就可以使用区别工件中的圆和其他多边形。在分离出圆后,就可以使用最小二乘拟合算法拟合这些圆,进而得到圆参数。最小二乘拟合算法拟合这些圆,进而得到圆参数。),(),(0010i jjyixgi jjyixgixMMcxi jjyixgi jjyixgjyMMcy),(),(0001轮廓图像上的点当轮廓图像上的点当),(1),(0),(yxyxyxg5.3.3 利用曲率识别法识别圆利用曲率识别法识别圆(a)工件原始图)工件原始图(b)测量结果图)测量

43、结果图 圆曲率识别法圆曲率识别法Readimage(test10.bmp,image);/读取图像读取图像showimage(image);/显示图像显示图像DrawRectangle(rect);/设置图像处理区域设置图像处理区域rectRectThresholdCovert(image,image2,rect,FIXTHRESHOLD,128);/区域图像二值化分割区域图像二值化分割RectEdgeGet(image2,image3,rect,CONTOUR);/区域边缘提取区域边缘提取RectCircularity(image3,image1,rect,0,b,c,d);/圆曲率识别函数

44、圆曲率识别函数/*在源图像上对处理结果进行标示在源图像上对处理结果进行标示*/showimage(image);SetColor(2,green);GetDLength(b,length);for(i=0,length,1);GenCircle(ci,di,bi,1);/画圆画圆e=(20*i+150);GenText(150,e,20,半径半径,red);/图中标明半径图中标明半径CStringFormat(%d,i,s1);GenText(185,e,20,s1,white);/标明半径编号标明半径编号CStringFormat(%1f,bi,s2);GenText(200,e,20,s2

45、,white);/半径值半径值endfor();5.3.3 利用曲率识别法识别圆利用曲率识别法识别圆 圆形分离圆形分离函数说明:所选区域中多边形和圆的分离函数说明:所选区域中多边形和圆的分离调用格式:调用格式:RectCircularity(image_origin,image_edge,rect,para1,para2,para3,LineD,pointx,pointy,yuanR,outcirclex,outcircley)参数说明:参数说明:image_origin:输入图像(:输入图像(灰度图像)灰度图像)image_edge:输出图像:输出图像rect:区域:区域para1:曲率阈值

46、:曲率阈值para2:角点阈值角点阈值para3:最小线段长阈值:最小线段长阈值 LineD:线段长:线段长Pointx:角点:角点x坐标坐标pointy:角点:角点y坐标坐标yuanR:圆弧半径:圆弧半径outcirclex:圆心:圆心xoutcircle:圆心:圆心y5.3.4 椭圆的测量方法椭圆的测量方法 基于基于Hough变换的椭圆测量方法变换的椭圆测量方法 椭圆轮廓的检测被认为是一个复杂的过程,因为在一幅数椭圆轮廓的检测被认为是一个复杂的过程,因为在一幅数字图像中,要确定一个椭圆需要字图像中,要确定一个椭圆需要5个参数。个参数。步骤步骤1)在图像中寻找潜在的椭圆中)在图像中寻找潜在的

47、椭圆中 心点坐标心点坐标2)利用已经获得的中心点确)利用已经获得的中心点确 定其他的三个参数定其他的三个参数5.3.4 椭圆的测量方法椭圆的测量方法 基于最小二乘法的椭圆测量方法基于最小二乘法的椭圆测量方法 1cos)(sin)(sin)(cos)(22002200byyxxayyxx22222sincos2sin)(ababA22222222sincoscossinababB2222222022220sincos2sin)()sincos(2ababyabxC222222022220sincos2sin)()cossin(2ababxabyD222222002002sincos)sincos

48、()sincos(abbayxbxyaE5.3.4 椭圆的测量方法椭圆的测量方法 220 xAx yByCxDyE2221(,)()nkkkkkkkF A B C D ExAx yByCxDyE0EFDFCFBFAFnkknkkknkknkkknkkknkknkknkknkkknkknkknkkknkknkkknkknkkknkknkkknkkknkknkknkkknkknkkknkkknkkknkkknkkknkkkxyxxyxyxEDCBANyxyyxyyyxyyxxyxxyxyxyyyxyyxyxyxyxyxyx12121312213111211121131211121212121312

49、141311212131225.3.4 椭圆的测量方法椭圆的测量方法 求解该线性方程组解得求解该线性方程组解得A、B、C、D和和E的值后便可的值后便可反求得到平面任意位置椭圆的反求得到平面任意位置椭圆的5个实际参数个实际参数BAADBCx4220BAADDy4220)1)1()(4()4(2222222BABBAEABEDBCACDa)1)1()(4()4(2222222BABBAEABEDBCACDb22221tanbBnBbn5.3.4 椭圆的测量方法椭圆的测量方法(a)工件原始图)工件原始图(b)拟合结果图)拟合结果图 椭圆的测量椭圆的测量 5.3.4 椭圆的测量方法椭圆的测量方法 Re

50、adimage(tooth_3.bmp,image);/读取图像读取图像showimage(image);/显示图像显示图像ConvertDepth24to8(image,image1);/24位图转换成位图转换成8位图位图ThresholdCovert(image1,image2,FIXTHRESHOLD,150);/区域图像二值化分割区域图像二值化分割showimage(image2);PointInvert(image2,image3);/图像反色图像反色showimage(image3);OutsideEdge(image3,image4);/生成图像外部轮廓生成图像外部轮廓showi

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(机器视觉技术及应用-韩九强-课件5.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|