halcon显示坐标_halcon 圆环类缺陷检测的一种方法(极坐标变换法)

点击上方“新机器视觉”,选择加"星标"或“置顶”

重磅干货,第一时间送达df8c37d92ddef2b01a7c6e31f127ef94.png

28eadb3ea4f7f1e0b11d65aef9786dd3.png

本文为CSDN博主「小邢同学」的原创文章

原文链接:https://blog.csdn.net/cashmood/java/article/details/1047095

简介

圆环类检测在我们日常的缺陷检测中经常遇到。比如玻璃瓶口的缺陷检测,硬币的缺陷检测,胶垫的缺陷检测…

我们对于圆环检测不像对于矩形等物体的检测,检测区域比较规整,便于我们使用形态学对区域进行筛选,但是圆环物品我们发现会出现一些问题,比如使用矩形形态学会对环形的边界处理产生影响等等。在这种情况下我们可以使用极坐标变换的方法,将环形转换成矩形进而对缺陷进行处理。

极坐标变换

定义

在图像处理中,尤其是在处理环形、圆形图像的过程中,会使用到极坐标变换。将方形图像转换成圆形,即“方转圆”。或者实现圆形转换成方形“圆转方”。

我们把圆形图像转换成方形图像的过程称为图像的极坐标变换;反之则为图像的反极坐标变换

原理

极坐标想必学过高中数学的人都听过,一般的坐标系中用(x, y)值来描述一个点的位置,而在极坐标系中,则使用到原点的距离ρ和夹角θ来描述该点的位置。

首先,正常的图像都是在直角坐标系下的,可以看做一个二维平面。我们要对图像进行坐标变换,首先要把位置转换到新的坐标系,然后将值赋过去。

这里有两个值需要确定:1.位置 2.值。即变换后任一个像素的值与位置。

这里:变幻后的值不变。即求解变幻的位置关系式。

极坐标变换及其反变换的关键在于,根据极坐标变换前的图像确定极坐标变换后的图像上每个像素点的像素值。也即是找到“圆图”和“方图”间几何坐标的对应关系。

证明:

e852b9a399d9fd38d2c0dcd11d9c159b.png

如上图所示,实现极坐标变换的关键即在于找到圆图上任一点P(i,j),在方图上对应的点p(m,n),然后通过插值算法实现圆图上所有像素点的赋值。

方图上,其行列数分别为M、N,方图上的每一列对应为圆图上的每条半径,半径方向存在着一个长度缩放因子delta_r = M/R,圆周方向被分为N等分,即角度因子为delta_t = 2π/N;

圆图上,图像坐标(i,j)和世界坐标(x,y)有着如下变换关系:x = j - R, y = R - i;

那么,图中P点半径长度为r = sqrt(xx + yy),角度theta = arctan(y/x);

圆图上点P在方图上对应行数为r/delta_r;

圆图上点P在方图上对应的列数n = thata/delta_t。

以上就是极坐标变换的基本原理,结合相应的插值算法,即可实现图像的极坐标变换。

Halcon中的极坐标变换

在halcon中极坐标变换算子:

polar_trans_image_ext(针对图像);polar_trans_region(针对区域);polar_trans_contour_xld(针对XLD轮廓)。

在halcon中反极坐标变换算子:

polar_trans_image_inv(针对图像);polar_trans_region_inv(针对区域);polar_trans_contour_xld_inv(针对XLD轮廓)。

1、pola

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值