就这么定了。我想创建一个蒙版来可视化两个图像之间的所有更改(geotiff被转换为2dnumpy数组)。
为此,我只需减去像素值,并对减法的绝对值进行规格化:
由于结果将被噪声覆盖,因此我使用treshold并移除值低于某个限制的所有像素。
def treshold(array, thresholdLimit):
print("Treshold...")
result = (array > thresholdLimit) * array
return result
这工作没有问题。现在问题来了。应用treshold时,异常值仍然存在,这不是有意的:
去除这些异常值的好方法是什么?
有时离群点是一小块像素,比如5-6个像素加在一起,如何去除这些?
另外,我使用的图像大约是10000x1000像素。
我很感激你的建议!
编辑:
这里的区别是,一张图片显示云层覆盖,另一张没有云层。
右上角明亮的蛇钩线是被云层覆盖的河流的一部分。由于像海洋或河流这样的水体在这些图像中被描绘成黑色,明亮的云层和黑暗的河流之间的差异导致河流呈现出高度的变化。
减法结果:
我还尝试通过使用中值滤波器平滑tresholding的结果,但结果仍然被异常值覆盖:
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