论文阅读:Distortion-Free Wide-Angle Portraits on Camera Phones

这篇具有很好参考价值的文章主要介绍了论文阅读:Distortion-Free Wide-Angle Portraits on Camera Phones。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

论文阅读:Distortion-Free Wide-Angle Portraits on Camera Phones

今天介绍一篇谷歌 2019 年的论文,是关于广角畸变校正的。

Abstract

广角摄影,可以带来不一样的摄影体验,因为广角的 FOV 更大,所以能将更多的内容拍摄进画面,在多人集体合影的时候,一般用广角可以将大家都拍到,但是广角摄影也有弊端,最显著的问题就是畸变,随着 FOV 的增加,画面边缘的人很容易发生变形,比如人头,身体被拉伸。这种畸变让画面边缘的人与真实的人差异很大。这篇论文就是为了解决广角摄影下的畸变问题的。给定一张广角下的人像照,文章中的算法是通过构建一个能量优化函数,将球极投影下的人脸区域与透视投影下的背景区域的位移 mesh 进行联合优化,从而达到一个畸变校正的目的。这篇文章里的算法最后应该是用到了谷歌的 Pixel 手机中了。

Introduction

文章中首先提到了畸变的几种成因, camera 成像是遵循透视投影规律的,透视成像投影的规律就是近大远小,同时视场边缘的成像随着入射角的增加,会产生更大的透视形变,这种形变是由透视投影的客观规律产生的,无法避免。此外镜头本身也会有光学畸变,这是属于光学像差的一种,FOV 越大的镜头,这种光学畸变也会越明显,光学畸变会导致直线弯曲,不过相比透视畸变,镜头的光学畸变有比较成熟的校正方法,比如经典的张正友校正法,通过标定棋盘格,可以估计出镜头的畸变参数,从而进行镜头的光学畸变校正。

不过,即使进行了镜头的光学畸变校正,成像的透视畸变依然存在,所以这篇文章主要是为了解决镜头的透视畸变问题,作者在文章中也提到,他们提出的方法也属于与内容相关的 warping 方法,这类方法之前也广泛地应用于各种图像的操作中,比如全景的拼接,广角的畸变校正,防抖等。本文主要聚焦于人脸区域的 warp,作者认为对于人像摄影来说,用户对人脸的形状是最敏感的。

Method

文章的方法,看起来流程比较简单,如下所示:

论文阅读:Distortion-Free Wide-Angle Portraits on Camera Phones,计算摄影与图像处理,论文阅读,计算机视觉

给定一张输入图片,首先是用一个分割模型,将人脸区域分割出来;然后将人脸区域进行球极投影;接着利用一个能量函数,将球极投影后的人脸区域 mesh 与背景区域的 mesh 进行优化,使得人脸区域与背景区域的 mesh 能够平滑过度,最终利用输出的 mesh 对全图进行 warp,这样就得到了校正后的图像。

Subject Mask Segmentation

人脸区域分割,这个已经非常成熟了,有很多的分割模型都可以做到这一点。这里就不多做介绍了。

Stereographic Projection

这篇文章对人脸区域的校正利用了一种称为 Stereographic Projection,也就是球极投影,球极投影是一种将 3D 物体投影到 2D 平面的投影方式,这种投影方式可以最大限度的保持物体的形状,不过代价就是会让直线变得弯曲,文章也给出了几种不同投影的例子

论文阅读:Distortion-Free Wide-Angle Portraits on Camera Phones,计算摄影与图像处理,论文阅读,计算机视觉

可以看到,对于一张有透视畸变的图像,人像的脸已经有明显的拉伸,通过 Stereographic projection 或者 Mercator projection,人脸得到比较好地校正,但是背景的直线已经产生了明显的弯曲,这就类似一种鱼和熊掌不可兼得的感觉,你想保证背景直线是直的,人脸区域会被拉伸,类似输入图;反过来,你想让人脸区域得到校正,背景直线又变得弯曲。所以文章作者想到了一种联合优化的方式,这个后面详细介绍,先来看看球极投影到底是个啥。

文章给出的球极投影的定义如下:

