3D,从无知到无畏

news2024/9/25 13:18:47

欢迎来到 PaQiuQiu 的空间

本文为【3D,从无知到无畏专栏目录】,方便大家更好的阅读!


🚀~写在前面~

近年来,3D视觉技术在众多领域飞速发展,除了智能机器人、自动驾驶、无人机等无人系统,在我们身边的AR、VR、智能家居,以及智能手机中通过扫描人脸三维结构实现手机解锁、手机支付等应用。除此之外在工业领域中,3D视觉技术可以进行纳米级的工业扫描、工业检测等,实现大场景三维重建,助力工业智能化发展。

3D视觉是一个多学科相融合的技术,可以总结为:计算图形学+计算机视觉+人工智能=3D视觉。3D视觉技术是通过3D摄像头采集视野空间内每个点位的三维坐标信息,通过算法复原获取三维立体成像,不会轻易受到外界环境、复杂光线的影响,与2D成像技术相比更稳定,体验感更强,安全性更高。


本文是3D,从无知到无畏专栏目录专栏的导航贴(点击链接,跳转到专栏主页,欢迎订阅,持续更新…)。

专栏介绍:根据自己学习3D一路走来的心路历程,以及在工作和学习过程中对3D的不断思考和总结,详细阐述了3D的学习路线图,并以图文并茂的方式来普及3D的算法原理、实际使用过程中的经验总结,并教会大家如何根据需求查找并阅读相关论文,以及拿到源码之后如何精准解析,适合基础进阶和想不断勇攀高峰的3D开发人员!

专栏适用人群:对点云有兴趣的小伙伴。

📢 在做技术分享与内部交流时,从刚毕业的3D新手到工作七八年及以上的老手,反应都比较强烈,都表示很有价值!

📢 开发某个特性或刁钻需求时,发现3D相关的理论介绍都很少,或停留在PCL上!

📢 通过沟通交流及对身边同事的观察发现,很多3D开发人员在借鉴或引用开源代码时无从下手,甚至有时会直接影响工作效率和项目进度!

📢 所以决定推出这方面成体系的技术专栏,希望能有效地解决大家的痛点问题!


专栏文章还在持续更新 ing…

如果文章有用,可以点赞收藏关注,也可以订阅专栏


通过对项目实战问题中的技术点及相关细节进行思考、总结及整理,可以加深对关联知识点的认知和理解,可以做更进一步的归纳与提炼,将相关的技术点高效串联起来,最后形成一套属于自己的系统完整的知识体系,这样也可以更好地服务于工作实践!多多关注细节,会有更深刻的理解和认识!


🎁~文章列表~

专栏文章分以下几个部分来展开:

📢 算法原理:勿在浮沙筑高台,该部分重点介绍了3D的一些基本概念和相关原理。

📢 实战为王:PCL和CC是3D开发过程中绕不开的2个开源库,一个偏算法实现,一个偏软件工程,在我们实际开发过程中,有效并合理的利用好这2个库,可以大大提高开发效率。

📢 经典论文:论文复现是一个算法开发人员必备的能力之一,所以对于经典的论文不光要读懂,还要能嵌入到自己的项目中去。

📢 源码解析:看一个程序员水平高低,不光是编码能力,还有源码解读能力;该部分介绍了在阅读源码过程中需要注意的细节以及如何有效提炼自己需要的那部分代码。


📖 Part1 算法原理

📜 1、3D,小白需要理解的点云概念

摘要:什么是点云、点云从哪儿来,点云在实际生活中用在哪以及点云有哪些优缺点。

📜 2、3D,2大点云库

摘要:PCL和Open3D,是我们这个时代最好用的2个点云库,它给了我们一个系统学习点云的路径,我们定不辜负。

📜 3、3D,硬件有哪些—1?

摘要:目前,3D系统主要靠立体视觉,结构光和激光三角方案,这些系统主要用在固定工作距离,同时在特定检测领域中需要较高水准的校准。。

📜 4、3D,硬件有哪些—2?

摘要:毫米级、微米级、纳米级,分别对应不同成像原理的3D视觉系统。

