我正在尝试按照Criminsi等人的建议实现基于示例的内画。人。以其原始格式(在进行进一步优化之前)。
我有一些理论上的疑问,我想澄清一下。
我不确定补丁优先级和填充顺序的确定如何将线性结构传播到用户选择的目标区域。
据我了解,Criminsi 提出以下建议:
- 确定填充前 dΩ。
- 计算位于填充前沿的补丁的补丁优先级 [C(p)D(p)]。
- 将纹理传播到补丁中 - 按照补丁优先级的顺序。
- 更新置信度值。
- 从剩余的未填充部分重新计算填充前 dΩ。
[重复这5个步骤,直到所有目标区域都被填满]。
现在,如果对算法的这种理解是正确的(如果解释有误,请纠正我),我有以下疑问:
如果我总是只从填充正面填充补丁,并且如果补丁固定在它们的空间位置(相对于填充正面的其他补丁),那么我看不出填充顺序有多重要。补丁通过源区域的直接采样来填充,在所有迭代中都保持不变。因此,我不明白填充顺序将如何导致传播纹理上的任何像素级差异。据我所知,源区域的最佳匹配应该保持不变,无论顺序如何。我在这里想念什么?
根据此视频(并假设它是正确的),补丁填充并不总是只发生在填充前端。这是如何运作的?这是否意味着我们要立即计算目标区域中所有补丁的优先级并根据它们的优先级继续填充它们?那么,填充前沿的确定有什么影响?为什么 Criminsi 还要确定 dΩ?我知道 Criminsi 的方法比传统的洋葱皮技术领先一步。但是,究竟如何?
在我深入研究 2-3 天的密集编码之前,我真的希望澄清这些问题。
请帮忙。
提前致谢。
+++++++++++++++++++++++++++++++++++++++++++
我在实现这个算法时面临的另一个问题:
在传播结构和纹理信息时,我直接对源区域进行采样,以找到两个补丁中已填充像素的 SSD 最少的补丁。
困扰我的问题是:SSD 是什么?我尝试了 RGB/HSV 值的 SSD,但没有成功。我刚刚开始引用 Criminisi for SSD 的原始引用,但我只是想知道......有没有更简单的出路?
任何帮助,将不胜感激。