Halcon入门笔记-(3)仿射变换

一开始看到“仿射”这个名词时,我并不明白什么意思,后来通过例子明白其实仿射变换和透视变换更直观的叫法可以叫做“平面变换”和“空间变换”或者“二维坐标变换”和“三维坐标变换”。

定义:仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。

仿射变换能够保持图像的“平直性”,包括旋转,缩放,平移,错切操作。一般而言,仿射变换矩阵为2*3的矩阵,第三列的元素起着平移的作用,前面两列的数字对角线上是缩放,其余为旋转或者错切的作用。
对应数学表达式为:


对应的齐次坐标矩阵表示形式为:
在这里插入图片描述

其中A为变换后坐标矩阵,C为原始坐标矩阵,B是仿射变换矩阵,有6个未知量,假设目标图形以(x , y
)为轴心顺时针旋转θ弧度到目标图像,则变换矩阵对应的变量为:
所以前两列的4个未知量a,b,d,e是起到旋转的作用,第三列的2个未知量c,f起到了平移的作用。仿射变换的方程组有6个未知数,所以要求解就需要找到3组映射点,三个点刚好确定一个平面。

关于仿射变换(二维)与透视变换(三维):从另一个角度也能说明三维变换和二维变换的意思,仿射变换的方程组有6个未知数,所以要求解就需要找到3组映射点,三个点刚好确定一个平面。透视变换的方程组有8个未知数,所以要求解就需要找到4组映射点,四个点就刚好确定了一个三维空间。
仿射变换的类型如下图:在这里插入图片描述
Halcon中进行仿射变换的常见步骤如下:

① 通过hom_mat2d_identity算子创建一个初始化矩阵(即**[1.0, 0.0, 0.0, 0.0, 1.0, 0.0]**);

② 在初始化矩阵的基础上,使用hom_mat2d_translate(平移)、hom_mat2d_rotate(旋转)、hom_mat2d_scale(缩放)等生成仿射变换矩阵;(这几个算子可以叠加或者重复使用)

③ 根据生成的变换矩阵执行仿射变换,执行仿射变换的算子通常有:affine_trans_imageaffine_trans_regionaffine_trans_contour_xld,即不管对于图像、区域、XLD都可以执行仿射变换。

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)

*画矩形区域
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
*生成矩形
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
*区域裁剪
reduce_domain (Image, Rectangle, ImageReduced)

*中心求取
area_center (Rectangle, Area, Row, Column)
*角度转换为弧度
tuple_rad (-45, Rad)

*放射矩阵计算
vector_angle_to_rigid (Row, Column, 0, Row, Column+50, Rad, HomMat2D)

*图像旋转
affine_trans_image (ImageReduced, ImageAffineTrans, HomMat2D, 'constant', 'false')
*应用于区域
affine_trans_region (Rectangle, RegionAffineTrans, HomMat2D, 'nearest_neighbor')

*直接定义旋转
hom_mat2d_identity (H1)
area_center (Image, Area1, Row3, Column3)
hom_mat2d_rotate (H1,Rad, Column, Row, HomMat2DRotate)
affine_trans_image (ImageReduced, ImageAffineTrans1, HomMat2DRotate, 'constant', 'false')

参考文献:
图像的仿射变换原理及python实现
Halcon二维仿射变换实例探究
学习笔记 3 — 图像仿射变换详解【含实例和代码解析】
图像处理的仿射变换与透视变换
书籍:数字图像处理的MATLAB实现(第二版)
代码参考视频教程:Halcon机器视觉教程-图像仿射变换

原创文章 30 获赞 17 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_32939413/article/details/104091887