Calculation of distance (z-axis) to object using CVST

조회 수: 2 (최근 30일)
Meghana Dinesh
Meghana Dinesh 2015년 5월 20일
댓글: Meghana Dinesh 2015년 5월 21일
I am facing an issue while using Computer Vision System Toolbox, while calculating the 3D distance to an object from a stereo set-up.
I have calibrated my stereo setup (mean reprojection error of <0.2 pixels). The checkerboard used for calibration are all within a range of 1m to 2.5m away from camera (z-axis).
However, I am not able to get a good stereo reconstructed image. It seems very noisy along the z-axis.
This is my code:
I1 = imread('A1r.png');
I2 = imread('B1r.png');
[I1_r, I2_r] = rectifyStereoImages(I1, I2, stereoParams);
[J1,J2] = PreProcessing(I1_r,I2_r); figure, imshow(J1); figure, imshow(J2); % PreProcessing() is uploaded
pointCloudDisp = Disparity_Reconstruct( J1, J2, stereoParams ); % Disparity_Reconstruct() is uploaded
DisplayReconstructedScene( pointCloudDisp, J1 );
I have uploaded stereoParameters and the object images on dropbox . Kindly refer these. The object (wheel) is kept around 1.5m away from setup (along z-axis).
The disparity is around 105 (when manually calculated).
Any inputs regarding how I can improve my reconstructed scene would be useful. Kindly let me know if any other information has to be shared
Also, is this the only way by which I can get the object distance? Can I somehow use triangulation here? (If so, how can i find the corresponding matching points in left and right images?)

답변 (1개)

Dima Lisin
Dima Lisin 2015년 5월 20일
Hi Meghana,
The first thing I see is that if your images are RGB, you are doing disparity only on the blue channel. The better thing to do would be to use rgb2gray instead.
The other thing that seems odd, is the BlockSize of 55. That seems too large. I would try smaller values.
If that doesn't help, try applying histogram equalization using histeq to the images, before computing disparity.
Once you get your disparity map to look reasonable, then you should limit the z-values further. I would set minZ to 0, and maxZ to something like 2000. If your units are millimeters then 45000 mm is 45 meters, which is way too much, if your object is 1.5 meters away from the cameras.
  댓글 수: 3
Dima Lisin
Dima Lisin 2015년 5월 20일
Hi Meghana,
Try setting the disparity range to [0 128]. Also, try other values for BlockSize. Something between 15 and 25.
I would still advise that you use rgb2gray, though. It helps to have actual pixel values in all parts of the image, so that most pixels get a valid disparity.
Meghana Dinesh
Meghana Dinesh 2015년 5월 21일
Dima,
I had already tried changing the disparity to [0,128]. This time, since my z-axis had values lying in negative range, I changed the disparity to [-128,0].
Thanks. My stereo reconstructed image looks good now.
But why is the disparity in the negative range? Is it because I had rotated the cameras towards each other (So w.r.t Camera 1, the corresponding points in Camera 2's image lies in the other direction. Correct?)
Regards,
Meghana.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Camera Calibration에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by