二维几何变换

二维几何变换图像的二维几何变换主要包含 刚性变换 rigidity 相似变换 similarity 仿射变换 affine 三者之间的关系如下图所示 一 齐次坐标 1 什么是齐次坐标 齐次坐标就是用一个 n 1 维向量表示 n 维向量 2

大家好,我是讯享网,很高兴认识大家。

图像的二维几何变换主要包含:刚性变换(rigidity)、相似变换(similarity)、仿射变换(affine)。三者之间的关系如下图所示:


讯享网

一、齐次坐标

1、什么是齐次坐标

齐次坐标就是用一个n+1维向量表示n维向量

2、为什么要引入齐次坐标?

仿射变换是指在向量空间中进行一次线性变换(乘以一个矩阵)和一次平移(加上一个向量),变换到另一个向量空间的过程。对于二维坐标系上的一个点(x,y),经过仿射变换后的点的坐标是(u,v),其数学表达式如下:

                           \small \begin{bmatrix} u\\ v \end{bmatrix}=A\cdot \begin{bmatrix} x\\ y \end{bmatrix}+B,其中    \small A=\begin{bmatrix} a &b \\ d& e \end{bmatrix},       \small B=\begin{bmatrix} c\\ f \end{bmatrix}

缩放和旋转通过矩阵乘法实现,平移通过矩阵加法实现。通常情况下,几何变换不是单一的,一个物体可能涉及平移、旋转、缩放等多个变换,为了减少计算量,可以将多个变换矩阵合并为一个最终变换矩阵M = [ A  B ]。此时几何变换的数学表达式如下:

                                                                \small \begin{bmatrix} u\\ v \end{bmatrix}=M\cdot \begin{bmatrix} x\\ y \end{bmatrix}=\begin{bmatrix} a &b & c\\ d & e & f \end{bmatrix}\cdot \begin{bmatrix} x\\ y \end{bmatrix}

但我们发现,永远也找不到这样的矩阵M,因为上面的等式是不成立的。为了解决这个问题,我们就增加一个维度,也就是构造齐次坐标矩阵,其数学表达式如下:

                                                            \small \begin{bmatrix} u\\ v\\ 1 \end{bmatrix}=\begin{bmatrix} a & b& c\\ d & e &f \\ 0& 0& 1 \end{bmatrix}=\begin{bmatrix} x\\ y\\ 1 \end{bmatrix}

由上式看出仿射变换矩阵有a、b、c、d、e、f六个未知数,因此至少需要六个方程来求解,即需要三个坐标点对。

二、刚性变换

刚性变换最重要的特点就是变换前后目标 任意两点间距离不变,包含平移、旋转、翻转(镜像)三种

1、平移

Halcon中向齐次变换矩阵添加平移分量的算子有以下两个:

(1)相对于全局(即固定)坐标系执行平移

hom_mat2d_translate( : : HomMat2DTxTy : HomMat2DTranslate)

变换矩阵链如下:

\tiny HomMat2DTranslate=\begin{bmatrix} 1 & 0 & Tx\\ 0 & 1 &Ty \\ 0 &0 & 1 \end{bmatrix}\cdot HomMat2D=\begin{bmatrix} 1 & 0 & Tx\\ 0 & 1 &Ty \\ 0 &0 & 1 \end{bmatrix}\cdot \begin{bmatrix} a & b &c \\ d&e &f \\ 0& 0& 1 \end{bmatrix}=\begin{bmatrix} a & b & Tx+c\\ d & e &Ty+f \\ 0 &0 & 1 \end{bmatrix}

(2)相对于局部坐标系(即图像原点,左上角)执行平移

hom_mat2d_translate_local( : : HomMat2DTxTy : HomMat2DTranslate)

变换矩阵链如下:

\tiny HomMat2DTranslate= HomMat2D\cdot\begin{bmatrix} 1 & 0 & Tx\\ 0 & 1 &Ty \\ 0 &0 & 1 \end{bmatrix}= \begin{bmatrix} a & b &c \\ d&e &f \\ 0& 0& 1 \end{bmatrix}\cdot\begin{bmatrix} 1 & 0 & Tx\\ 0 & 1 &Ty \\ 0 &0 & 1 \end{bmatrix}=\begin{bmatrix} a & b & aTx+bTy+c\\ d & e &dTx+eTy+f \\ 0 &0 & 1 \end{bmatrix}

注意:齐次矩阵以元组的形式逐行存储,最后一行通常不存储,因为它对于描述仿射变换的所有齐次矩阵都是相同的。如下所示:

                                                                               \begin{bmatrix} a & b &c \\ d&e &f \\ 0& 0& 1 \end{bmatrix}

只存储 [a, b, c, d, e, f]

(3)

举例说明两个平移算子的区别:

dev_close_window () dev_open_window (0, 0, 512, 512, 'white', WindowID) dev_set_draw ('margin') gen_rectangle1 (Rectangle, 200, 100, 400, 300) area_center (Rectangle, Area, Row, Column) *创建一个齐次单位矩阵,并添加缩放分量 hom_mat2d_identity (HomMat2DIdentity) hom_mat2d_scale (HomMat2DIdentity, 0.5, 0.5, Row, Column, HomMat2DScale) *相对于全局坐标系平移 dev_set_color ('green') hom_mat2d_translate (HomMat2DScale, 5, 5, HomMat2DTranslate1) affine_trans_region (Rectangle, RegionAffineTrans1, HomMat2DTranslate1, 'nearest_neighbor') *相对于局部坐标系平移 dev_set_color ('blue') hom_mat2d_translate_local (HomMat2DScale, 5, 5, HomMat2DTranslate2) affine_trans_region (Rectangle, RegionAffineTrans2, HomMat2DTranslate2, 'nearest_neighbor')

讯享网
齐次变换矩阵值
小讯
上一篇 2025-04-05 23:19
下一篇 2025-03-07 21:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/45566.html