概要:
Image Completion的阅读笔记,包括算法流程以及参考论文的阅读笔记
概览
1.解决思路及技术
基于块的图像修复容易造成结构不连续,而重要的结构信息可以通过几条曲线来表示,且人眼敏感于这些重要结构,所以对于这些结构应该优先合成。
用户手动标记从已知区域延申到未知区域的结构曲线,用于标识重要的结构信息,之后沿着曲线,在已知区域中采集源块,用来填补未知曲线上的空间,这一部分填补使用结构传播。之后使用基于块的纹理合成完成其余部分的填充。
本文将结构传播视为全局优化问题。在结构传播中,如果曲线是单曲线,没有交叉则使用动态编程,此时将curve采样之后,待填补的结构视作链(由目标块构成)。如果是多曲线,有交叉则使用置信传播,此时将curve采样之后,待填补的结构视作图(由目标块构成)。
在纹理合成中,利用标记曲线划分开的图像区域,使用texture by number技术,可以避免在纹理合成过程中从无关图像区域获取图像信息。
为了解决块之间overlapping时的边缘问题,使用photometric correction method。
2.数据结构
符号 | 含义 |
---|---|
C | 绘制的结构曲线 |
Ω | 图像未知区域 |
I | 图像已知区域 |
{p i}Li=0 | C上采样的L个p点(锚点) |
G={V,ε} | 未知区域内采样构成的链表或图,V表示点,ε表示边 |
P={P(1),P(2)…P(n)},xi∈{1,2,…,N} | 在已知区域结构曲线上的sample集,其中心在曲线1到5个像素的窄带内 |
Es | 结构约束,比较源块和未知块曲线的结构相似性 |
EI | 完成约束,边缘合成相似性,边缘块与已知区域重叠部分相似性 |
E1 | Es和EI的线性组合 |
E2 | 连续约束、一致性约束,检测相邻块重叠区域的相似性 |
Mi(xi) | DP算法中,累计的从1到i的最短路径长度 |
Mi,j | BP算法中从节点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)定义如下: