泊松图像编辑(Possion Image Edit)原理、实现与应用

泊松图像编辑是一种基于泊松方程的图像修复和编辑技术,通过对图像梯度的修改实现平滑过渡。核心是通过解决泊松方程找到最佳填充像素值,以达到边界无缝融合。应用包括Seamless Cloning、纹理平滑、局部光照和颜色变化以及无缝图像拼接。该技术依赖于引导向量场来指导像素填充,可以用于图像编辑和融合,创造出自然的编辑效果。
摘要由CSDN通过智能技术生成

Example

虽然是2003年的文章了,但是由于其扎实的数学基础和至今看来都极其出色的效果,对每一个图像处理领域的学习者仍然是一篇值得一读的好文章。

本文同步发于Github.io,转载请注明来源

文章内容为参考论文原文与网络相关内容的个人理解,如有错误,请在评论区指出。

Poisson Image Editing - 2003

泊松图像编辑

有兴趣的朋友可以详细了解一下泊松方程的来历及其数学原理,在这里给几个可供参考的链接。

泊松方程的理论推导
 
从泊松方程的解法,聊到泊松图像融合
 
图像融合(1)Seamless cloning

我看网络上很多相关解读都是直接从泊松融合入手,其实这并不是泊松图像编辑的本质内容,只能算是一个非常惊艳的应用方法。泊松图像编辑的本质是修改图像的梯度,然后通过泊松方程解最优化问题,从新的梯度恢复出修改后的图像。其梯度的修改可以包括很多种:改变梯度来源(泊松融合)、对梯度频带截断(去纹理)、调整不同通道梯度比例(改变颜色)等等,文章将会对这些应用都有基础的介绍。

在这里,以论文提到的内容为准,对论文涉及的相关数学知识简单梳理一下。当然,对本部分实在没有兴趣的朋友可以跳过,只看后面也可以大致理解泊松编辑的原理和方法。

基于泊松方程的内插方法

S

从上面两个图开始说起,假设左边的 S S S本来是一副好好的图片,那这时候我们在上面扣了一个洞,这个洞的样子大概就是右边这个图片,那这个 Ω \Omega Ω呢就表示这个洞的区域, ∂ Ω \partial\Omega Ω则表示这个洞的边界。造成了这样的结果,是谁的错已经不重要了,总之我们现在想要把这个图像恢复要原来的样子,也就是想把这个洞填上。那现在没有任何可以参照的东西,剩下的只有带了洞的 S S S,唯一能够直接拿来用的也只有这个洞的边界像素值 ∂ Ω \partial\Omega Ω我们还是知道的,想要填补这个洞,我们希望填出来的内容满足下面两个条件:

  • 填补内容要尽可以平滑
  • 填补内容的边界像素值和现有的 S S S一致,即要无缝过度

那要满足上述两个要求,就得到了以下的数学表达:

m i n f ∬ Ω ∣ ∇ f ∣ 2   with   f ∣ ∂ Ω = f ∗ ∣ ∂ Ω (1) \underset{f}{min}\iint_{\Omega}\left|\nabla f\right|^2\ \text{ with }\ f|_{\partial\Omega}=f^*|_{\partial\Omega} \tag1 fminΩf2  with  fΩ=fΩ(1)

其中 ∇ \nabla 是一阶微分,即梯度算子。那这个式子其实就是按照上面两个条件列出来的,意思就是在 Ω \Omega Ω区域梯度尽可能小(平滑),满足边界上像素相等的约束条件(无缝过度)。而上述最优化问题的解满足欧拉-拉格朗日方程:

Δ f = 0   over   Ω   with   f ∣ ∂ Ω = f ∗ ∣ ∂ Ω (2) \Delta f=0\ \text{ over }\ \Omega \ \text{ with }\ f|_{\partial\Omega}=f^*|_{\partial\Omega} \tag2 Δf=0  over  Ω  with  fΩ=fΩ(2)

其中 Δ \Delta Δ表示二阶微分(直角坐标系下的散度div),即拉普拉斯算子,也就是二阶梯度 ∇ 2 \nabla ^2 2,学过图像处理的朋友应该很熟悉。而这个时候的边界条件就称为狄利克雷边界(Dirichlet boundary)。众所周知,取得一阶微分极值时,二阶微分等于0。所以要在梯度取最小的时候,就要在使得散度为0,因此就有了上式。已知区域 Ω \Omega Ω内的散度都是0,以及边界上已知的像素值,即可求出 Ω \Omega Ω内部所有像素值,根据以上方程填充的图像将会是以下结果。

lap

上图从左到右分别为原图、填充区域、复原图。

看到这里想必有朋友已经怒拍键盘,看了半天你就给我糊一马赛克上去?

平心而论,有一说一,这个结果其实已经充分满足我们给出的条件了:1、填补内容尽可能平滑;2、颜色也在边界像素点的约束下与背景保持一致。

那之所以最后出现这样不堪入目的结果,是因为我们没有告诉它里面要填些啥东西,所以大家先坐下来继续看。这个时候我们就要稍微引导它一下,给它带入正规,这里就要用到引导向量场(guidance vector field) v \mathbf{v} v

V

好了,上图多了 v \mathbf{v} v g \mathbf{g} g ,其中 v \mathbf{v} v是引导向量场,也就是梯度场,可以理解为从 g \mathbf{g} g中导出的。其实我们并不关心 g \mathbf{g}

  • 42
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值