OpenCV 笔记(25):图像的仿射变换

💡 原文中文,约6800字,阅读约需17分钟。
📝

内容提要

本文介绍了图像的仿射变换,包括旋转、缩放、平移、错切等几种常见的变换方式。通过仿射变换矩阵的乘法和加法运算,可以实现图像的变换。文章还介绍了齐次坐标的概念和使用,以及OpenCV中提供的warpAffine()函数用于实现仿射变换。给出了平移、缩放、旋转和错切的具体代码示例。图像仿射变换是一种常用且有用的图像处理方法,在计算机视觉领域有广泛应用。

🔎

延伸解读

仿射变换与透视变换的区别

文章指出,仿射变换保持图像的平直性和平行性,而透视变换则模拟3D空间中的透视效果,允许更复杂的操作,如校正由摄像机角度引起的扭曲。因此,当需要保持平行线不变时,应使用仿射变换;当需要处理透视畸变时,则需使用透视变换。

齐次坐标的作用与意义

齐次坐标通过引入额外分量w,将二维点(x,y)表示为(X,Y,w),使得无限远点可以用有限坐标表示,并简化了仿射变换的数学表达。文章引用《计算机图形学》作者的观点,强调齐次坐标能清晰区分向量和点,更易用于仿射几何变换。

warpAffine()函数参数解析

OpenCV的warpAffine()函数需要输入2×3的仿射变换矩阵M、输出图像尺寸dsize,以及可选的插值方式flags、边界模式borderMode和边界填充值borderValue。默认使用双线性插值和常量边界填充,这些参数影响变换后的图像质量和边界处理。

仿射变换的典型应用场景

文章总结,仿射变换在图像处理和计算机视觉中应用广泛,包括图像矫正、增强、配准、组成、目标识别和跟踪等。这些应用利用了仿射变换能够保持平直性和平行性的特点,适用于需要几何对齐或形状调整的任务。

❓

Q&A

什么是图像的仿射变换?

图像的仿射变换是对图像进行线性变换和平移,将其映射到另一个图像空间的过程,保持图像的平直性和平行性。

仿射变换中使用的矩阵是什么样的?

仿射变换使用2×3的矩阵,其中包含一个2×2的矩阵用于矩阵乘法和一个2×1的矩阵用于向量加法。

OpenCV中如何实现图像的仿射变换?

在OpenCV中,可以使用warpAffine()函数实现图像的仿射变换,支持平移、缩放、旋转和错切等操作。

仿射变换有哪些常见的应用?

仿射变换广泛应用于图像矫正、增强、配准、组成、目标识别和跟踪等任务。

什么是齐次坐标,它在仿射变换中有什么作用?

齐次坐标是一种用于表示无限远坐标的坐标系统,简化了仿射变换的数学表达,使得变换更为对称和简洁。

如何在OpenCV中进行图像的旋转?

可以使用getRotationMatrix2D()函数生成旋转矩阵,然后通过warpAffine()函数应用该矩阵进行图像旋转。

🏷️

标签

➡️

继续阅读