gpt4 book ai didi

opencv - 使用立体相机的距离结果不佳

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:50 25 4
gpt4 key购买 nike

我正在尝试实时测量从立体对到场景中检测到的人的距离。首先,我用 9x6 棋盘格(方形尺寸为 59 毫米)分别校准了两个摄像头,我获得了两个摄像头的均方根误差在 0.15 到 0.19 之间。使用获得的参数,我校准了立体声对,均方根误差为 0.36。后来,我纠正、取消失真并重新映射立体声对,得到了这个结果: rectified and undistorted stereo

完成后,我使用 stereoSGBM 计算了立体对应关系。我就是这样做的:

Mat imgDisp= Mat(frame1.cols, frame1.rows,CV_16S);

cvtColor(frame1, frame1, CV_BGR2GRAY);
cvtColor(frame2, frame2, CV_BGR2GRAY);

//parameters for stereoSGBM
stereo.SADWindowSize = 3;
stereo.numberOfDisparities = 144;
stereo.preFilterCap = 63;
stereo.minDisparity = -39;
stereo.uniquenessRatio = 10;
stereo.speckleWindowSize = 100;
stereo.speckleRange = 32;
stereo.disp12MaxDiff = 1;
stereo.fullDP = false;
stereo.P1 = 216;
stereo.P2 = 864;

double minVal; double maxVal;
minMaxLoc(imgDisp, &minVal, &maxVal);

return imgDisp;

我在这里附上了 stereoSGBM 的结果:disparity map .

为了检测场景中的人物,我使用了 hog + svm(默认人物检测器)并使用光流 (cvCalcOpticalFlowPyrLK()) 跟踪该人物。使用在立体对应过程中获得的视差图,我获得了从一个人跟踪的每个角的视差如下:

int x= cornersA[k].x;
int y= cornersA[k].y;

short pixVal= mapaDisp.at<short>(y,x);
float dispFeatures= pixVal/ 16.0f;

根据为场景中的一个人跟踪的每个角的视差,我计算了最大视差并使用公式 ((focal*baseline)/disp) 计算了该像素的深度:

float Disp =maxDisp_v[p];

cout<< "max disp"<< Disp<<endl;
float d = ((double)(879.85* 64.32)/(double)(Disp))/10; //distance in cms.

** 对于焦距,我计算了在相机矩阵 [3x3] 参数中获得的 fx 和 fy 之间的平均值:

CM1: [9.0472706037497187e+02 0. 3.7829164759284492e+02
0. 8.4576999835299739e+02 1.8649783393160138e+02 0. 0. 1.]

CM2: [9.1390904648169953e+02 0. 3.5700689147467887e+02 0. 8.5514555697053311e+02 2.1723345133656409e+02 0. 0. 1.]

所以 fx camera1: 904.7; fy camera1: 845.7; FX 相机 2:913.9; fy camera2: 855.1

** T[0,0] 矩阵的结果与我手动测量的基线匹配,所以我假设这是正确的基线。

**由于棋盘格的正方形大小以毫米为单位,我假设基线必须采用相同的单位,这就是为什么我将 64.32 毫米作为基线。

距离的结果是大约。 55 厘米,但实际距离是 300 厘米。我检查了很多次,但测量的距离仍然不正确:distanceResult

请帮帮我!我不知道我做错了什么。

*** 我在 osx 系统中使用 opencv 2.4.9。

最佳答案

我认为你在单位方面犯了错误:焦距以像素为单位,基线以厘米为单位提供视差以像素为单位提供。正确的?根据公式,您有 pix*cm/pix = cm。但是你将它除以 10 得到 dm。所以你的距离大约是 55dm,是 300 的两倍。这对你来说是个不错的方法。

关于opencv - 使用立体相机的距离结果不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50579152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com