视觉检测中,直线的宽度很好检测,即两条平行线的垂直距离,而曲线的宽度检测则需要另辟蹊径。

检测图像中曲线边缘的宽度,用以判断边缘是否崩缺,总结如下五种方法:

1.图像匹配判断

概述:建立标准图像参考,通过比对检测结果。

核心算子:

(1)参考:align_bead;

(2)检测:apply_bead_inspection_model;

参考Halcon例程:apply_bead_inspection_model.hdev。

该方法较适用于胶水检测,因为无法方便地获取崩缺的值,因而弃用,但具有参考价值,建议学习。

2.点到轮廓的距离

概述:通过二值化提取Border(边缘),提取其中一条边缘的点阵,计算该点阵的所有点到另一条边缘的距离。

核心算子:

(1)获取边缘上的点阵:get_contour_xld(Contour : : : Row, Col);

(2)计算点阵到边缘的距离:distance_pc(Contour : : Row, Column : DistanceMin, DistanceMax)

参考Halcon例程:distance_pc.hdev。

参考代码:

*二值化找Border
threshold_sub_pix(ImageReducedM1,Border, 130)
count_obj(Border,Number)
*创建数组,按长度拍排序Border
LengthTuple:=[]
for i:=1 to Number by 1
select_obj (Border, ObjectSelected, i)
length_xld(ObjectSelected,length)
LengthTuple:=[LengthTuple,length]
endfor
tuple_sort_index(LengthTuple,Indices)
*找出两条最长的轮廓
if(|Indices|>1)
select_obj(Border,MaxXLD,Indices[|Indices|-1]+1)
select_obj(Border,NextXLD,Indices[|Indices|-1-1]+1)
else
return()
endif
*获取最长轮廓的点阵
get_contour_xld(MaxXLD, Rows1, Columns1)
*计算点阵到另一个轮廓的距离
distance_pc(NextXLD,Rows1, Columns1, DistanceMin, DistanceMax)

注意:算子 distance_pc 输出两个数组,分别为最小距离数组,最大距离数组,取值时应取最小距离数组。

3.轮廓与轮廓的距离

概述:通过二值化提取一对Contours(轮廓),计算两条轮廓之间的距离。

核心算子:

(1)计算轮廓之间的距离:distance_contours_xld(ContourFrom, ContourTo : ContourOut : Mode : );

(2)获取宽度值集合:get_contour_attrib_xld(Contour : : Name : Attrib);

(3)提取OK/NG片段:segment_contour_attrib_xld(Contour : ContourPart : Attribute, Operation, Min, Max : )

参考Halcon例程:

(1)inspect_frame_width.hdev;

(2)Apply_distance_transform_xld.hdev。

参考代码:

*测量两条曲线之间的宽度
distance_contours_xld (MaxXLD, NextXLD, ContourOut, 'point_to_segment')
get_contour_attrib_xld (ContourOut, 'distance', Distance)
*提取测量宽度集中合规的部分
segment_contour_attrib_xld (ContourOut, ContourPart, 'distance', 'and', 10, 26)
display_result (MaxXLD, NextXLD, ContourPart)
*取最大值
tuple_max (Distance, WidthMax)
tuple_min (Distance, WidthMin)

4.提取骨架测量宽度

概述:提取曲线的中心骨架,再通过骨架测量曲线宽度。

核心算子:

(1)计算lines_gauss算子所需输入参数:calculate_lines_gauss_parameters( : : MaxLineWidth, Contrast : Sigma, Low, High);

(2)检测骨架及其宽度:lines_gauss(Image : Lines : Sigma, Low, High, LightDark, ExtractWidth, LineModel, CompleteJunctions : )。

参考Halcon例程:

(1)angio.hdev;

(2)lines_gauss.hdev。

5.极坐标展开曲线图像

概述:将曲线图像按极坐标展开,检测展开后的图像,再将结果图像恢复直角坐标图像。

核心算子:

(1)图像转极坐标:polar_trans_image;

(2)图像转直角坐标:polar_trans_region_inv。

参考Halcon例程:

(1)ocr_cd_print_polar_trans.hdev;

(2)vessel.hdev。