📜 5、3D,激光三角法

摘要:激光三角法如何实现距离测量。

📜 6、3D,点云中的2棵树

摘要:建立空间索引在点云数据处理中已被广泛应用,常见空间索引一般是自顶向下逐级划分空间的各种空间索引结构,比较有代表性的包括 BSP树、 KD树、 KDB树、 R树、 R+树、 CELL树、四叉树和八叉树等索引结构,而在这些结构中KD树和八叉树在3D点云数据组织中应用较为广泛

📜 7、3D,kd-tree理论及应用

摘要:作为三维领域中一个重要的数据来源,点云主要是表征目标表面的海量点的集合,并不具备传统网格数据的几何拓扑信息,所以点云数据处理中最为核心的问题就是建立离散点间的拓扑关系,实现基于邻域关系的快速查找。。

📜 8、3D,点云滤波到底滤了什么

摘要:获取点云数据时,由于设备精度、操作者经验、环境因素、以及电磁波的衍射特性电磁波遇到障碍物时偏离原来直线传播的物理现象)等带来的影响,点云数据中将不可避免地出现一些坏分子1号——噪点;此外,实际应用时除了这些随机误差产生的噪点外,由于受到外界干扰如视线遮挡、障碍物等因素,点云数据中还会存在一些离主体点较远的坏分子二号——离群点

📜 9、3D,点云下采样

摘要:对于大规模点云处理而言,直接对点云进行特征提取能较好地保留三维结构信息。但由于点云的无序性,直接处理的方式在对邻域进行搜索时需要较高的计算成本,一个常用的解决方式就是对点云进行下采样,将对全部点云的操作转换到下采样所得到的关键点上,从而达到降低计算量的目的。

📜 10、3D,点云平滑法线估计

待更新...

📜 11、3D,点云关键点和特征描述

摘要:3D点云特征描述与提取是点云信息处理中最基础也是最关键的一部分。如果要对一个三维点云进行描述,光有点云的位置是不够的,常常需要计算一些额外的参数,比如法线方向、曲率、纹理特征、颜色、领域中心距、协方差矩阵、熵等等。如同图像的特征(sift、surf、orb)一样,我们需要使用类似的方式来描述三维点云的特征。

📜 12、3D,点云分割

摘要:点云分割的目的是分块,便于后续的单独处理。一般做法是根据空间、几何和纹理等特征信息进行划分,使同一划分内的点云具有相同或相似的特征。

📜 13、3D,点云平面拟合

摘要:点云中拟合平面的方法一般有2种:最小二乘和RANSAC

📜 14、3D,点云拼接1

摘要:作为点云的热门研究方向之一,点云拼接一直以来都是众多科研工作者争相研究的对象。那么,它究竟有何魅力呢?

📜 15、3D,点云拼接2

摘要:毫米级、微米级、纳米级,分别对应不同成像原理的3D视觉系统。

📜 16、3D,点云重建

待更新...

📜 17、3D,点云可视化技术

摘要:点云数据中本身仅仅包含多个点数据,对于较小规模的点云数据,只需要依次使用面或者点等方式将其全部渲染出来。但是面对较大数据量的点云,就需要考虑许多随之而来的问题。

📜 18、3D,手眼标定公式推导

摘要:手眼标定分眼在手上和眼在手外,正确的公式推导是保证标定精度的前提条件。


📖 Part2 实战为王

📜 1、PCL实战为王

PCL common中常见的基础功能函数

PCL 常用小知识

PCL 滤波采样(一)——统计滤波

PCL 滤波采样(二)——直通滤波

PCL 滤波采样(三)——MLS平滑

PCL 滤波采样(四)——体素采样

PCL 点云表面法线计算

PCL 平面拟合——RANSAC

PCL 平面拟合——最小二乘

PCL 最小包围盒

PCL 欧式聚类分割

PCL 边界提取

PCL 点云变换

PCL 点云配准——模型点云和实际点云

PCL KdTree点云密度

PCL KdTree去除重叠点

PCL OcTree点云压缩

