图像(test.tif)已附加。np.nan值是最白的区域。如何使用一些使用邻居的值的填充算法来填充最白的区域?
import scipy.ndimage data = ndimage.imread('test.tif')
我觉得 维也纳的 问题是更相关的修补问题。
这里有一些想法:
为了填补黑白图像中的空白,您可以使用一些 填充 算法,例如scipy.ndimage.morphology.binary_fill_holes。但是您有灰度图像,因此无法使用。
我想您不想使用复杂的修复算法。我的第一个建议是:不要尝试使用最近的灰度值(您不知道NaN像素的实际值)。使用NEarest值将生成脏算法。相反,我建议您 用其他一些值 (例如,行的平均值) 填补空白 。您可以通过使用scikit-learn而无需编写代码:
资源:
>>> from sklearn.preprocessing import Imputer >>> imp = Imputer(strategy="mean") >>> a = np.random.random((5,5)) >>> a[(1,4,0,3),(2,4,2,0)] = np.nan >>> a array([[ 0.77473361, 0.62987193, nan, 0.11367791, 0.17633671], [ 0.68555944, 0.54680378, nan, 0.64186838, 0.15563309], [ 0.37784422, 0.59678177, 0.08103329, 0.60760487, 0.65288022], [ nan, 0.54097945, 0.30680838, 0.82303869, 0.22784574], [ 0.21223024, 0.06426663, 0.34254093, 0.22115931, nan]]) >>> a = imp.fit_transform(a) >>> a array([[ 0.77473361, 0.62987193, 0.24346087, 0.11367791, 0.17633671], [ 0.68555944, 0.54680378, 0.24346087, 0.64186838, 0.15563309], [ 0.37784422, 0.59678177, 0.08103329, 0.60760487, 0.65288022], [ 0.51259188, 0.54097945, 0.30680838, 0.82303869, 0.22784574], [ 0.21223024, 0.06426663, 0.34254093, 0.22115931, 0.30317394]])