如何在图像中填充“洞”?

时间:2012-02-28 08:05:42

标签: python image-processing interpolation mask astronomy

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

我们在SciPy.interpolate包中尝试了各种函数:RectBivariateSpline,interp2d,splrep / splev,map_coordinates,但它们似乎都在寻找现有像素之间的新像素,我们无法让它们填充任意“漏洞” “在数据中。

3 个答案:

答案 0 :(得分:6)

您想要的是Inpainting OpenCV具有inpaint()功能,可以满足您的需求。

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

我制作了我的第一个gimp python脚本可能对你有所帮助: my scripts

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

它粗糙,简单,缓慢,未经优化但无错误。