当前位置: 代码迷 >> 综合 >> 泊松抠图:Poisson Matting
  详细解决方案

泊松抠图:Poisson Matting

热度:94   发布时间:2023-10-19 12:18:20.0

Poisson Matting

文章目录

  • Poisson Matting
    • Global Poisson matting
    • Local Poisson matting

泊松抠图是著名的交互式抠图算法,已经被广泛应用于图像处理的各个领域当中。

Global Poisson matting

抠图即是从复杂场景中精准的抠出目标物体用于后续处理,将抠图问题做如下数学定义:
I=αF+(1?α)B(1)I=\alpha F+(1-\alpha) B\tag{1} I=αF+(1?α)B(1)
将图像I(x,y)I(x,y)I(x,y)看做是背景图像B(x,y)B(x,y)B(x,y)与前景F(x,y)F(x,y)F(x,y)按照权重α(x,y)\alpha (x,y)α(x,y)融合得到的,抠图即是从图像III中计算得到权重α\alphaα的过程,本文的核心思想即是通过求解泊松方程完成上式方程的求解,取上式的微分形式:
?I=(F?B)?α+α?F+(1?α)?B(2)\nabla I=(F-B) \nabla \alpha+\alpha \nabla F+(1-\alpha) \nabla B\tag{2} ?I=(F?B)?α+α?F+(1?α)?B(2)
其中?=(??x,??y)\nabla=\left(\frac{\partial}{\partial x}, \frac{\partial}{\partial y}\right)?=(?x??,?y??)为梯度算子,假设背景图像BBB和前景图像FFF本身是足够平滑的,那么上式中α?F+(1?α)?B\alpha \nabla F+(1-\alpha) \nabla Bα?F+(1?α)?B相对较小,可以做如下近似:
?α≈1F?B?I(3)\nabla \alpha \approx \frac{1}{F-B} \nabla I\tag{3} ?αF?B1??I(3)
这意味着权重图α\alphaα的梯度与图像III的梯度成正比,如下图所示,预先定义图像的前景区域ΩF\Omega_{F}ΩF?、背景区域ΩB\Omega_{B}ΩB?、未知区域Ω\OmegaΩ,对于图像中的任意一点p=(x,y)p=(x,y)p=(x,y)IpI_{p}Ip?表示当前点的像素值,Fp、BpF_{p}、B_{p}Fp?Bp?分别表示前景区域、背景区域像素值,则对未知区域的边界做如下定义:
?Ω={p∈ΩF∪ΩB∣Np∩Ω≠?}(4)\partial \Omega=\left\{p \in \Omega_{F} \cup \Omega_{B} \mid N_{p} \cap \Omega \neq\oslash\} \right.\tag{4} ?Ω={ pΩF?ΩB?Np?Ω??=?}(4)
根据式(3),求解α\alphaα需要知道F?B、?IF-B、\nabla IF?B?I,将α\alphaα的求解问题转换为对一下变分问题的求解:
α?=arg?min?α?p∈Ω∥?αp?1Fp?Bp?Ip∥2dp(5)\alpha^{*}=\arg \min _{\alpha} \iint_{p \in \Omega}\left\|\nabla \alpha_{p}-\frac{1}{F_{p}-B_{p}} \nabla I_{p}\right\|^{2} d p\tag{5} α?=argαmin??pΩ???αp??Fp??Bp?1??Ip??2dp(5)
采用狄利克雷边界条件:
αp∣?Ω=α^p∣?Ω={1p∈ΩF0p∈ΩB(6)\left.{\alpha}_{p}\right|_{\partial \Omega}=\left.\widehat{\alpha}_{p}\right|_{\partial \Omega}=\left\{\begin{array}{ll} 1 & p \in \Omega_{F} \\ 0 & p \in \Omega_{B} \end{array}\right.\tag{6} αp??Ω?=α p??Ω?={ 10?pΩF?pΩB??(6)
上式中定义的边界条件与下图中给定的由用户定义前景区域FFF、背景区域BBB是一致的。令F(?αp?1Fp?Bp)F(\nabla\alpha_{p}-\frac{1}{F_{p}-B_{p}})F(?αp??Fp??Bp?1?),根据变分原则,式(5)的求解满足欧拉公式:
?F??αp?ddx?F??αp?ddy?F??αp=0(7)\frac{\partial F}{\partial \nabla\alpha_{p}}-\frac{d}{d x} \frac{\partial F}{\partial \nabla\alpha_{p}}-\frac{d}{d y} \frac{\partial F}{\partial \nabla\alpha_{p}}=0\tag{7} ??αp??F??dxd???αp??F??dyd???αp??F?=0(7)
及得泊松方程:
Δα=div?(?IF?B)(8)\Delta \alpha=\operatorname{div}\left(\frac{\nabla I}{F-B}\right)\tag{8} Δα=div(F?B?I?)(8)
其中Δ=(?2?x2+?2?y2)\Delta=\left(\frac{\partial^{2}}{\partial x^{2}}+\frac{\partial^{2}}{\partial y^{2}}\right)Δ=(?x2?2?+?y2?2?)divdivdiv为散度算法,?\nabla?为拉普拉斯算子,关于泊松方程的求解方法可以参考CS267: Notes for Lectures 15 and 16。
泊松抠图:Poisson Matting
以上基于泊松方程的全局抠图算法,往往需要多次迭代才能得到比较理想的结果,具体迭代过程如下:

  • 初始化F?BF-BF?B,未知区域Ω\OmegaΩ中的像素点ppp可以根据其像素值与前景区域像素值FpF_{p}Fp?、背景区域像素值BpB_{p}Bp?的相似性进行初步划分,得到F?BF-BF?B,为保证F?BF-BF?B的平滑性,用高斯滤波器简单平滑F?BF-BF?B,用于抑制噪声和F、BF、BFB不准确估计带来的影响。

  • 求解式(8)所示泊松方程,得到α\alphaα

  • 根据求解得到的α\alphaα,进一步细化对F、BF、BFB的估计:
    ΩF+={p∈Ω∣αp>0.95,Ip≈Fp}ΩB+={p∈Ω∣αp>0.95,Ip≈Bp}\Omega_{F}^{+}=\left\{p \in \Omega \mid \alpha_{p}>0.95, I_{p} \approx F_{p}\right\}\\ \Omega_{B}^{+}=\left\{p \in \Omega \mid \alpha_{p}>0.95, I_{p} \approx B_{p}\right\} ΩF+?={ pΩαp?>0.95,Ip?Fp?}ΩB+?={ pΩαp?>0.95,Ip?Bp?}

  • 然后更新对ΩF、ΩB\Omega _{F}、\Omega_{B}ΩF?ΩB?的估计:
    ΩF=ΩF∪ΩF+ΩB=ΩB∪ΩB+\Omega_{F}=\Omega_{F} \cup \Omega_{F}^{+}\\ \Omega_{B}=\Omega_{B} \cup \Omega_{B}^{+} ΩF?=ΩF?ΩF+?ΩB?=ΩB?ΩB+?

  • 如此迭代以上第2-4步,即可解得α\alphaα
    泊松抠图:Poisson Matting

Local Poisson matting

回顾前面对前景区域和背景区域的基本假设,如果,前景区域和背景区域并不平滑的话,基于全局的泊松抠图效果往往不够好,因此将全局的泊松抠图问题再次划分为几个局部区域的子问题分别求解。将式(2)重写为:
?α=A(?I?D)\nabla \alpha = A(\nabla I -\mathbf{D}) ?α=A(?I?D)
其中A=1F?BA=\frac{1}{F-B}A=F?B1?D=α?F+(1?α)?B\mathbf{D}=\alpha\nabla F +(1-\alpha)\nabla BD=α?F+(1?α)?BAAA控制α\alphaα最终的梯度强度,D\mathbf{D}D为由前景、背景不够平滑所产生的梯度,我们前面的假设即是认为D\mathbf{D}D接近0,当D\mathbf{D}D不再接近0时,即用局部方法求解。记A?、D?A^{*}、\mathbf{D}^{*}A?D?A?、D?A^{*}、\mathbf{D}^{*}A?D?的ground truth,下图即是A、DA、\mathbf{D}AD错误估计对最终α\alphaα结果的影响。
泊松抠图:Poisson Matting
如Figure2.b中所示,可以从全局泊松抠图中指定不满意的区域ΩL\Omega _LΩL?进行局部区域的进一步抠图,定义新的未知区域边界:
?Ω={p∈(ΩL∩Ω)?∣Np∩(ΩL∩Ω)≠?}\partial \Omega=\left\{p \in \overline{\left(\Omega_{L} \cap \Omega\right)} \mid N_{p} \cap\left(\Omega_{L} \cap \Omega\right) \neq \emptyset\right\} ?Ω={ p(ΩL?Ω)?Np?(ΩL?Ω)??=?}
变分问题变为:
α?=arg?min?α?p∈ΩL∩Ω∥?αp?Ap(?Ip?Dp)∥2dp\alpha^{*}=\arg \min _{\alpha} \iint_{p \in \Omega_{L} \cap \Omega}\left\|\nabla \alpha_{p}-A_{p}\left(\nabla I_{p}-\mathbf{D}_{p}\right)\right\|^{2} d p α?=argαmin??pΩL?Ω??αp??Ap?(?Ip??Dp?)2dp
此时的狄利克雷边界条件为:
αp∣?Ω=α^p∣?Ω={1p∈ΩF0p∈ΩBαgp∈Ω\left.{\alpha}_{p}\right|_{\partial \Omega}=\left.\widehat{\alpha}_{p}\right|_{\partial \Omega}=\left\{\begin{array}{cl} 1 & p \in \Omega_{F} \\ 0 & p \in \Omega_{B} \\ \alpha_{g} & p \in \Omega \end{array}\right. αp??Ω?=α p??Ω?=????10αg??pΩF?pΩB?pΩ?
其中αg\alpha_{g}αg?是全局泊松抠图后计算得到的未知区域边界点处的α\alphaα值。