【论文笔记】Image Completion with Structure Propagation

本文是关于Image Completion的阅读笔记,重点介绍了结构传播在图像修复中的作用。通过用户手动标记的结构曲线,结合动态规划(DP)和最大产品信念传播(BP),实现了结构连续的图像修复。在纹理合成部分,利用texture by number技术避免无关区域信息干扰,解决了块间重叠的边缘问题。论文还探讨了纹理合成的多种方法及其优缺点。
摘要由CSDN通过智能技术生成

概要:
  Image Completion的阅读笔记,包括算法流程以及参考论文的阅读笔记

概览

1.解决思路及技术

  基于块的图像修复容易造成结构不连续,而重要的结构信息可以通过几条曲线来表示,且人眼敏感于这些重要结构,所以对于这些结构应该优先合成。
  用户手动标记从已知区域延申到未知区域的结构曲线,用于标识重要的结构信息,之后沿着曲线,在已知区域中采集源块,用来填补未知曲线上的空间,这一部分填补使用结构传播。之后使用基于块的纹理合成完成其余部分的填充。
  本文将结构传播视为全局优化问题。在结构传播中,如果曲线是单曲线,没有交叉则使用动态编程,此时将curve采样之后,待填补的结构视作(由目标块构成)。如果是多曲线,有交叉则使用置信传播,此时将curve采样之后,待填补的结构视作(由目标块构成)。
  在纹理合成中,利用标记曲线划分开的图像区域,使用texture by number技术,可以避免在纹理合成过程中从无关图像区域获取图像信息。
  为了解决块之间overlapping时的边缘问题,使用photometric correction method
在这里插入图片描述

2.数据结构

符号含义
C绘制的结构曲线
Ω图像未知区域
I图像已知区域
{p i}Li=0C上采样的L个p点(锚点)
G={V,ε}未知区域内采样构成的链表或图,V表示点,ε表示边
P={P(1),P(2)…P(n)},xi∈{1,2,…,N}在已知区域结构曲线上的sample集,其中心在曲线1到5个像素的窄带内
Es结构约束,比较源块和未知块曲线的结构相似性
EI完成约束,边缘合成相似性,边缘块与已知区域重叠部分相似性
E1Es和EI的线性组合
E2连续约束、一致性约束,检测相邻块重叠区域的相似性
Mi(xi)DP算法中,累计的从1到i的最短路径长度
Mi,jBP算法中从节点i传播到节点j的信息,是一个N维向量(一共有N个源块),消息Mij指示节点i相信节点j具有相应标签xj的可能性。

结构传播

  结构传播实际上可以看作匹配问题,即从P中选择合适的P(xi)复制到相应的锚点上,选择P的指标为损失函数(能量函数),目标是最小化损失函数,不同的情况具有不同的最小化实现策略,包括DP算法和BP算法。

1.损失函数

在这里插入图片描述
  如同上一部分数据结构中的描述,E1针对节点(patch ),E2针对边(边联系两个点,表示两块patch的重叠部分),E1由结构约束和完成约束线性组合构成,k是权重。结构约束Es计算一条曲线的点到另一条曲线的最短距离的和(源块和待填充块内部都有一条用户绘制的,用于标明结构的曲线,因为这些块都是在这条曲线上采样的),下式为结构约束的计算公式,ci表示目标块中的曲线,cxi表示源块中的曲线,d(ci,cxi)表示ci上的每一个像素,到cxi的最短距离的和,结构约束的最终结果,使用总像素点数相除归一化后得到。
在这里插入图片描述
  完成约束EI计算边缘块与已知区域重叠的相似度,使用SSD计算合成块和已知区域重叠部分的差异,未知区域内设置为0(没有和已知区域重叠的部分),计算部分如下图橙色区域。
在这里插入图片描述
  连续约束E2计算相邻块重叠部分的差异,使用归一化SSD计算,计算区域如下图橙色区域。
在这里插入图片描述

2.DP

  当G是单链表的时候,最小化损失函数的问题可以看作最短路径问题解决,DP算法可以简单理解成在每个节点处选择当前最优的结果,用最短路径和记录cost,最短路径和Mi(xi)定义如下:
在这里插入图片描述
表示当前节点的最优结果加上从起点到前一个节点的最短路径和。由于在单链表中只有xi-1已经确定了,所以邻节点只有xi-1,故E2计算的是xi-1和xi的约束,Mi-1表示已经确定的路径和,这样确保计算到最后会得到最短路径和。
  以最后一个节点为例,对于节点L(最后一个节点),选取结果为:
