发明名称 一种基于视觉的TR元件定位和缺陷检测方法
摘要 一种基于视觉的TR元件定位和缺陷检测方法,本发明涉及TR元件视觉定位和视觉检测方法。本发明解决现有技术中有人为误差、精度低、实时性差以及计算结果对光照敏感的问题。本发明是通过二值化区域图像,提取外边界点集,寻找有效边界点集,寻找最小外接矩形,有效边界点集分类,二值图像仿射变换,TR元件类型检查,有效边界点集再次分类并编号,拟合引脚直线,拟合引脚足部直线,确定TR元件细节信息,检查TR元件引脚的缺陷等步骤实现的,并且包含多项技术,其中也包括灰度值滤波,4领域快速轮廓跟踪,双轴旋转法寻找最小外接矩形等创新技术。本发明主要应用于贴片机视觉系统中元件定位与检测领域。
申请公布号 CN104990926A 申请公布日期 2015.10.21
申请号 CN201510357803.7 申请日期 2015.06.25
申请人 哈尔滨工业大学 发明人 高会军;王毅;白立飞;孙昊;杨宪强;周纪强;张天琦;张延琪
分类号 G01N21/88(2006.01)I 主分类号 G01N21/88(2006.01)I
代理机构 哈尔滨市松花江专利商标事务所 23109 代理人 杨立超
主权项 一种基于视觉的TR元件定位和缺陷检测方法,其特征在于一种基于视觉的TR元件定位和缺陷检测方法具体是按照以下步骤进行的:步骤一、检查所选择区域图像亮度;若图像出现太亮或太暗则停止检查并返回相应错误码;若亮点数与总点数的比值在区间[0.01,0.90]则转至步骤二;其中,所选择区域图像中像素值为255的像素点认为是亮点,所选区域图像所有像素点个数记为总点数;当亮点数与总点数的比值小于0.01认为区域图像太暗,当亮点数与总点数的比值大于0.90则认为区域图像太亮;步骤二、对所选区域图像中亮点数与总点数的比值在[0.01,0.90]的图像进行二值化,得到二值化图像;其中,二值化图像包括手动输入固定阈值二值化方法得到的二值化图像和采用类间方差最大的方法得到的二值化图像;步骤三、对步骤二中采用类间方差最大的方法得到的二值化图像进行外边界提取的操作,得到二值化图像的外边界点集,存放在二维点容器1中;其中,外边界提取的操作采用的提取算子是一种4领域快速轮廓跟踪算子,其中,4领域快速轮廓跟踪算子算子的描述如下:P为待判定的像素点,其4领域的位置分别为P1、P2、P3和P4;当P1、P2、P3和P4中有一个为背景像素点时,判定P为边界像素点,用4领域快速轮廓跟踪算子遍历采用类间方差最大的方法得到的二值化图像就得到准确的单像素宽度的边界点集图像即二值化图像的外边界点集;步骤四、对步骤三得到的二维点容器1中的外边界点集进行灰度值检查得到筛选后的边界点集,并将筛选后的边界点集压入一个二维点容器2中,记为有效边界点集;其中,所述的步骤三中外边界点集进行灰度值检查得到筛选后的边界点集的具体过程为:(1)取步骤三得到的任意一个外边界点集,若外边界点集包含的点数大于10,则进行步骤(2);(2)若步骤(1)中的外边界点集有内含或者有嵌套的外边界点集,则将内含或者嵌套的外边界点集之间的连通区域所有像素点像素值定为255;若步骤(1)中的外边界点集没有内含或者嵌套的外边界点集则将此外边界点集所包含内部所有像素点像素值定为255;(3)将像素值为255的像素点画在一个空的灰度图像中,记为这一个外边界点集的二值图像;(4)计算步骤(3)中像素值为255的像素点的个数,记为s1;将步骤二中手动输入固定阈值二值化方法得到的二值化图像与步骤(2)中得到的这一个外边界点集的二值图像进行按位与运算,得到一个新的二值图像,计算新的二值图像中像素值为255的像素点个数,记为s2;(5)计算s1/s2的值并将s1/s2值小于0.5所对应的边界点集删除;重复(1)~(5)直到取遍步骤三中得到所有外边界点集,并将所有的留下来的外边界点集压入一个二维点容器中,即得到有效的边界点集;步骤五、寻找全体有效边界点集的最小外接矩形,将全体有效边界点集的最小外接矩形作为元件的粗略最小外接矩形,并将全体有效边界点集的最小外接矩形的旋转角度作为TR元件的粗略旋转角度α,全体有效边界点集的最小外接矩形的中心坐标作为TR元件的粗略中心坐标(x<sub>0</sub>,y<sub>0</sub>);所述的寻找全体有效边界点集的最小外接矩形所采用的方法是一种优化后的旋转目标法,这里称之为双轴旋转法具体步骤为:(1)寻找全体有效边界点集的水平主轴:依次扫描全体有效边界点集的每一列i,寻找每一列有效边界点集的起点坐标(x<sub>i1</sub>,y<sub>i1</sub>)和终点坐标(x<sub>i2</sub>,y<sub>i2</sub>),从而计算第i列内目标的中心坐标(x′<sub>i</sub>,y′<sub>i</sub>):<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msubsup><mi>x</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>=</mo><mfrac><mrow><msub><mi>x</mi><mrow><mi>i</mi><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>x</mi><mrow><mi>i</mi><mn>2</mn></mrow></msub></mrow><mn>2</mn></mfrac><mo>,</mo><msubsup><mi>y</mi><mi>i</mi><mo>&prime;</mo></msubsup><mo>=</mo><mfrac><mrow><msub><mi>y</mi><mrow><mi>i</mi><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>y</mi><mrow><mi>i</mi><mn>2</mn></mrow></msub></mrow><mn>2</mn></mfrac><mo>,</mo></mrow>]]></math><img file="FDA0000745623350000021.GIF" wi="605" he="138" /></maths>将全体有效边界点集的各列的中心坐标作为一组数据(x′<sub>i</sub>,y′<sub>i</sub>),利用最小二乘法进行直线拟合,得到表示全体有效边界点集的水平主轴初始位置的直线方程y=k<sub>1</sub>x+b<sub>1</sub>;其中,i=1,2,…,N;k<sub>1</sub>为斜率,b<sub>1</sub>为截距;(2)寻找全体有效边界点集的垂直主轴:依次扫描全体有效边界点集的每一行j,寻找每一行边界点集的起点坐标(x<sub>j1</sub>,y<sub>j1</sub>)和终点坐标(x<sub>j2</sub>,y<sub>j2</sub>),从而计算第j行内目标的中心坐标(x′<sub>j</sub>,y′<sub>j</sub>):<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><msub><mi>x</mi><mi>j</mi></msub><mo>=</mo><mfrac><mrow><msub><mi>x</mi><mrow><mi>j</mi><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>x</mi><mrow><mi>j</mi><mn>2</mn></mrow></msub></mrow><mn>2</mn></mfrac><mo>,</mo><msubsup><mi>y</mi><mi>j</mi><mo>&prime;</mo></msubsup><mo>=</mo><mfrac><mrow><msub><mi>y</mi><mrow><mi>j</mi><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>y</mi><mrow><mi>j</mi><mn>2</mn></mrow></msub></mrow><mn>2</mn></mfrac></mrow>]]></math><img file="FDA0000745623350000022.GIF" wi="621" he="126" /></maths>将此边界点集的各行的中心坐标作为一组数据(x′<sub>j</sub>,y′<sub>j</sub>),利用最小二乘法进行直线拟合,得到表示全体有效边界点集的垂直主轴初始位置的直线方程x=k<sub>2</sub>y+b<sub>2</sub>;其中,j=1,2,…,M;k<sub>2</sub>为斜率,b<sub>2</sub>为截距;(3)求取全体有效边界点集的初始最小外接矩形,简称为初始最小外接矩形:保持全体有效边界点集的水平主轴方向不变,找到与直线方程y=k<sub>1</sub>x+b<sub>1</sub>平行,且与有效边界点集相切的两条直线y=k<sub>1</sub>x+b<sub>11</sub>和y=k<sub>1</sub>x+b<sub>12</sub>取与有效边界点集的水平主轴垂直即k′<sub>1</sub>=‑1/k<sub>1</sub>且过(x<sub>0</sub>,y<sub>0</sub>)的垂线y=k′<sub>1</sub>x+y<sub>0</sub>‑k′<sub>1</sub>x<sub>0</sub>,找到垂线与有效边界点集相切的两条直线y=k′<sub>1</sub>x+b′<sub>11</sub>和y=k′<sub>1</sub>x+b′<sub>12</sub>;根据四条直线y=k<sub>1</sub>x+b<sub>11</sub>、y=k<sub>1</sub>x+b<sub>12</sub>、y=k′<sub>1</sub>x+b′<sub>11</sub>和y=k′<sub>1</sub>x+b′<sub>12</sub>的交点就得到初始最小外接矩形的四个顶点;其中,y=k<sub>1</sub>x+b<sub>11</sub>为初始最小外接矩形的上边界;y=k<sub>1</sub>x+b<sub>12</sub>为初始最小外接矩形的下边界,y=k′<sub>1</sub>x+b′<sub>11</sub>为初始最小外接矩形的左边界;y=k′<sub>1</sub>x+b′<sub>12</sub>为初始最小外接矩形的右边界;(4)求全体有效边界点集最小外接矩形:绕全体有效边界点集的水平主轴与全体有效边界点集的垂直主轴的交点旋转,旋转角度区间取为:从全体有效边界点集的水平主轴初始位置开始,逐渐到与有效边界点集垂直主轴初始位置重合所旋转锐角γ,在旋转角度区间内以△θ=1°为每一次旋转间隔,按照步骤(3)中的方法求取每一次旋转后的全体有效边界点集的最小外接矩形;并计算旋转第t次的全体有效边界点集的最小外接矩形面积M<sub>t</sub>,绘制出M<sub>t</sub>折线图观察;t=1,2,…,[γ];[γ]为γ的整数部分;(5)若步骤(4)得到的面积M<sub>t</sub>大于面积M<sub>1</sub>,M<sub>2</sub>,L,M<sub>t‑1</sub>中最小值的1.1倍,或者有效边界点集水平主轴的旋转到的位置斜率大于或等于有效边界点集垂直主轴的斜率;则达到终止条件,达到终止条件终止后,将步骤(4)中的旋转间隔变为△θ=0.1°重复步骤(4)~(5),直到最后的△θ≤0.001°且满足以上终止条件为止;步骤六、求出步骤四得到的每一个有效边界点集的中心坐标(x<sub>i</sub>,y<sub>i</sub>),i=1,2,…,N;其中,每一个有效边界点集的中心坐标(x<sub>i</sub>,y<sub>i</sub>)具体为:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mi>x</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><munder><mo>&Sigma;</mo><mi>x</mi></munder><munder><mo>&Sigma;</mo><mi>y</mi></munder><mi>x</mi><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow><mrow><munder><mo>&Sigma;</mo><mi>x</mi></munder><munder><mo>&Sigma;</mo><mi>y</mi></munder><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></mfrac><mo>,</mo><msub><mi>y</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><munder><mo>&Sigma;</mo><mi>x</mi></munder><munder><mo>&Sigma;</mo><mi>y</mi></munder><mi>y</mi><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow><mrow><munder><mo>&Sigma;</mo><mi>x</mi></munder><munder><mo>&Sigma;</mo><mi>y</mi></munder><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow></mfrac></mrow>]]></math><img file="FDA0000745623350000041.GIF" wi="835" he="231" /></maths>当点(x,y)在有效边界点集上时,f(x,y)=1;否则f(x,y)=0;i=1,2,…,N;N代表有N个边界点集;步骤七、根据α将步骤四得到的有效边界点集分为TR元件上部有效边界点集和TR元件下部有效边界点集两组;步骤八、将步骤七得到的TR元件上部有效边界点集、下部有效边界点集及步骤六得到的每一个有效边界点集的中心按照元件粗略旋转角度α进行仿射变换即转正;同时将粗略中心坐标(x<sub>0</sub>,y<sub>0</sub>)转正为(x′<sub>0</sub>,y′<sub>0</sub>)<sub>;</sub>步骤九、对TR元件类型进行检测;若TR元件类型为标准TR类型,则继续步骤十;否则,停止并返回相应的错误码;步骤十、将步骤七的TR元件上部有效边界点集和下部有效边界点集根据引脚所属关系进行分类得到第一次分类的有效边界点集,并对第一次分类的有效边界点集进行编号;步骤十一、对步骤十得到的第一次分类的有效边界点集进行同一引脚的足部与根部有效边界点集的分类,确定引脚—足部—根部的关系;并且建立三个容器,三个容器中第一个容器存放常规引脚有效边界点集及常规引脚有效边界点集编号,第二个容器存放常规引脚足部有效边界点集及常规引脚足部有效边界点集编号,第三个容器存放特殊引脚有效边界点集及特殊引脚有效边界点集编号;步骤十二、分别求取步骤十一中第一个容器中常规引脚有效边界点集的中心点集和第二个容器中常规引脚足部有效边界点集的中心点集即:将上部常规引脚有效边界点集的中心点集存放在上部常规引脚中心点容器中;将上部常规引脚足部有效边界点集的中心点集存放在上部常规引脚足部中心点容器中;将下部常规引脚有效边界点集的中心点集存放在下部常规引脚中心点容器中;将下部常规引脚足部有效边界点集的中心点集存放在下部常规引脚足部中心点容器中;步骤十三、对常规引脚有效边界点集的中心点集和常规引脚足部有效边界点集的中心点集进行最小二乘法拟合直线操作,得到四条直线,分别记TR元件下部常规引脚有效边界点集拟合直线Line_downpin、TR元件上部常规引脚有效边界点集拟合直线Line_uppin、TR元件下部常规引脚足部有效边界点集拟合直线Line_downfoot和TR元件上部常规引脚足部有效边界点集拟合直线Line_upfoot;步骤十四、根据步骤十一得到的三个容器中的有效边界点集确定TR元件上部有效引脚平均长度h<sub>pin_up</sub>、TR元件下部有效引脚平均长度h<sub>pin_down</sub>、TR元件上部有效引脚足部平均长度h<sub>foot_up</sub>、TR元件下部有效引脚足部平均长度h<sub>foot_down</sub>、TR元件上部有效引脚数量s<sub>pin_up</sub>和TR元件下部有效引脚数量s<sub>pin_down</sub>;步骤十五、根据步骤十一得到的三个容器中的有效边界点集以及步骤十三得到的四条直线求取TR元件的上部有效引脚足部精确平均宽度w<sub>foot_up</sub>、TR元件的下部有效引脚精确平均宽度w<sub>pin_down</sub>、TR元件的上部有效引脚精确间距p<sub>pin_up</sub>、TR元件的下部有效引脚精确间距p<sub>pin_down</sub>、TR元件精确中心坐标(x<sub>a</sub>,y<sub>a</sub>)、TR元件精确旋转角度α<sub>a</sub>、TR元件精确宽度w<sub>body</sub>和TR元件精确长度h<sub>body</sub>;步骤十六、检查TR元件引脚的缺陷:(1)检查TR元件引脚是否弯曲:对步骤十四(1)中得到的每一个最小外接矩形进行旋转角度的检查,记第i个引脚的最小外接矩形旋转角度为β<sub>i</sub>,当|α<sub>a</sub>‑β<sub>i</sub>|≤5时认为TR元件引脚正常,没有弯曲;当|α<sub>a</sub>‑β<sub>i</sub>|&gt;5时认为第i个引脚旋转角度过大,是弯曲引脚;(2)检查TR元件引脚是否对称:求取步骤十一(1)中TR元件上部常规引脚边界点集的中心点集中心G<sub>0</sub>、TR元件下部常规引脚边界点集的中心点集中心G<sub>1</sub>、TR元件上部特殊引脚边界点集的中心点集中心G<sub>2</sub>和TR元件下部特殊引脚边界点集的中心点集的中心G<sub>3</sub>;判断G<sub>0</sub>、G<sub>1</sub>、G<sub>2</sub>和G<sub>3</sub>这四个点到过TR元件精确中心(x<sub>a</sub>,y<sub>a</sub>)且平行于TR元件精确最小外接矩形的垂直主轴的直线的距离,当距离均小于w<sub>body</sub>/20时认为对称性符合要求,否则返回对称性不符合要求的错误码;即完成了一种TR元件视觉定位和缺陷检测的识别方法。
地址 150001 黑龙江省哈尔滨市南岗区西大直街92号