将非透明区域拉到图像中透明区域的中心

时间:2015-04-16 20:00:13

标签: image matlab image-processing

我正在制作一个图像处理项目,该项目有几个步骤并且卡在其中一个中。这是事情;我已经分割了一个图像并从背景中减去了前景。现在,我需要填写背景资料。

到目前为止,我已经尝试了修复算法。他们不在我的案件中工作,因为我的背景图片至少有40%没有。我的意思是他们在尝试完整的40%图像时失败了。 (顺便说一句,即使在带有内容感知工具的Photoshop中,这些图像也会产生不良结果。)

无论如何,我已经放弃了尝试修复并决定了别的东西。在我的项目中,我不需要完成100%的背景。我想说明我的解决方案;

enter image description here

正如您在上图所示,我想将图像拉到黑色区域(透明),并且损坏程度最小。任何MATLAB代码示例,技术,关键字和方法都会很棒。如果您需要进一步解释,请随时提出。

1 个答案:

答案 0 :(得分:3)

我可以想到两种粗糙的方法来填补空缺:

使用roifill:这填补了2d图像中保留图像平滑度的空白。

另外,您可以使用bwdist计算每个黑色像素的最近邻居,并将其分配给最近邻居的颜色:

[~, nnIdx] = bwdist( bw );
fillImg(bw) = IMG(bw);

虽然此代码段仅适用于灰色图像,但将其扩展为RGB彩色图像非常简单。