在这里插入图片描述
  在计算过程中,维护一个记录表,用于记录最短路径的每一个节点,通过查询此记录表,可以实现回溯。

3.max-product BP(置信传播)

  BP算法是一个可以最小化成对的(pairwise)无向图能量的局部信息传递算法,BP算法中的pairwise是指在每个节点位置,有一对节点,分别叫做隐含节点和显式节点,在本文中,隐含节点即是源块(sample),显式节点即是未知块(在未知区域线上采样的块),这两块构成pairwise的概念,具体BP算法的原理可以参考置信度传播算法(Belief Propagation)
  BP算法的基本思想是接收邻居信息,并根据自身状态更新信息,最后将更新完的信息返还给邻居,这个过程是互相影响的,论文算法如下:
在这里插入图片描述
  公式6可以理解为,xi=最小化:节点i的信息+节点i的邻域的M信息。公式5可以理解为,Mi,j=最小化:节点i的信息(E1、E2)+邻域中除去j节点的M信息(求和部分)
  更新了的节点,会对邻域节点的下次更新产生影响,这种影响是相互的,而对于某个节点来说,如果它的邻域节点都没有收敛,则它在邻域节点收敛之前的更新都是没有必要的,这种操作会增加计算量,以邻域节点收敛为标志进行的更新,可以避免这些不必要的计算,论文通过设置一个二值变量来实现这种设计,这种设计使算法复杂度独立于曲线交点的数量,从而降低算法复杂度。
  可以看出,当对象是单链条而不是图时,BP算法的公式等价于DP算法,这是因为,在单链情况下,M信息等价于最小路径和,因为公式6中的邻域只有一个,即该节点的上一个节点,而M信息是一个会不断叠加的信息,公式5等价于本节点信息+上一个节点的M信息,这种叠加,使M信息等价于当前节点之前的最小路径和。

纹理合成

  结构传播解决了曲线上的像素块合成的问题,曲线之外的像素利用纹理合成进行填充。为了避免纹理合成中利用不相关的图像区域的信息,纹理合成使用texture-by-number的技术,论文1~3讲述了该技术的发展过程和算法原理,中心思想是构建高斯金字塔,使用合适的评估指标和方法,逐像素实现纹理合成。texture-by-number利用人工分割出来的区域,分割工作实际上是一种纹理的组合,可以实现更准确的纹理合成(保证stationary的性质),合成顺序由置信图决定。

1.论文参考-Fast Texture Synthesis using Tree-structured Vector Quantization

(1)符号含义:

在这里插入图片描述

(2)单分辨率任务:

  N(p ) 邻域有两个概念,一个是output图像Is中,待填充像素的邻域(bd),一个是sample图像Ia中,目标像素的邻域(a),如下图,通过匹配两个邻域的similarity确定哪个Ia的像素(目标像素)可以用来填充Is,Is最初几行的邻域由初始化噪音决定,之后的邻域均由已经确定的像素决定。
单分辨率任务

  此时纹理合成的效果很大程度上受邻域大小影响,这种方法要求邻域的尺寸要匹配最大的规则性纹理结构以捕捉低频成分,否则会得到不太random的 结果,而大的邻域要求更多的计算资源,后使用多分辨率图像金字塔解决这个问题。

(3)多分辨率任务:

伪代码:
在这里插入图片描述
  根据输入size,使用噪声初始化Is(与输入图像直方图相等),使图像具有足够的熵,以使后续的纹理合成不需要关注纹理里的随机性。根据输入的纹理图片Ia构建高斯金字塔Ga,Is构建高斯金字塔Gs,从这里开始执行多分辨率任务,从低层向高层(低分辨率到高分辨率)实现纹理合成,在合成过程中,similarity=像素之间的距离平方和,像素合成方法类似于单分辨率任务,但是邻域包括当前层和上一层的像素,这种操作可以保持从低分辨率层合成的纹理结构保持连续性。
  这种方法只能处理具备stationary和local的图像,不能处理3D形状等其它纹理。

Other visual cues such as 3D shape, depth,lighting, or reflection can not be captured by this simple model.

  stationary指只要观察窗口的大小合适,那么被可观察的部分看起来都是相似的,local指像素可以被邻域像素预测,且独立于图像剩余部分。

