【问题标题】:Feature detection on a small, noisy image with OpenCV使用 OpenCV 对小而嘈杂的图像进行特征检测
【发布时间】:2014-06-18 19:15:10
【问题描述】:

我的图像非常嘈杂,很小(相关部分为 381 × 314)并且特征非常微妙。

源图像和裁剪的相关区域也在这里:http://imgur.com/a/O8Zc2

任务是使用 Python 计算相关区域内的白色点的数量,但我很乐意仅隔离该区域内较亮的点和线并移除背景结构(在本例中为单元格)。

使用 OpenCV,我尝试过直方图均衡(破坏细节)、寻找轮廓(不起作用)、使用颜色范围(颜色太接近?)

关于其他尝试的任何建议或指导?我不相信我能得到更高分辨率的图像,那么这个任务在相当困难的来源上是否可行?

【问题讨论】:

  • 我建议您查看CLAHE。这可能有助于解决“破坏细节”问题。 OpenCV 有一个实现,但没有记录(遗憾)。

标签: opencv image-processing image-recognition edge-detection noise-reduction


【解决方案1】:

(这不是 Python 答案,因为我从未使用过 Python/OpenCV 绑定。下面的图像是使用 Mathematica 创建的。但我只使用了基本的图像处理函数,所以你应该能够在Python 是你自己的。)

图像处理中一个非常普遍的“技巧”是考虑删除您正在寻找的东西,而不是实际寻找它。因为通常,删除它比找到它要容易得多。例如,您可以对它应用 morphological openingmedian filtergaussian filter

这些过滤器有效地去除了小于过滤器尺寸的细节,并且或多或少地保留了较粗糙的结构。因此,您可以从原始图像中获取差异并寻找局部最大值:

(您必须尝试使用​​不同的“细节去除过滤器”和过滤器尺寸。没有办法判断哪一个最适合仅使用一张图像。)

【讨论】:

  • 纯粹的天才。我盯着那个单元格看了一个小时,试图想出一种方法来获得这些点,但从未想过获得背景!我将在 OpenCV 中尝试这个过程。非常感谢!
  • @Nikie 你能把注释的字体增大一点吗?我几乎无法阅读它。你申请了哪一个获得红点?
  • @kkuilla:您可以在单独的选项卡中打开图像。 (图像是内联下采样的)。我使用了红十字的中值结果——但是开场/高斯的结果看起来质量相似。
  • 我无法打开新标签页,恐怕。不知道为什么。您可以将字体大小设置为非常大的值,例如 36 或 48。然后在下采样时看起来还不错。无论如何,这是一个很好的答案。 +1
  • @PFM:实际上,我只是使用了ImageData-,即我将图像转换为二维数组并用它进行了算术运算。我猜 Python 中的等价物是将 PIL 图像转换为 NumPy 数组。
最近更新 更多