아래로 내 질문을 편집했습니다. Wxyz를 이미지 (u, v)로 투영하고 잘못된 결과를 얻고 있습니다. 나는 실수가 어디인지 알 수 없다. 알아낼 수 있도록 도와주세요.투영 행렬 기호 혼동 (편집 제목)
을 감안할 때 :
Wxyzz = 386.06 197.02 -1821.8 1 407.32 -108 -1859.1 1 4.9764 290.92 -1531.2 1 103.39 -233.07 -1643.2 1 189.7 320.19 -1667.9 1 76.279 147.9 -1597.2 1 47.798 -319.51 -1605.8 1 164.74 -223.1 -1688.6 1 482.06 -251.66 -1921.2 1 226.42 -213.27 -1733.6 1
Wxyz=Wxyz' %';
%# intrinsic
fu = 2640; fv =2640; uo= 1514; vo = 994;
A= [ fu 0 uo 0
0 fv vo 0
0 0 1 0
0 0 0 1];
Exterior=[-6.6861,12.6118,-8.0660,[-0.4467,-0.3168,0.2380]*pi/180];%# deg 2 rad
%#data
X0=Exterior(1);
Y0=Exterior(2);
Z0=Exterior(3);
ax=Exterior(4);
by=Exterior(5);
cz=Exterior(6);
%#Rotation in X
Rx = [1 0 0
0 cos(ax) -sin(ax)
0 sin(ax) cos(ax)];
%#Rotation in Y
Ry = [cos(by) 0 sin(by)
0 1 0
-sin(by) 0 cos(by)];
%#Rotation in Z
Rz = [cos(cz) -sin(cz) 0
sin(cz) cos(cz) 0
0 0 1];
R=Rx*Ry*Rz;
T=[X0;Y0;Z0];
Extrinsic= R';
Extrinsic(:,4) = -(R')* (T);
Extrinsic(4,:) = [0 0 0 1]
PImage = A* Extrinsic* Wxyz;
%#Obtain the X's
PImage(1 ,:) = PImage(1 ,:) ./ PImage(3 ,:);
%#Obtain the Y's
PImage(2 ,:) = PImage(2 ,:) ./ PImage(3 ,:);
내가 얻고
PImage = 955.93 707.43 -1814.4 1 939.75 1147.6 -1854.2 1 1506.3 490.36 -1521 1 1352.7 1370.2 -1637.6 1 1213.9 485.04 -1658.4 1 1389.7 749.08 -1588.5 1 1440.9 1521.6 -1600.6 1 1261.2 1344.2 -1683.2 1 857.22 1340 -1917.8 1 1173.9 1319.9 -1728.5 1
내가 사용하는 경우 (실제 2 D 점)
img = 2072.8 706.69 2088.9 1146.9 1522.6 489.6 1676.1 1369.5 1814.9 484.3 1639.2 748.35 1587.9 1520.9 1767.6 1343.5 2171.4 1339.3 1854.9 1319.2
얻을 가정 A = [ -fu 0 uo 0 0 fv vo 0 0 0 0 1]; 나는 corect 대답을 얻는다. 회전이나 번역에서 실수가 어디인지는 알 수 없습니다. 왜 Pimage (:, 1)가 img (:, 1)와 같지 않은지? 도움이 될 것입니다.
당신이 오류가 발생하지 않는의 호의를 배울 수 있습니다. 잘못된 결과를 얻고 있습니다. 4 칸 들여 쓰기로 코드를 포맷하고 질문을 편집하십시오. 오류가 발생하면 오류 메시지는 무엇입니까? – ja72
많은 사람들이 당신의 가난한 설명으로 혼란스러워합니다. A는 카메라 보정 행렬 (AKA 내장 함수)입니다. Wxyzz는 3 차원 균질 좌표입니다. 외관은 초기 자세 설정입니다. 아마도 여러분은 더 많은 설명을 통해 코드를 재구성 할 수 있으므로 이러한 것들을 추측 할 필요가 없습니다. – koan
첫 줄은'Wxyz = Wxyz '%';', 오타가 있습니까? 그것은 나에게 MATLAB처럼 보이지 않습니다. –