Halcon算子——2D几何变换

齐次坐标

介绍仿射变换前,先介绍什么是齐次坐标。对于一个平面像素点,我们可以通过坐标(x,y)描述其位置。但是当涉及平移时,如果仅仅使用它对应的坐标向量[x,y],就必须通过向量加法来描述其位移。 而齐次坐标的引入就是为了统一在变化过程中的操作,我们希望能够通过一个 Pt=TP0,这样一个乘法公式去统一描述对像素点的平移和旋转操作。
image

齐次坐标是一种用N+1维向量表示N维空间点的方法。在二维空间下,其标准形式为[x,y,1]。对于一个点,我们直接在最后补上一个1,就转换成了齐次坐标。计算后如果得到的向量为[x1,y1,w],通过转后即可得到正确的坐标[x1/w,y1/w,1]
引入其次坐标后,该平移操作可以表示为
image

旋转

此处,简要介绍在齐次坐标下如何描述旋转操作。公式可以自己推导以下,利用已知角的三角函数和坐标值计算旋转后的点坐标。
image

缩放

当放大时a>1,当缩小时0<a<1。放大后的图像,就相当于把原来的点扩大了多份。
image

几何变换

image

相似变换

image
相似变换中,缩放必须为等比例的缩放。

仿射变换

image
仿射变换只保证直线不发生弯曲以及平行线变换后仍然是平行线,因此物体可能会发生形变(变换后两条直线夹角不同)。
image
下面是几种仿射变换的类型。Identity对应的就是不发生任何变换,在Halcon我们也是使用hom_mat2d_identity,算子去创建一个空的2D变换齐次矩阵的。
image

切变

图像向某一方向倾斜。
image

镜像

实际上就是旋转
image

投影变换(单应性变换)

image
投影变换就是将三维物体,映射到二维平面的变换过程。在机器视觉中,主要针对的是第一种投影方式。
image

定义

image
左侧的图像中某一个像素点,能够通过某种变换过程,映射到右侧图像中的唯一一个点。这个变换过程可以用一个一个矩阵表示。
image

投影矩阵的含义

image
既然仿射矩阵是投影变换的特殊形式,那么两者的变换矩阵中,相同的部分实际上作用是一致的。A用于控制图形变换的缩放和旋转,T控制图形的平移。对于V和S在投影变换中有其对应的意义。
image

投影矩阵计算方法

在投影变换矩阵中,对于一个变换矩阵H而言,其与aH(a!=0),的变换效果是一致的。计算可知H矩阵的自由度为8。这也说明我们需要计算8个未知数(不包括S),才能得出该矩阵。
image
对于其计算过程如下所示。
image
image

如何获取图像中对应的4对点

实现投影变换,我们至少要在图像中分别获取4组点。那么如何获取到对应的点,从而实现两个视角下图像的转换呢。
常规的方法是使用棋盘格进行计算。
图像校正:将一张棋盘格图像贴在物体表面,提取平面上棋盘格的4个角点。保持棋盘格不变,移动相机拍摄另一个视角下棋盘格的图像,并提取该视角下的4个角点。从而得到4组点。
视角变换:我们分别在不同视角下放置一个相同的棋盘格,然后去提取其对应的4个角点的坐标信息。这样就成功得到了4组点,从而求解变换矩阵。

应用

image
image
image

Halcon中使用仿射变换

其他参数很好理解,对于最后一个参数就是是否自适应调整图像的大小,防止变换后的图像显示不全等。
image

Halcon中使用投影变换

使用该算子生成投影变换矩阵,至少需要传入4个点。其中Pw就是对应的齐次坐标的s值,通常全部传入1即可(该值并不会影响变换过程)。
image

posted @ 2025-09-27 15:37  Ytytyty  阅读(94)  评论(0)    收藏  举报