chaehyeonsong / discocal

150 stars 21 forks source link

The results are very poor on my dataset #10

Open zhangzscn opened 4 months ago

zhangzscn commented 4 months ago

We tested this algorithm on the images we collected ourselves and found that the results were very poor. Our calibration board is printed directly, and our camera FOV is approximately 120 degrees. The picture is attached, could you please help me take a look?

./main.out 4 3 4 ../sample_imgs/our2/ 0.1 0.27

calib.io_circles_841x1189_4x3_270_200.pdf

Due to upload restrictions, we have divided the data into several compressed packets. We also set some images that cannot recognize the calibration board to ignore when running the program.

GMSL_IDX0_framegrab_2.zip GMSL_IDX0_framegrab_4.zip GMSL_IDX0_framegrab_53.zip GMSL_IDX0_framegrab_41.zip

chaehyeonsong commented 4 months ago

Hi @zhangzscn . I can't open the first zip file. Therefore, I analyzed the problem based on the others. The problem is that your camera has severe distortion, but you only use the images captured from the similar distance. To get good results, you need some images captured from a close distance. By the way, I updated the code, so you can get proper results running the latest version. This is the result. 1862.181257, 1860.296757, 1871.195180, 1130.211204, 0.356858, -0.332841, 0.146336, -0.041941, 0.005041 Try again with my latest code using new dataset containing close shots!

I think the problem may come from the wrong camera model. Did you check your camera model?

zhangzscn commented 4 months ago

Tried the latest code and did solve the previous problem. From the results, the projection error of your algorithm is 1.541120, and that of Matlab is 2.24.Nice work! My camera model is a pinhole model. Is there a theoretical basis for taking pictures from different distances, or is it empirical?

chaehyeonsong commented 4 months ago

Both. Images taken from close distances are more sensitive to extrinsic values (6D configuration of the board). Therefore the images make the optimization process more robust. However, diverse distances are recommended since the same distance results in an overfitting problem that the camera parameter only fits at a specific distance.

By the way, the final projection error 1.54 is the radius-fixed version results? Our code recalculates the camera parameter if the calibration quality is lower than 80%. Please use the last results :)

zhangzscn commented 4 months ago

yes,final projection error 1.54 is the radius-fixed version results.

Since your method can perform unbiased estimation of the center of a circle, can you help write code to recognize the position of the center of a circle in an image if the camera parameters are known? I want to extend your method to stereo camera calibration.

chaehyeonsong commented 4 months ago

@zhangzscn If you turn on "save_pose" option in main.cpp, you can get the extrinsic value of each target. I refer to OpenCV live show. In this Webinar, I describe the details of code. Furthermore, I plan to extend this code to extrinsic calibration. Within one month, the extrinsic calibration pipeline will be released

zhangzscn commented 4 months ago

Thank you very much. This is a very good paper. Looking forward to the next release.

zhangzscn commented 3 months ago

any news abort the extrinsic calibration pipeline?@chaehyeonsong

chaehyeonsong commented 3 months ago

@zhangzscn We already developed but it is not well organized yet. I will make a branch for you until next week if you want. It may not be perfect, hence, give me comments :)

zhangzscn commented 3 months ago

Yes,we need it. Thank you very much. Please bring the example data

chaehyeonsong commented 2 months ago

@zhangzscn I uploaded the code. Please refer to the dev_stereo branch. The running process slightly differs from the main branch, so please read the readme files carefully :)

zhangzscn commented 2 months ago

Yes,I have test it.