重建被树叶遮挡的树枝

信息处理 图像处理 matlab 图像分割 形态学
2021-12-20 09:01:56

如果树枝的一部分被树叶覆盖,人们将如何近似重建一棵树的照片中的树枝?

我可以通过阈值化提取分支的可见部分,然后以几个不同的角度打开线段。但是我将如何(大约)填充被树叶覆盖的空间?

假设我们从这棵树的图开始:

颜色树

将图像加载为灰度

uu = mmreadgray('tree2.jpg')

树

阈值较深的颜色;转换为二进制;删除 200px 区域下的连接区域

vv = mmareaopen(mmbinary(mmthreshad(mmneg(uu), 200)), 20)

树

以90度、180度、135度和45度的10px线段打开vv;将这些图像加在一起形成标记图像 zz

zz = mmaddm(mmaddm(mmaddm(mmopen(vv, mmseline(10, 90)), mmopen(vv, mmseline(10, 180))), mmopen(vv, mmseline(10, 135))), mmopen(vv, mmseline(10, 45)))

树

从标记图像 zz 重建 vv 中的可见肢体部分

aa = mminfrec(zz, vv)

树

在原始图像 uu 上显示结果 aa;实现了合理的肢体提取

mmshow(uu, aa) 树

我将不胜感激有关如何现在大致重建整个肢体的任何想法。(或对上述步骤的改进)。谢谢!

1个回答

被树叶隐藏的蒙版区域非常大,虽然边界和阴影似乎暗示了对人类隐藏的内容,但它不适合依赖于相当一致的边界的“修复”,例如前景物体暂时遮挡后面继续存在的东西.

分支方向是一个开始,但没有足够的数据本身来暗示树枝如何延伸,而没有橡树与柳树、杨树或松树的一些外部概念。这更多的是关于 3d 分形建模而不是图像恢复。

最不明显可见的内画算法涉及在 Photoshop 中称为“修复”的纹理合成。 G'MICResynth是流行的开源工具,可作为 GIMP 的插件使用。虽然视觉连续性非常好,但它们没有树或深度的概念,只有二维补丁统计数据,因此在给出的示例中也需要艺术家的输入。蒙版的外边缘是白色背景,内部是粗树枝......所以纹理插值会产生奇怪的不自然结果。