在图像形变比如图像旋转,我们可以有两种角度来实现:
1、前向映射
我们知道原图中一个像素点的位置,可以通过计算得到这个像素点旋转后在新图中的位置,然后判断这个新的坐标是否在图像内,然后赋值,这就是前向映射。
但是这种方式有一个缺点,在图像旋转中,原图的坐标和新图的坐标不是一一对应的。在实践中,原图坐标经过计算得到的新图坐标是浮点数,需要经过取整。在这个过程中,原图中多个像素点(左图红点)经过计算和取整后,可能映射到新图的同一个坐标点(右图红点),造成一些像素点永远没有对应的映射点(右图黑点),这些黑点最终呈现的就是背景色。
如下图所示,经过旋转后的图中并不是纯黑,而是有许多白点(背景色),影响最终的效果。
2、反向映射
顾名思义,反向映射就是根据新图坐标,计算其在原图中的坐标点,然后将原图中像素点值复制到新图中即可。因为是遍历了新图每一个像素值,所以每一个像素点都会有值,避免了空白点的产生(从新图坐标计算出的原图坐标,经过判断超出范围仍然保持背景色)。