计算机视觉笔记02_几何变换

几何变换

简介

图像常用一些变换如平移、旋转、翻转等。在传统CV领域,由于拍摄角度问题,我们可能需要对图像作矫正处理;在深度学习领域,我们可能会利用旋转,仿射,镜像等操作进行数据增广。因此对图像做几何变换也是非常常用的手段。

常用的几何变换

仿射变换的一般形式如下:
在这里插入图片描述
上式中的 T T T 为变换矩阵,其中 ( v , w ) (v,w) (v,w)为原坐标, ( x , y ) (x,y) (x,y) 为变换后的坐标,要做不同的变换使用不同的变换矩阵
以下是几个常用的变换矩阵
Image

坐标系变换

在缩放、平移操作中一般以图像坐标原点(图像左上角为原点)为中心变换,这里不用做坐标系变换,直接计算即可。而对于旋转和偏移,一般是以图像中心为原点,那么这就涉及坐标系转换。

图像坐标定义的原点在图像左上角,水平向右为 X 轴,垂直向下为 Y 轴。数学中的坐标系是以图像中心为原点,水平向右为 X 轴,垂直向上为 Y 轴,称为笛卡尔坐标系。
Image
因此,对图像做旋转和偏移,需要以下三步变换:

  • 将输入原图图像坐标转换为笛卡尔坐标系;
  • 进行旋转计算。旋转矩阵前面已经给出了;
  • 将旋转后的图像的笛卡尔坐标转回图像坐标。

我们以下图来展示坐标转换的方法
在这里插入图片描述

  • 计算机中图像的坐标系通常是AB和AC方向的,原点为A
  • 数学中笛卡尔直角坐标系是DE和DF方向的,原点为D

令图像表示为 M × N M×N M×N 的矩阵,对于点 A A A 而言,两坐标系中的坐标分别是 ( 0 , 0 ) (0,0) (00) ( − N / 2 , M / 2 ) (-N/2,M/2) (N/2,M/2),则图像某像素点 ( x ′ , y ′ ) (x',y') (x,y)转换为笛卡尔坐标 ( x , y ) (x,y) (x,y)转换关系为, x x x为列, y y y为行,因此我们有:
x = x ′ − N / 2 y = − y ′ + M / 2 x=x'-N/2 \\ y=-y'+M/2 x=xN/2y=y+M/2
逆变换后:

x ′ = x + N / 2 y ′ = − y + M / 2 x'=x+N/2 \\ y'=-y+M/2 x=x+N/2y=y+M/2
按前面说的3次变换,旋转(顺时针旋转)的变换形式就为:
( x , y , 1 ) = ( x ′ , y ′ , 1 ) T = ( x ′ , y ′ , 1 ) [ 1 0 0 0 − 1 0 − 0.5 ∗ N 0.5 ∗ M 1 ] [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] [ 1 0 0 0 − 1 0 0.5 ∗ N 0.5 ∗ M 1 ] (x,y,1)=(x',y',1)T\\=(x',y',1) \begin{bmatrix} 1&0&0\\ 0&-1&0\\ -0.5*N&0.5*M&1\\ \end{bmatrix} \begin{bmatrix} \cos\theta&-\sin\theta&0\\ \sin\theta&\cos\theta&0\\ 0&0&1\\ \end{bmatrix} \begin{bmatrix} 1&0&0\\ 0&-1&0\\ 0.5*N&0.5*M&1\\ \end{bmatrix} (x,y,1)=(x,y,1)T=(x,y,1)100.5N010.5M001cosθsinθ0sinθcosθ0001100.5N010.5M001

反向映射

上面用到的是前向映射,是根据原图用变换公式直接算出输出图像相应像素的空间位置,那么这会出现一个问题:可能会有多个像素坐标映射到输出图像的同一位置,也可能输出图像的某些位置完全没有相应的输入图像像素与它匹配,也就是没有被映射到,造成有规律的空洞(黑色的蜂窝状)。我们可以采用更好的一种方式是采反向映射(Inverse Mapping)
扫描输出图像的位置(x,y),通过
[ v , w , 1 ] = [ x , y , 1 ] ∗ T − 1 [v,w,1]=[x,y,1]* T^{-1} [v,w,1]=[x,y,1]T1
计算输入图像对应的位置 ( v , w ) (v,w) (v,w),通过插值方法决定输出图像该位置的灰度值。
采用反向映射后,需通过插值方法决定输出图像该位置的值,因此需要选择插值算法。(最近邻插值、双线性插值,双三次插值)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值