PCL OcTree空间变化检测

PCL 大规模点云显示

摘要:点云库(Point Cloud Library, PCL)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等;支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就在3D信息获取与处理上具有同等地位。PCL是BSD授权方式,可以免费进行商业和学术应用。。

📜 2、工业应用

切比雪夫平面拟合

摘要:基准平面需要满足最小包容(包容的意思是,一组平行平面,使得全部点都被平行平面夹住)条件。

深度图运算

摘要:为了能准确地测量物体表面粗糙度信息,需要通过图像运算的方式,增强这些特征,从而进行进一步的测量。

📜 3、学习CGAL

待更新...

📜 4、一窥CC密码

3D点云处理软件CloudCompare

CloudCompare 整体架构

CloudCompare中CCCoreLib模块介绍

CloudCompare—点云分割

摘要:CloudCompare是一个三维点云(网格)编辑和处理软件。最初,它被设计用来对稠密的三维点云进行直接比较。它依赖于一种特定的八叉树结构,在进行点云对比这类任务时具有出色的性能。此外,由于大多数点云都是由地面激光扫描仪(例如LMI)采集的,CloudCompare的目的是在一台标准笔记本电脑上处理大规模的点云——通常超过1000万个点云。例如在一台带有双核处理器的笔记本电脑上,计算出300万个点到14000个三角形网格的距离需要10秒。


📖 Part3 源码解析

📜 1、PCL边界提取——源码解析

摘要:在PCL中集成了一个非常经典的点云边缘检测算法,这个算法也在 PCL点云边界提取这篇博客中讲解了。该文章只介绍了AC算法的原理及接口调用。那么它的内部具体是如何实现的呢?如果知道了它的具体实现,那么在某些情况下,就可以直接在它的源码基础上做一些小的改动,就能够更好地适应不同的需求了。这里只对AC边缘检测算法做个源码解析及修改后调用的过程记录,若以后需要解析其他PCL功能,也可以借鉴一下。


📖 Part4 经典论文

📜 1、叉车机器人托盘定位技术:近期进展回顾

摘要:本文概述了工业叉车机器人和托盘拣选设备上的托盘识别和定位技术。回顾和比较了一些现代计算机视觉技术。 特别的,深度神经网络(DNN)通常用于RGB图像中托盘的检测和定位;点云方法用于标记二维范围数据中的感兴趣区域(ROI),并提取托盘的特征,该方法能够提供托盘的精确定位。此外,还介绍了托盘识别和定位算法(PILA)模型,该方法可以在没有任何人工辅助的情况下提供高精度的托盘方位角和中心位置,利用RGB图像和点云数据,配合低成本的硬件来平衡定位精度和运行时间。

📜 2、【6D位姿估计】Point Pair Feature (PPF)

摘要:整体建模的本质是通过定义点对特征,来构建特征矢量的集合以及每个特征矢量对应的点对集,作为全局模型描述。当定义好全局模型描述(Global Model Description)后,就可以考虑局部匹配了。

📜 3、一种快速高效的点云表面重建算法

摘要:贪婪投影算法(Greedy Projection Algorithm)是M. Gopi等人[1]于2003年提出的点云表面重建算法。该算法从一个数据点 R 开始,找到与 R 相邻的一组数据点 C_R,连接 R 与 C_R,就可得到数据点 R 的所有邻接三角形(顶点中包含 R 的三角形)。然后以广度优先搜索的形式,遍历 C_R 中的数据点,找到这些数据点的邻接三角形,直到遍历完所有数据点。该算法的重点在于如何连接数据点R 和 C_R以生成高质量三角形(避免小角度),并保证三角形不会交叠。算法通过投影的方式,将三维数据点投影至二维,在二维平面内连接数据点,以获取不交叠三角形;通过贪婪的方式,当有多个数据点可连成三角形时,尽可能生成角度大的三角形。


📝~写在后面~

