背景

比较火热的短视频绿布特效其实就是用到了图像融合技术,将其中一幅图加入另一幅图中形成合成视频。一般情况下,两幅图像或多幅图像若直接涂像素融合,比较突兀感官体验上不是一体,有一种图像技术可以较为自然的将两种图像融合,它就是泊松图像编辑技术。这是一个微分方程在图像中的一个重要应用,首先提出该应用的是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={ff∗​x∈Ω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∬Ω​∣∣∇f−∇g∣∣2dxdy
边界条件为: 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)====​∬Ω​∣∣∇u−∇g∣∣2dxdy∬Ω​∣∣∇(u−g)∣∣2dxdy∬Ω​(ux​−gx​)2+(uy​−gy​)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=((ux​−gx​)2+(uy​−gy​)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} ⟹⟹⟹​Mu​−dxd​∂ux​∂M​−dyd​∂uy​∂M​=0dxd​2(ux​−gx​)+dyd​2(uy​−gy​)=0uxx​−gxx​+uyy​−gyy​=0△u=△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∬Ω​∣∣∇(f−g)∣∣2dxdymin∬Ω​⟨∇(f−g),∇(f−g)⟩dxdy​
对任意实数 ϵ > 0 \epsilon>0 ϵ>0,取边界 ∂ Ω \partial \Omega ∂Ω上取值为0的函数 h ∈ C 0 ∞ ( Ω ) h\in C^{\infty}_0(\Omega) h∈C0∞​(Ω) 构成函数族 { 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​∣∣∣∣​ϵ→0​E(f+ϵ∗h)====​dϵd​∣∣∣∣​ϵ→0​∬Ω​⟨∇(f+ϵ∗h−g),∇(f+ϵ∗h−g⟩)dxdydϵd​∣∣∣∣​ϵ→0​∬Ω​⟨∇((f−g)+ϵ∗h),∇((f−g)+ϵ∗h)⟩dxdy2∬Ω​⟨∇(f−g),∇h⟩dxdy0​
由微分运算关系:
∇ ⋅ ( 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∇(f−g))=⟨∇(f−g),∇h⟩+h∇⋅∇(f−g)
将此式带入上式得:
∬ Ω ⟨ ∇ ( 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} =​∬Ω​⟨∇(f−g),∇h⟩dxdy∬Ω​∇⋅(h∇(f−g))−h∇⋅∇(f−g)dxdy​
由Stokes定理(求导与边界对偶), 又由于 h ∈ C 0 ∞ ( Ω ) h\in C^{\infty}_0(\Omega) h∈C0∞​(Ω) , 其实梯度与切向量正交,所以被积函数第一项为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∇(f−g))dxdy=∫∂Ω​(h∇(f−g))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∇⋅∇(f−g)dxdy=0h∇⋅∇(f−g)=0h△(f−g)=0△f=△g=∇⋅∇g​

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

数值求解

待更新

图像处理6-图像泊松编辑相关推荐

  1. 图像融合之泊松编辑(Poisson Editing)(1):简略语言概述算法

    http://blog.csdn.net/u011534057/article/details/68922197 原作者:Chris Tralie 简介 泊松图像编辑是一种全自动的"无缝融合 ...

  2. 4.图形图像素材编辑

    4.图形图像素材编辑 图形.图像是人类视觉所感受到的一种具象化的信息,是多媒体信息的主要类型,也是信息传递最基本.最常见的方式.它可以形象.生动和直观地表达大量的信息,具有文字和声音无可比拟的优点.图 ...

  3. OpenCV图像处理(十一)---图像梯度

    安培定则:也叫右手螺旋定则,是表示电流和电流激发磁场的磁感线方向间关系的定则.通电直导线中的安培定则(安培定则一):用右手握住通电直导线,让大拇指指向电流的方向,那么四指指向就是磁感线的环绕方向:通电 ...

  4. 【学习体会】图像泊松融合

    图像融合后: 参考博文:从泊松方程的解法,聊到泊松图像融合 - 知乎 参考论文:Pérez P, Gangnet M, Blake A. Poisson image editing[M]//ACM S ...

  5. 数字图像处理:图像的灰度变换(Matlab实现)

    数字图像处理:图像的灰度变换(Matlab实现) (1)线性变换: 通过建立灰度映射来调整源图像的灰度. k>1增强图像的对比度:k=1调节图像亮度,通过改变d值达到调节亮度目的:0 i = i ...

  6. Java OpenCV-4.0.0 图像处理22 图像模板匹配

    Java OpenCV-4.0.0 图像处理22 图像模板匹配 参考链接:https://blog.csdn.net/qq_34814092/article/details/95813654 Java ...

  7. 数字图像处理之图像基础

    最近在学数字图像处理,图像基础包括以下部分: 导入库 import numpy as np import matplotlib.pyplot as plt import cv2 as cv 图片展示函 ...

  8. 【图像处理】——图像的二值化操作及阈值化操作(固定阈值法(全局阈值法——大津法OTSU和三角法TRIANGLE)和自适应阈值法(局部阈值法——均值和高斯法))

    目录 一.二值化的概念(实际上就是一个阈值化操作) 1.概念: 2.实现方法 3.常用方法 二.阈值类型 1.常见阈值类型(主要有五种类型) (1)公式描述 (2)图表描述 2.两种特殊的阈值算法(O ...

  9. 图像处理傅里叶变换图像变化_傅里叶变换和图像床单视图。

    图像处理傅里叶变换图像变化 What do Fourier Transforms do? What do the Fourier modes represent? Why are Fourier Tr ...

最新文章

  1. tomcat启动前端项目
  2. 【DBMS 数据库管理系统】数据仓库中 数据追加 ( 时标方法 | DELTA 文件法 | 前后映像文件法 | 日志文件法 )
  3. 数据库元数据数据字典查询_10_列出数据库里的所有对象
  4. 请问在allegro中如何在铜箔上单独放置过孔?
  5. php parseint,JavaScript parseInt() 函数
  6. Linux下more命令C语言实现实践 (Unix-Linux编程实践教程)
  7. IBM 推出世界最小电脑,应用区块链技术防偷骗!
  8. 【Vegas原创】xp_sendmail提示“邮件已发送”但收不到邮件的解决方法
  9. HG255D刷flash记录
  10. 卡巴斯基2010激活码
  11. JS框架_(JQuery.js)夜晚天空满天星星闪烁动画
  12. 微信小程序图片加载太慢;uni-app微信小程序加载图片优化;微信小程序图片image加载成功事件@load;图片加载成功触发@load事件
  13. Refined Architecture阶段
  14. Matlab中产生门函数----Heaviside函数的调用方法
  15. 在警察领域高级人脸识别技术的一致性
  16. JavaCV - 图像色温调整
  17. 2019 年百度之星·程序设计大赛 - 初赛一 解题报告
  18. java设计模式之门面模式
  19. 编程之美 - 烙饼问题
  20. 读论文-Control of Memory, Active Perception, and Action in Minecraft

热门文章

  1. 物联网毕业设计 单片机火灾报警器设计与实现
  2. 连技术大拿都偷偷在用的偷懒神器Lombok
  3. web 基础练习/设计专业课程导航(7)
  4. 传感器实验——控制电机
  5. 数字电子技术-组合逻辑电路
  6. LangChain vs Semantic Kernel
  7. 怀旧:制作一款复古风格的游戏
  8. 我大抵是病了,横竖都睡不着。
  9. 十二种卫星地图的快速比较和选择方法
  10. N点标定-坐标系变换