想象一下,当你拿起手机拍摄一张风景照时,由于角度或设备本身的限制,照片可能会有点歪斜或者变形。这时候,你是否希望有一种方法可以简单地“拉直”这张照片,让它看起来更加完美?或者,在构建虚拟现实(VR)和增强现实(AR)的世界时,如何让虚拟的东西自然地融入真实环境中?这些都可以靠仿射变换实现。
仿射变换不仅限于修复和美化静态图像,它还广泛应用于计算机视觉、机器人导航、医学影像分析等多个高科技领域。比如:
什么是仿射变换?
简单来说,就像是把图片或者图形旋转、拉伸、缩放和移动,但是有个特点,就是它不会让图形的形状变得奇奇怪怪,比如直线经过仿射变换后还是直线,角度和平行关系也都保持不变。
想象一下,你有一张纸,上面画着一些图案。现在,你想把这些图案换个方向,或者让它们变大变小,或者把整个图案挪到纸的另一个位置。仿射变换就是帮你实现这些变化的数学工具。它就像是一套规则,告诉你怎么通过一些简单的操作,让图案按照你想要的方式变化,但不会扭曲图案的形状。
接下来,我们以仿射变换中的“旋转”为例,看一下具体的操作步骤。
打开华清远见人工智能虚拟仿真本地服务管理平台,点击启动,服务启动一次即可。
进入到人工智能虚拟仿真系统,单击“图像旋转”,进入实验。
步骤一:图片输入
首先,导入一张原始图片,可以用平台默认的预设图片,也可以自定义输入图片。
步骤二:单点旋转
这一步要操作的是
1.将旋转点平移到原点。
2.应用旋转矩阵进行旋转。
3.将旋转后的点移回原来的位置。
这样可以将任意点的旋转问题简化为原点旋转问题,便于计算。(具体的计算过程在人工智能在线实验平台手册中查看)
步骤三:图片旋转
明白了单个点的旋转过程之后,其实图像旋转也很好理解,就是将图像里的每个像素点都带入仿射变换矩阵里,从而得到旋转后的新坐标。在OpenCV中,要得到仿射变换矩阵可以使用cv2.getRotationMatrix2D(),通过这个函数即可直接获取到上面的旋转矩阵,该函数需要接收的参数为:
Center:表示旋转的中心点,是一个二维的坐标点(x,y)
Angle:表示旋转的角度
Scale:表示缩放比例,可以通过该参数调整图像相对于原始图像的大小变化
所以在这一步填入两个参数:即要给图像旋转的角度(angle)和要缩放的比例(scale),根据这两个数据,求出旋转之后的坐标,就可以进行整个图像的旋转。
这里可能会有一个问题,由于三角函数的值是小数,那么其乘积也会是小数,虽然OpenCV中会对其进行取整操作,但是像素点旋转之后的取整结果也有可能重合,这样就会导致可能会在旋转的过程中丢失-部分原始的像素信息。并且如果使用了scale参数进行图像的缩放的话,当图像放大时,比如一个10*10的图像放大成20*20,图像由100个像素点变成400个像素点,那么多余的300个像素点是怎么来的?而当图像缩小时,比如一个20*20的图像缩小为10*10的图像,需要丢掉300个像素点,那到底要怎么丢才能保证图像还能是一个正常的图像?因此我们需要一种方法来帮我们计算旋转后的图像中每一个像素点所对应的像素值,从而保证图像的完整性,这种方法就叫做插值法。
步骤四:插值方法
这一步可以看到平台有五种插值方法:
通过这几种方式可以解决图像缩放或者旋转等操作时,由于像素之间的间隔不一致而导致的信息丢失和图像质量下降的问题。具体的每种方法计算方法,可在元宇宙实验平台操作手册中查看。
步骤五:边缘填充
为什么要填充边缘呢?
可以看到,左图在逆时针旋转45度之后原图的四个顶点在右图中已经看不到了,同时,右图的四个顶点区域其实是什么都没有的,因此我们需要对空出来的区域进行一个填充。右图就是对空出来的区域进行了像素值为(0,0,0)的填充,也就是黑色像素值的填充。除此之外,后续的一些图像处理方式也会用到边缘填充,平台介绍了五个常用的边缘填充方法。
步骤六:图片输出
点击验证,如显示校验成功,即代表逻辑无误,验证按钮与校验成功界面如下图所示。
点击运行,可以实现功能运行,并显示结果输出。点击某张图片可放大查看效果。
以上就是一个完整的图像旋转操作过程,仿射变换中的图像旋转在图像识别应用场景中主要解决图像因拍摄角度不同而导致的方向不一致问题,通过旋转图像使其与标准方向对齐,确保了识别算法能够准确地识别和分析图像内容,不受角度的影响,从而提高了识别系统的准确性和鲁棒性。
仿射变换不只是图像处理中的一个关键技术,它也是计算机视觉领域的重要组成部分。因此,如果你对图像的几何变换感兴趣,想要深入了解其原理和应用,我们的Python 图像处理OpenCV课程就能帮到你。
我们的课程会带你从基础开始,学习如何用Python编程,怎么用OpenCV处理图像,还会手把手带你实战OpenCV车牌识别项目。重要的是,我们的课程还提供元宇宙人工智能在线实验平台,让你能在一个模拟的环境中,边学边练,高效学习。自由探索,尝试不同的算法,看看它们对图像有什么影响,这对理解图像增强的原理和应用特别有帮助。
后台私信雯雯老师,一起学习人工智能OpenCV~!
5年时间打造,元宇宙人工智能在线实验平台
30天趣玩趣学,算法原理 代码实现 项目实战
200余讲课程,边学边练,在线答疑
关注
27文章
1302浏览量
56900免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有疑问请发送邮件至:bangqikeconnect@gmail.com