opencv建立椭圆边缘检测路径(三)——直线路径上的边缘检测

接上节,椭圆路径上的边缘检测实质上就是直线路径上的边缘检测。
1.线路径边缘检测原理
不同于对Mat对象可以用Canny,Sobel等算法进行边缘检测,直线上的边缘检测是单方向的、指定范围、指定宽度(1个像素的宽度)的边缘检测。如果说Canny的Roi是一个矩形,那么线路径的Roi是一条宽度为1像素的线段,所以在某些场景下可以大幅度提高处理速度。
为了形象一下,可以看以下图片(图片出自Adaptive Vision Studio 4.12 Professional,侵删)。
图片出自
在这条橙红色的路径上,找到了三个边缘点,两个强边缘点Point1和Point2,一个弱边缘点Point0。
tip:强边缘点和弱边缘点——按照边缘强度将边缘分为若干个等级。
这三个边缘点都在线段上,也就是说找边缘的运算是限定于线段上的;
橙红色的线是有方向的,也就是说从右到左进行边缘检测。

原理分析:
1)是否存在边缘
在一条线检测路径中,设它经过像素的像素值为
Pixels[Pixel0,Pixel1,Pixel2…Pixeln];设Val为发现边缘的条件为最大像素值减去最小像素值的差值。
Max (Pixels) - Min (Pixels) >Val?存在边缘:不存在边缘;
2)找到边缘
方法一:相邻像素法 ,适用于已知、强烈的边缘,用于定位
边缘点.x = Pixel[i] - Pixel[i + 1] > Val? Pixel[i].x : -10086
边缘点.y = Pixel[i] - Pixel[i + 1] > Val? Pixel[i].y : -10086
方法二:左右像素差值法
abs(Pixel[i - α] - Pixel[i + α] > Val?Pixel[i] : -10086
比如有以下像素值1,3,6,7,则3左右为6和1,差值为5,所以3是最明显的边缘点;6的左右为3和7,差值为4,6是次明显边缘点。

通过以上分析,线检测路径检测边缘可以检出强边缘若边缘,还可以进行筛选,可以检出多个边缘,也可以选择最好(最强的)边缘、第一个边缘、最后一个边缘

在项目实践中,线检测路径检测边缘在定位、识别、缺陷检测中作用举足轻重。

2.线路径边缘检测应用
1)测量
检测到边缘点以后,获得两两个点之间像素距离。
2)缺陷检测
被测物出现裂口时将会在检测路径上产生两个边缘点。
3)定位
在一些被测物集中线性排列的场景,使用线路径检测定位物体相对位置,继而算出物体中心坐标,比模板匹配要快不少

3.源码和示例
以下两个例子在获得了线段中各坐标点(如何获得?见《opencv建立椭圆边缘检测路径(一)——建立一条直线并获得直线上各点坐标》)的前提下,遍历线段中在图像中的映射点,根据图像的灰度特点找图像的边缘点。
1)相邻像素法

		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值