双目视觉,立体视觉,双目标定,三维重建,深度估计,棋盘格,RAFTStereo,HitNet,深度估计

news2024/11/22 17:53:47

github:https://github.com/pcb9382/StereoAlgorithms
gitee:https://gitee.com/peng-chuanbo/StereoAlgorithms

StereoAlgorithms

简体中文 | English

如果觉得有用,不妨给个Star⭐️🌟支持一下吧~ 谢谢!

Acknowledgments & Contact

1.WeChat ID: cbp931126

加微信(备注:StereoAlgorithm),拉你进群

2.QQ Group:517671804

1. Stereo_Calibration(双目相机标定)

使用方法

  1. (可选)首先使用process_image.py脚本将图像(1280,480)的图像裁剪,裁剪后的左右图像(640,480)保存在left_right_image文件夹下
  2. left_right_image文件夹下的left*.jpg,right*.jpg图像名称写入stereo_calib.xml中,保证left,right顺序填写;
  3. 在更改你的棋盘格参数:1)纵向内角点数;2)横向内角点数, 3)棋盘格大小(mm),4)是否显示标定过程中的的图像
    numCornersHor = 8;                                          //水平方向棋盘格内角点个数
    numCornersVer =11;                                          //垂直方向棋盘格内角点个数
    numSquares =25;                                             //棋盘格宽高(这里默认是方格)
    rectifyImageSavePath = "Stereo_Calibration/rectifyImage"    //标定校正为完成后左右图像存放的路径
    imagelistfn="stereo_calib.xml"                              //待标定的左右图像路径
    
  4. 标定模块单独编译运行
    cd Stereo_Calibration
    mkdir build&&cd build
    cmake ..&&make -j8
    ./Stereo_Calibration
    
  5. 在标定的过程中会显示左右图像的角点以及左右图像校正后拼接在一起的图像,可根据拼接后图像的绿色线来初步判断标定校正过程是否正确

drawingdrawing
drawing
7. 最终在根目录下生成StereoCalibration.yml的标定文件

注意

  1. 在标定显示的过程中,可以将角点检测有偏差的图像(一般是远处的角点比较小的)去除后重新标定

2. RAFTStereo

1.三维重建效果

drawing drawing

2.pth导出到onnx

  1. 下载 RAFT-Stereo

  2. 因为F.grid_sample op直到onnx 16才支持,这里转换为mmcv的bilinear_grid_sample的op

    1)需要安装mmcv;

    2)F.grid_sample替换为bilinear_grid_sample;

  3. 导出onnx模型

    1) 导出sceneflow模型

    (1)python3 export_onnx.py --restore_ckpt models/raftstereo-sceneflow.pth
    (2)onnxsim raftstereo-sceneflow_480_640.onnx raftstereo-sceneflow_480_640_sim.onnx
    (3)(option)polygraphy surgeon sanitize --fold-constants raftstereo-sceneflow_480_640_sim.onnx -o raftstereo-sceneflow_480_640_sim_ploy.onnx
    

    2)导出realtime模型

    (1)python3 export_onnx.py --restore_ckpt models/raftstereo-realtime.pth --shared_backbone --n_downsample 3 --n_gru_layers 2 --slow_fast_gru --valid_iters 7 --mixed_precision
    
    (2)onnxsim raftstereo-realtime_480_640.onnx raftstereo-realtime_480_640_sim.onnx
    
    (3)(option)polygraphy surgeon sanitize --fold-constants raftstereo-realtime_480_640_sim.onnx -o raftstereo-realtime_480_640_sim_ploy.onnx
    

3.使用导出的onnx模型或者下载已经转好的onnx模型

1.模型下载

