【问题标题】:Matrix of pixels to coordinates像素到坐标的矩阵
【发布时间】:2016-05-20 16:56:44
【问题描述】:

我必须将给定的像素矩阵(系数在 0 到 255 的范围内,因为该矩阵对应于黑白图像)转换为两个列表。它们都可以由列表组成,一个包含点的横坐标,另一个包含纵坐标。

正如您在包含的图片中看到的那样,第一种情况对应于一条曲线,而其他两种情况都涉及多个相互交叉的曲线。该算法应该能够区分两条或三条曲线(在最后两个示例中),因此在两个主列表中,给定的子列表对应于给定的曲线。

我完全不知道从什么开始......

最后一件事:我正在寻找关于如何编程这个算法的想法,所以这就是我没有添加任何特定编程语言的原因(如果代码可以帮助任何解释,请随时说任何语言)。

提前致谢>^.^

【问题讨论】:

  • 所以您想为每条曲线创建一个列表?我不确定我是否理解您想要的结果。
  • 我希望算法输出的是,例如: abs=[[3,4,5],[1,2],[7,8,9,10,11] ], ord=[[42,50,60],[-3,-7],[7,9,15,16,13]](随机示例)。

标签: algorithm hough-transform


【解决方案1】:

查看Hough transform。这是一种简单的投票算法,可以在图像中找到简单的几何形状。一种复杂情况可能是您的线条不是严格笔直的。但它会给你在它确实找到的线上的方程。由于您的情况有点不标准,我会尝试了解算法本身并编写自己的实现。

在我的第一个实现中(在我拍摄的长焦深度图像中的正方形上以一个圆为中心),我从一个非常简单的 Python 示例开始,我在网上找到了一个非常简单的 Python 示例,为了我的目的重写了它,然后为了速度而转向 C#,因为我需要比这个简单案例更多的参数(更高维度的搜索空间)。

在您的情况下,我将从直线的简单假设开始。然后霍夫变换将为您的三种情况分别给出 1、2 和 3 个最大值。

霍夫变换的思想在on wikipedia 中得到了很好的描述。

这里只是想法的要点:

对于直线,请考虑赋予每个黑色像素投票权 180 条可能的线可以穿过它(每个角度一个 单度步骤),然后将投票绘制为二维空间上的直方图,其中一个 尺寸是线的角度,另一个是距离 原点(出于实际原因使用线的 Hesse 范式 而不是常见的 y= m x +b),z 维度是投票数。黑色形成的实际线 像素将获得比任何其他可能的线更多的选票,所以你是 只需在转换中寻找最大投票位置 空格(比如在 Python/numpy 中是argmax)。

如果有两条线,您会发现两条明确的最大值,越高的一条线越长或越粗(更多票数)。然后,您可以开始在图像中使用灰度,为像素提供非整数投票。您还可以根据问题的内容来玩角度的分辨率。

【讨论】:

  • 非常感谢,这对我有一点帮助;)事实上,问题是我必须分析手绘图(然后插入它们,所以这就是我需要列表的原因曲线上的点),因此我需要这个:en.wikipedia.org/wiki/Generalised_Hough_transform
  • 我允许自己通过添加标签hough-transform 来编辑您的问题。这应该会让其他人更容易从您的问题和潜在答案中获利。
  • 很高兴你做到了 :) 另外,看看我发现的东西:youtube.com/watch?v=ebfi7qOFLuo 我刚刚将主题标记为已解决,因为似乎解决我的问题的最佳方法是 GHT ^^
猜你喜欢
  • 2023-04-07
  • 2014-01-07
  • 2014-08-17
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 2021-04-09
  • 1970-01-01
  • 2011-12-04
相关资源
最近更新 更多