背景
从大众审美的角度来看,眼睛适当的“变大”会让人显得更加年轻。因此美型中就有一项大眼功能,其效果就是让眼睛适当变大,这章内容就围绕着大眼算法展开。
图像的重映射
大眼的操作就是使得眼睛区域的图像内容进行一定的放缩处理,它属于局部变形操作。我们经常使用的图像变形操作有平移、旋转、缩放、裁切等,大眼操作乍看和上述的处理不同,但其本质相同——图像的重映射。我们都是在利用某种映射关系,根据原图计算目标图的组成内容。
实际操作中我们会计算目标图像中每个像素点对应到原图的像素坐标,如下图所示,逐点计算目标图的(u,v)映射到原图的坐标(u',v')。但一般得到的(u',v')不是整数,需要通过插值操作计算得到其像素值。
图像插值
常用的插值方法有很多,这里主要介绍常见的三种方法:最近邻、双线性、双三次。
最近邻插值
最近邻插值的定义为选择距离(u',v')最近的像素(u_,v_)取其像素值作为结果,即f(u',v')=f(int(u'+0.5), int(v'+0.5))。如下图所示位于区域A的所有像素其像素值都会取(i,j)处的像素值,其他区域以此类推。该方法原理简单且计算量小,但容易导致结果图像的像素值不连续,产生锯齿现象。