admin管理员组

文章数量:1558091

原理部分 

已知条件:

g是需要被Clone的前景图片,v是g的梯度场,S是背景图片所在区域浅粉色的S区域是Clone操作下无影响的原始背景区域,

深粉色的区域是Clone操作下被g替换的区域,∂Ω为的边界。浅粉色区域的原始背景图片称作, 深粉区的替换后的图片称之为。

求解目标:

它是一种在一个区域上找到一个最简单的函数来逼近另一个函数的方法。

引入 guidance field, a vector field 

这时候,保证填充图像内部的梯度等于,在边界处等于的值。

用像素网格法把连续问题离散化,

离散化变为

如何求解?它是一个最小二乘问题,可以用高斯-赛德尔迭代法或者共轭梯度法来求解。具体的步骤如下:

opencv api部分[python版]

里面有个flags,对应不同cloning方法.

常规融合(Normal Cloning)

此时引导向量是源图像的梯度场源图像的纹理(梯度)会保留在融合区域

The power of the method is fully expressed when inserting objects with complex outlines into a new background

混合融合(Mixed Cloning)

此时引导向量在每一个位置的值,取决于源图像和目标图像的梯度,谁的强度大,取谁的。

融合区域的纹理(梯度)由源图像和目标图像共同决定。混合融合会选择源图像和目标图像之中的主要纹理(梯度),

因此不会产生平滑区域。

单色迁移(Monochrome Transfer)

此时引导向量是源图像从彩色转成灰度之后的梯度。

保留源图像的纹理(梯度),丢弃其色彩信息,使得融合区域色彩与目标图像一致,可以用来进行皮肤质地填充。

Monochrome transfer allows the user to easily replace certain features of one object by alternative features.

opencv api部分[C++]

效果展示 

 

参考:

博客文献阅读 - Poisson Image Editing-CSDN博客
 和原始论文

本文标签: 图像OpencvseamlessClone