2015-01-20 2 views
1

나는 kinect를 사용하여 스냅 샷을 통해 깊이 맵을 얻고이 스냅 샷의 2D 플롯을 작성하려고합니다. 목표는 방의 일종의지도를 만드는 것입니다. 사용 된 알고리즘은 다음과 같습니다.Microsoft Kinect, 2D 깊이 맵에서 2D로

% Matrice della figura 
z=snapshot; 

% Dati noti 

h=size(z,1); %480 

w=size(z,2); %640 

% M is a constant based on the field of view angle 
M1=1.12032; % Costante per le X 
M2=0.84024; % Costante per le Y 


for i=1:h <br> 
    for j=1:w 


x(i,j)=(j-(w/2))*(320/w)*M1*z(i,j); 

if x(i,j)==0 
    x(i,j)=NaN; 
end 


y(i,j)=(i-(h/2))*(240/h)*M2*z(i,j); 

if y(i,j)==0 
    y(i,j)=NaN; 
end 

end 
end 


Z=min(z); 

X=min(x); 


figure 
plot(Z,X) 

문제는이 알고리즘이 수행해야하는 일을하지 않는다는 것입니다. 누군가 나를 도울 수 있습니까?

+0

은 – Shai

답변

0

당신이

x = bsxfun(@times, linspace(-w/2, w/2, w), z*(320/w)*M1); 
x(x==0) = NaN; 
y = bsxfun(@times, linspace(-h/w, h/2, h).', z*(240/h)*M2); 
y(y==0) = NaN; 
+1

이 답변 주셔서 감사합니다보다 읽기 쉬운 형태로 코드를 포맷 해주십시오 중첩 루프를 놓을 수 있습니다. 나는 코드를 semplified하고 지금은 잘 작동합니다. – Stefano