深度相机优缺点:
优点:三维信息,距离信息;缺点:3-5m范围内,业界普遍精度为1%,双目技术相机精度略差于TOF技术,缺乏合适的三维场景分析方法(主要瓶颈)。空间遮挡问题
read.m --读取深度图,转换为三维云图
cut.m --切割凳子空间
tupian.m --分离xz,yz平面
img.m --滤波,轮廓提取
main.m --
/wholespace --完整云图
/cutspace --分割空间云图
/cut_img --xz,yz平面图
/img_lk --xz,yz轮廓图
备注:相机坐标轴并非沿重力向下,相机旋转矩阵求解见三维空间转换PPT;
深度-云图转换原理:详见博客园-深度图转云图,相机内参需要询问设备制造商或标定(后续工作中提及)
结果
使用方法
outline.m --匹配圆弧
核心函数:detectSURFFeatures(I,name,value)
参数NumOctaves表示高斯滤波器序列,默认3即可
MetricThreshold表示blob强度,越小检测的圆弧弧度越小,建议值100
结果:
统计云点数量进行分析,云图中数据量众多,可考虑将云图数据取整再山区重复行
ymap=round(ymap);%取整数
ymap=unique(ymap,'rows');%去掉重复的行
使用方法
chuli.m --读取图片,得到train,test的标签及数据(样本数*单样本数据的mat矩阵)
to1 --归一化至1
ssvm --SVM主程序,参数说明见链接
建议参数:-s 0 -t 2 -c 0.5 -g 2.8
t表示核函数,默认使用RBF核t=2
c表示惩罚函数,越小收敛慢,准确度略有提高
g表示γ,建议值1-5
SVMcgForClass函数:可自动寻找最优参数,安装libsvm-mat(/toolbox)
注意:训练集测试集的数据矩阵必须对齐,必要时刻数据补0.归一化效果不明显,但博客上说有好处,我这个代码没体现出来。
博客园-libsvm说明https://www.cnblogs.com/jiahuiyu/p/5415936.html结果:
测试集120张图,准确率约87-92%;第一排无遮挡准确率96%,第二排准确率89%,第三排准确率72%;
在近期工作中,后排遮挡严重的情况下,没有有效的分析方法取处理三维场景,轮廓分析,SVM分类时,采用的是投影xz,yz平面方法,众多信息丢失,使用原DM460没有RGB颜色信息。
girhub地址:https://github.com/ageitgey/face_recognition 1. 标称准确率:98.56 2. 软件环境: python win10 tensorflow==1.7 scipy scikit-learn opencv-python h5py matplotlib Pillow requests psutil
3. 使用方法 ```python 在项目主页下载预训练模型,模型位于/align python cpmpare.py 图片1,图片2 –计算TL距离 python -u classifier.py –检测人脸 图片数据位于/image
若需要自己训练,可下载LFW数据集 python -u align/align_dataset_mtcnn.py –数据集人脸对齐 python -u train_tripletloss.py –训练模型 ```
github地址:https://github.com/davidsandberg/facenet 1. 标称准确率:99.06 2. 软件环境: python win10 python==3.6.4 numpy==1.14.2 opencv-python==3.4.1 face-recognition==1.2.2 dlib=19.8.1
3. 使用方法: python 图片数据库:/img/face_recognition python -u faceRecognition.py
两总方法结果基本一致,无明显差异
说明: 1. 若测量范围为3m内,则尽量在3m附近拍照标定。 2. 相机相对位置不变,必须定焦镜头。 3. 双目间距影响视距,3m-6cm,5m-8cm,10m-12cm。间距过大会导致可视区域缩小(若一目不可见,则该点结果=0) 4. 增大分辨率可提高精度,具体原理见CSDN-双目成像原理计算复杂度:n^3log2(n)+d*n^2。分辨率提高后,对算力迅速增大,目前720p 5. 物体表面光滑或反光透明时,特征不明显,匹配误差大,因此画面抖动
PS:国庆上不了stereo网站,不记得具体环境搭建了,待定 链接在此 * 软件环境(很麻烦,还要编译)
CUDA==
tensorflow==
zed-python-api(官网下载)
zed-tensorflow
CUDA安装详见CSDN-GPU-tensorflow安装特别特别注意版本一致:tensorflow==1.14 python==3.7.3 CUDA=10.0.130 cuDNN==7.4.2 (具体可查官网显卡对应版本,近期连NVdia官网都上不了)
cd zed-tensorflow --切换至目标文件夹
python -u object_detection_zed.py
备注:
line263 indices = np.argwhere(classes == 1) 参数classes表示类别,google目标检测的模型针对多种物体,==1 表示people
说明:zed相机的优势在于可视距离远(标称0.5-20m),带RGB颜色信息,在2k模式下桌面抖动较小,我实测下,3m的精度0.8%,5m精度1.0%。目前算是业界水平比较高的相机。其官网文档提供的API,SDK仅提供基础访问功能。目标检测的例子中,用的是google的object-detection模型,其基于是2维图片分析。在代码line254 sess.run(boxes, scores, classes, num_detections])函数中,书如参数仅左目2维图片,仅在检测到人后,调用深度信息,显示在界面。我询问工作人员,回复是:如果你需要处理自己的问题,需要自己搭建处理3维信息的分析方法。
结果:
结果
1. 命令行stereoCameraCalibrator
2. 勾选‘skew''Tangential Distortion''3 Coefficients'
去掉'2 Coefficients'选项
3. 点击'add image'
4. 点击'Calibrate'
5. 查看下方误差窗口,设定上限,删去误差大的图片
6. 导出'Export camera parameters'
7. 命令行输入save('mystereoParams.mat','stereoParams')
使用方法
run ZED.m --
备注:rectifyStereoImages函数此核心函数提高精度的方法还早找
网盘链接 1. depth:深度图预处理,轮廓分析 2. SVM:svm法对xz,yz平面的人数分析 3. faceai:MTCNN法人脸检测 4. facenet:TL法人脸检测 5. bino:张正定法双目成像 6. caremae:matlab自带工具箱双目成像 7. zed-demo:ZED目标检测(需要另外安装zes-api) 8. scam-sdk:自行购买的双目摄像头演示程序,captuer截取画面 9. /jsonlab,/libsvm json转mat,svm工具 10. /bookmark:实习中保存的有用的书签