3D视觉就业方向有很多,同时对招聘者有着一定的高标准、严要求。在招聘求职过程中公司不但要求熟练掌握相关技能,扎实的编程基础,更要有着相关从业经验,自然也和招聘岗位给出非常诱人的薪资有关。比如:三维重建算法工程师、3D视觉算法工程师、SLAM算法工程师、传感器标定算法工程师、规划控制算法工程师、视觉感知算法工程师、相关产品经理等等,同时这些岗位也有着非常诱人的薪资,1-3年经验18-25k或更高,3-5年经验25-40k或更高,专家级给出百万年薪甚至更高

3D视觉入门相对于开发岗,传统计算视觉,2D计算机视觉要难很多,同时学生和求职者在选择方向上也会有迷茫或者困惑。本专栏包含算法原理层、论文解读层、源码解析层和实际应用层,绝对可以帮到大家,少走弯路,祝大家早日找到心仪且高薪工作

期待再次来到 PaQiuQiu 的空间

欢迎一起加油进步哦~

愿不负韶华,在点云的海洋里尽情的遨游吧,我们这群追风少年!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1989138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nuxt2:强制删除window.__NUXT__中的数据

一、问题描述 在以前的一篇文章《Nuxt3: 强制删除__NUXT_DATA__的一种方式》中曾介绍了在Nuxt3中如何删除存在于页面id为__NUXT_DATA__的script节点中的数据。 此次,Nuxt2与Nuxt3不同在于它的数据是存在于window.__NUXT__,那么该如何处理呢?…

Python 动态进度条实现,多个实例来展示实现方式

目录 1. 使用 print 函数 2. 使用 tqdm 库 3. 自定义样式 4. 多进度条 5. 嵌套进度条 6. 更新频率控制 7. 动态描述 8. 自定义回调 9. 使用 click 库 10. 使用 rich 库 文末福利 文末赠免费精品编程资料~~ 在编写Python脚本时,特别是在处理长时间运行的…

PDF Guru Anki:一款以PDF为中心的多功能办公学习工具箱

PDF Guru Anki 是一个假想的工具箱,因为目前我没有关于这个具体产品的详细信息。但是,根据这个名字和一般的PDF工具箱功能,我可以想象一些可能的独特功能,这些功能可以包括: PDF 阅读器:提供高效的PDF阅读…

linux下的C++程序

1.安装g编译环境(c)、gcc编译环境(c语言) sudo yum install gcc或者gcc-c //安装gcc/g编译(用管理员权限弄) 验证是否安装成功 gcc或者g --version //如果显示版本号,则表示安装成功 sudo yum remove g…

Go语言fmt包中print相关方法

Go语言的fmt包提供了多种打印相关的函数,主要用于在控制台或其他输出目标上格式化并输出数据。下面是一些常用的print相关方法的用途和区别: 1.fmt.Print() 功能: fmt.Print() 将参数的内容按默认格式输出到标准输出(通常是控制台&#xff…

springcloud loadbalancer nacos无损发布

前言 故事背景 jenkins部署时总是会有几秒钟接口调用报错,观察日志是因为流量被下发到已下线的服务,重启脚本在停止应用之前先调用nacos注销实例api后再重启依然会短暂出现此问题。项目架构是springcloud alibaba,通过openfeign进行微服务之间调用&…

npm vs pnpm 之幽灵依赖

在之前的文章📄 果断放弃npm切换到pnpm–节约磁盘空间(256G硬盘救星) 中有提及 npm 扁平化带来的幽灵👻依赖 问题,但没有特别展开,这段时间实际业务中遇到了该问题,特整理如下: ♨️…

Linux C 程序 【03】线程栈空间

1.开发背景 上一个篇章创建了线程,参考 FreeRTOS,每个线程都是有自己的内存空间,Linux上面也是一样的,这个篇章主要描述线程栈空间的设置。 2.开发需求 设计实验: 1)创建线程,并配置线程内存大…

充电桩--直流充电桩方案详解

一、直流充电桩介绍 1、直流充电桩介绍 电动汽车市场数量的不断激增,为缓解消费者对其里程焦虑与充电焦虑,配置双向OBC可以实现快速充电,还可将电动汽车当作分布式储能站回馈电网帮助消峰填谷,通过DCFC为电动汽车高效充电&#…