([Baidu Drive](链接: https://pan.baidu.com/s/1tgeqPmjPeKmCDQ2NGJZMWQ code: hdiv))

2.参数设置(最好写绝对路径或者将需要的文件拷贝到build目录下)

   //双目相机标定文件
   char* stereo_calibration_path="StereoCalibration.yml";
   //onnx模型路径,自动将onnx模型转为engine模型
   char* strero_engine_path="raftstereo-sceneflow_480_640_poly.onnx"; 
   //相机采集的左图像
   cv::Mat imageL=cv::imread("left0.jpg");
   //相机采集的右图像
   cv::Mat imageR=cv::imread("right0.jpg");

4.RAFTStereo模块编译运行(确保已经将step2中需要的文件拷贝到build文件夹下)

cd RAFTStereo
mkdir build&&cd build
cmake ..&&make -j8
./raft_stereo_demo

5.运行结果

  1. 会在运行目录下保存视差图disparity.jpg
  2. 会在运行目录下保存pointcloud.txt文件,每一行表示为x,y,z,r,g,b

drawing drawing
drawingdrawing

6.模型说明

模型说明备注
raftstereo-sceneflow_480_640_poly.onnxsceneflow双目深度估计模型([Baidu Drive](链接: https://pan.baidu.com/s/1tgeqPmjPeKmCDQ2NGJZMWQ code: hdiv))
raftstereo-realtime_480_640_ploy.onnxrealtime双目深度估计模型可自行下载模型进行转化

7.其他

平台sceneflow(640*480)耗时realtime(640*480)耗时说明
309038ms11ms
306083ms24ms
jetson Xavier-NX120mssceneflow未尝试
jetson TX2-NX400mssceneflow未尝试
jetson Nano支持

3. HitNet

1.三维重建效果

1.Stereo depth estimation

drawing

Stereo depth estimation on the cones images from the Middlebury dataset (https://vision.middlebury.edu/stereo/data/scenes2003/)

2.onnxHitnetDepthEstimation

drawing

2.使用导出的onnx模型

1.模型下载

([Baidu Drive](链接: 链接: https://pan.baidu.com/s/1R3KU-pGJUJvGVOg8MPg8Nw 提取码: 6stm))

2.参数设置(最好写绝对路径或者将需要的文件拷贝到build目录下)

   //双目相机标定文件
   char* stereo_calibration_path="StereoCalibration.yml";
   //onnx模型路径,自动将onnx模型转为engine模型
   char* strero_engine_path="model_float32.onnx"; 
   //相机采集的左图像
   cv::Mat imageL=cv::imread("left0.jpg");
   //相机采集的右图像
   cv::Mat imageR=cv::imread("right0.jpg");

3.HitNet模块编译运行(确保已经将step2中需要的文件拷贝到build文件夹下)

cd HitNet
mkdir build&&cd build
cmake ..&&make -j8
./HitNet_demo

4.运行结果

  1. 会在运行目录下保存视差图disparity.jpg
  2. 会在运行目录下保存pointcloud.txt文件,每一行表示为x,y,z,r,g,b

drawing drawing
drawingdrawing

6.其他

平台middlebury_d400(640*480)耗时flyingthings_finalpass_xl(640*480)耗时说明
309015ms
3060未测试
jetson Xavier-NX未测试
jetson TX2-NX未测试
jetson Nano未测试

4. CREStereo(to do)

5. DistDepth(to do)

6. RealtimeStereo(to do)

7. 使用方法

1.环境

  1. ubuntu20.04+cuda11.1+cudnn8.2.1+TrnsorRT8.2.5.1(测试通过)
  2. ubuntu18.04+cuda10.2+cudnn8.2.1+TrnsorRT8.2.5.1(测试通过)
  3. nano,TX2,TX2-NX,Xavier-NX (测试通过)
  4. 其他环境请自行尝试或者加群了解

2.整个项目编译

  1. 更改根目录下的CMakeLists.txt,设置tensorrt的安装目录
set(TensorRT_INCLUDE "/xxx/xxx/TensorRT-8.2.5.1/include" CACHE INTERNAL "TensorRT Library include location")
set(TensorRT_LIB "/xxx/xxx/TensorRT-8.2.5.1/lib" CACHE INTERNAL "TensorRT Library lib location")
  1. 默认opencv已安装,cuda,cudnn已安装

  2. 为了Debug默认编译 -g O0版本,如果为了加快速度请编译Release版本

  3. 使用Visual Studio Code快捷键编译(4,5二选其一):

   ctrl+shift+B
  1. 使用命令行编译(4,5二选其一):
   mkdir build
   cd build
   cmake ..
   make -j6

References

  1. https://github.com/princeton-vl/RAFT-Stereo
  2. https://github.com/nburrus/RAFT-Stereo
  3. https://github.com/PINTO0309/PINTO_model_zoo/tree/main/142_HITNET
  4. https://github.com/iwatake2222/play_with_tensorrt/tree/master/pj_tensorrt_depth_stereo_hitnet
  5. https://github.com/ibaiGorordo/ONNX-HITNET-Stereo-Depth-estimation

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

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

相关文章

解决IDEA的git非常缓慢方法

解决IDEA的git非常缓慢方法 xxxx\IDEA2021.1.3\IntelliJ IDEA 2021.1.3\bin

2023最新Ubuntu安装部署Gitlab详细教程(每个步骤均配图)

Ubuntu安装配置Gitlab详细步骤 安装依赖 打开终端,运行如下命令: sudo apt updatesudo apt-get upgradesudo apt-get install curl openssh-server ca-certificates postfix接下来会遇到如下界面,Tab切换到“确定”按钮,然后回…

ThinkPHP8知识详解:ThinkPHP8是什么?

欢迎你来到PHP服务网学习最新的ThinkPHP8开发教程,本文介绍一下ThinkPHP8是什么? 1、ThinkPHP8是ThinkPHP框架的最新版本,它在之前版本的基础上进行了改进和优化。它采用了现代化的设计理念和架构,提供了更好的性能和更丰富的功能…

GRE TAP的工作原理与5G工业物联网中的应用

随着互联网新技术的发展以及智能化水平的提高,各企业对实时数据传输的需求也在不断提升,企业愈发重视数据中心的建设,以保障企业内网数据安全。 GRE(Generic Routing Encapsulation,通用路由封装)协议属于…

opencv-26 图像几何变换04- 重映射-函数 cv2.remap()

什么是重映射? 重映射(Remapping)是图像处理中的一种操作,用于将图像中的像素从一个位置映射到另一个位置。重映射可以实现图像的平移、旋转、缩放和透视变换等效果。它是一种基于像素级的图像变换技术,可以通过定义映…

vue项目中对组件使用v-model绑定值,在vue3中如何更新数据

在el-form 中 el-form-item 绑定组件进行校验 想在表单下面爆红提示 可以对组件使用v-model绑定值 vue2 通过this.$emit(‘input’,value) 更新 v-model值 vue3 通过this.$emit(‘update:modelValue’ ,value) 更新 v-model值

管理类联考——写作——素材篇——论说文——人工智能

有人说,机器人的使命应该是帮助人类做那些人类做不了的事情,而不是替代人类。技术变革会夺取一些人低端繁琐的工作岗位,最终也会创造更高端更人性化的工作机会。例如,铁路的出现抢去了很多挑夫的工作,但也增加了千百万…

资源成本降低70%!华为MetaERP资产核算的Serverless架构实践

资产核算是指在一定的财务周期,对企业拥有的房屋建筑物、机器设备、商标权和专利权等资产的取得、折旧和处置的会计核算,反映企业固定资产、无形资产的增减变动和价值分摊活动。华为资产核算产品,支撑企业资产从获取到处置全生命周期的管理和…

synchronized关键字同步原理

1.同步方法 public class Test {synchronized public static void testMethod(){}public static void main(String[] args) {testMethod();} }// 实现class文件的反汇编 java -c -v *.class从字节码文件中可以看到同步方法根据flags标志中的ACC_SYNCHRONIZED来判别是否是同步方…

动态内存管理面试题

动态内存管理面试题 文章目录 动态内存管理面试题一、第一题此代码存在的问题运行结果分析原因修改 二、第二题此代码存在的问题运行结果分析原因修改 一、第一题 代码如下&#xff08;示例&#xff09;&#xff1a; #include<stdio.h> #include<string.h> #incl…

快速学习Protobuf

目录 1. 什么是Protobuf&#xff1f; 2. 安装与设置 3. 定义消息 4. 编写.proto文件 5. 编译.proto文件 6. 序列化与反序列化 7. 使用Proto文件 8. Protobuf高级特性 1. 什么是Protobuf&#xff1f; 简介&#xff1a;Protobuf&#xff08;Protocol Buffers&#xff09;…

opencv python 训练自己的分类器

源码下载 一、分类器制作 1.样本准备 收集好你所需的正样本&#xff0c;和负样本&#xff0c;分别保存在不同文件夹 在pycharm新建项目&#xff0c;项目结构如下&#xff1a;has_mask文件夹放置正样本&#xff0c;no_mask文件夹放置负样本 安装opencv&#xff0c;把opencv包…

MySQL数据库面试题总结(2022最新版)

&#x1f436; 程序猿周周 ⌨️ 短视频小厂BUG攻城狮 &#x1f93a; 如果文章对你有帮助&#xff0c;记得关注、点赞、收藏&#xff0c;一键三连哦&#xff0c;你的支持将成为我最大的动力 本文是《后端面试小册子》系列的第 1️⃣ 篇文章&#xff0c;该系列将整理和梳理笔者作…

即时通讯im软件有哪些适合企业内部使用?

随着互联网的普及&#xff0c;即时通讯&#xff08;IM&#xff09;软件发挥着越来越重要的作用。它们为企业内部提供了高效的沟通方式&#xff0c;促进了团队沟通和工作效率的提升。以下是一些适合企业内部使用的即时通讯IM软件。 飞书 飞书是一款由字节跳动公司推出的企业级即…

python版本管理

安装anaconda3 conda conda search “^python$” conda创建新的 Python 环境&#xff0c;并指定你想要的 Python 版本&#xff1a; conda create -n myenv python<desired_python_version> 例如&#xff1a; conda create -n myenv python3.8.8 conda activate myen…

JS加载资源失败的解决办法

JS加载资源失败的解决办法 原文地址 JS加载失败导致问题 JS 也有可能加载失败&#xff0c;导致页面样式错乱&#xff0c;甚至白屏无法使用。这对用户体验是非常不利的&#xff0c;尤其是对于单页应用&#xff0c;如果 JS 加载不出来&#xff0c;用户就无法继续浏览页面了。 …

云计算迎来中场战役,MaaS或将成为弯道超车“新赛点”

科技云报道原创。 没有人能预见未来&#xff0c;但我们可以因循常识&#xff0c;去捕捉技术创新演进的节奏韵脚。 2023年最火的风口莫过于大模型。 2022年底&#xff0c;由美国初创企业OpenAI开发的聊天应用ChatGPT引爆市场&#xff0c;生成式AI成为科技市场热点&#xff0c…

(十六十七)时序数据库是怎么存储用户名和密码的从InfluxDB OSS迁移数据

以下内容来自 尚硅谷&#xff0c;写这一系列的文章&#xff0c;主要是为了方便后续自己的查看&#xff0c;不用带着个PDF找来找去的&#xff0c;太麻烦&#xff01; 第 16 章 时序数据库是怎么存储用户名和密码的 1、InfluxDB内部自带了一个用Go语言写的BlotDB&#xff0c;Blo…

大数据处理架构详解:Lambda架构、Kappa架构、流批一体、Dataflow模型、实时数仓

前言 本文隶属于专栏《大数据理论体系》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见大数据理论体系 姊妹篇 《分布式数据模型详解&#xff1a;OldSQL &…

LDR6028DRP五V充电芯片OTG传数据充电高端方案

随着科学的进步&#xff0c;生产力的进步&#xff0c;时代的进步&#xff0c;电子产品的更新迭代&#xff0c;手机上面的接口越来越来少&#xff0c;甚至到后面手机没有任何接口。现在的手机只剩Type-c&#xff0c;那手机又要充电又要进行数据传输&#xff0c;那怎么办呢。那么…