dicengine / dice

Digital Image Correlation Engine (DICe): a stereo DIC application that runs on Mac, Windows, and Linux
Other
347 stars 125 forks source link

Rigid body motion not seen as rigid? #256

Open Xyneef opened 2 years ago

Xyneef commented 2 years ago

Hello,

I am using your software, Last version (3.0 beta 6) to perform stereo DIC. I have encountered an issue while performing a rigid body motion test: it appears the rigid body motion isn't identified as rigid. I have a speckled specimen and I translated it 1 mm at a time, in the horizontal direction to the left.
In the analysis, I selected both a subset and a horizontal live plot line. Ideally, in the live plot, when I select MODEL_DISPLACEMENT_X I should see a horizontal line corresponding to the applied displacement, +/- some noise. As you can see in the image, the MODEL_DISPLACEMENT_X looks parabolic, with maximum displacement in the middle and minimum displacement at the edges, as if the left side was being compressed and the right side was being stretched. In fact, the software sees a slightly negative VSG_STRAIN_XX on the left, and a slightly positive VSG_STRAIN_XX on the right. Problem is, that this motion was rigid (simple translation) and the images were taken after the system had stopped moving.

I honestly do not know the reason why I am getting this mismatch. Any help would be greatly appreciated

Thanks in advance. LivePlotLine ModelDisplacementX StrainX

dicengine commented 2 years ago

There are two things that could be causing this that I can think of: lens distortions or your calibration is not accurate. What was the average epipolar error of your calibration? Also, did you calibrate a lens distortion model with your camera calibration?

Xyneef commented 2 years ago

Hello and thanks for the reply. The average epipolar error of this calibration is 1.008 pixel, and I had a RMS error (which I am assuming is the reprojection error) of 0.47 pixel. I haven't been able to go lower, this is the best calibration I managed to obtain so far. I used DICE's inbuilt stereo calibration applet (the one on the left of the GUI) to perform a full stereo calibration, so yes, I have the K1,K2 and K3 distortion parameters as well. I tried changing the calibration flags to compute the tangential parameters as well, I tried using MATLAB's Stereo Calibrator App and copying the parameters in an XML file, but I keep obtaining the same curved results.

dicengine commented 2 years ago

The average epipolar error is pretty high. How many images do you have in your calibration set and which pattern type did you use?

Xyneef commented 2 years ago

I have attempted this multiple times with between 15 and 20 images per camera, using a checkerboard type calibration target. And sometimes the single images give me huge errors.

dicengine commented 2 years ago

I have noticed that the checkerboard calibration isn't as good as using a dot pattern in the opencv tools that DICe uses to do the calibration. 15-20 images is probably okay, but if you could re-calibrate with a dot target you would probably have better results.

Xyneef commented 2 years ago

I have tried with the Dot target, but the size of that target is much smaller than my object and can't properly fill up the field of view. Do you happen to have a script that could help me generate the dot target with different sizes and number of dots? I haven't been able to find one in the documentation.

dicengine commented 2 years ago

Sorry, we don't have a script to generate the dot targets

Xyneef commented 2 years ago

I see. I will try my best to reduce the distortion and the epipolar error. Just as a baseline, what are the lowest values in both reprojection and epipolar error that you ever managed to obtain?

dicengine commented 2 years ago

I can usually get to less than 0.5px with the dot targets

Xyneef commented 2 years ago

I understand. I will try recalibrating with a different pattern and let you know. Thank you!

lixh1223 commented 2 years ago

DICE environment configuration tutorial:https://youtu.be/AXPfkSY3NrY