这是交易。我想创建一个遮罩,以可视化两个图像之间的所有变化(转换为2D numpy数组的GeoTiff)。
为此,我仅减去像素值并标准化减法的绝对值:
由于结果将被噪声覆盖,因此我使用阈值并删除所有值低于特定限制的像素。
def treshold(array, thresholdLimit):
print("Treshold...")
result = (array > thresholdLimit) * array
return result
这没有问题。现在来了问题。应用阈值时,会保留异常值,这是不希望的:
什么是消除这些异常值的好方法? 有时离群值是小块像素,例如5-6个像素在一起,如何将其删除?
此外,我使用的图像约为10000x10000像素。
我将不胜感激所有建议!
编辑:
两个图像都是卫星卫星图像,覆盖的区域完全相同。 此处的区别在于,一张图像显示了云的覆盖范围,而另一张图像没有云。 右上角的明亮蛇线是一条被云层覆盖的河流的一部分。由于在这些图像中,像海洋或河流这样的水体都用黑色表示,因此明亮的云层和黑暗的河流之间的差异导致河流呈现出高度的变化。
我希望以下图片能使您清楚:
我还尝试通过使用中值过滤器来平滑阈值化的结果,但结果仍被异常值覆盖:
from scipy.ndimage import median_filter
def filter(array, limit):
print("Median-Filter...")
filteredImg = np.array(median_filter(array, size=limit)).astype(np.float32)
return filteredImg
答案 0 :(得分:0)
我建议以下内容: