Epipolar error values too high
I am not able to perform a good 3D calibration. I have captured between 70 and 80 images of the calibration target in different positions as in the example images. When I perform the calibration, I get a high value of rms error (1.3-1.5). I have tried to take different images three or four times and I always get the same range of rms error. I know that this error is too high but I have followed all the instructions to take the images and it seems that its quality is good.
In addition, when I tried to perform the 3D calibration with the images of the DIC Challenge of the Society for Experimental Mechanics most of them were skipped.
Has anyone had a similar problem when performing 3D calibration? What can I do to reduce epipolar error?
Thanks.
Were there any images that had a high error in particular after the initial calibration was complete?
All images have errors in the range 0,5-2 approximately. No error stands out above the rest. It's for this because I don't know what could be failing, it seems that all images are quite uniform.
Try disabling some of the images that are near or above 1.0 and see if that helps. Also, as an experiment set the frame interval to every three or five images to see if using a smaller image set helps.
When I disable the images that have high error and the calibration is performed again, the rest of the images increase the error and rms error is the same approximately. I have tried to use a smaller image set too but the error does not vary much (1.4-1.35). I am using a target generated by Calibration Target Generator of VIC (14x10). I read that these targets are valid and if I preview the images, the points are properly recognized, so I don't know what may be faling.
Are you able to post a sample set of the images so I could try them out?
On Dec 17, 2019, at 1:56 AM, l13r <[email protected]mailto:[email protected]> wrote:
When I disable the images that have high error and the calibration is performed again, the rest of the images increase the error and rms error is the same approximately. I have tried to use a smaller image set too but the error does not vary much (1.4-1.35). I am using a target generated by Calibration Target Generator of VIC (14x10). I read that these targets are valid and if I preview the images, the points are properly recognized, so I don't know what may be faling.
— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/dicengine/dice/issues/154?email_source=notifications&email_token=ADT7TOWBCPXAE6DEN2LGQTDQZCH4HA5CNFSM4J3NBUBKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHBUUZY#issuecomment-566446695, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADT7TOX6RHJRYOGMLV3KFTTQZCH4HANCNFSM4J3NBUBA.
You can find a sample set of images here: In this case, there are 53 images and I get a rms error of 1.32 with values in a range of 0.5-1.5. https://drive.google.com/drive/folders/1RHQfiRmEYf_fGOxyHXwOwGfRehuvjDGc?usp=sharing
Hi L13r, I tried to calibrate using constant threshold of 200 (not the auto-threshold) and have the same high error. When I reduced your files to 20% of their original size however, the calibration went just fine with an overall average error of 0.22 px and only 2 images of the 53 were skipped.
Thanks for taking a look at this @bvanmieg. Much appreciated
First of all, thanks for your help @bvanmieg . I have some question regarding what is the reason to reduce the file size. When you say that you have reduced the file size, do you mean that you are reducing the number of pixels? In this case, if the error have been reduced to 0.22 px but you have reduced the number of pixels to 20%, the error in millimeters is practically the same as in the previous situation since the pixel size have been increased (0.22*5=1.1). If I reduce the file size for the calibration images, will I also have to reduce the file size for the test images? In this case, the quality of the images will be much lower and there will be less precision.
The calibration tool in DICe is just a wrapper on the OpenCV camera calibration utilities. You might find more answers to your questions there: https://docs.opencv.org/2.4/doc/tutorials/calib3d/camera_calibration/camera_calibration.html
@l13r Yes, I reduced the number of pixels from 5184x3456px to 1296x864px (25% of orignal size instead of 20%, my mistake). This reduced the average reprojection error on the 10 first images (it just took too long on my PC to use all 53 in full resolution) from 0.96px to 0.18px. The standard deviation on the error also lowered drastically from 0.38 to 0.045px. This means that the calibration in the case of the reduced image size went way better than on the full resulution images. As a consequence, as you also point out, the px to mm conversion will be affected. One pixel in the reduced size images will be 4 times more distance in mm than in the original image. Than means that if you would use the calibration file generated by the images with reduced size that you will also need to reduce the size of the images you want to correlate. Another work around would be to scale the calibration file and use your files in full resolution but for that you need to be very carefull with what you do. The focal lengths in X and Y direction should be scaled together with the principle points, but the distortion coefficients should in theory stay the same. More info on that is availble in the opencv docs or when searching for matlab calibration toolbox (Zhang calibration)
I have some question regarding what is the reason to reduce the file size. When you say that you have reduced the file size, do you mean that you are reducing the number of pixels? In this case, if the error have been reduced to 0.22 px but you have reduced the number of pixels to 20%, the error in millimeters is practically the same as in the previous situation since the pixel size have been increased (0.22*5=1.1). If I reduce the file size for the calibration images, will I also have to reduce the file size for the test images? In this case, the quality of the images will be much lower and there will be less precision.