本发明涉及机器视觉检测技术领域,具体的,其展示一种应用于机器视觉的工件直线边缘定位方法。
背景技术:
机器视觉检测中由于要求检测的时效性,对算法的速度要求非常苛刻。所以在对产品的定位中直线定位是一种常用的有效方法。
目前工业检测中一般使用工件的边缘点进行最小二乘法拟合。使用最小二乘法的原理就是保证所有边缘点与拟合的直线误差平方和最小,使用最小二乘法存在的一个问题,边缘直线附近存在噪音时,拟合出的效果会与实际有较大偏差,而在机器视觉检测中往往噪音以及工件加工所带来的毛刺、缺陷是无法避免的。有人使用迭代方式去拟合,这种方式只能对小的噪音有效,对于工件中毛刺和缺陷无法收敛到准确位置。
在图像中形状定位霍夫变换也是一种有效的方法。常用来定位圆,直线等图形。然而霍夫变换算法复杂度较大,时效性不高,且精度没有办法保证。
在视觉测量中常根据canny思想提取到工件边缘,然而工件中常常梯度较大的边缘有多条,所以有可能提取到多条线的边缘,由于数据量的增加,无效的数据特征无法采用算法进行很好的屏蔽,对检测的精度和速度上都会有影响。
因此,有必要提供一种应用于机器视觉的工件直线边缘定位方法来解决上述问题。
技术实现要素:
本发明的目的是提供一种应用于机器视觉检测的工件直线边缘定位方法。
技术方案如下:
一种应用于机器视觉检测的工件直线边缘定位方法,具体步骤如下:
s1)带有方向的边缘提取:确定检测区域,在检测区域范围内按照从左到右方向进行边缘搜索;
s2)投影:进行投影,以获取每条投影线上图像灰度的均值,从而获得投影均值的投影波形,波形公式为;
其中,f(i)代表在感兴趣区域内沿线寻找方向第i个位置灰度平均强度值,g(i,y)为感兴趣区域内图像上在坐标(i,y)的灰度值;
s3)进行差分计算:
假设投影波形在i处的差分值为
s4)求得候选点:根据差分波形,求得波峰和波谷通过波峰和波谷,断定要选择的边缘位置的具体点,准确的求得候选点;
s5)求取亚像素边缘位置:根据波峰或者波谷左右点,拟合抛物线,得到抛物线方程:
则抛物线顶点坐标则为边缘要求的亚像素边缘位置:
s6)求得边缘点:以一定步长循环执行s1)-s4),求得一系列边缘点
p=(
s7)直线的粗略定位:使用提取到的边缘点,采用霍夫变换得到边缘直线。一个边缘直线是由一系列离散的点所组成。假设点集为p=(
其中
其中
s8)最小二乘法拟合直线:
将s7)得到的直线方程计算转换为一般直线方程:
ax+by+c=0
其中
分别计算边缘点到直线的距离:
设定距离门限值
将所有有效点进行拟合,最终得到直线方程:
ax+by+c=0。
与现有技术相比,本发明能够有效的避免提取到多条线的边缘。使用一种限制角度范围的霍夫变换方法提高霍夫变换的速度,根据霍夫变换的粗略定位到的直线,去除无效点,使用最小二乘法精确定位直线的位置。
附图说明
图1位本发明的实施例的示意图。
具体实施方式
实施例:
本实施例展示一种应用于机器视觉检测的工件直线边缘定位方法,具体步骤如下:
s1)带有方向的边缘提取:参阅图1所示,确定检测区域,在检测区域范围内按照从左到右方向进行工件直线边缘的边缘搜索;
s2)投影:进行投影,以获取每条投影线上图像灰度的均值,从而获得投影均值的投影波形,波形公式为;
其中,f(i)代表在感兴趣区域内沿线寻找方向第i个位置灰度平均强度值,g(i,y)为感兴趣区域内图像上在坐标(i,y)的灰度值;
s3)进行差分计算:
假设投影波形在i处的差分值为
s4)求得候选点:根据差分波形,求得波峰和波谷通过波峰和波谷,断定要选择的边缘位置的具体点,准确的求得候选点;
s5)求取亚像素边缘位置:根据波峰或者波谷左右点,拟合抛物线,得到抛物线方程:
则抛物线顶点坐标则为边缘要求的亚像素边缘位置:
s6)求得边缘点:以一定步长循环执行s1)-s4),求得一系列边缘点
p=(
s7)直线的粗略定位:使用提取到的边缘点,采用霍夫变换得到边缘直线。一个边缘直线是由一系列离散的点所组成。假设点集为p=(
其中
其中
s8)最小二乘法拟合直线:
将s7)得到的直线方程计算转换为一般直线方程:
ax+by+c=0
其中
分别计算边缘点到直线的距离:
设定距离门限值
将所有有效点进行拟合,最终得到直线方程:
ax+by+c=0。
与现有技术相比,本发明能够有效的避免提取到多条线的边缘。使用一种限制角度范围的霍夫变换方法提高霍夫变换的速度,根据霍夫变换的粗略定位到的直线,去除无效点,使用最小二乘法精确定位直线的位置。
以上所述的仅是本发明的一些实施方式。对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。