(4)缺点

  在具有相似shape和size的纹理上表现不好,比如树叶、灌木丛等;
  使用L2距离无法评估视觉相似;
  像素都在sample里获取,像素的直方图不足以实现两块区域之间的平滑过度(资源不够),会产生边缘模糊,TSVQ会加剧现象;

(5)others

多分辨率
  多分辨率即图像金字塔(降采样、上采样得到的图像金字塔)。
  高斯金字塔与拉普拉斯金字塔

2.论文参考-synthesizing natural textures

  这个算法适合纹理的size、shape具有极高相似性的一类纹理,比如树叶。

(1)基本算法

  基于上一篇中的WL算法,在待选像素的选择上进行优化,待选像素的选择策略为:output邻域中的像素在input中相应的邻像素作为待选像素,相应的邻像素可以解释为:假设output邻域中的像素a,相对于L形邻域的位置为A,则a在input中的相应邻像素,为以a在input中的原位置,相对于L形邻域位置为A的中心像素。如下图,input image中黑色像素为待选像素。
WL算法改进
  input中只有邻域完全在图像内的才是有效的像素,否则使用随机的有效像素替代。
  当匹配到input底部的时候,合成块容易出现短的水平边缘,这种边缘容易被遮蔽,但是当input底部图像特征明显时,合成缺陷就比较明显了,通过人为地减少从输入样本底部获取的输出像素的百分比,可以有效解决这种问题,但是此过程中随机数生成器调用地越频繁,算法表现越差,况且大部分照片不涉及这种bottom问题。

(2)user control

  为了使纹理合成的结果更符合用户的需要,加入target image的概念:当output上半部分需要更多花,下半部分更多草时,target上半部分就绘制更多花的颜色,下半部分更多草的颜色;当纹理中需要呈现某一个物体的形状时,target中就绘制该物体。这些绘制的像素为有效像素。
  输入变为input sample 以及target image,target image与输出图像的size相同,纹理合成相当于对target image重写一遍,邻域从L形变为矩形,矩形的上L形与之前的操作相同,下L形为target与input的L2距离,即邻域由output和target组成,target邻域中的有效像素,仅包含用户输入的有效像素。如下图青色部分为有效像素。
在这里插入图片描述
这种纹理合成的效果如下图:
在这里插入图片描述

(3)缺点

  源像素基本上从上到下选取,当到达底部时,重新开始的策略决定比较麻烦

3.论文参考-Image Analogies

(1)问题前导及概览

  目标问题:用图像A(原图)、A’(处理后)、B(原图),生成B’;

we want to find an “analogous” image B’ that relates to B in “the same way” as A‘ relates to A

  要求:用一种生成机制代替明确的,表示确定渲染效果的filter等参数或代码,从而可以应对广泛的渲染要求;
  目标实现存在的困难:如何评估similarity,包括A和A’之间的relation和A对(A、A’)和B对之间的relation,如何确定保留的feature是对style的重要影响部分;
  similarity解决方法:使用基于原始马尔可夫随机场模型(MRF)近似值的相似性指标(similarity),并使用原始像素值和可控滤波器响应;
  生成速度的需求:索引和搜索A、A‘,B的方法,以及使用合适的similarity metric选择从A到A’合适的transform去完成B到B‘的合成;
  速度需求解决:使用基于1、2论文的自回归算法
  解决从A应用于B而颜色不同的情况:使用亮度空间而不是RGB;
  纹理合成:视为A、B为NULL,算法作用于A’和B’,
  texture-by-numbers:A’为原图,A为segment的图片,划分部分为solid color(纯色)

(2)算法

  数据结构:

AA’BB’备注
像素ppqq表示像素2D location
特征向量A( p )  A’ ( p )B(q)B’(q)A、B的特征向量不需要和A’与B’相同,feature由channel构成,B’(q)是输出,其余是输入
映射函数s(q)=p记录下所有copy到q的p的位置,是输入
多尺度表示A l( p)A’l( p)Bl(q)B’l(q)l(L)表示层级
  算法流程
在这里插入图片描述
  前三步完成对高斯金字塔、feature、search metric的初始化,之后从粗糙层到精细层进行匹配运算,匹配运算包括bestmatch(从A’中找出最匹配的位置),把A’的p位置特征向量赋值给B’q位置,再把p位置存储起来,方便之后索引。
  这一步算法中的核心部分是bestmatch:
