Comments (17)
I am curious what the best depth accuracy you can achieve using ZED camera at 1m - 2m distance range. 1cm?
This depends on the calibration (fx and B) and the quality of the stereo matching. Assuming B=0.12
, fx=1400 px
(2K mode) and a Gaussian disparity error with e_d = 0.5 px
(1 x sigma). Plugging it in
e_z = B*f/d - (B*f)/(d + e_d)
we can get (using d = B*f/z
)
e_z = 3mm
@ z = 1m
e_z = 12mm
@ z = 2m
With worse stereo matching, e_d = 1.0 px
e_z = 6mm
@ z = 1m
e_z = 23.5mm
@ z = 2m
Keep in mind that e_z is one approximate standard deviation of a Gaussian and that it is only adequate for near points. So @1m with good stereo matching and perfect calibration, most measurements will be below 1 cm. But keep in mind that the stereo matching may be biased in some way.
from zed-sdk.
Hey! I got a simillar behaviour. What I did to solve this is to calibrate the camera using external ROS calibrator... but each lens separately and then using both calibrations within the opencv stereocalibration. It works much better than the calibration tool.
from zed-sdk.
@WASCHMASCHINE you might find this useful :
https://github.com/stereolabs/zed-opencv-native/blob/f7e17b6368ecbc432c0ca0d64be4586e88db8799/src/calibration.cpp#L74-L175
This function takes the ZED calibration parameters and converts them to OpenCV format (the reverse of what you want).
from zed-sdk.
Your charts show a quadratic decrease in Z-accuracy and a bias increase with the range, which is consistent with the stereo uncertainty model.
The systematic bias you mention is due to subpixel interpolation which is affected by pixel-locking and foreshortening phenomena. These phenomena are discussed in many papers. We are working on bias reduction techniques but it is still a work in progress.
Regarding calibration, your camera may have suffered a mechanical shock or there was an issue during its calibration process. Either way, please send to our Support team your order and serial numbers so we have a look into the issue.
For the recalibration, your charts seem to indicate that you are close to the stereo accuracy model. You can still try Kalibr which is currently the state of the art tool for calibration and could improve your triangulation results.
from zed-sdk.
@wbapablo That sounds great! Do you have a link to the external ROS calibrator? I assumed that the SDK just used the stereo calibration of OpenCV, though.
Do you have some data to show the improvement, too?
from zed-sdk.
This paper shows an approximation of the RMS error of the ZED camera as a function of distance.
https://ddd.uab.cat/pub/elcvia/elcvia_a2018v17n1/elcvia_a2018v17n1p1.pdf
from zed-sdk.
@LuisOrtizF The link doesn't work for me, could you share the title and author name please?
from zed-sdk.
@RSKothari Sorry, test this link: https://elcvia.cvc.uab.es/article/view/v17-n1-ortiz/1084-pdf-en
from zed-sdk.
I am curious what the best depth accuracy you can achieve using ZED camera at 1m - 2m distance range. 1cm?
from zed-sdk.
I am curious what the best depth accuracy you can achieve using ZED camera at 1m - 2m distance range. 1cm?
This depends on the calibration (fx and B) and the quality of the stereo matching. Assuming
B=0.12
,fx=1400 px
(2K mode) and a Gaussian disparity error withe_d = 0.5 px
(1 x sigma). Plugging it in
e_z = B*f/d - (B*f)/(d + e_d)
we can get (usingd = B*f/z
)
e_z = 3mm
@ z = 1m
e_z = 12mm
@ z = 2mWith worse stereo matching,
e_d = 1.0 px
e_z = 6mm
@ z = 1m
e_z = 23.5mm
@ z = 2mKeep in mind that e_z is one approximate standard deviation of a Gaussian and that it is only adequate for near points. So @1m with good stereo matching and perfect calibration, most measurements will be below 1 cm. But keep in mind that the stereo matching may be biased in some way.
This is very helpful. Thanks a lot!
from zed-sdk.
@wbapablo That sounds great! Do you have a link to the external ROS calibrator? I assumed that the SDK just used the stereo calibration of OpenCV, though.
Do you have some data to show the improvement, too?
@WASCHMASCHINE Did ROS calibrator work for you? Did you eliminate the estimation error with manual calibration ?
from zed-sdk.
@rpfly3 I did not try it out yet, so feel free to share the results! But I have prepared OpenCVs stereo calibration code to work with the ZED in the no GPU mode, still I haven't figured out the mapping of the parameters to Stereolabs calibration parameters. I did not spend a lot of time on it, though.
from zed-sdk.
@adujardin Thank you! Can't you push the reverse too? 😅
from zed-sdk.
@WASCHMASCHINE @adujardin Thank you.
from zed-sdk.
@WASCHMASCHINE did you figure out a better way to calibrate the camera?
Keep in mind that e_z is one approximate standard deviation of a Gaussian and that it is only adequate for near points. So @1m with good stereo matching and perfect calibration, most measurements will be below 1 cm. But keep in mind that the stereo matching may be biased in some way.
You mention good stereo matching - is this something we can control, or is this already implemented when we get the depth image from /depth/depth_registered?
from zed-sdk.
@WASCHMASCHINE did you figure out a better way to calibrate the camera?
No, I haven't spend time with the ZED.
You mention good stereo matching - is this something we can control, or is this already implemented when we get the depth image from /depth/depth_registered?
This is dependent on the stereo matching algorithm, which is closed source. So you are limited by their implementation for the creation of the disparity map. This is too bad because there are newer algorithms that could outperform the current ZED SDK in not all, but certain scenery.
from zed-sdk.
If we use a structured light projector in addition to the ZED system, by how much can we reduce the disparity error?
from zed-sdk.
Related Issues (20)
- not existed subdirectory caused cmake parsing error HOT 1
- Inconsistency between distance values and units HOT 2
- SVO playback in jetson nano ORIN is not working HOT 1
- BODY_FORMAT.BODY_70 HOT 1
- Random camera image freeze HOT 1
- camera streaming python sample is not working
- DEPTH_NEURAL often gives missing disparity for not so near objects HOT 2
- fusion.camera_to_geo has unexpected behavior HOT 1
- ZedX Jetson Orin Nano Recording and Playback Broken HOT 3
- Point cloud distortion HOT 2
- sl::Camera::close() doesn't free up memory (ZED_SDK 4.1) HOT 1
- When I did the first application it gave me an error HOT 1
- Point cloud status unstable switching between ok and Error When using ZED 2i HOT 2
- `Camera.getSensorsData` returns invalid data in `SensorsData` HOT 2
- ERROR: Invaliad svo file detected. This svo file appears to be corrupted or improperly formatted... HOT 1
- automatic_region_of_interest.py failed: AttributeError HOT 1
- build error in "depth sensing/automatic region of interest/cpp" HOT 1
- The best way to operate and record synchronized left, right streams without ZED sdk
- get_python_api.py installs numpy v2 which give ValueError due to binary incompatibility HOT 3
- Add Fedora Support
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zed-sdk.