The CIRN Introduction to Quantitative Coastal Imaging Toolbox is a collection of MATLAB scripts to produce geo-rectified images specifically tailored for quantitative analysis of coastal environments.
I am working on user feedback/questions at the moment and am seeing a lot of the same issues come up. I see this as a limitation of the toolbox literature...clearly I can do a better job in explaining some key aspects! I will work on incorporating this information into the Wiki... in the meantime I will write up some quick tips here to help anyone with issues!!
Many are getting errors in D_gridGenExampleRect. This can be due to a few things...
1) Incorrect Intrinsics Solution (which would cause #2 as well).
2) Incorrect Extrinsics Solution
3) Incorrect Grid Definition
Here are some tips to test each one
1) Incorrect Intrinsics Solution- VERY KEY WILL AFFECT ALL RESULTS. The user needs to do an intrinsic calibration for their own particular UAS in the same recording mode used for data collection. Do not use the file uasDemo_IO.mat or uasDemo_Calib_Results.mat. This is for the UAS used in the demo data. CIRN suggests using http://www.vision.caltech.edu/bouguetj/calib_doc/ for intrinsic calibration. One should take their UAS, film a checkerboard using the same recording mode, use A0_movie2frames to extract images, and follow the CalTech Example 1.
2) Incorrect Extrinsics Solution- Sometimes C_singleExtrinsicSolution will provide a solution that gives okay GCP errors, but does not make physical sense. The less number of GCPs you have spread across your image, the more likely this can happen. To check this, at the end of C, in the command prompt type extrinsics(1:3), this is your X,Y, and Z. Does this make sense, particularly the elevation? The Elevation Z can be a red flag for these solutions. Then type rad2deg(extrinsics(4:6)) this is the heading, pitch, and swing. Does this make sense? You should be able to guess the heading from your autopilot and roll should always be near 0. Erroneous solutions typically give large swings.
If these values are very off, I would check you are using the right intrinsics file. Then, I would utilize line 142 in C. This will 'fix' your initial guesses to be the final solutions. I would start with fixing swing and heading. This should provide more reasonable final solutions. You can then use these solutions as your initial guesses, unfix swing and heading, and the solver can find a more accurate solution as a result of the refined initial guess. It can be an iterative process.
3) If your intrinsics and extrinsics are sensible, it may be local grid definition. If you are getting a black screen... start with large grid extents (be sure to include both negative and positive directions). Reduce the resolution to cut down on processing time. This can help capture the image where ever it may be in the grid and you can fix your localOrigin and localAngle from there. Again, may be iterative.
Hello all!
I am working on user feedback/questions at the moment and am seeing a lot of the same issues come up. I see this as a limitation of the toolbox literature...clearly I can do a better job in explaining some key aspects! I will work on incorporating this information into the Wiki... in the meantime I will write up some quick tips here to help anyone with issues!!
Many are getting errors in D_gridGenExampleRect. This can be due to a few things...
1) Incorrect Intrinsics Solution (which would cause #2 as well). 2) Incorrect Extrinsics Solution 3) Incorrect Grid Definition
Here are some tips to test each one
1) Incorrect Intrinsics Solution- VERY KEY WILL AFFECT ALL RESULTS. The user needs to do an intrinsic calibration for their own particular UAS in the same recording mode used for data collection. Do not use the file uasDemo_IO.mat or uasDemo_Calib_Results.mat. This is for the UAS used in the demo data. CIRN suggests using http://www.vision.caltech.edu/bouguetj/calib_doc/ for intrinsic calibration. One should take their UAS, film a checkerboard using the same recording mode, use A0_movie2frames to extract images, and follow the CalTech Example 1.
2) Incorrect Extrinsics Solution- Sometimes C_singleExtrinsicSolution will provide a solution that gives okay GCP errors, but does not make physical sense. The less number of GCPs you have spread across your image, the more likely this can happen. To check this, at the end of C, in the command prompt type extrinsics(1:3), this is your X,Y, and Z. Does this make sense, particularly the elevation? The Elevation Z can be a red flag for these solutions. Then type rad2deg(extrinsics(4:6)) this is the heading, pitch, and swing. Does this make sense? You should be able to guess the heading from your autopilot and roll should always be near 0. Erroneous solutions typically give large swings.
If these values are very off, I would check you are using the right intrinsics file. Then, I would utilize line 142 in C. This will 'fix' your initial guesses to be the final solutions. I would start with fixing swing and heading. This should provide more reasonable final solutions. You can then use these solutions as your initial guesses, unfix swing and heading, and the solver can find a more accurate solution as a result of the refined initial guess. It can be an iterative process.
3) If your intrinsics and extrinsics are sensible, it may be local grid definition. If you are getting a black screen... start with large grid extents (be sure to include both negative and positive directions). Reduce the resolution to cut down on processing time. This can help capture the image where ever it may be in the grid and you can fix your localOrigin and localAngle from there. Again, may be iterative.
Hope this helps!
Brittany