应用treshold后删除图像中的异常值

2024-09-30 14:24:35 发布

您现在位置:Python中文网/ 问答频道 /正文

交易是这样的。我想创建一个蒙版,它可以可视化两个图像之间的所有变化(geotiff转换为2dnumpy数组)。在

为此,我只需减去像素值并将减法的绝对值标准化:

Formula

由于结果将被噪声覆盖,所以我使用了一个treshold并删除了所有值低于某个限制的像素。在

def treshold(array, thresholdLimit):
      print("Treshold...")
      result = (array > thresholdLimit) * array
      return result

这没问题。现在问题来了。当应用treshold时,异常值仍然存在,这不是为了:

enter image description here

什么是去除这些异常值的好方法? 有时离群值是一小块像素,比如5-6个像素,怎么才能去掉呢?在

另外,我使用的图像大约是10000x1000像素。在

我会很感激所有的建议!在

编辑:

这两幅图像都是陆地卫星卫星图像,覆盖的区域完全相同。 不同的是,一张图片显示云层覆盖,另一张没有云层。 右上角明亮的圈套线是被云层覆盖的河流的一部分。由于像海洋或河流这样的水体在这些图像中被描绘成黑色,明亮的云层和黑暗的河流之间的差异导致河流呈现出高度的变化。在

我希望以下图片能清楚地说明这一点:

源TIFF: enter image description hereenter image description here

减法结果: enter image description here

我还试图通过使用中值滤波器平滑tresholding的结果,但结果仍然被异常值覆盖:

^{pr2}$

Tags: 图像可视化def图片交易像素数组result
1条回答
网友
1楼 · 发布于 2024-09-30 14:24:35

我建议如下:

  1. 在继续之前,请仔细检查两张图片是否为100%registered。检查是否应该使用不同的颜色通道覆盖它们。即使是最小的注册错误也会使您的任务无法完成
  2. 稍微平滑两个输入图像(减法前)。为此,我建议您使用standard implementations。在平滑度(或源图像1的颗粒度减少)和分辨率之间找到一个可接受的折衷方案
  3. 然后尝试通过应用histogram normalization来匹配图像统计信息,将图像2的直方图用作图像1的直方图的目标。为此,您还可以使用OpenCV implementation
  4. 减去图像
  5. 如果仍然观察到明显的噪声,请查看减法结果的直方图,看看是否可以将噪声与强度异常值联系起来。如果可以根据强度清楚地分离信号和噪声,请再次应用阈值(由直方图指示)。或者(或者另外),如果噪声在结构上与信号不同(例如,聚集的),您可以查看morphological operations来消除它。在

相关问题 更多 >