【问题标题】:How to detect straight lines in absolutely grayscale image, but not throught binary image?如何在绝对灰度图像中检测直线,而不是通过二值图像?
【发布时间】:2020-05-28 09:05:23
【问题描述】:

最近我正在尝试寻找一些方法来检测 CT 扫描中的线条。我发现所有 Hough 变换系列和其他一些算法都需要处理边缘检测器之后产生的轮廓。我发现轮廓不是什么我想要这两个步骤创建的很多短线。我对此感到困惑。有哪位帅哥告诉我怎么处理?一些方法或算法直接用于灰度图像而不是二进制图像?使用 opencv 或 numpy 是完美的!非常感谢! 下面是测试图片。我正在努力检测左上角的直线并过滤掉其他直线。

【问题讨论】:

  • 欢迎来到 Stackoverflow。您能否发布一张图片和/或您尝试提供minimal reproducible example 的代码?
  • 我已经在我的问题之后粘贴了我的图片。你知道吗?

标签: algorithm numpy opencv computer-vision detect


【解决方案1】:

你的背景非常一致,所以我会:

  1. 检测轮廓

    作为任何没有背景颜色的像素是相邻的背景颜色。

  2. 分割/标记轮廓点以形成有序的“折线”

    1. 创建 ID 缓冲区并设置 ID=0(背景或对象像素)
    2. 查找任何尚未处理的轮廓像素 如果没有找到停止
    3. flood 按 ID 填充 ID 缓冲区中的轮廓
    4. 增量 ID
    5. 转到2

    现在 ID 缓冲区包含您标记的轮廓

  3. 为每个轮廓创建有序的像素列表,形成轮廓“折线”

    为了加快速度,您可以记住 #2 中的每个轮廓起点,甚至可以直接在步骤 #2 中执行此步骤。

  4. 检测轮廓“折线”中的直线。

    即简单的直线在相邻点之间具有相似的倾斜角。您还可以应用回归或其他任何方法...必须在彼此相距至少 5 个像素的像素上计算斜率或单位方向向量,否则光栅化像素化会破坏结果。

看一些相关的东西:

【讨论】:

  • 感谢您的慷慨!!!我会用这种方式做一些经验。
猜你喜欢
  • 2020-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
  • 2017-06-24
  • 2018-01-05
  • 2014-06-16
相关资源
最近更新 更多