当前位置: > 财经>正文

做机器视觉哪个软件好?

2023-07-14 15:16:41 互联网 未知 财经

做机器视觉哪个软件好?

我当年大二做视觉的时候也是一脸懵逼,所以来答一下吧,希望能有帮助。

虽然被邀请了,但由于没有做过这个项目,所以也算是强答吧?如果有答得不对的地方,也欢迎大家指出。

首先,这个比赛应该是要求利用视觉系统识别羽毛球位置,并估计出羽毛球速度、预测击球点。

好了,提取几个可能会用到的关键技术点:①立体视觉(标定);②目标检测(图像处理);③机器人控制(实时性);④kalman滤波/粒子滤波。

①立体视觉(标定)

要想得到羽毛球的位置,就需要使用立体视觉技术,根据使用的设备不同,标定难易也不同:

1)如果是打算自己用两个相机组成双目视觉系统

那么需要进行两个相机之间的标定+相机系统与世界坐标系(球场)的标定。

2)如果是购买现成的立体视觉传感器(内参已经标定好),如kinect或其他双目相机

那么就只需要标定相机系统与场地坐标系之间的相对位姿。

由于标定只需要进行一次,所以对计算效率等要求并不高。但是,编程难度而言,对于视觉入门者来说,还是比较难的。

所以,这部分要求容易实现(有源代码或者能直接使用的标定库),对实时性无要求。那么,Matlab(

Camera Calibration Toolbox for Matlab

)和OpenCV(

Camera calibration With OpenCV

)都是可以的。语言的话,用Matlab就是采用它自己的语言,用OpenCV的话,建议C++。

②目标检测(图像处理)

这个应该是这个项目的主要内容。就是如何根据采集到的图像得到羽毛球位置。

还是根据传感器分为两种做法:

1)双目相机:

如果是采用双目相机,那方法就是通过分别检测羽毛球在两幅图像中的位置,通过前面标定数据,利用简单的几何关系计算出羽毛球的3D坐标(如下图)。

要从每幅图像中处理得到羽毛球位置,可能会用到的图像处理技术有

阈值分割、二值化、膨胀腐蚀等形态学处理、连通域处理、关键点提取

等。

那么,这些工作Matlab(

Image Processing Toolbox

)和OpenCV(

imgproc

,

feature2d

)也都可以做。

区别是Matlab比较好调试、对于初学者也比较友好。OpenCV处理比较快。

2)kinect等

如果是能直接拿到点云数据(就是一堆xyz坐标点,大概如下图)

那么,就可以采用简单的点云分割、欧氏聚类等算法可以实现(具体效果不清楚)。如果是要处理点云,那么自然是建议采用PCL(

Point Cloud Library (PCL)

)了,编程语言是C++。据说新版本Matlab(

3-D Point Cloud Processing

)里面也有点云处理的功能,但似乎处理速度极慢(存疑?)。

③机器人控制(实时性)

由于比赛过程中,需要实时检测羽毛球位置,对算法的实时性要求较高。因此,Matlab只能放弃了,要连机器人的话还是C++比较实用。

④kalman滤波/粒子滤波

这一步其实很重要,前面三步只是计算当前图片/点云中的羽毛球位置,而打羽毛球时,我们需要得到羽毛球的速度、并估算出羽毛球下一时刻的位置和击球点。

当然,粒子滤波在目标跟踪领域很常用,但是由于羽毛球可以建立动力学模型,所以我比较推荐kalman滤波。

这些算法都很容易实现,网上也一大堆博客教程。MATLAB还是C++都可以。

⑤DL

好吧,如果不想从传统视觉的方法做,想利用深度学习的话,那么前面的当我没说,直接根据你使用的深度学习库选择语言与平台即可。

综上,如下:

最后,不论是OpenCV,PCL还是MATLAB,确定之后,就直接去看他们的教程吧

OpenCV

PCL

Matlab

。都很容易就能掌握的。

图像处理的基础知识,可以看冈萨雷斯的《数字图像处理》,有中文版:

Rafael Gonzalez, C., and E. Richard Woods. "Digital image processing."Pearson Education (2002).

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。