Halcon例程分析6:圆弧测量工具

*  Example for the application of the measure package
* including a lot of visualization operators
* 
*读取图像
read_image (Zeiss1, 'zeiss1')
get_image_size (Zeiss1, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width / 2, Height / 2, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
*显示图像
dev_display (Zeiss1)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
*在图像上相应位置绘制圆,这里用固定变量的方法产生圆的参数,把这个圆绘制代码注释掉了。这个圆用于后面的测量工具上
* draw_circle (WindowHandle, Row, Column, Radius)
*定义变量用于生成圆,如果手动绘制就不需要用下面的变量了
Row := 275
Column := 335
Radius := 107
AngleStart := -rad(55)
AngleExtent := rad(170)
dev_set_draw ('fill')
dev_set_color ('green')
dev_set_line_width (1)
*获取圆弧的起始坐标
get_points_ellipse (AngleStart + AngleExtent, Row, Column, 0, Radius, Radius, RowPoint, ColPoint)
*显示圆弧
disp_arc (WindowHandle, Row, Column, AngleExtent, RowPoint, ColPoint)
dev_set_line_width (3)
*生成圆弧测量工具
*前五个参数是圆弧的位置相关输入参数
*第六个参数是需要生成的测量圆弧工具的宽度,即一个圆弧区域的宽度,在这里整个测量区域是半径-10到半径+10这个区域范围
*第七第八个参数是图像宽高
*第九个参数是插值方式,这里是用最近邻插值方式
*最后一个输出参数是测量工具的句柄,后面需要用到这个测量工具都通过句柄引用
gen_measure_arc (Row, Column, Radius, AngleStart, AngleExtent, 10, Width, Height, 'nearest_neighbor', MeasureHandle)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
*计算算法时间
count_seconds (Seconds1)
n := 10
for i := 1 to n by 1
    *第一个参数是输入图像
    *第二个参数是测量工具句柄值
    *第三个参数是高斯平滑的sigma值
    *第四个参数是阈值
    *第五个参数是测量的边缘方向选择参数,'all'是选择所有的边缘,'negative'只选择白到黑的边缘,'positive'只选择黑到白的边缘
    *这里两个边缘都选择总共选择出4个像素差值边缘
    *第六个参数是是否选择端点,这里选择所有端点
    *第七个参数是输出的边缘点行坐标值
    *第八个参数是输出的边缘点列坐标值
    *第九个参数是输出的边缘点最大幅值
    *第十个参数是输出的相邻边缘之间的距离
    measure_pos (Zeiss1, MeasureHandle, 1, 10, 'all', 'all', RowEdge, ColumnEdge, Amplitude, Distance)
endfor
count_seconds (Seconds2)
Time := (Seconds2 - Seconds1) / n
disp_continue_message (WindowHandle, 'black', 'true')
* stop ()
*计算两个点间的距离
distance_pp (RowEdge[1], ColumnEdge[1], RowEdge[2], ColumnEdge[2], IntermedDist)
* dev_display (Zeiss1)
dev_set_color ('red')
* disp_circle (WindowHandle, RowEdge, ColumnEdge, RowEdge - RowEdge + 1)
*显示测量出来的直线
disp_line (WindowHandle, RowEdge[1], ColumnEdge[1], RowEdge[2], ColumnEdge[2])
dev_set_color ('yellow')
disp_message (WindowHandle, 'Distance: ' + IntermedDist, 'image', 250, 80, 'yellow', 'false')
* dump_window (WindowHandle, 'tiff_rgb', 'C:\\Temp\\zeiss_result')
dev_set_line_width (1)
* disp_continue_message (WindowHandle, 'black', 'true')
stop ()
dev_clear_window ()

打开halcon,按下ctrl+e打开halcon自带例程。工业领域->机械行业->measure_arc.hdev

这个例程是用圆弧测量工具测量圆弧的长度,较短的一段圆弧可以大约等长与直线,但大圆弧是不能等长于直线的,比如历程中两个凹坑处的圆弧长度这里同样是可以测量出来的。

圆弧测量的原理与矩形测量的原理是一样的,把圆弧区域用插值的方式转换到矩形区域空间,在矩形主方向上做灰度值差分,得到差分图像,找出差分值大于设定阈值的点位置。

待测量图像

圆弧长度测量效果图

 

 

  • 1
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Halcon中,有几种方法可以进行圆弧检测。其中一种方法是使用暴力拟合法。这种方法通过在图像中找到一定数量的圆弧点对,并利用这些点来拟合出圆弧的参数,从而得到圆弧的特征。 另一种方法是使用Halcon提供的hough_circles算子。这个算子可以通过对图像进行Hough变换,来检测圆弧。在使用hough_circles算子时,可以通过设置参数,例如半径和百分比,来控制检测到的圆弧的大小和准确性。 通过应用Halcon中的hough_circles算子,可以得到检测到的圆弧的圆心位置。需要注意的是,由于像素的限制,得到的圆心位置可能不是非常精确。 综上所述,Halcon提供了多种方法来进行圆弧检测,包括暴力拟合法和hough_circles算子。这些方法可以根据具体的需求来选择使用,以达到准确检测圆弧的目的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Halcon找圆系列(1)如何检测圆形](https://blog.csdn.net/libaineu2004/article/details/100338297)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Halcon实例之hough变换检测圆](https://blog.csdn.net/horsee/article/details/123387889)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

究极调参工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值