通过质心坐标系进行图像变形

https://segmentfault.com/a/11...上一篇文章简单介绍了质心坐标系,这里不再重复。

标准化坐标:

满足一下特性的质心坐标,我们就可以构造插值:

这样,我们就可以已知的顶点对未知的点进行插值:

下面结合一种实际应用的例子:
在对一幅图像进行图像变形时,如果我们选定了一个边界(多边形),我们可以对这个多边形进行三角化(即将其分割成若干个三角形,在计算几何中称为Triangulation)。

然后对每一个三角形计算求得其每个顶点v的重心坐标bi(i=1~N)。
通过bi(i=1~N),我们代入变形后的多边形顶点fi(i=1~N),计算出对应的点F(即为原始三角形的顶点通过插值计算后对应的点),F的像素值应设置为原始的顶点vi的像素。

对于变形后的三角形(顶点为上一步计算得到的F)内部的点,我们通过https://segmentfault.com/a/11...的方法将变形后的多边形的a,b,c遍历求得内部点target_point_k,然后将a,b,c代入原始的三角形旧的点origin_point_k,点target_point_k的像素就应该为点origin_point_k的像素值。

求重心坐标的几种方法:

这种变形被称为Cage based image deformation,原始的多边形称为一个 cage,在改变 cage 的形状之后,其内部的点会根据边界的变化做相应的改变。在cage based image deformation中,可以认为内部点的重心坐标在 cage 形状改变的过程中是不发生变化的,这样就可以根据重心坐标建立一个对应关系,从而求得变化后的图像。对每个三角形内部点,并计算出这些点关于三角形三个顶点的重心坐标。在实时拖动的过程中,将当前重心坐标代入原图像中,得到变换的原像(像素点),从而可得到该点所对应的像素值

参考资料:https://zh.wikipedia.org/wiki...
http://www.xuetangx.com/cours...
http://www.inf.usi.ch/faculty...

你可能感兴趣的:(图像处理,图形学)