在OpenCV中识别群集和组群集

时间:2015-03-02 03:16:27

标签: algorithm opencv image-processing graph probability

我正在使用OpenCV识别和校正图片中的价格标签。我使用概率霍夫变换函数来识别图片中的边缘。我无法识别图像中的四边形价格标签。

我试图通过其斜率和轴截距对每条边/线进行分组。以下是图像和数据的示例。

Hough Transformed with Edges Highlighted

Plots of Slope, Axis Intercept and Length

在图像中,较短的边缘以红色绘制,中等长度的边缘以蓝色绘制,较长的边缘以绿色绘制。在图中,斜率绘制在x轴上,截距绘制在y轴上。左图和右图是相同的,除了线的长度由圆的面积表示。

我正在寻找一种方法来对这些杂波进行分组,然后确定每个群集所代表的平均线。我希望使用分组来识别绑定价格标签的水平和垂直线的两个最可能的边缘。

有没有人知道我可以用来识别分组的适当算法?

感谢。

1 个答案:

答案 0 :(得分:1)

因此经过一些搜索后我决定使用k-Means算法。对于任何可能感到好奇的人,这是我的结果:

我运行算法并将线分成9个簇。虽然这不是我想要的(我想拒绝极端异常值而不是强迫它们在集群中),但结果很好并且可以管理。

这是水平线的图片,按群集扩展和着色: Horizontal Lines

以下是垂直线: Vertical Lines