用于在python中标记坏像素的图像上的插值

时间:2013-09-02 10:11:53

标签: scipy interpolation pyfits

嗨我有一张合适的图像,我用pyfits.getdata读到了图像的角落里有很强的渐晕。我创建了第二个numpy数组,其尺寸与原始图像相同,坏像素值为1,可用值为0.要检测点源,我在原始图像上使用pysexpysex例程检测渐晕区域中的波动作为点源。如何在标记坏像素的数组上进行插值。我试过scipy.interpolate.griddatascipy.interpolate.interp2d并且所需的参数不清楚,最简单的解决方案是什么?

2 个答案:

答案 0 :(得分:0)

在(x0,y0)= 5,10处有坏像素 (x1,y1)= 50,100

的另一个
output = Scipy.interpolate.map_coordinat(array,np.array([[5,50],[10,100]]))
1bad_value = output[0]
2bad_value = output[1]

它像[x0,x1,x2,x3],[y0,y1,y2,y3],不是很直观我承认

你想要更多,这是一个非常好的帖子: Fast interpolation of grid data

但实际上我会将scipy.filter.uniform_filter用于坏像素。它为您提供neigbourgs的平均值。它不是一个精确的立方插值,但它更稳健。更好的scipy.filter.median_filter,以防你有2个坏像素彼此靠近。

答案 1 :(得分:0)

我认为map_coordinates应该能够满足您的需求:

index_vignetted = scipy.ndimage.map_coordinates(vignette, point_sources)

这将返回一个向量,其中包含每个点源位置下像素的晕影值。