在这里插入图片描述
  bestmatch输入三张源图(A、A’、B),已经部分合成的B’、p索引s、层级l和待合成的q。
  BESTAPPROXIMATEMATCH根据p、q以及邻域的feature vector计算closest-matching pixel,可以使用ANN和TSVQ,在两种方法下,对特征向量使用相同的归一化。PCA(principal components analysis)用于加速算法,该加速方法会减少一个数量级的维度,但是会导致效果变差,这种加速方法适用于特征向量size比较大的情况。(这种匹配方法像素数值更匹配)
  BESTCOHERENCEMATCH基于上面的论文2,加入已经生成的像素(参数里加入了索引s),从而保持已经生成的像素的一致性。(这种匹配方法视觉效果更好)
   F( p)表示在当前分辨率级别L和较粗分辨率级别L-1上,源图像A和A’的某个邻域N(p)内所有特征向量的concatenate(维度拼接),在粗层级上邻域为3 * 3,较精层级上为5 * 5,B’内的邻域只包含已合成的像素。
   L2范数使距离p、q更远的邻域像素具有更小的权重,同时,对像素进行归一化,使金字塔每一层都有相同的权重。
  参数κ用于放大coherence的影响,并且此参数随着层数的变化而变化。比较两种match策略下选出的像素于q像素的相似性,选择更优结果返回。
  对于feature vector可以使用亮度代替RGB,使用YIQ色彩空间内的Y通道作为亮度值。完成亮度空间的计算后,将B的IQ通道复制到B’就可以还原像素,还原之后再转换为RGB。使用亮度空间仍会出现邻域直方图之间的重叠较差,论文使用一个线性映射来匹配亮度分布的均值和方差。
在这里插入图片描述
μ是亮度均值,σ是亮度标准差,这种映射应用于A、A’、B。
(3)texture by number

   texture by number通过将标记示例图像的统计信息应用于新的标记图像B来合成新的图像。一张图片可以看作不同纹理的组合,这种图片的纹理分布并不具备stationary,所以用A图划分纹理区域(主要是标记出不stationary的区域,把它们分割开),A’为原图,B图划分新的纹理区域,并且纹理区域之间的边界也会被匹配,由此生成新的图像B’。如下图。
   A图可以是任意维度,包含任意附加信息,如图像深度等,来促进合成。
在这里插入图片描述

4.Photometric Correction

   该方法用于解决块之间的overlapping造成的缝隙问题(重叠的边缘)。
在这里插入图片描述
   红色块和绿色块是已经合成的块,蓝色块是待合成的块,首先将源块复制到蓝色块作为块J,在J上定义一个二元掩模M,在非蓝色区域为0,蓝色区域为1,根据如下公式重建J得到▽J,图中的黄色边框内侧就是迪利克雷边界条件,像素的每个颜色通道分别在▽J上解泊松方程得到J*,就是最终的蓝色目标块了。
在这里插入图片描述
   下图为使用该方法前后的对比图:
在这里插入图片描述

5.Sample Transformation

   在合成中,sample可能会不足,通过旋转、翻转操作来扩充sample,旋转分为确定尺度旋转和任意尺度旋转,任意尺度旋转遵循的原则是
在这里插入图片描述

学术名词

英语中文备注
texture synthesis纹理合成给定sample生成纹理
texture mapping纹理映射
Single Resolution单分辨率
Multiresolution多分辨率图像金字塔
multiscale autoregression多尺度自回归
negative log probabilities负对数概率
undirected graph无向图

参考文献

[1] Jian Sun, Lu Yuan, Jiaya Jia, Heung-Yeung, Shum, Image Completion with Structure
Propagation, Proceedings of SIGGRAPH 2005.
[2] WEI, L.-Y., AND LEVOY, M. Fast texture synthesis using tree-structured vector quantization.
Proceedings of SIGGRAPH 2000 (July 2000), 479–488.
[3] Michael Ashikhmin. Synthesizing Natural Textures. ACM Symposium on Interactive 3D
Graphics, pages 217–226, March 2001.
[4] Hertzmann, A., Jacobs, C. E., Oliver, N., Curless, B., and Salesin, D. Image analogies. In
Proceedings of ACM SIGGRAPH 2001, 327–340.
[5]董子龙.mage Completion with Structure Propagation ——《计算机应用数学》读书报告

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值