二维矢量数据中的角点检测

 edftgggh_131 发布于 2023-02-13 15:34

我试图检测数据的2D散射矢量中的角(x/y坐标).

数据来自激光测距仪,我们当前的平台使用Matlab(虽然独立的程序/库是一个选项,但Nav/Control代码在Matlab上,所以它必须有一个接口).

角点检测是SLAM算法的一部分,角落将作为地标.

如果可能的话,我也希望在速度方面达到接近100Hz的水平(我知道它的Matlab,但我的数据集非常小.)

样本数据:

角点检测

[蓝色是原始数据,红色是我需要检测的.(这种观点实际上是自上而下的.)]

[ 以上镜头的实际矢量数据 ]

到目前为止,我尝试了许多不同的方法,其中一些方法比其他方法更成功 我从未正式研究过任何形式的机器视觉.

我的第一种方法是一个自制的最小二乘线装配器,它将线条分成两半,直到它们满足一些r ^ 2值,然后尝试合并具有相似斜率/截距的线条.然后它将计算这些线的交叉点.它不是很好,但确实在70%的时间内都能正常工作,虽然它有一些完全缺少某些功能的坏问题.

我当前的方法使用clusterdata函数根据马哈拉诺比斯距离来分割我的数据,然后基本上做同样的事情(最小二乘线拟合/合并).它工作正常,但我假设有更好的方法.

[ 源代码到当前方法 ] [cnrs, dat, ~, ~] = CornerDetect(data, 4, 1)使用上述数据将产生我得到的位置.

我不需要从头开始编写这个,看起来大多数更高级的方法都适用于2D图像或3D点云,而不是2D散射数据.我已经阅读了很多关于Hough变换和各种数据聚类方法(k-Means等)的内容.我也尝试了一些罐装线探测器而没有太大的成功.我尝试使用线段探测器,但它需要一个灰度图像作为输入,我认为将我的矢量转换为完整的2D图像以将其提供给像LSD这样的东西会非常慢.

任何帮助是极大的赞赏!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有