Halcon学习(27-2)halcon测量技术:找线

halcon测量的第一步,就是找边。边找精准了,计算两边的距离才可能精准。

由于物料的管控不可能做到每片抽检,或者根本不被管控。这就要求我的抓边效果能最大化适合各种可能性。

下面的程序使用鼠标确定测量框,根据设定参数拟合出一条质量可调的XLD线条。


image.png

图1  鼠标绘制测量框


image.png

图2  拟合完成的线条,这个例子由50个点拟合出XLD线条。十字点起标识点的作用。



找线方法调用代码:

fpath:='C:/Users/Administrator/Desktop/2018资料/分类器研究'
*www.skcircle.com  by 勇哥(很想停止)
*QQ:496103864  微信:abc496103864
* Code generated by Image Acquisition 01
list_files (fpath, ['files','follow_links','recursive'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima)$','ignore_case'], ImageFiles)
dev_close_window()

for Index := 0 to |ImageFiles| - 1 by 1
    read_image (Image, ImageFiles[Index])
    dev_open_window_fit_image(Image, 0, 0, -1, -1, WindowHandle)
    dev_display(Image)
    *鼠标绘制测量矩形框
    draw_rectangle2_mod (WindowHandle, 60, 60, rad(0), 100, 50, Row, Column, Phi, Length1, Length2)
    Row := Row
    Col := Column
    Phi1 := Phi
    Length1 := Length1
    Length2 := Length2
    thresold := 40
    sigma := 1.0
    roiWidth := 60
    transition := 'all'
    select := 'all'
    p_number :=50
    level := 3
    
    param:=[]
    tuple_concat(Row, param, param)
    tuple_concat(Col, param, param)
    tuple_concat(Phi1, param, param)
    tuple_concat(Length1, param, param)
    tuple_concat(Length2, param, param)
    tuple_concat(thresold, param, param)
    tuple_concat(sigma, param, param)
    tuple_concat(roiWidth, param, param)
    tuple_concat(transition, param, param)
    tuple_concat(select, param, param)
    tuple_concat(p_number, param, param)
    tuple_concat(level, param, param)
    tuple_inverse(param, Inverted)
    find_line(Image, object, Inverted, outValue, message, error)
    
    break
endfor


找线方法代码:

支付2元或购买VIP会员后,才能查看本内容!立即支付升级会员查询订单


gen_measure_rectangle2 矩形测量句柄

gen_measure_rectangle2通常是配合算子measure_pos使用,定义如下:

gen_measure_rectangle2( : : Row, Column, Phi, Length1, Length2, Width, Height, Interpolation : MeasureHandle)

产生测量矩形句柄,控制输入为测量矩形范围的坐标中心,矩形长轴和水平方向夹角范围的弧度,矩形边长的一半,测量图片的宽和高度,输出为测量句柄。

Row, Column是矩形的中心
Length1, Length2是矩形区域的长和宽的一半,关于区域的宽度,尽量在包住边缘的同时设置的越大越好,因为设置的太小噪声太大
Phi是Rectangle旋转的角度,当为正时表示逆时针旋转,当为负时表示顺时针旋转
如果想看ROI是否合适可以利用gen_rectangle1查看
Interpolation表示插值的方法,因为当ROI不是垂直或者水平的话,那么他的Projection(下图中短的等距线)经过的就不是一个完整的像素,因为要计算它的平均值给Profile。它的值就需要插值。

image.png


measure_pos  取一对边缘线条的距离和中心点xy坐标

定义为:

measure_pos(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdge, ColumnEdge, Amplitude, Distance) 


Sigma表示高斯滤波的参数,高斯滤波的是对Profile形成的曲线,Threshold是对他的一阶导数设置的阈值

Transition = ‘negative’时表示由像素值高转到低像素值的边缘放在RowEdgeFirst中,这里有一个参考方向,就是Rectangle旋转角度为0时,从左到右的方向。另一解释:沿主轴方向dark-to-light定义为第一类边缘,反之为第二类边缘。
RowEdge:边的中心行坐标

ColumnEdge :边的中心列坐标

Distance: 表示的是边缘组之间的距离


fit_line_contour_xld 拟合线条


fit_line_contour_xld( Contours : : Algorithm, MaxNumPoints, ClippingEndPoints, Iterations, ClippingFactor : RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist )


函数作用:


对一些线段的XLD做近似计算直线计算

对于参数Algorithm中的一些类型解释如下:

regression:回归,标准的最小二乘法拟合

huber:加权的最小二乘法拟合,异常值的影响被减小基于Huber方法

tukey:加权的最小二乘法拟合,异常值的影响被减小基于Tukey方法

drop:加权的最小二乘法拟合,异常值的影响被消除

gauss:加权的最小二乘法拟合,异常值的影响被减小基于最逼近线上的所有其轮廓点的平均值和距离标准方差


ClippingFactor控制被弱化的异常值个数,值越小,越多异常值被检测到。

最小拟合一条线的必要轮廓点个数是2,因此,一条轮廓线点个数至少是2+2*ClippingEndPoints


参数列表:

Contours(in):输入轮廓

Algorithm(in):形成线的算法

MaxNumPoints(in):用于计算的最大轮廓点个数

ClippingEndPoints(in):在逼近过程中被忽略的开始及末尾点个数

Iterations(in):迭代的最大次数

ClippingFactor(in):消除异常值的裁剪因子

RowBegin(out):线段开始点的行坐标

ColBegin(out):线段开始的列坐标

RowEnd(out):线段结尾的行坐标

ColEnd(out):线段结尾的列坐标

Nr(out):线参数:法向量的行坐标

Nc(out):法向量的列坐标

Dist(out):原点到该线的距离



可能前置项:

gen_contours_skeleton_xld, lines_gauss, lines_facet, edges_sub_pix, smooth_contours_xld


可能后置项:

disp_line, select_lines, line_orientation


可替代项:

regress_contours_xld, get_regress_params_xld


gen_contour_polygon_xld 根据多边形构建XLD

gen_contour_polygon_xld( : Contour : Row, Col : ) 

功能:根据一个多边形(polygon)(以元组形式给出)创建一个XLD轮廓(contour)。



2019/7/25 勇哥注:

下面是勇哥写的一段找线演示代码,可以参考下面的贴子。

带ROI跟随的找边测试代码(halcon代码演示)



--------------------- 

作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!


本站其它的视觉相关的贴子见:本站视觉相关教程整理贴子,持续更新


===========================================================

halocn基础系列教程列表:


Halcon学习(27-2)halcon测量技术:找线

Halcon学习(27-1)halcon测量技术:亚像素,亚像素精度

Halcon学习(26)dev_get_preferences的用法

Halcon学习(25)if、switch和try

Halcon学习(24)总结(1)

Halcon学习 (22-2) 标定助手

Halcon学习(22)摄像机标定(函数详解)

Halcon学习(21)摄像机标定常用函数(2)

Halcon学习(20)摄像机标定常用函数(1)

Halcon学习(19)标定文件的生成

Halcon学习(18)如何制作标定板

Halcon学习(17)标定板的规格

Halcon学习(16)函数调用

Halcon学习(15)角点检测

Halcon学习(14)绘图

Halcon学习(13)参数和数据结构

Halcon学习(11)边缘检测

Halcon学习(9)两幅图像之间处理

Halcon学习(8)文本操作

Halcon学习(7)图像中显示文字

Halcon学习(6)计数与排序

Halcon学习(5)获取特征点

Halcon学习(4-7)Region相关的算子

Halcon学习(4-6)Region处理:动态阈值,分水岭

Halcon学习(4-5)Region处理:合并区域,扩大和缩小区域,取区域特征值

Halcon学习(4-4)Region处理: 区域相减,区域求补集

Halcon学习(4-3)Region处理:区域连通

Halcon学习(4-2)Region处理:选择区域,分割图像

Halcon学习(4-1)ROI感兴趣区域,reduce_domain和crop_domain,鼠标绘制区域

Halcon学习(3)赋值与数组操作

Halcon学习(2)图像获取与相关参数

Halcon学习(1)读取多张图片


视觉检测之产品瑕疵检测


视觉检测之产品瑕疵检测(1)污点检测

视觉检测之产品瑕疵检测(2)金属表面疤痕

视觉检测之产品瑕疵检测(3)赃污检测

视觉检测之产品瑕疵检测(4)表面划痕


视觉检测之焊点检测


视觉检测之焊点检测(五):动态定位焊点区域ROI续

视觉检测之焊点检测(六):过滤非焊点区域的方法总结

 视觉检测之焊点检测(四):动态定位焊点区域ROI

视觉检测之焊点检测(三):从干扰背景中提取焊点

视觉检测之焊点检测(二):基于形态学的基础焊点检测方法

视觉检测之焊点检测(一):客户需求和焊点检测工艺要求


模板匹配/仿射变换


halcon之屌炸天的变形匹配(1)

Halcon二维仿射变换实例探究

Halcon中模板匹配方法的总结归纳

Halcon之NCC模板扫盲贴

HALCON形状模板匹配shape_model经验及例子

halcon模板匹配,创建模板的总结

Halcon视觉检测——基于灰度的模板匹配

halcon模板匹配 scaled_shape_model模板的另一个例子

Halcon二维仿射变换实例探究

Halcon中两种实现旋转的方法rotate_image和affine_trans_image

halcon的 shape_model模板匹配的算子使用流程的总结

find_shape_mode参数详解及时长优化

halcon的三种模板匹配方法总结

Halcon基于形状特征的模板匹配


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
  • 评论列表:
  •  访客
     发布于 2018-11-01 14:41:53  回复该评论
  • 勇哥您好是否有完整的source code可供參考學習
  •  菜腿567
     发布于 2022-08-09 19:36:13  回复该评论
  • 勇哥,关于这个上面的find_line里面相关的函数可以给一下吗
  •  codelong
     发布于 2022-10-10 16:13:54  回复该评论
  • 勇哥,find_line的函数可以分享一下吗?code_long@yeah.net
    •  一心一意
       发布于 2023-02-16 11:46:01  回复该评论
    • 有拿到find_line这个算子吗?麻烦分享下525970726@qq.com

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864