料框里堆得乱七八糟的工件,点云数据扫出来糊成一团——这是3D视觉落地时最让人头疼的场景之一。工件重叠、粘连,分割算法要么把两个零件当成一个,要么把一个零件切成几块,后面的抓取、定位全得跟着跑偏。今天不聊虚的,直接拆几种实战里能打的方案。

先搞清楚问题出在哪
粘连和重叠本质上是两回事。粘连是指两个工件在空间上靠得太近,点云边界相互渗透,传统聚类算法分不清谁是谁。重叠更麻烦——上层工件完全压住下层,被遮挡的部分根本没数据,算法得靠“猜”才能补全。
传统基于欧式距离的聚类,遇到这种情况基本歇菜。距离阈值设小了过分割,设大了欠分割,怎么调都不对。
几何方法:先粗后细,分而治之
最稳妥的实战思路是“粗分割+细分割”两层结构。
先上LCCP(Locally Convex Connected Patches),基于表面凹凸性做粗分割。这个算法的逻辑很简单:两个工件堆叠在一起,接触面通常是凹的,而同一个工件的表面是凸的。利用法向量夹角判断凹凸关系,能把堆叠面积不大的工件先拆开。
粗分割完,接触区域的点云还是粘在一起。这时候上基于法线估计的边界检测,把接触边缘的点剔除掉,让两个点云簇在空间上彻底分离。最后用欧式聚类做细分割,把每个独立工件的点云完整提取出来。
实测数据挺能说明问题:这种组合方案的分割正确率比单独用LCCP提升35.9%,比区域生长提升66.7%,比纯欧式聚类提升80%。每10个工件的处理耗时大约290毫秒,工业线速基本扛得住。
还有一种思路是基于特征点提取——先用RANSAC滤掉无关点云,再用法向量特征提取关键点,去掉特征点之后做欧式聚类。这种方法能把分割成功率从63.6%拉到81.8%。
深度学习方法:让网络学会“脑补”
几何方法的瓶颈很明显——遇到严重重叠、大面积遮挡的情况,数据本身就不完整,几何推理再强也有限。
深度学习实例分割走的是另一条路。用海量堆叠场景的数据训练网络,模型能学会“脑补”被遮挡部分的形状。具体操作上,先在彩色图上做实例分割生成掩膜,再把掩膜投影到3D点云上提取每个工件的点云。
对于弱纹理、形状相似的工件,传统2D方法经常失效,但3D点云加深度学习的组合能把分割精度和识别准确率都推到95%以上。
网络架构这块,PointNet++是经典选择,改进损失函数和聚类策略后能有效分割堆叠零件。最近Transformer架构也开始往这个方向渗透,结合Mamba的TMPNet能动态调整点云排序,对复杂形状的敏感度更高。
实操层面的几个坑
数据质量是第一道坎。金属件反光、边缘模糊是家常便饭。预处理阶段直通滤波和统计滤波必须做扎实,先把背景噪声和离群点干掉。
参数调优别想一步到位。欧式聚类的搜索半径、LCCP的凹凸判断阈值,都得根据实际工件尺寸和点云密度反复试。有研究提出自适应搜索半径的思路——非边缘区域用大半径、边缘区域用小半径,值得参考。
算力和实时性的平衡。深度学习方案精度高,但推理耗时。如果节拍要求高,可以考虑2D掩码投影到3D的轻量策略,先快速粗分割再精修。
总结
没有哪种方案能通吃所有场景。工件形状规整、堆叠不严重,几何方法(LCCP+欧式聚类)足够快且准;工件复杂、遮挡严重,得上深度学习实例分割。更现实的打法是把两者结合起来——深度学习做粗定位和掩膜生成,几何方法做边界精修和点云补全。
3D视觉处理重叠粘连,说到底是在“精度”和“速度”之间找平衡。先把数据预处理做扎实,再根据场景特点选对工具链,比追着最新的网络结构跑要实在得多。