news 2026/2/12 7:19:03

人工智能之数字生命--工程实践:获取高精度轮廓等信息

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
人工智能之数字生命--工程实践:获取高精度轮廓等信息

先把“双目差异”变成“深度/视差”,再用深度做分割,这样“存在”就变得非常清晰。

推荐流程:双目 → 视差/深度 → 存在掩膜 → 轮廓

  1. 标定 + 极线校正(Rectify)
    没有这一步,后面的视差会非常飘,轮廓会抖,动态更没法做。

  2. 计算视差图(Stereo Matching)
    用 OpenCVStereoSGBM(通常比 BM 好)得到 disparity。

  3. 视差后处理

    • speckle 去噪、median/bilateral
    • 有条件用ximgproc::DisparityWLSFilter会明显更干净
  4. 按深度分割存在(生成存在mask)

    • 近处物体:视差大;远处背景:视差小
    • 用阈值/分段阈值 + 连通域/聚类得到“存在候选”
    • 再用形态学 close/open 填洞
  5. 从mask提轮廓
    findContours得到轮廓;需要更精细就用 depth 边界 + 图像边缘(Canny)做融合细化。


为什么这比“左右做差”更准

  • 左右做差:本质是“视角变化造成的像素不对齐”,会把大量背景纹理误判为前景
  • 视差/深度分割:直接在几何层面把前景(近)和背景(远)分开,对纹理/颜色不敏感,轮廓更闭合、更稳定,后续做“动态”才靠谱

一个可直接落地的 OpenCV C++ 核心示例(存在mask + 轮廓)

// 1) 假设你已经做完标定&校正,拿到了 rectLeft, rectRight (灰度)cv::Ptr<cv::StereoSGBM>sgbm=cv::StereoSGBM::create(/*minDisparity*/0,/*numDisparities*/128,// 必须是16的倍数:64/96/128.../*blockSize*/5);sgbm->setP1(8*1*5*5);sgbm->setP2(32*1*5*5);sgbm->setUniquenessRatio(10);sgbm->setSpeckleWindowSize(100);sgbm->setSpeckleRange(2);sgbm->setDisp12MaxDiff(1);sgbm->setMode(cv::StereoSGBM::MODE_SGBM_3WAY);cv::Mat disp16S;sgbm->compute(rectLeft,rectRight,disp16S);// 2) disparity 转 float(OpenCV 输出通常是 *16 的定点)cv::Mat disp;disp16S.convertTo(disp,CV_32F,1.0/16.0);// 3) 基于视差阈值做“近物体”mask(阈值要结合你的基线/分辨率调)floatnearDispTh=8.0f;// 例:>8 认为更靠近(需要你现场调)cv::Mat mask=disp>nearDispTh;// 4) 去噪&填洞mask.convertTo(mask,CV_8U,255);cv::morphologyEx(mask,mask,cv::MORPH_OPEN,cv::getStructuringElement(cv::MORPH_ELLIPSE,{3,3}));cv::morphologyEx(mask,mask,cv::MORPH_CLOSE,cv::getStructuringElement(cv::MORPH_ELLIPSE,{7,7}));// 5) 连通域过滤掉小碎片cv::Mat labels,stats,centroids;intn=cv::connectedComponentsWithStats(mask,labels,stats,centroids,8,CV_32S);cv::Mat clean=cv::Mat::zeros(mask.size(),CV_8U);for(inti=1;i<n;i++){intarea=stats.at<int>(i,cv::CC_STAT_AREA);if(area>500){// 过滤阈值按分辨率调clean.setTo(255,labels==i);}}// 6) 轮廓std::vector<std::vector<cv::Point>>contours;cv::findContours(clean,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE);

什么时候“左右两张做差”还能用?

只有在你满足这些条件时它才可能“凑合”:

  • 画面很干净、背景纹理少、光照稳定
  • 你先做了极线校正,并且做了某种对应/对齐(否则差异全是错位)
  • 你只想要“可能存在的边界提示”,不追求闭合轮廓

但一旦你要为“动态”服务(连续帧稳定追踪、速度/位移估计、轮廓编码记忆),深度分割几乎是必选项


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/4 18:10:33

人工智能之数字生命---绘画能力的生成2

现在这套“存在→裁剪→mask→子存在→多级还原”的链路,本质上就是一个**分层绘画/分层合成(layered rendering)**系统。 要把“绘画”做得更精细,关键不是存更多“图”,而是存能让你在重建时补细节、抗抖动、抗遮挡、可缩放的那些特征。可以按“你想达到的精细度”分三…

作者头像 李华
网站建设 2026/2/3 0:00:53

LobeChat教育辅导应用前景分析

LobeChat教育辅导应用前景分析 在传统课堂之外&#xff0c;学生对即时学习支持的需求正以前所未有的速度增长。放学后遇到难题怎么办&#xff1f;作业写到一半卡壳了谁来帮忙&#xff1f;这些问题长期以来依赖家长或课外辅导班解决&#xff0c;但成本高、资源不均、响应不及时等…

作者头像 李华
网站建设 2026/2/11 10:11:38

Axolotl推理加速:从重复计算到智能缓存的技术演进

Axolotl推理加速&#xff1a;从重复计算到智能缓存的技术演进 【免费下载链接】axolotl 项目地址: https://gitcode.com/GitHub_Trending/ax/axolotl 在大语言模型的实际部署中&#xff0c;高频重复的提示词处理往往成为性能瓶颈。Axolotl作为开源的LLM微调框架&#x…

作者头像 李华
网站建设 2026/2/8 15:47:47

软件升级全流程优化:打造高效安全的版本更新体验

软件升级全流程优化&#xff1a;打造高效安全的版本更新体验 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 在当今快速迭代的技术环境中&#xff0c;软件升级已成为每个技术项目维护的必修…

作者头像 李华
网站建设 2026/2/6 7:27:44

招聘流程拖沓遭吐槽?HR这样做终结投递者焦虑

行业总览&#xff1a;流程冗长不是罪&#xff0c;无回应才是硬伤“投完简历石沉大海&#xff0c;连自动回复都没有”“面试完等了半个月&#xff0c;追问只换来‘再等等’”“三轮面试跑断腿&#xff0c;最后没下文”——过长的招聘流程不可怕&#xff0c;可怕的是流程中的“信…

作者头像 李华