1 | initial version |
Your formula is mostly correct. You can see that the variable part is the disparity, and the errors are caused by this parameter. Let's write this way:
Disparity = focal length*baseline/distance + error
The error is mostly constant, so to get a better precision, the focal length*baseline/distance
part should be much bigger than the error
. So you have 3 possibilities:
As the first two are fixed, you should increase the baseline. I think a few meters should be OK for this distance range. Just make sure that the cameras are properly aligned.
A more realistic solution should be a high quality lidar.
2 | No.2 Revision |
Your formula is mostly correct. You can see that the variable part is the disparity, and the errors are caused by this parameter. Let's write this way:
Disparity = focal length*baseline/distance + error
The error is mostly constant, so to get a better precision, the focal length*baseline/distance
part should be much bigger than the error
. So you have 3 possibilities:
As the first two are fixed, you should increase the baseline. I think a few meters should be OK for this distance range. Just make sure that the cameras are properly aligned.
[EDIT] I did some maths based on the comments below. With your setup the required precision is physically impossible.
To get a ~10cm error tolerance at 45m with a 65cm baseline, you need an angular resolution of 0.001°!!! (considering that the displacement is perfectly calculated). With a 5MP (1/2" sensor) camera with 6mm lens, you have an angular resolution of 0.02°. So even in a perfect case you are over an order of magnitude below the requirements. The theoretical lowest error of your setup is +/-2.5m, but in reality it will be probably somewhere at +/-5m or even higher.
A more realistic solution should be a high quality lidar.