r u = r 0 tan ⁡ ( 0.5 arctan ⁡ ( r p f ) ) (1) r_u = r_0 \tan (0.5 \arctan(\frac{r_p}{f})) \tag{1} ru=r0tan(0.5arctan(frp))(1)

其中 f f f 是镜头的焦距, r u , r p r_u, r_p ru,rp 分别表示球极投影以及透视投影下以镜头中心作为参考的半径, r 0 r_0 r0 表示一个 scale 系数,保证两种投影下面图像边缘的所对应的半径是相等的

r 0 = d 2 tan ⁡ ( 0.5 arctan ⁡ ( d 2 f ) ) (2) r_0 = \frac{d}{2 \tan (0.5 \arctan(\frac{d}{2f}))} \tag{2} r0=2tan(0.5arctan(2fd))d(2)

其中, d = min ⁡ { W , H } d = \min\{W, H\} d=min{W,H},表示图像宽高中的较小值。

Mesh Placement

接下来介绍 mesh 的构建,mesh 可以看成是一个网格图,一个 mesh 包含一组网格点 { v i } \{ \mathbf{v}_i \} {vi} v i \mathbf{v}_i vi 是一个向量,表示网格点对应的二维坐标,假设输入图对应的 mesh 图是 { p i } \{ \mathbf{p}_i \} {pi},对输入图 mesh 上的每个网格点应用球极变换,可以得到一组新的网格点,以及一个新的 mesh, { u i } \{ \mathbf{u}_i \} {ui},这两个 mesh 对应网格点的坐标差,其实就是位移向量场,通过这个位移向量场,可以进行 warp,不过正如前面所说,如果直接 warp,人脸区域虽然得到了校正,但是背景会产生扭曲。当然,一种最直观的方法,就是将人脸区域的 mesh 与背景区域的 mesh 分开处理,人脸区域的 mesh 用球极投影下的 mesh,而背景区域依然用之前输入的 mesh。如下式所示:

w i = { 0 if p i ∉ face mask 1 if p i ∈ face mask (3) w_i = \begin{cases} 0 \quad \text{if} \quad \mathbf{p}_i \notin \text{face mask} \\ 1 \quad \text{if} \quad \mathbf{p}_i \in \text{face mask} \\ \end{cases} \tag{3} wi={0ifpi/face mask1ifpiface mask(3)

不过这种方式依然会有问题,文章也给出了示意图,这种直接粗暴地分成两部分的方式,也会到底非常明显的 artifacts

Local Face Undistortion

为了解决这个问题,文章作者提出了一种能量优化的方式,文章中构造了一个如下的能量优化函数:

v i ∗ = argmin v i E t ( v i ) (4) \mathbf{v_{i}^{*}} = \text{argmin}_{\mathbf{v_{i}}} E_t(\mathbf{v_{i}}) \tag{4} vi=argminviEt(vi)(4)

E t E_t Et 可以认为是几种不同的能量函数的加权和。

Face Objective Term

首先是人脸区域的能量项,每个人脸区域都构建一个能量项,所有人脸区域的能量项求和,可以得到整体的人脸区域的能量项

E f = ∑ k E s , k (5) E_f = \sum_{k} E_{s, k} \tag{5} Ef=kEs,k(5)

其中, k k k 表示输入图中人脸的编号,可以看到,这个能量项是对每个人脸区域单独构建的,有多少个人脸,就会构建多少个能量项,每个能量项的定义如下:

E s , k = ∑ i ∈ B k w i m i ∥ v i − ( S k u i + t k ) ∥ 2 2 + λ ( S k ) (6) E_{s,k} = \sum_{i\in\mathbf{B}_k} w_i m_i \left \| \mathbf{v}_i - (\mathbf{S_k \mathbf{u}_i + \mathbf{t}_k}) \right \|_{2}^{2} + \lambda(\mathbf{S}_k) \tag{6} Es,k=iBkwimivi(Skui+tk)22+λ(Sk)(6)

其中, w i w_i wi 表示公式 (3) 定义的权重, { u i } \{ \mathbf{u}_i \} {ui} 表示球极投影 mesh 上的网格点, { B k } \{ \mathbf{B}_k \} {Bk} 表示第 k 个人脸区域中的网格点,因为图像不同区域的畸变程度不同,需要校正的强度也就不同,所以上面的能量项还加了一个 m i m_i mi 来调整权重,这个 m_i 服从一个径向函数的分布

m i ∼ 1 1 + exp ⁡ ( ( − ( r − r a ) / r b ) ) m_i \sim \frac{1}{1 + \exp((-(r-r_a)/r_b))} mi1+exp(((rra)/rb))1

其中, r r r 表示输入图像中的半径, r a , r b r_a,r_b rarb 是两个超参,用来控制强度的,对于图像中心的点,保证 m i = 0.01 m_i = 0.01 mi=0.01,对于图像边缘的点,保证 m i = 1.0 m_i=1.0 mi=1.0。从公式 (6) 可以看出,虽然文章是用球极投影来解决人脸的畸变,但是最终优化的时候,并不是简单地直接用球极投影的网格点,而是用了一个仿射变换来拟合,

S k = [ a k b k − b k a k ] t k = [ t k 1 t k 2 ] (7) \mathbf{S}_k = \begin{bmatrix} a_k & b_k \\ -b_k & a_k \end{bmatrix} \quad \mathbf{t}_k = \begin{bmatrix} t_{k1} \\ t_{k2} \end{bmatrix} \tag{7} Sk=[akbkbkak]tk=[tk1tk2](7)

这个仿射变换,可以让每个人脸区域的球极投影有更大的自由度,在球极投影的基础上,进行适当的自适应调整。公式 (7) 中的 a k a_k ak 是一个缩放系数,文章作者加了一个正则项来控制这个系数:

λ ( S k ) = w s ∥ a k − s t ∥ 2 2 (8) \lambda(\mathbf{S}_k) = w_s \left \| a_k - s_t \right \|_{2}^{2} \tag{8} λ(Sk)=wsakst22(8)

文章中设置的 w s = 2000 , s t = 1 w_s = 2000, s_t = 1 ws=2000,st=1

Line-Bending Term

人脸区域的能量项介绍完了,下面看看背景区域的能量项,文章中设置了一个能量项来保证让直线等比缩放而不是扭曲:

E b = ∑ i ∑ j ∈ N ( i ) ∥ ( v i − v j ) × e i j ∥ 2 2 (9) E_{b} = \sum_{i} \sum_{j \in N(i)} \left \| (\mathbf{v}_i - \mathbf{v}_j) \times \mathbf{e}_{ij} \right \|_{2}^{2} \tag{9} Eb=ijN(i)(vivj)×eij22(9)

其中, e i j \mathbf{e}_{ij} eij 是沿着方向 p i − p j \mathbf{p}_i - \mathbf{p}_j pipj 的单位向量。 N ( i ) N(i) N(i) 表示网格点 i i i 的邻域

Regularization Term

最后,文章中引入了一个平滑的能量项,

E r = ∑ i ∑ j ∈ N ( i ) ∥ ( v i − v j ) ∥ 2 2 (10) E_{r} = \sum_{i} \sum_{j \in N(i)} \left \| (\mathbf{v}_i - \mathbf{v}_j) \right \|_{2}^{2} \tag{10} Er=ijN(i)(vivj)22(10)

Mesh Boundary Extension

文章中也提到,对于图像边缘的点,如果强制让其不移动的话,当人脸处于图像边缘的时候,会产生很明显的扭曲,为了解决这个问题,文章中采用网格扩展的方式,在原图的 mesh 基础上,往外扩展几个网格,同时让这些处于边界的网格点满足如下的约束:

{ v i , x = p i , x if p i ∈ left or right boundary v i , y = p i , y if p i ∈ top or bottom boundary (11) \begin{cases} v_{i,x} = p_{i,x} \quad \text{if} \quad \mathbf{p}_i \in \text{left or right boundary} \\ v_{i,y} = p_{i,y} \quad \text{if} \quad \mathbf{p}_i \in \text{top or bottom boundary} \\ \end{cases} \tag{11} {vi,x=pi,xifpileft or right boundaryvi,y=pi,yifpitop or bottom boundary(11)

这个约束保证了边界的点只会沿着边界移动,同时,为了减少 mesh warping 出现的未定义区域,文章中还利用了一个能量项,让原始 mesh 边缘的网格点尽量往外扩,而不是往内缩:

E a = E l + E r + E t + E b (12) E_a = E_l + E_r + E_t + E_b \tag{12} Ea=El+Er+Et+Eb(12)

{ E l = I ( v i , x > 0 ) ⋅ ∥ v i , x ∥ 2 2 , ∀ i ∈ ∂ l e f t E r = I ( v i , x < W ) ⋅ ∥ v i , x − W ∥ 2 2 , ∀ i ∈ ∂ r i g h t E t = I ( v i , y > 0 ) ⋅ ∥ v i , y ∥ 2 2 , ∀ i ∈ ∂ t o p E b = I ( v i , y < H ) ⋅ ∥ v i , y − H ∥ 2 2 , ∀ i ∈ ∂ b o t t o m (13) \begin{cases} E_l = \Bbb I(v_{i,x} > 0) \cdot \left \| v_{i,x} \right \|_{2}^{2}, \forall i\in \partial_{left} \\ E_r = \Bbb I(v_{i,x} < W) \cdot \left \| v_{i,x} -W \right \|_{2}^{2}, \forall i\in \partial_{right} \\ E_t = \Bbb I(v_{i,y} > 0) \cdot \left \| v_{i,y} \right \|_{2}^{2}, \forall i\in \partial_{top} \\ E_b = \Bbb I(v_{i,y} < H) \cdot \left \| v_{i,y} - H \right \|_{2}^{2}, \forall i\in \partial_{bottom} \\ \tag{13} \end{cases} El=I(vi,x>0)vi,x22,ileftEr=I(vi,x<W)vi,xW22,irightEt=I(vi,y>0)vi,y22,itopEb=I(vi,y<H)vi,yH22,ibottom(13)

Optimization

最后的能量函数,就是将前面定义的能量函数加权:

E t = λ f E f + λ b E b + λ r E r + λ a E a (14) E_t = \lambda_{f}E_f + \lambda_{b}E_b + \lambda_{r}E_r + \lambda_{a}E_a \tag{14} Et=λfEf+λbEb+λrEr+λaEa(14)

对应权重分别设为:4,2,0.5,4

为了加速优化,文章在初始化的时候,也做了一些 trick:

论文阅读:Distortion-Free Wide-Angle Portraits on Camera Phones,计算摄影与图像处理,论文阅读,计算机视觉

最后 warp 的时候,文章中将优化得到的 mesh 还做了一个类似归一化的操作:

v n , i = s g ( v i ∗ + t g ) t g = − v 0 ∗ \mathbf{v}_{n, i} = s_g(\mathbf{v}_{i}^{*} + \mathbf{t}_g) \quad \mathbf{t}_g = -\mathbf{v}_{0}^{*} vn,i=sg(vi+tg)tg=v0

最后的效果还是不错的,具体的样例可以看文章的 project 网站:

https://people.csail.mit.edu/yichangshih/wide_angle_portrait/文章来源地址https://www.toymoban.com/news/detail-698932.html

到了这里,关于论文阅读:Distortion-Free Wide-Angle Portraits on Camera Phones的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 论文阅读笔记《FLEX: Extrinsic Parameters-free Multi-view 3D Human Motion Reconstruction》

    1.简介 在3D人体姿态估计中存在遮挡和模糊问题,使用多相机可能会缓解这些困难,因为不同的视角可以补偿这些遮挡并用于相互一致性。目前的3D人体姿态估计中大多数都是单视角的,有一部分是多视角的,但是他们的方法依赖于相机之间的相对位置,这要用到相机的外参。

    2024年02月04日
    浏览(33)
  • 《Label-Free Liver Tumor Segmentation》论文笔记

    生成人工的肿瘤数据,减少人工标注的工作量。合成肿瘤图像:1、形状和质地很真,医生也难以分辨;2、训练网络更高效,与在真实肿瘤上训练相近。 可以生成大量的小肿瘤的图像,对于肿瘤前期的诊断十分有帮助! 影响合成肿瘤的因素包括:形状,灰度值,大小,位置和

    2024年02月05日
    浏览(35)
  • DENSE: Data-Free One-Shot Federated Learning论文笔记

    DENSE的主要特点 单轮通信学习 : DENSE允许中央服务器在单次通信轮次中学习全局模型,有效降低了通信成本。 现有单轮FL方法的局限性 : 大多数现有的单轮FL方法不切实际或存在固有限制,例如需要公共数据集,客户端模型同质化,以及需要上传额外的数据或模型信息。

    2024年02月02日
    浏览(31)
  • CFT:Multi-Camera Calibration Free BEV Representation for 3D Object Detection——论文笔记

    参考代码:暂无 介绍:在相机数据作为输入的BEV感知算法中很多是需要显式或是隐式使用相机内外参数的,但是相机的参数自标定之后并不是一直保持不变的,这就对依赖相机标定参数的算法带来了麻烦。如何提升模型对相机参数鲁棒性,甚至是如何去掉相机参数成为一种趋

    2024年02月01日
    浏览(39)
  • An Empirical Study of License Conflict in Free and Open Source Software论文分享

    吴敬征 中国科学院软件研究所博导 研究领域: 软件安全与漏洞挖掘、开源软件与供应链安全、智能系统与机器学习、操作系统与指令集研究、网络安全与隐蔽通信。 实验室名称 :智能软件研究中心 六大领域 :智能理论、操作系统、开源生态、编译技术、智能安全、智能测

    2024年02月20日
    浏览(32)
  • 图像质量评估(5) -- 畸变(Distortion)

            当图像中原本应该是直线的地方看起来发生了不自然的变形或扭曲时,我们称为图像畸变。有三种类型的镜头畸变:桶形畸变(后文使用英文barrel),枕形畸变(后文使用pincushion)和胡子畸变(后文使用英文wave或mustache,这种畸变里包含了桶形畸变和枕形畸变)

    2024年02月05日
    浏览(24)
  • 论文阅读:Vary论文阅读笔记

    论文:Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models Paper | Github | Demo 许久不精读论文了,内心一直想找个专门的时间来细细品读自己感兴趣的论文。现在想来,无异于是自己骗自己了,因为根本就不存在那个专门的时间。所以改变最好的时候就是现在。 因为自己一

    2024年01月19日
    浏览(35)
  • (FEDCVAE-KD)DATA-FREE ONE-SHOT FEDERATED LEARNING UNDER VERY HIGH STATISTICAL HETEROGENEITY论文笔记

    出于对扩展通信和潜在攻击的担忧,一次性FL将通信限制在单一回合,同时试图保持性能。 然而,一次性FL方法在高统计异质性的情况下往往会退化,无法提高管道的安全性,或者需要一个辅助的公共数据集。 为了解决这些局限性,我们提出了两种新的无数据的一次性FL方法

    2024年02月04日
    浏览(33)
  • 【论文阅读】(20230410-20230416)论文阅读简单记录和汇总

    2023/04/09:很久没有动笔写东西了,这两周就要被抓着汇报了,痛苦啊呜呜呜呜呜 (CVPR 2023): Temporal Interpolation Is All You Need for Dynamic Neural Radiance Fields (ICCV 2021):Video Autoencoder: self-supervised disentanglement of static 3D structure and motion (CVPR 2023):DINER: Disorder-Invariant Implicit Neural Representat

    2024年02月12日
    浏览(29)
  • 论文阅读:Vary-toy论文阅读笔记

    论文:Small Language Model Meets with Reinforced Vision Vocabulary Paper | Github | Demo 说来也巧,之前在写论文阅读:Vary论文阅读笔记文章时,正好看到了Vary-toy刚刚发布。 这次,咱也是站在了时代的前沿,这不赶紧先睹为快。让我看看相比于Vary,Vary-toy做了哪些改进? 从整体结构来看,仍

    2024年01月25日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包