首页 > 解决方案 > 使用python对图像中的像素进行基于密度的异常值检测

问题描述

我有一张分辨率为 256 x 256 的图像。我的目标是找到图像中异常值的模糊白色像素。图像可以在下面看到,它们所需的输出在它们下面。我使用 sklearn 应用 DBSCAN 聚类,其中 1 作为 eps,150 作为 min_samples。我得到的结果是惊人的,但它花了 30 秒和大约 35 GB 的 RAM。我想要一些其他异常检测技术,它可以将模糊的白色像素与其余的黑色像素聚集在一起。我尝试使用随机森林和 LOF,但未能获得预期的结果。该解决方案应该足够快并且尽可能使用最少的 RAM。DBSCAN 需要很长时间和太多 RAM。应该在不提及聚类数量的情况下进行聚类,以便算法本身可以找到异常像素。我需要的预期结果如下: 在此处输入图像描述在此处输入图像描述在此处输入图像描述在此处输入图像描述

标签: pythonimage-processingscikit-learndbscananomaly-detection

解决方案


我认为您根本不应该在这里使用集群。我猜你想删除一些阈值的值。这是解决这个问题的错误工具。如果你有一把锤子,一切看起来都像钉子——但这不是钉子。

简化数据以改善运行时间。大多数像素都非常清晰,所以首先摆脱所有简单的情况。这正是我认为您的方法不合适的原因,您会浪费大量 CPU 来计算不需要的东西。

不要费心尝试使聚类算法更快 - 而是重新考虑您的问题。你真正想解决什么问题?然后设计一种方法,它可以完全直接地完成您需要的工作,而不是通过一些半适合的代理操作(如集群)。


推荐阅读