Filter löschen
Filter löschen

Problem with XYZ points obtained

4 Ansichten (letzte 30 Tage)
Rod Hid
Rod Hid am 9 Mai 2019
Bearbeitet: Rod Hid am 12 Jun. 2019
Hello,
I'm trying to get the XYZ coordenates of the world using the CameraCalibrator app from 200 segmented images obtained from the capture of an object pointed with a laser line and positioned on a platform that rotates 1.8 degrees (by capture) to subsequently generate a 3d model.
To calculate the calibration matrix with the rotation of the object, I used the following lines of code:
%%
angleX = 0;
angleY = stp*(1.8); >> stp is number of step of the platform
angleZ = 0;
Rx = rotx(angleX); Ry = roty(angleY); Rz = rotz(angleZ);
Rb = Rx*Ry*Rz;
tx = 0; ty = 0; tz = 0;
tb = [tx ty tz];
MPb = [Rb zeros(3,1); tb 1];
Rt = [RotationMatrix; TranslationVector];
MC = Rt*IntrinsicMatrix;
P = MPb*MC;
P = P';
%%
after that, with the points (u, v) obtained from the segmented image, I calculate the XYZ points of the world using the following lines of code:
%%
% (u*P31 - P11)X + (u*P32 - P12)Y + (u*P33 - P13)Z + (u*P34 - P14) = 0
% (v*P31 - P21)X + (v*P32 - P22)Y + (v*P33 - P23)Z + (v*P34 - P24) = 0
for i = 1:length([u,v]) >> this is the cycle only for an image
A = [(u(i)*P(3,1) - P(1,1)) (u(i)*P(3,2) - P(1,2)) (u(i)*P(3,3) - P(1,3));
(v(i)*P(3,1) - P(2,1)) (v(i)*P(3,2) - P(2,2)) (v(i)*P(3,3) - P(2,3))];
b = [-(u(i)*P(3,4)) + P(1,4);
-(v(i)*P(3,4)) + P(2,4)];
x = pinv(A)*b;
XYZ(i,:) = x;
end
%%
When I plot the points obtained (plot_points_XYZ.png), it doesn't resemble the real shape of the object (Cap_cam1_step_01.png).
What am I doing wrong?
Thank you for your help
Rod Hid
P.S: Are the distortion values incorporated into the calculations of the intrinsic matrix, rotation matrix and translation vector delivered by the CameraCalibrator app?
  17 Kommentare
Rod Hid
Rod Hid am 17 Mai 2019
What is the relationship between focal length and scale?
darova
darova am 17 Mai 2019
I didn't know those are focal length. Just saw that image and tried to change fx, fy
ProjectionMatrix.jpg

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Rod Hid
Rod Hid am 22 Mai 2019
I made a new calibration of the camera because the pattern presented some problems.
Could you help me find the new values for fx and fy that you calculated earlier for a better proportion of the object?
P.S: Attached the rotation matrix, translation vector, intrinsic matrix and an improved code of the projection matrix of the camera.
  1 Kommentar
darova
darova am 23 Mai 2019
I dont' know how to calculate them. Just try different values

Melden Sie sich an, um zu kommentieren.


Rod Hid
Rod Hid am 12 Jun. 2019
Bearbeitet: Rod Hid am 12 Jun. 2019
Is it necessary to remove the distortion from the calibration pattern to calibrate the camera and the captured images to obtain the coordinates of the laser line?

Kategorien

Mehr zu MATLAB Support Package for USB Webcams finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by