【问题标题】:How to automate the low end threshold value in opencv?如何自动化opencv中的低端阈值?
【发布时间】:2016-03-15 09:25:10
【问题描述】:

我正在使用 opencv 围绕一个非常详细的对象绘制轮廓。我可以做到,但是不同的图像需要不同的低端阈值,这需要我尝试不同的低端阈值才能正确。有没有办法让这个过程自动化?

目前,我正在寻找这样的阈值:

thresh = cv2.threshold(image, 230, 255, cv2.THRESH_BINARY)[1] 

值 230 不是常数。它针对不同的图像而变化。

【问题讨论】:

  • 你试过Otsu估计阈值吗?
  • 是的,在我的情况下它不起作用。除非我做错了。我正在尝试检测青光眼的杯子和圆盘,但使用 Otsu 可以检测到整个青光眼本身。
  • 啊,好吧有道理。可以使用 Otsu 的方法进行multi-level thresholding。否则,您可以分享示例图像吗?
  • 当然。 Here's 显示杯子外观的图像(尽管它与周围的像素相比并不总是那么对比)。 Here's 以及杯子检测非常困难的图像。
  • 我假设您无法更改设置,因此视野内的感兴趣区域更大?您至少可以使用原始数据,以便 jpg 颜色压缩不会伤害您吗?图像超级嘈杂。由于红色通道过饱和,您还应该减少曝光时间。您的图像中有 3 个通道,但只有 2 个带有有用的信息。

标签: python opencv image-processing


【解决方案1】:

有趣的观察是 Ostu 能够检测到整个青光眼区域。您可以尝试以下步骤吗-

  1. 使用 Ostu(青光眼区域)提取感兴趣区域。
  2. 均衡提取区域的对比度,并
  3. 在新的图像区域尝试 Ostu。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-03
    • 2019-12-03
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多