在图像中插入随机零像素



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

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

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

[为了提高效率,你还可以用种子填充来填充空隙,并跟踪空隙的外部轮廓,一次处理空隙中的所有像素。这更复杂。]

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

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

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

如果窗口被0(过大的空隙)完全覆盖,则最终会出现0/0不确定性。

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

最新更新