如何在图像中填充"holes"?



我有星系的照片。这些图像上有一些不需要的数据(比如恒星或飞机条纹)被掩盖了。我不只是想用一些均值填充遮罩区域,而是根据周围的数据对它们进行插值。我如何在python中做到这一点?

我们在SciPy.interpolate包中尝试了各种函数:RectBivariateSpline、interp2d、splrep/prev、map_cordinates,但它们似乎都能在现有像素之间找到新像素,我们无法让它们填补数据中的任意"漏洞"。

您想要的被称为修复
OpenCV有一个inpaint()函数,可以执行您想要的操作。

您想要的根本不是插值。插值取决于已知点之间的数据大致连续的假设。在任何非平凡的图像中,情况都不会如此。

你实际上想要像Photoshop CS5中的内容感知填充一样的东西。通过GIMP再合成插件,GIMP中有一个免费的替代方案。这些过滤器非常先进,试图重新实现它们是疯狂的。一个更好的选择是找出如何在你的程序中使用GIMP重新合成。

我制作了我的第一个gimp-python脚本,它可能会对您有所帮助:我的脚本

它被称为条件滤波器,因为它是一种矩阵滤波器,根据图像中4个不透明的最近邻居的平均值填充图像中的所有透明像素。请确保使用只有0和255个透明值的RGBA图像。

它粗糙、简单、缓慢、未优化但没有bug。

最新更新