├── imgs ├── 加群.jpg ├── 3D视觉工坊.jpg ├── star │ ├── 1.jpg │ ├── 2.jpg │ ├── 3.jpg │ ├── 4.jpg │ ├── 5.jpg │ ├── 6.jpg │ ├── 7.jpg │ ├── 8.jpg │ ├── 9.jpg │ ├── 10.jpg │ ├── 11.jpg │ ├── 12.jpg │ ├── 13.jpg │ ├── 14.jpg │ ├── 15.jpg │ ├── 16.jpg │ ├── 17.jpg │ ├── 18.jpg │ ├── 19.jpg │ ├── 20.jpg │ ├── 21.jpg │ ├── 22.jpg │ ├── 23.jpg │ └── 24.jpg ├── 3D视觉从入门到精通.jpg └── AI项目与对接平台.jpg ├── README.md └── Q&A.md /imgs/加群.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/加群.jpg -------------------------------------------------------------------------------- /imgs/3D视觉工坊.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/3D视觉工坊.jpg -------------------------------------------------------------------------------- /imgs/star/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/1.jpg -------------------------------------------------------------------------------- /imgs/star/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/2.jpg -------------------------------------------------------------------------------- /imgs/star/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/3.jpg -------------------------------------------------------------------------------- /imgs/star/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/4.jpg -------------------------------------------------------------------------------- /imgs/star/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/5.jpg -------------------------------------------------------------------------------- /imgs/star/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/6.jpg -------------------------------------------------------------------------------- /imgs/star/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/7.jpg -------------------------------------------------------------------------------- /imgs/star/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/8.jpg -------------------------------------------------------------------------------- /imgs/star/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/9.jpg -------------------------------------------------------------------------------- /imgs/star/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/10.jpg -------------------------------------------------------------------------------- /imgs/star/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/11.jpg -------------------------------------------------------------------------------- /imgs/star/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/12.jpg -------------------------------------------------------------------------------- /imgs/star/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/13.jpg -------------------------------------------------------------------------------- /imgs/star/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/14.jpg -------------------------------------------------------------------------------- /imgs/star/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/15.jpg -------------------------------------------------------------------------------- /imgs/star/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/16.jpg -------------------------------------------------------------------------------- /imgs/star/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/17.jpg -------------------------------------------------------------------------------- /imgs/star/18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/18.jpg -------------------------------------------------------------------------------- /imgs/star/19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/19.jpg -------------------------------------------------------------------------------- /imgs/star/20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/20.jpg -------------------------------------------------------------------------------- /imgs/star/21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/21.jpg -------------------------------------------------------------------------------- /imgs/star/22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/22.jpg -------------------------------------------------------------------------------- /imgs/star/23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/23.jpg -------------------------------------------------------------------------------- /imgs/star/24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/star/24.jpg -------------------------------------------------------------------------------- /imgs/3D视觉从入门到精通.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/3D视觉从入门到精通.jpg -------------------------------------------------------------------------------- /imgs/AI项目与对接平台.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qxiaofan/awesome-3d-computer-vision-from-0-to-1/HEAD/imgs/AI项目与对接平台.jpg -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # awsome-3D-Computer-Vision 2 | 3 | ## 目录 4 | 5 | - [一 前言](#前言) 6 | - [二 微信公众号「3D视觉工坊」](#微信公众号) 7 | - [三 3D视觉系统化学习路线](#知识星球) 8 | - [四 Q&A](#Q&A) 9 | 10 | 11 | 12 | 13 | 14 | ## 一 前言 15 | 3D视觉学习攻略:涵盖**3D视觉工坊**微信公众号所有技术文章、「3D视觉从入门到精通」技术星球的部分精华帖及Q&A,及系统学习3D视觉的路线图。 16 | 17 | > 注:如果你看到这篇文章,且有一些疑问或者想提供一些资源,欢迎提交issues! 18 | 19 | 20 | 21 | 22 | ## 二 微信公众号「3D视觉工坊」 23 | ### 2.1 简介 24 | 微信公众号「3D视觉工坊」,致力于3D视觉算法、VSLAM算法、图像处理、深度学习、目标检测、语义分割、自动驾驶感知算法等技术传播,注重内容的原创性与趣味性,同时,读书笔记与学习心得也是我们公众号的一大特色。 25 | ### 2.2 作者介绍 26 | 公众号博主1:Tom Hardy,先后就职于国内知名研究院、自动驾驶独角兽公司、海康研究院、CSDN博客专家。 27 | 28 | 公众号博主2:小凡,先后任职于知名研究院、知名VSLAM公司,致力于3D视觉算法、VSLAM算法开发,涉及相机标定、手眼标定、结构光、点云后处理等相关领域的研究,CSDN博客专家。 29 | 30 | 公众号博主3:书涵等特邀嘉宾,来自于公众号粉丝或者星球成员等一切在特定领域有专长的技术人。 31 | 32 | **重磅!3DCVer-学术交流群已成立** 33 | 34 | 35 | 欢迎加入我们公众号读者群一起和同行交流,目前有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。 36 | 37 | ![](imgs/加群.jpg) 38 | 39 | ### 2.3 3D视觉精品原创文章 40 | [3D视觉原创文章精选](https://github.com/3DCVer/awesome-3D-Vision-Papers) 41 | 42 | ### 三 3D视觉系统化学习路线 43 | 我们生活在三维空间中,如何智能地感知和探索外部环境一直是个热点难题。2D视觉技术借助强大的计算机视觉和深度学习算法取得了超越人类认知的成就,而3D视觉则因为算法建模和环境依赖等问题,一直处于正在研究的前沿。近年来,3D视觉技术快速发展,并开始结合深度学习算法,在智能制造、自动驾驶、AR/VR、SLAM、无人机、三维重建、人脸识别等领域取得了优异的效果。 44 | 45 | **3D视觉是计算机视觉的终极体现形式** 46 | 47 | 2D视觉技术主要在二维空间下完成工作,三维信息基本上没有得到任何利用,而三维信息才真正能够反映物体和环境的状态,也更接近人类的感知模式。近年来,学术界和工业界推出了一系列优秀的算法和产品,被广泛应用到各个领域。 48 | 49 | 50 | 学术界:CVPR、ECCV、ICCV三大顶会每年和3D视觉相关主题的文章数量保持在十分之一左右,主要关注3D点云的识别与分割、单目图像深度图的生成、3D物体检测、语义SLAM、三维重建、结构光等。 51 | 52 | ![](imgs/star/1.jpg) 53 | ![](imgs/star/2.jpg) 54 | ![](imgs/star/3.jpg) 55 | 56 | 工业界:3D视觉技术被广泛应用到人脸识别、智能机器人、自动驾驶、AR等领域,国内外相关公司推出了一系列产品。OPPO、华为和苹果等公司推出的3D+AI识别功能,通过扫描人脸三维结构完成手机解锁;自动驾驶领域通过分析3D人脸信息,判断司机驾驶时的情绪状态;SLAM方式通过重建周边环境,完成建图与感知;AR领域通过三维重建技术完成目标的重现。 57 | 58 | ![](imgs/star/4.jpg) 59 | ![](imgs/star/5.jpg) 60 | ![](imgs/star/6.jpg) 61 | 62 | **3D视觉技术学习的难点?** 63 | 64 | 3D视觉是一个范围较广的概念,涉及到硬件选型、离散数学、非线性优化、最优化理论、矩阵论、多视图几何、空间变换、点云处理、计算机视觉、SLAM、深度学习等相关知识点,对初学者来说,几乎没有一个完整明确的学习路线可以参考,入门较为困难,难以深入,许多人走了很多弯路还是没有取得较好结果。然而,有价值的东西一般都很难,如果能够完全掌握,一定会非常有竞争力。 65 | 66 | 目前关于3D视觉的书籍和论文过于零散,初学者很难掌握关键知识点,而且对于一些算法,不能够真正理解,许多人因为较高门槛以及不正确的学习方式,最终选择了放弃,错过了让自己升值的机会。 67 | 68 | **那么,如何更好地入门且系统化学习3D视觉呢?** 69 | 70 | 首先,我们先来看看入门3D视觉需要哪些知识,以及3D视觉的知识体系包含哪些。 71 | 72 | 基于3D视觉领域缺少完整的知识路线,我和几个朋友共同完成了3D视觉技术学习路线总结,并以思维导图的形式呈现出来,主要包括0-16个小结,其中每个小结代表特定区域的知识点。学习路线的总结,需要较宽的知识面,由于自身有一定的知识盲区,若有缺漏之处还望指出,后续将会不断更新维护该学习路线。 73 | 74 | ![](imgs/star/7.jpg) 75 | ![](imgs/star/8.jpg) 76 | ![](imgs/star/9.jpg) 77 | ![](imgs/star/10.jpg) 78 | ![](imgs/star/11.jpg) 79 | ![](imgs/star/12.jpg) 80 | ![](imgs/star/13.jpg) 81 | ![](imgs/star/14.jpg) 82 | ![](imgs/star/15.jpg) 83 | ![](imgs/star/16.jpg) 84 | ![](imgs/star/17.jpg) 85 | ![](imgs/star/18.jpg) 86 | ![](imgs/star/19.jpg) 87 | ![](imgs/star/20.jpg) 88 | ![](imgs/star/21.jpg) 89 | ![](imgs/star/22.jpg) 90 | ![](imgs/star/23.jpg) 91 | ![](imgs/star/24.jpg) 92 | 93 | 从入门到进阶学习3D视觉核心技术,扫描入群,3天内无条件退款 94 | ![](imgs/3D视觉从入门到精通.jpg) 95 | 96 | 学习切忌单打独斗,越早越有优势,群里有高质量教程资料、答疑解惑、项目实战等,优质圈子助你高效解决问题,少走弯路,快速入门。 97 | 98 | **「3D视觉从入门到精通」知识星球** 99 | 星球是目前唯一以3D视觉系统化学习为主题的高质量知识星球,目前已经有近500位小伙伴进入学习。主要有以下几个亮点: 100 | 101 | 102 | 1、星主及合伙人共同答疑。星球的合伙人先后就职于国内知名研究机构、自动驾驶公司、海康研究院,主要研究方向为深度学习、目标检测、语义分割、图像处理、自动驾驶感知算法,同时也是CSDN博客专家。星主先后任职于国内知名研究院、知名大厂,一直致力于3D视觉算法、VSLAM算法的开发,涉及相机标定、手眼标定、结构光视觉、点云后处理、编程优化等相关领域的研究。对于星球里的提问,将由星球和合伙人协同作答,星球成员一起探讨,直至得到最佳解。 103 | 104 | 105 | 2、技术介绍不枯燥、详细且有趣。该系列以最基础的知识开始介绍,单个帖子介绍一个具体的知识点,尽量做到图文并茂,生动有趣,并将结合视频课程,对3D视觉的每个重要技术细节一点点深挖。平时再忙没关系,业余时间可以反复观看。(从加入起,有效期一年,到期后,之前已发布内容仍可查看)。 106 | 107 | 108 | 3、技术内容重实践、实操性强。笔者及合伙人会根据不同的知识点设计一些可实践性的练习题,俗话说,实践出真知,只有在实践中获得的认知才是最真切的,假以时日,高效提升解决问题的能力才是王道。 109 | 110 | 111 | 4、精选3D视觉项目常见问题。3D视觉理论到产品落地,这中间会涉及方方面面的细节问题,比如编程优化加速、相机硬件选型、编程工具等,这些是一个优秀开发者需要具备的综合技能。笔者与合伙人会结合各自的项目经历做定期分享,帮助大家提升综合能力。 112 | 113 | 114 | 5、高质量的交流、讨论、学习社区。星球内所有成员都可以进行发布问题、分享知识、上传资源、点赞、留言、评论等操作。对于小伙伴提出的问题,我们大家皆可以参与交流、讨论。所有的交流讨论及问题、资源分享等,星主都将会定期整理,方便日后快速查询。小伙伴们在学习或者项目中遇到问题都可以在星球里免费提问,星主看到后及时答疑解惑。 115 | 116 | 117 | 尾注 118 | 119 | 120 | 1、 新进星球的同学请查看置顶帖子「内容快速导航」,尽早跟上节奏。我们将隔一段时间对星球里的知识点和帖子进行整理,更新,所以大家务必请关注置顶帖子。 121 | 122 | 123 | 2、 对于星球里的某些知识点,比如Git和CMakeLists.txt的学习与使用等,星主小凡近期正与合伙人Oliver Cui筹划录制视频,进行细致讲解,一期真正有效地帮助大家提高。 124 | 125 | 126 | 3、 本课程的优势: 127 | 128 | 129 | - 会逐步增加针对性练习题。由于3D视觉知识点居多,并且对于常见知识点也是面试时考官经常会刁难的点,比如相机标定。有哪些常见的标定板?对于角点检测,目前有哪些检测算子?对于不同的靶标,目前能达到多高的精度等?相机的标定精度影响因素有哪些?对于针孔模型与鱼眼模型的标定原理是否相同? 130 | 131 | 132 | - 逐步完善3D视觉的每个重要知识点。鉴于星球里截止目前已经分享了近400个帖子,涉及图像处理、编程调试技巧、点云后处理、针孔模型及鱼眼镜头标定、读书心得、项目实战等,以后会不间断增加其他知识点,比如三维重建、Git的使用技巧等。 133 | 134 | 135 | - 对于择业、研究方向选择等问题,星球里都可以免费提问。 136 | 137 | 138 | 知识星球需付费,越早越优惠。学习切忌单打独斗,一个优质的学习圈子助你快速入门、高效解决问题,少走弯路。只要每天不到几毛钱,即可把握住时代的风口,与优秀的小伙伴一起交流、进步,为就业增添砝码。扫一扫即可加入3D视觉学习圈~ 139 | ![](imgs/3D视觉从入门到精通.jpg) 140 | 141 | 142 | 143 | 144 | 145 | ### 四 Q&A 146 | 技术问答请戳—> [Q&A](Q&A.md) 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | -------------------------------------------------------------------------------- /Q&A.md: -------------------------------------------------------------------------------- 1 | ## 四 答疑 2 | 3 | **4.1 星主,您好,我已经用双目摄像头生成一个目标物体的五六个方向的点云,怎么把这些融合一起,生成一个完整点的点云,用什么方法** 4 | 答:这个需要将点云进行配准,可以参考之前我在我们公众号总结的三篇文章: 5 | 1)[一分钟详解PCL中点云配准技术](https://mp.weixin.qq.com/s?__biz=MzU1MjY4MTA1MQ==&mid=2247484425&idx=1&sn=fffa30c88cbd0c51d159fa1ea7d738c2&chksm=fbff2f3dcc88a62b953a95552a3db01e554e341978e1b0165ea342b9765b907396802baed7e7&token=906868167&lang=zh_CN#rd) 6 | 2)[[点云配准(一 两两配准)](https://mp.weixin.qq.com/s?__biz=MzU1MjY4MTA1MQ==&mid=2247484414&idx=1&sn=1636d47b38cc0b47e1f3ce60d3670d65&chksm=fbff28cacc88a1dcceb15d1819f9f7c2a138886c8dc39f1bcbc26ff40acda64a170dd6cff0a7&token=906868167&lang=zh_CN#rd) 7 | 3、[3D点云配准(二多幅点云配准)](https://mp.weixin.qq.com/s?__biz=MzU1MjY4MTA1MQ==&mid=2247484422&idx=1&sn=55b7497b5262a184fc183283cd34e27b&chksm=fbff2f32cc88a62402eb37957d8d496e0b34cdcb13db973b8b27d6cbb93ee3a45dfc8324f8dc&token=906868167&lang=zh_CN#rd) 8 | 你这个双目摄像机是搭载在机械臂上还是什么物体上呢,如果是机械臂上,需要将相机与机械臂进行手眼标定,手眼标定的问题可以查看我们的快速导航,里面汇总了手眼标定的一些经验,可以参考下。 9 | 10 | **4.2 群主,你好,请问下,在深度学习tensorflow中,调用多个GPU,怎么调用用了。现在公司给了我两块GPU,(是一个机器多个gpu)。请问如何调用,有这方面资料参考吗?** 11 | 答:tensorflow实现单机下的多GPU调用,相对于多机分布式的集群操作还是比较简单的,其实tensorflow官网上有多GPUs使用教程,主要通过设定显卡设备号,给你三个参考链接: 12 | 1、https://cloud.tencent.com/developer/article/1155836 13 | 2、http://www.tensorfly.cn/tfdoc/how_tos/using_gpu.html 14 | 3、https://www.baidu.com/link?url=CEifTwWRJudgJt1zoZq...https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/6_MultiGPU/multigpu_basics.ipynb 15 | 16 | **4.3 最近在论文中看到这种,可以模拟散乱场景,可以选择相机位姿,生成深度图的,所谓的 virtual camera,星主有接触过吗** 17 | 答:可以试试如下方法:1、有很多三维软件,比如meshlab或者PolyWorks、GeoMetric等,直接导入CAD等三维模型。 2、可以试试利用V-Rep进行仿真:[VREP探索(一)——认识VREP_嵌入式](https://blog.csdn.net/hyhop150/article/details/54562411)或者ROS系统下的gazebo模块进行仿真。 18 | 19 | **4.4 哈咯,我想咨询一下,最近让调研一下移动机器人的室内定位问题。老板让考虑Wi-Fi,这个您有了解吗?他和现在大家说的激光slam,视觉slam有什么关系吗?** 20 | 答:这个移动机器人,比如以扫地机为例,有很多是以Wi-Fi来进行数据通讯的。也就是移动机器人和手机端共用一个网关,即可进行数据交互。 21 | 至于这个与视觉SLAM和激光SLAM的关系,那仅仅是数据交互的一环,视觉SLAM是以视觉传感器为主的即时定位与构建系统,而激光SLAM,是以激光雷达传感器为主的即时定位与构建系统。 22 | 23 | 嘉宾补充回答:身边有朋友做室内定位,主要用wifi和uwb比较多。但室内的难点是,wifi和uwb信号多次反弹造成的信息叠加形成复杂网络,对信号处理,复杂网络定位,优化滤波等要求比较高。这是学术上,具体工程上的不太了解。 24 | 25 | **4.5 星主您好,请问是否可以推荐一些双目视觉的数据集?** 26 | 答:[超全的3D视觉数据集汇总](https://mp.weixin.qq.com/s?__biz=MzU1MjY4MTA1MQ==&mid=2247484787&idx=1&sn=d781d80abb06a1b79e80a04248892b49&chksm=fbff2e47cc88a7517c8c381cd6e55f04f8b5433053e8d896fc18cd09878fb58a85efabb1670b&token=498280384&lang=zh_CN#rd) 27 | 28 | **4.6 请问一下,点云匹配后怎么计算匹配误差,看到知乎上您的回答是如图所示,能不能进行一个解释?** 29 | 答:不过ICP的匹配误差思想还是很简单的,主要目的就是找到旋转和平移参数,将两个不同坐标系下的点云,以其中一个点云坐标系为全局坐标系,另一个点云经过旋转和平移后两组点云重合部分完全重叠。针对采集的点云和待匹配点云,首先初始化变换矩阵R和T,然后计算出两幅点云最近点对经过变换之后的误差(最小二乘),通过误差不断的迭代更新R和T,直至最终误差小于某一阈值停止迭代。 30 | 31 | **4.7 你好vio还有哪些发展方向了?是不是可以将感知和定位结合比如语义slam?** 32 | 答:VIO,其实也就是VO+IMU,这里的VO也即视觉SLAM的前端,VIO即视觉惯性里程计,有时也叫视觉惯性系统,是融合相机和IMU数据实现SLAM的算法。根据融合框架的区别,又分为紧耦合和松耦合,松耦合中视觉运动估计和惯导运动估计系统是两个独立的模块,将每个模块的输出结果进行融合,而紧耦合则是使用两个传感器的原始数据共同估计一组变量,传感器噪声也是相互影响的,紧耦合算法上比较复杂,但充分利用了传感器数据,可以实现更好的效果,是目前的研究重点。 33 | 34 | 其实SLAM本身也是具有感知和定位的,而语义SLAM则是目前很多SLAM公司的产品研究热点,比如扫地机上,希望可以通过语义信息给用户在APP更直观的展示,AR的产品上也同样如此。 35 | 36 | **4.8 小凡你好,我是刚入门3d视觉的小白,本身是从2d视觉背景入行的,熟悉opencv,只对2d算法熟悉,但没有学习过有关3d的相关知识,目前在自学pcl,发现3d有关的中文教学相对2d很少,本人英文很差,查很多网上课程大多是国外大学的视频英语授课,有名的教材课本也都是英语原文。请问3d 视觉处理的相关应用和开发有那些中文的视频和教材呢?网路上的资源很多,但是太过零散,对小白来说很需要系统化的教程循序渐进的走完教程,谢谢。** 37 | 答:对于3D视觉的入门与学习,其实这块说起来很大。就我的学习经验来说,还是要以项目为依托,在实战中学习效率最高。 38 | 如果现在只是想单纯地学习的话,我的建议可以动手实操如下几个方面: 39 | 1、单目、双目的标定; 40 | 2、三维重建算法的研究; 41 | 3、点云后处理; 42 | 4、手眼标定; 43 | 5、界面编程QT的学习,主要是三维可视化地显示。 44 | 如果你想学习点云后处理的话,可以参考《点云库PCL从入门到精通》,书中附有代码示例,可以学习,或者PCL库本身的Samples也可以的。 45 | 如果是标定或者三维重建,建议可以先看一些论文,代码的话在网上也有很多,可以先跑起来。 46 | 47 | **4.9 星主你好!pcl中双边滤波(binary filter)针对的点云类型是XYZI,带有强度信息I,但是双目扫出来的点云只有XYZ,请问I咋弄** 48 | 答:这里点云的强度图,又叫点云的亮度图,与深度图不同,点云的强度图一般在点云采集时,相机同步给出,反应的是光的亮度情况。 49 | 50 | **4.10 lk光流法和orb特征匹配跟踪哪个环境适应性好?** 51 | 答:ORB特征点,主要通过特征点匹配来跟踪点,计算几何关系得到R,t,BA来优化R,t。 52 | 53 | 光流法主要是基于灰度不变假设,把特征点法中的描述子和匹配换成了光流跟踪,之后求解R,t。 54 | 55 | 其实对于每种方法,都会有其优缺点。 56 | 比如对于特征点法,优点是:运动过大时,只要匹配点还在像素内,则不太会引起无匹配,相对于直接法或者光流法来说,有更好的鲁棒性。缺点是:特征点过多过少都无法正常工作,且只能用来构建稀疏地图,计算效率不高。 57 | 58 | 而对于光流法,优点是不需要计算描述子,不需要匹配特征点,节省了很多计算量,关键点提取多少都能工作,从稀疏到稠密重构基本上都可以用。缺点呢,基于灰度不变假设,容易受外界光照影响;相机发生大尺度移动或者旋转时无法很好的追踪,非凸优化,容易局部极值。用尺度金字塔改善局部极值,组合光流法(增加旋转描述)改善旋转。 59 | 60 | 如果综合来看,个人还是觉得ORB特征点跟踪对环境适应性更好点。 61 | 62 | **4.11 想问下,有哪些适合看的关于三维方面的开源项目呢,能学习下的,国内的或是国外的都可以。或是有哪些点云处理相关的也可以的,想平时学习下,最好附上git库的链接了** 63 | 答:对于3D方面的开源项目,我倒是没有特刻意整理Git上的,不过我们星球里之前倒是有相关的,比如三维重建的:1. http://mesh.brown.edu/byo3d/source.html 2. https://www.3dunderworld.org/ 此外,如果想找git上的开源代码,可以参考https://mp.weixin.qq.com/s/mR6LClodXNFrp_uJuYUx7g 64 | 你关注一下对应的3D模块就可以啦 65 | 66 | **4.12 如何对不规则物体点云进行体力计算呢** 67 | 答:这里是指点云的体积计算吗,这个问题倒是没有遇见过,这个我的建议是1、自己实现各部分体积计算方法,然后累加;2、使用下PolyWorks那边的技术支持,可以问一下那边是否提供这样的功能,PolyWorks在逆向工程上还是很强大的。这个问题我晚点和伟哥也一起讨论研究下,后面有好建议告诉你啊。 68 | 嘉宾补充回答:三角化之后,放到UG或者solidworks里,可以输出体积,还可以根据不同密度出质量等。polyworks有c++API,导入也可以三角化,但是没试过计算体积。还有开源的meshlab可能有你想要的功能。如果点云是凸包的,可以类似积分的思想:https://www.cnblogs.com/21207-iHome/p/7461458.html 69 | 70 | 71 | **4.13 星主有没有研究过Drost的PPF方法(三维位姿估计),opencv自带的surfacematching 无法在windows下跑,有没有啥解决方法** 72 | 答:不好意思啊,问题我居然刚看到。这个问题我记得我们星球里之前有位作者倒是回答过这个问题,你可以查看下[这个帖子](https://t.zsxq.com/AyfEUzF) 73 | 同时他的[个人博客地址](https://littlebearsama.github.io/categories/ObjectDetection-and-PoseEstimation/0-tutorial/) 可以参考下。 74 | 如果需要联系他的,可以微信上联系我,我给你引荐下。 75 | 76 | **4.14 问您一个问题,我想利用双目相机(相机固定)获得图像中某个像素点(u,v)在世界坐标系坐标(二维码所在坐标系)中的坐标(x,y,z),有哪些方法以及步骤?我现在思维有点乱,想让您帮我梳理一下.O(∩_∩)O谢谢** 77 | 答:为了得到三维点,简单总结要经过以下几个大致步骤: 78 | 1、左右相机的单目标定,标定出相机的内参 79 | 2、两个相机的双目标定,标定出外参R,T矩阵。 80 | 3、左右图像的特征点检测,检测得到左右图的二维点坐标; 81 | 4、代入内外参,进行三角测量,计算出三维点。 82 | 每个环节都会有精度误差,尽量保证每个环节的精度都要高点。 83 | 84 | **4.15 博主你好,论文中说得有序点云(organized pointcloud)如何获取呢** 85 | 答:有序点云一般来讲,需要自己将无序点云转化成有序点云,也就是自己设定x、y、z方向的密度,根据任意方向的最大最小值,将点云均分,类似于二维图像那样,给出x,y的列数,即可推算出其三维坐标。建议自己实现,如果后续实现过程中有疑问的,可以加我微信QYong2014,我晚点可发你参考下点云有序化的实现。(暂时代码还在网盘里,家里网速太渣了,晚点有需要我下载分享给你,不过是我们自己的点云库,非PCL实现) 86 | 87 | **4.16 博主,请问有没有推荐的深度相机的深度图和彩色图对齐的博客或者资源,看星球里的资源没有专门针对这个的~** 88 | 答:可以参考如下代码demo: 89 | 90 | // C++ 标准库 91 | #include 92 | #include 93 | 94 | // OpenCV 库 95 | #include 96 | #include 97 | 98 | // PCL 库 99 | #include 100 | #include 101 | 102 | // 定义点云类型 103 | typedef pcl::PointXYZ PointT; 104 | // typedef pcl::PointXYZRGBA PointT; 105 | typedef pcl::PointCloud PointCloud; 106 | 107 | using namespace std; 108 | using namespace cv; 109 | // 相机内参 110 | const double camera_factor = 1000; 111 | //RGB内参 112 | // const double camera_cx = 327.411224; 113 | // const double camera_cy = 243.387131; 114 | // const double camera_fx = 454.778259; 115 | // const double camera_fy = 454.778259; 116 | //IR内参 117 | const double camera_cx = 311.829987; 118 | const double camera_cy = 274.658997; 119 | const double camera_fx = 579.234009; 120 | const double camera_fy = 579.234009; 121 | 122 | //RGB外参 123 | //Mat tvc_rgb = (Mat_(4,4)<<-0.001208959960532363,0.01149703337966534,0.9999331760869226,0.19, 124 | // -0.9995679131951007,0.02935296841445894,-0.001546012953174262,0.020, 125 | // -0.02936878149677709,-0.9995029872235134,0.01145657909971065,0.05400000095367432, 126 | // 0.0,0.0,0.0,1.0); 127 | //RGB IR外参 128 | //Mat rgb_ir = (Mat_(4,4)<< 0.999875, -0.002629, -0.015589, -0.030002598, 129 | // 0.002623, 0.999996, -0.000453 , -0.000049383, 130 | //0.015590, 0.000412, 0.999878, -0.001055870, 131 | // 0.0, 0.0, 0.0 ,1.0); 132 | 133 | // 主函数 134 | int main( int argc, char** argv ) 135 | { 136 | // 读取./data/rgb.png和./data/depth.png,并转化为点云 137 | 138 | cv::Mat rgb, depth; 139 | //没有用到RGB 140 | // rgb = cv::imread( "../data/Color_46.png" ); 141 | 142 | depth = cv::imread( "../depthImg/Depth_00056366.png", -1 ); 143 | 144 | std::cout<<"read cloud data from local file success.."< pass; 153 | // 154 | // pass.setInputCloud(cloud); 155 | // pass.setFilterFieldName("z"); 156 | // pass.setFilterLimits(0.0,1.0); 157 | 158 | 159 | // PointCloud::Ptr cloud_filtered ( new PointCloud ); 160 | 161 | // pass.filter(*cloud_filtered); 162 | 163 | //转换到地宝坐标系 164 | float x,y,z; 165 | Mat w_point = Mat_(4,1); //世界坐标系下的位姿 166 | Mat ir_point; //IR坐标系 167 | // 遍历深度图 168 | for (int m = 0; m < depth.rows; m++) 169 | { 170 | for (int n=0; n < depth.cols; n++) 171 | { 172 | // 获取深度图中(m,n)处的值 173 | ushort d = depth.ptr(m)[n]; 174 | // d 可能没有值,若如此,跳过此点 175 | if (d == 0) 176 | continue; 177 | // d 存在值,则向点云增加一个点 178 | PointT p; 179 | 180 | 181 | 182 | // 计算这个点的空间坐标 183 | p.z = double(d) / camera_factor; 184 | p.x = (n - camera_cx) * p.z / camera_fx; 185 | p.y = (m - camera_cy) * p.z / camera_fy; 186 | 187 | //ir_point = (Mat_(4,1)<< x ,y, z ,1); 188 | 189 | // w_point = tvc_rgb*rgb_ir*ir_point; 190 | 191 | //p.x = w_point.at(0,0); 192 | // p.y = w_point.at(1,0); 193 | // p.z = w_point.at(2,0); 194 | 195 | 196 | 197 | // 从rgb图像中获取它的颜色 198 | // p.b = rgb.ptr(m)[n*3]; 199 | // p.g = rgb.ptr(m)[n*3+1]; 200 | // p.r = rgb.ptr(m)[n*3+2]; 201 | 202 | // 把p加入到点云中 203 | cloud->points.push_back( p ); 204 | } 205 | } 206 | 207 | // 设置并保存点云 208 | cloud->height = 1; 209 | cloud->width = cloud->points.size(); 210 | cout<<"point cloud size = "<points.size()<is_dense = false; 212 | 213 | 214 | pcl::io::savePCDFile( "../Depth_00056366.pcd", *cloud ); 215 | 216 | // 清除数据并退出 217 | cloud->points.clear(); 218 | // cloud_filtered->points.clear(); 219 | cout<<"Point cloud saved."<