插值图像中的随机零像素

时间:2014-10-01 15:20:09

标签: python image-processing

我的图像在随机位置有一些像素为零。这些像素中的一些可以是邻居,从而可以形成小的零值区域,因此通过遍历所有这些零值像素并找到用于插值的相邻像素似乎在这里不起作用。当然,我可以进行迭代插值,直到填满所有这样的零像素。但有一种快速而干净的方法吗?

2 个答案:

答案 0 :(得分:1)

快速方式:当您遇到零像素时,向左,向右,向上和向下扫描,直到找到四个非零邻居;根据距离调整插值权重。 (也可以使用8向扫描。)

不那么快的方法:你可以一次增加一个零像素的完整邻域,直到找到所有周围非零像素并计算这些像素的加权平均值。

[为了提高效率,您还可以使用种子填充填充空白并跟踪空隙的外部轮廓,并在单个过程中处理空白中的所有像素。这更为复杂。]

对于大洞,inpainting技术会做奇迹,但它们可能非常复杂。

答案 1 :(得分:0)

如果空隙的大小有限,并且您接受平均作为插值技术,则可以使用integral images进行快速计算。

诀窍是考虑两个图像,一个具有灰色值,一个具有0/1值(空洞中为0)。使用积分图像,您可以在您喜欢的尺寸的滑动窗口中有效地计算总和。二进制图像的总和将为您提供窗口内非零像素的计数。将灰度和除以二进制和时,可得到非零值的平均值,可用于填充空隙。

如果窗口完全被0覆盖(空隙太大),最终会导致0/0不确定。

如果窗口很大,平均值将非常平滑,并且不会与相邻的非零值相对应。