仿射变换矩阵每个参数的意义
在图像处理中,仿射变换矩阵用于描述平移、旋转、缩放、剪切等线性变换的组合。以下是OpenCV中2x3仿射变换矩阵的参数意义:
矩阵形式
M = [ a b c d e f ] M = \begin{bmatrix} a & b & c \\ d & e & f \\ \end{bmatrix} M=[adbecf]
参数分解
1. 线性变换部分
- 左上2x2子矩阵
[
a
b
d
e
]
\begin{bmatrix}a & b \\ d & e\end{bmatrix}
[adbe]
a
: X轴缩放/旋转分量b
: Y轴对X轴的影响(剪切/旋转)d
: X轴对Y轴的影响(剪切/旋转)e
: Y轴缩放/旋转分量
2. 平移部分
- 最后一列
[
c
f
]
\begin{bmatrix}c \\ f\end{bmatrix}
[cf]
c
: X轴平移量f
: Y轴平移量
数学原理
变换公式(齐次坐标形式):
{
x
′
=
a
⋅
x
+
b
⋅
y
+
c
y
′
=
d
⋅
x
+
e
⋅
y
+
f
\begin{cases} x' = a \cdot x + b \cdot y + c \\ y' = d \cdot x + e \cdot y + f \end{cases}
{x′=a⋅x+b⋅y+cy′=d⋅x+e⋅y+f
其中
(
x
,
y
)
(x,y)
(x,y) 是原坐标,
(
x
′
,
y
′
)
(x',y')
(x′,y′) 是变换后坐标。
典型变换示例
变换类型 | 矩阵示例 | 说明 |
---|---|---|
平移 | [[1,0,tx],[0,1,ty]] | tx =X平移量,ty =Y平移量 |
缩放 | [[sx,0,0],[0,sy,0]] | sx =X缩放因子,sy =Y缩放因子 |
旋转θ角度 | [[cosθ,-sinθ,0],[sinθ,cosθ,0]] | 绕原点逆时针旋转 |
剪切 | [[1,shx,0],[shy,1,0]] | shx =X剪切因子,shy =Y剪切因子 |