Halcon标准坐标和以边为中心坐标

标准坐标在这里插入图片描述

按照文档解释:此坐标是halcon标准坐标系,又叫图像坐标系,原点位于图像左上角第一个像素的中间,属于亚像素精确坐标。使用row,column表示位置

以边为中心

在这里插入图片描述

按照文档解释:此坐标是halcon以边为中心标系,原点位于图像左上角第一个像素的左上角,属于亚像素精确坐标。使用x,y表示位置
由此很明显的可以知道两个坐标系相差0.5个像素点

使用以边为中心坐标系的算子


翻译过来的意思是:
在HALCON中,算子运行在不同的坐标系统中。一方面,对象被期望在它运行在标准坐标中。另一方面,对于HomMat2D变换矩阵,算子需要具有上述变换优势的边缘中心坐标
所以我觉得除了以边为中心坐标的算子,其他的算子应该都是标准坐标(个人见解)

使用以边为中心坐标系的算子

在这里插入图片描述
如上算子是采用边为中心坐标系的算子,如果使用这些算子就行变换,将会以边为中心坐标系进行。

在这里插入图片描述
同时,模板匹配也是运行在边为中心的坐标中,但是输出的原点坐标是已经转换为标准坐标的,可以直接使用affine_trans_contour_xld等算子进行变换而不会产生误差

会产生什么后果?

比如你使用area_center_xld算子求出xld重心点坐标,实际这个重心是标准坐标系下的坐标
然后你把它使用affine_trans_contour_xld进行重心点旋转,这个时候你会发现两个区域并不重合,
原因就是使用了两个不同坐标系导致的,怎么解决呢?

HomMat2dTranslate(HomMat2D, 0.5, 0.5, HomMat2DTmp)
HomMat2dTranslateLocal(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)
AffineTransContourXld(Contours, ContoursAffineTrans, HomMat2DAdapted)

如上代码所示进行补偿,经过affine_trans_contour_xld转换的坐标是边中心坐标,让其添加补偿后变为标准坐标
注意:只有当出现旋转时才会导致这种情况

affine_trans_pixel

该算子使用的是边中心坐标,只要涉及了旋转,算出的值就会导致其与标准坐标有误差

affine_trans_point_2d

该算子使用的是标准坐标,通常使用在手眼标定上
比如相机图像上的标准坐标转换为设备上的X,Y
而且根据文档所说,只要你保证所有操作都在一个坐标系上进行,那么affine_trans_point_2d实际可以运行在标准坐标和边中心坐标上的
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值