【解决错误】ModuleNotFoundError: No module named ‘progress’

【解决错误】ModuleNotFoundError: No module named ‘progress’ 在Python编程中,遇到“ModuleNotFoundError: No module named ‘progress’”这类错误,通常意味着Python解释器在其环境中找不到名为‘progress’的模块。以下将深入探讨这一错误的产生…

HBM2、HBM2E、HBM3和HBM3E技术

HBM(High Bandwidth Memory)是一种高性能的内存技术,主要用于数据中心、超级计算机、高端服务器、图形处理器(GPU)和AI加速器等领域,因为它能够提供比传统DDR内存更高的带宽和更低的功耗。 HBM2、HBM2E、HBM3和HBM3E技术 HBM2 (High Bandwidth Memory 2) HBM2 是HBM技术…

深入JVM:类加载器和双亲委派模型

目录 1. 什么是类加载器2. 类加载器的类型3. 双亲委派模型4. 类装载的过程加载验证准备解析初始化使用卸载 1. 什么是类加载器 如果想要了解什么是类加载器就需要清楚一个Java文件是如何运行的。我们可以看下图: 首先要知道操作系统是不能直接运行Java文件的&#…

大模型Transformer架构详解

深度学习领域正在经历一场剧烈的变革,这得益于Transformer模型的诞生和迅速发展。 这些开创性的架构不仅重新定义了自然语言处理(NLP)的标准,还极大地拓宽了人工智能的多个领域。 凭借其独特的注意力机制和并行处理能力&#xf…

目录的读写

一、文件流和字符描述的转换 1.1、fileno 要求的是内存大小一致 fileno FILE* fp -> int fd fgets(,); int fileno(FILE *stream); 功能: 获得一个文件流指针中的文件描述符 参数: stream:文件流指针 返回值: 成功返回文件描述符 失败返回-1 如果没有特殊要求的&…

如何在Zoom中集成自己的app?一个简单的例子

一、注册zoom 账号、以便在zoom app maketplace创建app。 二、安装git、node.js、vscode开发环境(略)。 三、注册ngrok账号,获得一个免费的https静态域名。 四、配置zoom app(wxl),设置上一步获得的https静态域名,验证…

2024 年 7 月区块链游戏研报:市场波动与数据分化的挑战与机遇

作者:Stella L (stellafootprint.network) 数据来源:Footprint Analytics 游戏研究页面 7 月份,加密货币市场波动显著,价格表现各异。比特币和 Solana 表现抢眼,与此同时,以太坊在美国市场推出现货以太坊…

8.3 字符串中等 306 Additive Number 423 Reconstruct Original Digits from English

306 Additive Number //累加数:除了前两个数,其余数都等于前两个加起来,至少包括三个数 //难点找到前两个数 //条件1:至少包括三个数–>确定前两个数字的最大长度 len n/3 看下方注意1 //条件2:遇到0默认归属于他…

Axure RP界面设计初探:基础操作与实用技巧

Axure RP是目前流行的设计精美的用户界面和交互软件。Axure RP提供了一组丰富的RP。 UI 控件,这些控件根据它们的应用领域进行分类。作为Axure的国产替代品,它可以在线协同工作,浏览器可以在不下载客户端的情况下立即打开和使用。如果以前用A…

护眼灯到底有没有用?一文曝光护眼灯的三大好处!

护眼台灯进入大众的视野,但种类多样,其质量也是参差不齐。不少人一直有着”护眼灯到底有没有用?“质疑,作为学生,课业多且繁重,再加上电子设备普遍普及,眼睛受承受的压力日渐增大。因此&#xf…

如何快速实现MODBUS TCP转Profinet——泗博网关EPN-330

泗博网关EPN-330可作为PROFINET从站,支持与西门子S7-200 SMART/300/400/1200/1500全系列PLC以及具有PROFINET主站的系统无缝对接,而Modbus TCP端,可以与Modbus TCP从站设备、主站PLC、DCS系统以及组态软件等进行数据交互。 通过EPN-330&…