Halcon · 曲线宽度检测算法总结的更多相关文章

  1. 如何使用 pytorch 实现 SSD 目标检测算法

    前言 SSD 的全称是 Single Shot MultiBox Detector,它和 YOLO 一样,是 One-Stage 目标检测算法中的一种.由于是单阶段的算法,不需要产生所谓的候选区域,所 ...

  2. 目标检测算法YOLO算法介绍

    YOLO算法(You Only Look Once) 比如你输入图像是100x100,然后在图像上放一个网络,为了方便讲述,此处使用3x3网格,实际实现时会用更精细的网格(如19x19).基本思想是, ...

  3. 目标检测算法(1)目标检测中的问题描述和R-CNN算法

    目标检测(object detection)是计算机视觉中非常具有挑战性的一项工作,一方面它是其他很多后续视觉任务的基础,另一方面目标检测不仅需要预测区域,还要进行分类,因此问题更加复杂.最近的5年使 ...

  4. 基于mindwave脑电波进行疲劳检测算法的设计(5)

    时隔两个多月了,前段时间在弄Socket,就没有弄这个了.现在好了,花了几天的时间,终于又完成了一小部分了.这一小节主要讲α,β,δ,θ等等波段之间的关系.废话不多说,直接给出这几天的成果. 上一次, ...

  5. 目标反射回波检测算法及其FPGA实现 之二:互相关/卷积/FIR电路的实现

    目标反射回波检测算法及其FPGA实现之二: 互相关/卷积/FIR电路的实现 前段时间,接触了一个声呐目标反射回波检测的项目.声呐接收机要实现的核心功能是在含有大量噪声的反射回波中,识别出发射机发出的激 ...

  6. 论文笔记:目标检测算法(R-CNN,Fast R-CNN,Faster R-CNN,FPN,YOLOv1-v3)

    R-CNN(Region-based CNN) motivation:之前的视觉任务大多数考虑使用SIFT和HOG特征,而近年来CNN和ImageNet的出现使得图像分类问题取得重大突破,那么这方面的 ...

  7. 基于候选区域的深度学习目标检测算法R-CNN,Fast R-CNN,Faster R-CNN

    参考文献 [1]Rich feature hierarchies for accurate object detection and semantic segmentation [2]Fast R-C ...

  8. 基于深度学习的目标检测算法:SSD——常见的目标检测算法

    from:https://blog.csdn.net/u013989576/article/details/73439202 问题引入: 目前,常见的目标检测算法,如Faster R-CNN,存在着速 ...

  9. DDos攻击的一些领域知识——(流量模型针对稳定业务比较有效)不稳定业务采用流量成本的检测算法,攻击发生的时候网络中各个协议的占比发生了明显的变化

    在过去,很多防火墙对于DDoS攻击的检测一般是基于一个预先设定的流量阈值,超过一定的阈值,则会产生告警事件,做的细一些的可能会针对不同的流量特征设置不同的告警曲线,这样当某种攻击突然出现的时候,比如S ...

随机推荐

  1. Logistic regression中regularization失败的解决方法探索(文末附解决后code)

    在matlab中做Regularized logistic regression 原理: 我的代码: function [J, grad] = costFunctionReg(theta, X, y, ...

  2. 《手把手教你》系列基础篇(九十一)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-下篇(详解教程)

    1.简介 为了方便查看和归档:(1)不同包的日志可能要放到不同的文件中,如service层和dao层的日志:(2)不同日志级别:调试.信息.警告和错误等也要分文件输出.所以宏哥今天主要介绍和分享的是: ...

  3. A标签上使用onclick事件,js函数响应成功,单会刷新当前页面陷阱

    BEGIN; 最近在做html页面时,有时候会遇到以前没遇到的各种奇葩问题. 目前要记载的,就是其中之一. 我们在写链接的时候,即A标签,最普通的写法无非是 <a href='http://ww ...

  4. selenium模块跳过用户名密码验证码输入,加载浏览器标签和cookie,进行翻页爬虫多页动态加载的数据(js)

    能解决登陆一次后,之后不需要二次登陆的动态加载数据,网页保存的cookie和标签,加入到selenium自动化测试浏览器中 1 from selenium import webdriver 2 imp ...

  5. 十分钟学会Golang开发gRPC服务

    gRPC是Google发起的一个开源RPC框架,使用HTTP/2传输协议,使用Protocol Buffers编码协议,相比RESTful框架的程序性能提高不少,而且当前流行的编程语言基本都已经支持. ...

  6. MKL库奇异值分解(LAPACKE_dgesvd)

    对任意一个\(m\times n\)的实矩阵,总可以按照SVD算法对其进行分解.即: \[A = U\Sigma V^T \] 其中\(U.V\)分别为\(m\times m.n\times n\)的 ...

  7. InnoDB数据存储结构

    MySQL服务器上 存储引擎 负责对表中数据的读取和写入工作,不同存储引擎中 存放的格式 一般是不同的,甚至有的存储引擎(Memory)不用磁盘来存储数据. 页 (Page) 是磁盘和内存之间交互的基 ...

  8. css实现气泡提示框三角及css中drop-shadow的使用

    css 做一个弹出气泡,样式怎么设计? 难点: 要实现白色三角型,可以在伪元素before和after上设置一个黑.一个白三角形,白三角形会挡住黑的,从而实现. &::before, & ...

  9. clientWidth、offsetWidth、scrollWidth……

    1.元素视图属性 clientWidth:元素内容可视区宽度(水平方向 width + 左右 padding). clientHeight:元素内容可视高度(垂直方向 height + 上下paddi ...

  10. html单页面通过cdn引入element-ui组件样式不显示问题

    html单页面通过cdn引入element-ui组件样式不显示问题 必须先引入vue,再通过cdn引入element,否则element-ui组件与样式无效. <!DOCTYPE html> ...