Halcon 2D仿射变换相关算子总结(1)

1. Halcon中的坐标系介绍

1.1Halcon标准坐标系

原点位于左上角像素中心。图像左上角坐标为(-0.5,-0.5)。

(1)像素精度坐标系

将图像视为离散网格,使用整数值来表示图像点的位置。

对于大小为height * width = m * n的图像,行列坐标范围分别为0~m-1,0~n-1。

(2)亚像素精度坐标系

使用浮点数来表示图像点的位置。

1.2Halcon非标准笛卡尔坐标系

原点位于左上角像素角落。图像左上角坐标为(0,0)。图像左上角像素中心角坐标为(0.5,0.5)。

为何要引入此坐标系?

(1)我们期望,当图像旋转90度时,2张图像的边缘邻接但不重合。此外,当图像缩放时,我们也期望图像不要出现负坐标。

(2)Halcon中,某些算子的输入坐标可能来自不同的坐标系。一方面,算子期望输入参数来自通常的标准坐标系;另一方面,对于仿射变换矩阵HomMat2D,算子期望具有边中心坐标的上述优势。

对于这些算子,首先将输入坐标从标准坐标系转换到边缘中心坐标系,使用HomMat2D变换后,再回到标准坐标系。

转换代码如下:

hom_mat2d_translate(HomMat2D, 0.5, 0.5, HomMat2DTmp)
hom_mat2d_translate_local(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)

即,上述代码可将对象从标准坐标系转换到边缘中心坐标系。并且,两者代表相同的变换。

1.3全局坐标系与局部坐标系

算子hom_mat2d_translate()与hom_mat2d_translate_local()的区别在于,两者执行变换时基于的坐标系不同,分别为全局和局部坐标系。

2. 2D仿射变换介绍

仿射变换可以保持原来的线共点、点共线的关系不变。

除了刚性变换,其他不能保持原来的线段长度和夹角角度不变。

2.1仿射变换类型

平移、旋转、缩放、反射、斜切。

2.2主要流程

(1)通过模板匹配或Blob分析等方法,获取特征点坐标和角度。

(2)生成仿射变换矩阵。

(3)对图像、区域、轮廓执行仿射变换。

3. 仿射变换矩阵的生成

3.1 由特征点和角度生成仿射变换矩阵

vector_angle_to_rigid(::Row1,Column1,Angle1,Row2,Column2,Angle2:HomMat2D)

这个算子常用于模板匹配过程中,构建模板图像与模板实例间的刚性仿射变换。

3.2 由多个特征点生成仿射变换矩阵

3.2.1各种变换的未知量个数

(1)平移:T = (Tx, Ty)

hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)

未知量个数2:x和y方向的平移。

(2)旋转:

hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)

未知量个数1:旋转角度\varphi

(3)缩放:S = (Sx, Sy)

hom_mat2d_scale( : : HomMat2D, Sx, Sy, Px, Py : HomMat2DScale)

未知量个数2:x和y方向的缩放系数(Sx != Sy)。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值