news 2026/5/19 6:04:30

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

作者头像

张小明

前端开发工程师

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/5/19 6:04:30

Zotero插件市场:让文献管理插上智能翅膀

Zotero插件市场&#xff1a;让文献管理插上智能翅膀 【免费下载链接】zotero-addons Zotero add-on to list and install add-ons in Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons 你是否曾经为了安装一个Zotero插件&#xff0c;在浏览器和软件之…

作者头像 李华
网站建设 2026/5/15 23:45:32

3分钟精通B站视频下载:downkyi完全配置手册

3分钟精通B站视频下载&#xff1a;downkyi完全配置手册 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。 …

作者头像 李华
网站建设 2026/5/16 0:35:39

Bypass Paywalls Clean:解锁付费内容的终极解决方案

在信息获取成本日益高涨的今天&#xff0c;你是否也曾被各大媒体的付费墙挡在门外&#xff1f;知名财经媒体、国际权威期刊、主流新闻机构等顶级媒体的深度内容触手可及&#xff0c;却因订阅费用而望而却步。现在&#xff0c;一款名为Bypass Paywalls Clean的浏览器扩展将彻底改…

作者头像 李华
网站建设 2026/5/18 18:51:19

Linux/Windows下Anaconda与深度学习框架安装指南

Linux/Windows 下 Anaconda 与 PaddlePaddle 深度学习环境搭建实战 在当前 AI 开发日益普及的背景下&#xff0c;一个稳定、高效且易于管理的本地开发环境是每位开发者的基本需求。尤其对于中文 NLP、OCR 和工业级视觉任务而言&#xff0c;PaddlePaddle 凭借其强大的国产生态支…

作者头像 李华
网站建设 2026/5/13 13:20:37

3步搞定!文泉驿微米黑字体跨平台安装与美化全攻略

3步搞定&#xff01;文泉驿微米黑字体跨平台安装与美化全攻略 【免费下载链接】fonts-wqy-microhei Debian package for WenQuanYi Micro Hei (mirror of https://anonscm.debian.org/git/pkg-fonts/fonts-wqy-microhei.git) 项目地址: https://gitcode.com/gh_mirrors/fo/fo…

作者头像 李华