以下文章来源于大话成像 ,作者Yan Xiao Ming
希望通过这个公众号传播我们所掌握的有关成像技术软件、硬件、算法等方面的知识,分享我们在成像领域,尤其是手机成像领域所拥有的一些知识和开发经验。以期集合众智互有裨补,让在这个领域工作的朋友能够彼此交流共同提高。
使用手机拍摄时我们都会注意到一个问题就是越近的物体或者越靠近边缘的物体就会被拉伸的很大,这个现象在广角摄像头上更为严重,例如下面两个图像,因此广角镜的拓展形变的效果经常被摄影师利用,创作一些具有戏剧张力的作品:
典型的大长腿拍照法
这个现象尤其在前置拍摄拍摄的时候这就不一定这么喜人了.前置拍摄中拍摄人脸的时候尤其令人烦恼.
但是在使用手机摄像头尤其是广角拍摄人像时,我们会发现站在画面边缘的人脸会被拉伸为不自然的情况,或者人的胳膊会变得很粗,并且也会经常DXOmark 测评中看到其对anamorphosis 的测评
这是因为目前一般进行畸变矫正的方法或者无畸变镜头的模型都是采用线性透视投影模型,即和中心的角度越大,产生的像高越大,因此为了修复透视投影的问题,也产生了很多其他种投影方式,比如立体投影, Mercator 投影校正 , 经纬映射 等,但是各有各的问题,比如下图中的例子,如果使用透视投影则背景自然,但是前景的人脸不自然,而使用立体投影,则会前景人脸正常,但是背景又会产生畸变。那既然如此我们能否通过检测人脸,在人脸区域使用立体投影来进行校正恢复人脸形变岂不是就可以了呢?因此可以将人脸、直线等构建目标函数来创建最优化模型。因此这篇论文的方案就是在人脸和非人脸区域使用不同的映射模型并相结合.
方法概述:
1 给定一个用透视投影的广角图像 我们首先使用人体分割检索人脸区域,用绿色标记与扩展的脸框相交的区域。
2计算立体投影。针对人脸区域虚拟立体投影变形,
3 然后创建一个畸变校正网格,其中使用了energy optimization的人脸展开。
4最后,使用畸变校正网格来创建最终的输出, 的脸恢复失真在右下方.纠正后看起来自然,背景和避免了鱼眼镜头的畸变
论文中比较重要的一部分创新就是提出了在两种映射的融合过程中如何能够更自然的融合边缘区域.
Google 给出了运行时间,速度并不快,但是Google 只是提供了一种方法,其中很多地方可以通过标定等方法来解决而无需运算。并且延续这个思路算法应该还有优化的空间.从目前的时间来看这个算法在手机端的应该可以实时运行.据作者所知,现在国内有些手机已经运行改进后的算法.
Takes 920ms for a 12MP image on Qualcomm SDM845
Segmentation: 280ms (GPU)
Optimization: 340ms (CPU)
Warping: 115ms (GPU)
另外DXOview point 有很大的一个卖点就是对人体、人脸等进行变形矫正,感兴趣的同学可以直接去DXO 官网查看。