最近发现,看过的文章,没几天就忘了,于是开始写点东西记录一下,所学习过的算法。废话不多说,今天看了这篇文献“Rectangling Panoramic Images via Warping”,所以做一下记录。
这篇文献算法分为两步:
1、第一步需要通过计算图像最小能量线,对图像进行预变性。
看懂这篇文章首先要看懂Seam Carving,这个算法作者有源码,可以下载下来好好解读一下算法原理。通过这一步可以把图像放大为矩形图像,这一步又称之为局部变形。在这一步每一次迭代的过程中,源图像上的每个像素点都会有可能移动位置,假设input图像的源像素点I(x,y)经过Seam Carving算法放大后,位置移动到I'(x,y),那么我们可以计算得其运动场(光流场),u(x,y)=I‘(x,y)-I(x,y)。算法第一步的目的便是要计算出input图像变为local warping图像后,每个像素点的u(x,y)运动向量。
2、第二步对local warping图像矩形进行网格划分
记录划分后,每个格子顶点的坐标v(x,y),ok,通过第一步我们知道了每个像素点经过u(x,y)运动场,变形后才有了local warping 图像,接着我们把图像local warping通过
-u(x,y)运动场,变形回去,同时记录下v(x,y)每个顶点的新位置v’(x,y),其实这一步不需要对图像的数据进行变形,只需要定划分的网格根据-u(x,y)进行直接变形,记录下每个网格顶点的新位置。
3、接着我们以这些网格顶点新位置v’(x,y)为控制顶点,利用相似变换的变形方法,对最开始的input 图像进行全局变形。变形的控制顶点为v’(x,y),变形后的位置为v(x,y),据此可以得到全局的图像变形结果
学习这篇文献,需要先好好学习:“Seam Carving for Content-Aware Image Resizing”和“As-rigid-as-possible_shape_manipulation”这两篇文献网上可以下载到作者写的源代码,所以比较容易学会,搞定这两篇paper,这篇文献就简单多了。Seam Carving for Content-Aware Image Resizing的算法可以参考我的另一篇文章:http://blog.csdn.net/hjimce/article/details/44916869