【问题标题】:Classifying lines with opencv使用 opencv 对线条进行分类
【发布时间】:2012-06-26 12:33:58
【问题描述】:

我正在做一个图像分类项目,我已经使用边缘检测从图像中提取了曲线,并且需要根据它们的曲率对其进行分类。

例如下图中有3种线,左边的线曲率好,中间的曲率不错,右边的线曲率很差。

感谢您的帮助

【问题讨论】:

  • 我想你的意思是左边的曲率很好?
  • +1 个有趣的问题。
  • @cdhowie:你是对的 :)

标签: c++ image-processing opencv classification


【解决方案1】:

如果您正在处理图像,您可以知道您所展示的形状是否包含“平滑”或“锐利”的边缘。您可以计算结构矩阵(或图像张量矩阵)的特征值和特征向量。对于属于直线或平滑边缘的像素,其中一个特征值将比另一个大得多。如果像素是角点或曲线点,则两个特征值都可能很大且相似。 然后我建议在你的形状的像素上测量这些特征,并根据你的需要训练一个分类器。

您几乎可以在其他地方找到有关此类事情的更多详细信息,尽管我可以给您我自己的博士学位的参考,请查看第 2.4.2 节http://oa.upm.es/4837/1/MARCOS_NIETO_DONCEL.pdf

最好的问候!

【讨论】:

  • 图像张量矩阵和Hessian矩阵一样吗?
【解决方案2】:

我认为可以采取的分类措施很少:

尝试使用一些近似 eps 的近似线,然后检查有多少段近似线,线段越少越好。 (这在大多数左侧情况下会产生问题,当行包含几个段时)

检查边界框大小,越小越好线

检查凸面缺陷。

【讨论】:

  • 它表明凸面缺陷和线近似是找出我想要的东西的好方法,但边界框不是一个好的功能。
  • @hamed 我不明白近似值如何帮助你。在左侧情况下,曲线包含许多与右侧曲线相同的段...
  • @Astor 你是对的,但我想到了另一种方法。首先使用点的线近似,然后计算每条连续线之间的角度,在直线中,每条连续线的角度约为 180,对于良好的曲线,该角度应在 160 到 180 之间,对于不良曲线,依此类推
猜你喜欢
  • 2012-06-29
  • 2016-10-05
  • 2014-06-03
  • 2013-03-08
  • 2014-06-11
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 2016-07-26
相关资源
最近更新 更多