I have to remind myself that some birds don’t mean to be caged . Their feathers are just too bright. And when they fly away, the part of you that knows it was a sin to lock them up. DOES rejoice. Still, the place you live in is that much more drab and empty that they’re gone. I guess I just miss my friend. ——《肖申克的救赎》
前言
几何变换,又称空间变换,是图形处理的一个方面,是各种图形处理算法的基础。它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置,其实质是改变像素的空间位置,估算新空间位置上的像素值。几何变换算法一般包括空间变换运算和插值算法。
几何变换不改变图像的像素值, 只是在图像平面上进行像素的重新安排。适当的几何变换可以最大程度地消除由于成像角度、透视关系乃至镜头自身原因所造成的几何失真所产生的负面影响。几何变换常常作为图像处理应用的预处理步骤, 是图像归一化的核心工作之一。
一个几何变换需要两部分运算:首先是空间变换所需的运算, 如平移、缩放、旋转和正平行投影等, 需要用它来表示输出图像与输入图像之间的(像素)映射关系;此外,还需要使用灰度插值算法, 因为按照这种变换关系进行计算, 输出图像的像素可能被映射到输入图像的非整数坐标上。
概念
基础概念 | 说明 |
---|---|
图像的几何变换 | 指用数学建模的方法来描述图像的位置、大小、形状等变换。 |
几何变换的内容 | 图像的空间平移、比例缩放、旋转、仿射变换和图像插值。 |
几何变换的实质 | 改变像素的空间位置。 |
图像集合变换的表达式
( x , y ) = T { ( u , v ) } (x, y) = T\{(u, v)\} (x,y)=T{ (u,v)}
- ( x , y ) (x, y) (x,y)为变换后图像像素的笛卡尔坐标, ( u , v ) (u , v) (u,v)为原始图像中像素的笛卡尔坐标。
- 变换后,如果 ( x , y ) = ( u , v ) (x, y)=(u , v) (x,y)=(u,v),则变换后的图像仅仅是原图像的简单拷贝。
- 注意,几何变换不改变像素值,而是改变像素所在的位置。这说明像素的亮度和色彩并不发生变化,仅仅是像素位置发生改变。
齐次坐标表示
- 所谓齐次坐标就是用 N + 1 N+1 N+1维向量表示 N N N维向量。
- 平面上的点 P P P的坐标为 ( x , y ) (x, y) (x,y),其齐次坐标表示为 ( w x , w y , w ) (wx, wy, w) (wx,wy,w),其中 w w w为任意常数。
- 如果规定齐次坐标的第三个分量 w w w为 1 1 1,则称为规范齐次坐标。
引入齐次坐标的原因
- 在对图像进行操作时候,经常要对图像连续做几次变换。例如做了平移后再做旋转与缩放。因为旋转、缩放都是线性变换,因此可将旋转和缩放合并成一个变换矩阵来表示,如:
[ x y 1 ] = [ x 0 y 0 1 ] T { \left[\begin{array}{ccc} x & y & 1 \end{array} \right ]}={ \left[\begin{array}{ccc} x_0 & y_0 & 1 \end{array} \right ]}^T [xy1]=[x0y01]T
- 在直角坐标系中,平移不是线性变换,因此不能与旋转、缩放等操作合并成一个变换矩阵。
- 引入齐次坐标后,平移变为线性变换,从而可以采用一个通用的变换模型(仿射变换模型)表示图像的各种几何变换。
仿射变换
[ x y 1 ] = [ x 0 y 0 1 ] T { \left[\begin{array}{ccc} x & y & 1 \end{array} \right ]}={ \left[\begin{array}{ccc} x_0 & y_0 & 1 \end{array} \right ]}^T [xy1]=[x0y01]T
- T仿射矩阵
T = [ a b p c d q m n s ] T=\left[ \begin{array}{ccc} a & b & p\\ c & d & q\\ m & n & s \end{array} \right ] T=⎣⎡acmbdnpqs⎦⎤
- a b c d a \ b \ c \ d a b c d:实现比例变换、旋转变换、偏移变换
- m n m \ n m n:实现平移变换、 m m m和 n n n分别为 X X X和 Y Y Y方向的平移量。
- s s s:实现等比例变换
- p q p \ q p q:实现透视变换
图像的位置变换
- 所谓图像的位置变换是指图像的大小和形状不发生变化,只是将图像进行平移、旋转、镜像等。
- 图像的位置变换主要是用于目标识别中的目标配准。
平移
- 平移的原理:
- 在图像平移是将一幅图像中所有的点都按照指定的平移量在水平、垂直方向移动,平移后的图像与原图像相同
平移变换
- 平移的直角坐标公式:
{ x = x 0 + Δ x ( x 0 , y 0 ) 为平移之前的像素坐标 y = y 0 + Δ y ( x , y ) 为 对 应 像 素 平 移 后 的 坐 标 \begin{cases} x=x_0+\Delta x & \text{$(x_0, y_0)$为平移之前的像素坐标}\\ y=y_0+\Delta y & \text{$(x, y)为对应像素平移后的坐标$} \end{cases} { x=x0+Δxy=y0+Δy(x0,y0)为平移之前的像素坐标(x,y)为对应像素平移后的坐标
- 平移的齐次坐标公式
[ x y 1 ] = [ x 0 y 0 1 ] × [ 1 0 0 0 1 0 Δ x Δ y 1 ] { \left[\begin{array}{ccc} x & y & 1 \end{array} \right ]}={ \left[\begin{array}{ccc} x_0 & y_0 & 1 \end{array} \right ]}\times{ \left[\begin{array}{ccc} 1 & 0 & 0\\ 0 & 1 & 0\\ \Delta x & \Delta y & 1 \end{array} \right ]} [xy1]=[x0y01]×⎣⎡10Δx01Δy001⎦⎤
平移的逆变换
- 平移的直角坐标公式:
{ x = x 0 − Δ x ( x 0 , y 0 ) 为平移之前的像素坐标 y = y 0 − Δ y ( x , y ) 为 对 应 像 素 平 移 后 的 坐 标 \begin{cases} x=x_0 - \Delta x & \text{$(x_0, y_0)$为平移之前的像素坐标}\\ y=y_0 - \Delta y & \text{$(x, y)为对应像素平移后的坐标$} \end{cases} { x=x0−Δxy=y0−Δy(x0,y0)为平移之前的像素坐标(x,y)为对应像素平移后的坐标
- 平移的齐次坐标公式
[ x 0 y 0 1 ] = [ x y 1 ] × [ 1 0 0 0 1 0 − Δ x − Δ y 1 ] { \left[\begin{array}{ccc} x_0 & y_0 & 1 \end{array} \right ]}={ \left[\begin{array}{ccc} x & y & 1 \end{array} \right ]}\times{ \left[\begin{array}{ccc} 1 & 0 & 0\\ 0 & 1 & 0\\ -\Delta x & -\Delta y & 1 \end{array} \right ]} [x0y01]=[xy