【问题标题】:Return value of threshold function in opencvopencv中阈值函数的返回值
【发布时间】:2014-10-23 19:37:12
【问题描述】:

我正在使用 opencv 2.4.9 函数“阈值”应用 Otsu 阈值方法

根据 opencv 文档:

特殊值 THRESH_OTSU 可以与上述值之一组合。在这种情况下,该函数使用 Otsu 算法确定最佳阈值,并使用它代替指定的 thresh 。该函数返回计算的阈值。目前,Otsu 的方法仅适用于 8 位图像。

对于我的测试图像函数的返回值为 49。

  1. 49 代表什么?
  2. 如何使用它进行进一步的阈值化操作,例如屏蔽没有小于阈值的白色像素的行?

【问题讨论】:

  • 你怎么会有“小于阈值的白色像素”?
  • 我正在使用从opencv阈值函数获得的二进制图像。

标签: opencv image-processing


【解决方案1】:

值 49 表示使用阈值 49 对图像进行阈值处理会根据 otsu 方法为您提供最佳结果。
如果我正确理解了您的第二个问题,那么将 49 值应用于阈值的方法是逐个像素地遍历灰度图像,并将 0 分配给强度高于 49 的像素,并将 255 分配给强度低于 49 的像素,反之亦然。

【讨论】:

  • 那么这是否意味着我需要在获得阈值后应用除 Otsu 之外的阈值操作,因为当它是 Otsu 阈值时,opencv 函数会忽略第三个参数,即阈值?
  • 另外,对于第二个问题,尝试了两种方法来使用返回的阈值,如下所示: 1. 根据 Amen 的建议,计算每行的像素数并掩盖那些白色像素数不小于临界点。 2.将阈值视为行的指示,可用于计数。用于阈值操作的白色像素。 (不确定理解是否正确)第二种方法比第一种方法更好地识别边缘。
  • 阈值是一种用于识别“灰度”区域的技术,在灰度图像中,每个像素都有一个介于 0-255 之间的值,而 RGB 图片中每个像素有 3 个值,每个值代表三种颜色中的一种,因此在获得 otsu 编号后,您需要按照答案中的描述对每个像素进行阈值处理。现在你说的白色像素是什么意思?
  • 谢谢澄清,我想我使用的是相同的逻辑。关于白色像素,我使用 opencv 阈值函数将灰度图像转换为只有黑白像素的二进制图像。这是对阈值的调用: threshold(grayImage, grayImage, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
  • 然后会发生什么?您应该期望在阈值处理后看到仅包含白色和黑色的二值图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多