2011-05-10 3 views
3

아래로 내 질문을 편집했습니다. 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)와 같지 않은지? 도움이 될 것입니다.

+2

당신이 오류가 발생하지 않는의 호의를 배울 수 있습니다. 잘못된 결과를 얻고 있습니다. 4 칸 들여 쓰기로 코드를 포맷하고 질문을 편집하십시오. 오류가 발생하면 오류 메시지는 무엇입니까? – ja72

+0

많은 사람들이 당신의 가난한 설명으로 혼란스러워합니다. A는 카메라 보정 행렬 (AKA 내장 함수)입니다. Wxyzz는 3 차원 균질 좌표입니다. 외관은 초기 자세 설정입니다. 아마도 여러분은 더 많은 설명을 통해 코드를 재구성 할 수 있으므로 이러한 것들을 추측 할 필요가 없습니다. – koan

+0

첫 줄은'Wxyz = Wxyz '%';', 오타가 있습니까? 그것은 나에게 MATLAB처럼 보이지 않습니다. –

답변

1

로테이션을 완료 했으므로 변환 작업을 완료했습니다. 당신이해야 할 일은 프로젝션입니다! 이제는 정확히 무엇을 성취하려고하는지 모르지만 어디서나 프로젝션 매트릭스를 볼 수는 없습니다. 이것이 수정해야 할 첫 번째 사항입니다.

투영을하는 것은 R4 -> R4 조작임을 기억하십시오. R2 벡터를 얻으려면 다른 것을하려고합니다 (추가).

자세한 내용은 wikipedia을 참조하십시오. 당신이 정말로 세부 사항을 배우고 싶은 경우

, 당신은보고 YouTube

+0

@Rashman 제 질문은 agian을 (를) 볼 수 있습니까? – Shahgee

+0

@shahbaba 나는 당신의 가치가 무엇인지 이해하지 못합니다. 나는 너의 머리 속에있는 것을 과도하게 지나치는 시간을 짐작할 수 없다. 당신은 당신이하고자하는 일에 좀더 구체적이어야합니다. 나는 당신이 무엇보다 성취하고자하는 것을 이해할 필요가있다. 단지 'A'는 무엇이고,'fu'와'fv'는 무엇이며,'(u, v) '부분 공간? 'img' 및/또는 PImage 2-d 또는 4-d (비용, 더 많은 작업없이 하나에서 다른 것으로 점프 할 수 없기 때문에) – Rasman