OpenCV第6课 图像处理之几何变换(仿射)

1.仿射变换

2. 平移

3 旋转

附录A  二维旋转矩阵

附录B 三维旋转矩阵与轴角表示


1.仿射变换

        仿射变换是指图像可以通过一系列的几何变换来实现平移、旋转等多种操作。该变换能够保持图像的平直性和平行性。

        平直性是指图像经过仿射变换后,直线仍然是直线,平行性是指图像在完成仿射变换后,平行线仍是平行线。

        平移和旋转都是仿射变换的特例,所用函数都是cv2.warpAffine,其通过一个变换矩阵(映射矩阵)M实现变换,平移和旋转转换矩阵不同。具体为:

        

        如下图,可以通过一个变换矩阵M,将原始图像O变换为仿射图像R。

                

cv2.warpAffine()函数的语法格式如下:
        dst = cv2.warpAffine( src, M, dsize[, flags[, borderMode[, borderValue]]] )

式中:

  1. dst:代表仿射后的输出图像,该图像的类型和原始图像的类型相同。dsize决定输出图像的实际大小。
  2. src:代表要仿射的原始图像。
  3. M:代表一个2×3的变换矩阵。使用不同的变换矩阵,就可以实现不同的仿射变换。
  4. dsize 代表输出图像的尺寸大小。
  5. flags:代表插值方法,默认为INTER_LINEAR。当该值为WARP_INVERSE_MAP 时,意味着M是逆变换类型,实现从目标图像dst到原始图像src的逆变换。具体可选值:borderMode代表边类型,默认为BORDER_CONSTANT。当该值为BORDER_TRANSPARENT时,意味着目标图像内的值不做改变,这些值对应原始图像内的异常值。
  6. borderValue:代表边界值,默认是0。

        通过以上分析可知,在OpenCV中使用函数cv2.warpAffine()实现仿射变换,忽略其可选参数后的语法格式为:

         dst = cv2.warpAffine( src , M , dsize )

        其通过转换矩阵M 将原始图像src 转换为目标图像dst:

        

        因此,进行何种形式的仿射变换完全取决于转换矩阵M。下面分别介绍通过不同的转换矩阵M实现的不同的仿射变换。

2. 平移

        平移是物体的移动,如果知道物体平移的坐标,可以创建如下变换矩阵:

                              

        将其放入类型为np.float32的数组中,将M矩阵赋值给cv2.warpAffine() 函数,即可实现平移。

例程如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式老牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值