C++ 用opencv对线条进行分类

C++ 用opencv对线条进行分类,c++,image-processing,opencv,classification,C++,Image Processing,Opencv,Classification,我正在做一个图像分类项目,我使用边缘检测从图像中提取了曲线,并需要根据它们的曲率对它们进行分类 例如,在下面的图像中有3种线条,左边的线条有很好的曲率,中间的线条有不错的曲率,右边的线条有很差的曲率 感谢您的帮助我认为分类的方法不多: 尝试使用一些近似eps近似直线,然后检查近似直线的分段数,分段数越少越好。(在最左边的情况下,当直线包含少数线段时,这可能会产生问题) 选中边界框大小,越小越好 检查凸面缺陷。如果处理图像,您可以知道所显示的形状是否包含“平滑”或“锐利”边缘。可以计算结构矩阵(

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

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


感谢您的帮助

我认为分类的方法不多:

尝试使用一些近似eps近似直线,然后检查近似直线的分段数,分段数越少越好。(在最左边的情况下,当直线包含少数线段时,这可能会产生问题)

选中边界框大小,越小越好


检查凸面缺陷。

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

你几乎可以在其他地方找到关于这些事情的更多细节,尽管我可以给你我自己的博士学位的参考资料,看看第2.4.2节


致以最良好的祝愿

我想你的意思是左边有很好的曲率?+1个有趣的问题。@cdhowie:你是对的:)凸缺陷和直线近似是找到我想要的东西的好方法,但边界框不是一个好功能。@hamed我不明白近似如何帮助你。在左例中,曲线包含许多与右曲线相同的线段…@Astor您是对的,但我想到了另一种方法。首先使用点的直线近似,然后计算每个连续直线之间的角度,在直线中,每个连续直线的角度约为180,对于好曲线,角度应在160到180之间,等等对于坏曲线,图像张量矩阵与Hessian矩阵相同?