图像处理6-图像泊松编辑

背景

       比较火热的短视频绿布特效其实就是用到了图像融合技术,将其中一幅图加入另一幅图中形成合成视频。一般情况下,两幅图像或多幅图像若直接涂像素融合,比较突兀感官体验上不是一体,有一种图像技术可以较为自然的将两种图像融合,它就是泊松图像编辑技术。这是一个微分方程在图像中的一个重要应用,首先提出该应用的是SIGGRAPH 2003,该文章对现在的图像编辑技术有着非常重要的影响。下面我们拆解一下其中的原理,为提高图像处理技术提供支持。本人能力有限,有错误请批评指正。

数学模型

问题描述:原图图像 g g g 所占的区域为 Ω \Omega Ω,根据原图的梯度和目标图嵌入位置的边界结构,构建过渡区域的图像像素值无缝融合至右侧图像 T T T 中,右侧融合部分的图像值未知需要求解,如下图所示。
在这里插入图片描述

符号说明:原图图像 g g g ,梯度图是 ∇ g \nabla g g,,图像 g g g 的区域范围是 Ω \Omega Ω,其边界为 ∂ Ω \partial \Omega Ω。合并后 Ω \Omega Ω内的像素用 f f f表示, Ω \Omega Ω外用 f ∗ f^* f表示。即:
合 成 像 素 值 F = { f x ∈ Ω f ∗ x ∉ Ω 合成像素值F=\begin{cases} f & x\in \Omega \\ f^* & x \notin \Omega \end{cases} F={ffxΩx/Ω
对于一幅图像来说,宏观意义体现在纹理特征上,所以要让两幅图恰当无缝融合,需要将两幅图的融合部位的纹理做成一致。而纹理体现在梯度上,所以需要融合区域与原图区域梯度保持一致性。融合的纹理一致意味着 Ω \Omega Ω 内外区域变化差异达到极小,也就是E(f)取极小值。
用公式表示为能量函数:
E ( f ) = m i n ∬ Ω ∣ ∣ ∇ f − ∇ g ∣ ∣ 2 d x d y E(f)= min\iint_\Omega \mid\mid \nabla f-\nabla g \mid\mid^2dxdy E(f)=minΩfg2dxdy
边界条件为: f ∣ ∂ Ω = f ∗ ∣ ∂ Ω f|_{\partial \Omega}=f^*|_{\partial \Omega} fΩ=fΩ
上式积分不容易直接求解,需要做一些简化,有2个途径,本质是相同的。

方法1:
直接使用欧拉-拉格朗日变分,对于能量 E E E
E ( u ) = ∬ Ω ∣ ∣ ∇ u − ∇ g ∣ ∣ 2 d x d y = ∬ Ω ∣ ∣ ∇ ( u − g ) ∣ ∣ 2 d x d y = ∬ Ω ( u x − g x ) 2 + ( u y − g y ) 2 d x d y = ∬ Ω M d x d y \begin{aligned} E(u)=& \iint_\Omega \mid\mid \nabla u-\nabla g \mid\mid^2dxdy \\ =&\iint_\Omega \mid\mid \nabla (u-g) \mid\mid^2dxdy \\ = &\iint_\Omega (u_x-g_x)^2+(u_y-g_y)^2dxdy \\ =&\iint_\Omega Mdxdy \end{aligned} E(u)====Ωug2dxdyΩ(ug)2dxdyΩ(uxgx)2+(uygy)2dxdyΩMdxdy
这是个泛函变分问题, u u u在泛函空间取值,使得E为极小值,其中 M = ( ( u x − g x ) 2 + ( u y − g y ) 2 M=((u_x-g_x)^2+(u_y-g_y)^2 M=((uxgx)2+(uygy)2。由Euler-Lagrange变分公式:
M u − d d x ∂ M ∂ u x − d d y ∂ M ∂ u y = 0 ⟹ d d x 2 ( u x − g x ) + d d y 2 ( u y − g y ) = 0 ⟹ u x x − g x x + u y y − g y y = 0 ⟹ △ u = △ g = ∇ ⋅ ∇ g \begin{aligned} &M_u-\frac{d}{dx}{\frac{\partial M}{\partial u_x}}-\frac{d}{dy}{\frac{\partial M}{\partial u_y}}=0 \\ \Longrightarrow &\frac{d}{dx}{2(u_x-g_x)}+\frac{d}{dy}{2(u_y-g_y)}=0 \\ \Longrightarrow &u_{xx}-g_{xx}+u_{yy}-g_{yy}=0 \\ \Longrightarrow &\triangle u=\triangle g=\nabla\cdot\nabla g \end{aligned} MudxduxMdyduyM=0dxd2(uxgx)+dyd2(uygy)=0uxxgxx+uyygyy=0u=g=g

方法2:
由于梯度算子是个线性算子,并将被积函数用内积表示,切向量作为度量,颇有几何意义,所以有:
E ( f ) = m i n ∬ Ω ∣ ∣ ∇ ( f − g ) ∣ ∣ 2 d x d y = m i n ∬ Ω ⟨ ∇ ( f − g ) , ∇ ( f − g ) ⟩ d x d y \begin{aligned} E(f)=&min\iint_\Omega \mid\mid \nabla (f-g) \mid\mid^2dxdy \\ =&min\iint_\Omega \langle\nabla (f-g),\nabla(f-g)\rangle dxdy \end{aligned} E(f)==minΩ(fg)2dxdyminΩ(fg),(fg)dxdy
对任意实数 ϵ > 0 \epsilon>0 ϵ>0,取边界 ∂ Ω \partial \Omega Ω上取值为0的函数 h ∈ C 0 ∞ ( Ω ) h\in C^{\infty}_0(\Omega) hC0(Ω) 构成函数族 { f + ϵ ∗ h } \{f+\epsilon*h\} {f+ϵh},在 ϵ → 0 \epsilon\rightarrow0 ϵ0时,能量 E E E取极小值。
d d ϵ ∣ ϵ → 0 E ( f + ϵ ∗ h ) = d d ϵ ∣ ϵ → 0 ∬ Ω ⟨ ∇ ( f + ϵ ∗ h − g ) , ∇ ( f + ϵ ∗ h − g ⟩ ) d x d y = d d ϵ ∣ ϵ → 0 ∬ Ω ⟨ ∇ ( ( f − g ) + ϵ ∗ h ) , ∇ ( ( f − g ) + ϵ ∗ h ) ⟩ d x d y = 2 ∬ Ω ⟨ ∇ ( f − g ) , ∇ h ⟩ d x d y = 0 \begin{aligned} \frac{d}{d\epsilon}\bigg|_{\epsilon\rightarrow0}E(f+\epsilon*h)=& \frac{d}{d\epsilon}\bigg|_{\epsilon\rightarrow0}\iint_\Omega \langle \nabla(f+\epsilon*h-g),\nabla(f+\epsilon*h-g\rangle) dxdy \\ =& \frac{d}{d\epsilon}\bigg|_{\epsilon\rightarrow0}\iint_\Omega \langle \nabla((f-g)+\epsilon*h),\nabla((f-g)+\epsilon*h)\rangle dxdy \\ =&2\iint_\Omega \langle \nabla(f-g), \nabla h\rangle dxdy \\ =&0 \end{aligned} dϵdϵ0E(f+ϵh)====dϵdϵ0Ω(f+ϵhg),(f+ϵhg)dxdydϵdϵ0Ω((fg)+ϵh),((fg)+ϵh)dxdy2Ω(fg),hdxdy0
由微分运算关系:
∇ ⋅ ( h ∇ ( f − g ) ) = ⟨ ∇ ( f − g ) , ∇ h ⟩ + h ∇ ⋅ ∇ ( f − g ) \nabla \cdot (h\nabla (f-g))=\langle \nabla(f-g), \nabla h\rangle+h\nabla\cdot\nabla (f-g) (h(fg))=(fg),h+h(fg)
将此式带入上式得:
∬ Ω ⟨ ∇ ( f − g ) , ∇ h ⟩ d x d y = ∬ Ω ∇ ⋅ ( h ∇ ( f − g ) ) − h ∇ ⋅ ∇ ( f − g ) d x d y \begin{aligned} &\iint_\Omega \langle \nabla(f-g), \nabla h\rangle dxdy \\ =&\iint_\Omega \nabla \cdot (h\nabla (f-g))-h\nabla\cdot\nabla (f-g) dxdy \end{aligned} =Ω(fg),hdxdyΩ(h(fg))h(fg)dxdy
由Stokes定理(求导与边界对偶), 又由于 h ∈ C 0 ∞ ( Ω ) h\in C^{\infty}_0(\Omega) hC0(Ω) , 其实梯度与切向量正交,所以被积函数第一项为0:
∬ Ω ∇ ⋅ ( h ∇ ( f − g ) ) d x d y = ∫ ∂ Ω ( h ∇ ( f − g ) ) d s = 0 \iint_\Omega \nabla \cdot (h\nabla (f-g))dxdy=\int_{\partial \Omega}(h\nabla(f-g))ds=0 Ω(h(fg))dxdy=Ω(h(fg))ds=0
h h h 在空间 C 0 ∞ ( Ω ) C^{\infty}_0(\Omega) C0(Ω) 的任意性,进一步有,
∬ Ω h ∇ ⋅ ∇ ( f − g ) d x d y = 0 ⟹ h ∇ ⋅ ∇ ( f − g ) = 0 ⟹ h △ ( f − g ) = 0 ⟹ △ f = △ g = ∇ ⋅ ∇ g \begin{aligned} &\iint_\Omega h\nabla\cdot\nabla (f-g) dxdy=0 \\ \Longrightarrow &h\nabla\cdot\nabla(f-g)=0 \\ \Longrightarrow &h\triangle(f-g)=0 \\ \Longrightarrow &\triangle f=\triangle g=\nabla\cdot\nabla g \end{aligned} Ωh(fg)dxdy=0h(fg)=0h(fg)=0f=g=g

================================================================================

数值求解

待更新

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值