Dispnet双目匹配深度估计
data_generator.py文件:数据生成器。 DispNet.py文件:网络结构。 第1步:运行annotation.py文件,在model_data文件夹下生成.txt。 第2步:运行DispNet_Trainer.py文件。 第3步:运行DispNet_Tester.py文件。
data_generator.py文件:数据生成器。 DispNet.py文件:网络结构。 第1步:运行annotation.py文件,在model_data文件夹下生成.txt。 第2步:运行DispNet_Trainer.py文件。 第3步:运行DispNet_Tester.py文件。
SGM算法在KITTI2015数据集上测评结果 开发环境:python=3.6、numpy=1.19.5、opencv-python=4.5.5.64 操作系统:Ubuntu20.04LTS 处理器:Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz 实验记录: 1、WTA、SSD策略,disparity=190,radius=3,视差<=3精度:0.5611,运行时间:7.4344s 2、WTA、SSD策略,disparity=64,radius=3,视差<=3精度:0.5611,运行时间:2.7495s 3、SGM、SSD策略,disparity=64,radius=3,视差<=3精度:0.8161,运行时间:22.7137s 4、SGM、NCC策略,disparity=64,radius=3,视差<=3精度:0.8119,运行时间:28.0640s 5、SGM、SAD策略,disparity=64,radius=3,视差<=3精度:0.6681,运行时间:22.3349
实现了孪生神经网络(Siamese network),该网络常常用于检测输入进来的两张图片的相似性。该仓库所使用的主干特征提取网络(backbone)为VGG16。 scipy==1.4.1 numpy==1.18.4 matplotlib==3.2.1 opencv_python==4.2.0.34 tensorflow_gpu==2.2.0 tqdm==4.46.1 Pillow==8.2.0 h5py==2.10.0
典型的PnP问题求解方式有很多种,例如P3P、直接线性变换DLT、EPnP、UPnP,另外还有非线性的Bundle Adjustment。 旋转平移矩阵T一共有12维,因此最少通过6对匹配点即可实现矩阵T的线性求解,这种方法称为DLT。当匹配点大于6对时,也可以使用SVD等方法对超定方程求最小二乘解。
环境:c++版本、OpenCV 4.5.3、Eigen data文件夹:存储左右目图片 demo文件夹:点对匹配结果、深度信息、三角测量可视化效果 main.cpp:主函数,调用orb_match进行点对匹配,调用antipolar_geometry计算对极几何位态变换,调用triangulation进行三角测量 get.cpp:调用双目摄像头,存储左右目图片 orb_match.cpp:库函数,功能包括:orb特征检测、描述子计算、landmark标志点对匹配 antipolar_geometry:库函数,功能包括:对极几何,计算两幅图像之间的位姿变换 triangulation:库函数,功能包括:三角测量,还原landmark标志点深度信息,得到landmark标志点3D坐标
calib_imgs文件夹:存储拍摄得到的左右目图片,左目棋盘格图片存于文件夹1,右目棋盘格图片存于文件夹2。 calib_left.cpp:进行左目摄像头的标定。 calib_right.cpp:进行右目摄像头的标定。 calib_stereo.cpp:进行双目标定。 get_img.cpp:用于移动棋盘格,存储左右目拍摄的图片。 undistort_rectify.cpp:进行双目校正。 环境配置:c++代码、OpenCV 4.5.3环境。
c++版本代码,对应环境Ubuntu20.04、OpenCV 4.5.3版本。 images1、images2分别是两组不同摄像头拍摄的棋盘格图片,我们分别对它们进行标定,其实就是实验重复了两次。 images1文件夹中的图片是网上下载的,尺寸为480*640,OpenCV计算起来非常快,每张0.3s左右。 images2文件夹中的图片是我自己借助海康摄像头拍摄的,尺寸为1440*2560,非常大,OpenCV计算起来很慢,每张80s左右。 images1_demo、images2_demo是这两组图片的棋盘格检测结果。 images1_undist、images2_undist是这两组图片的校正结果。 camera_Calibration1.cpp、camera_Calibration2.cpp是单目相机标定的源码。 camera_Undistortion1.cpp、camera_Undistortion2.cpp是单目相机校正的源码。
1、tiny_yolov4文件夹: 目标检测算法源码,包括:网络搭建、训练好的权重、解码文件、预测文件。 为提升算法速度,我摒弃了YOLOv4框架而采用了Tiny_YOLOv4框架,检测精度虽然有所下降,但每帧推理速度从0.17s提升至0.03s。 2、predict.py: 用于验证目标检测的效果,可单独独立出来运行,与目标跟踪无关。 3、kalman.py: 卡尔曼滤波器,基于恒速运动模型,预测下一帧目标物体的位置。 4、tracker.py: 存储每个时刻不同目标物体的状态,管理目标跟踪整个系统运作过程。 5、main.py: 整个项目的运行入口,直接运行main.py,就可以调用Tiny_YOLOv4 + Sort,处理视频流信息,完成目标跟踪、车流量统计。 6、MVI_39211、MVI_39031:DATRAC数据集测试集的两个视频,交通路段车流量画面。demo1、demo2:调用目标跟踪算法,车流量的每帧统计结果。
笔耕不辍
分享王者
持续创作
创作能手
新秀勋章
分享宗师
分享达人
分享精英