공간

2014-04-28 8 views
0

기본적으로 내가보기의 장치 지점에서 고정 된 직선을 아무것도 도청 그것을하지만 내 예에 내가와 구성은 "레이저 라인"을 만들고 싶어하는지 확인하려면 시야의 꼭대기로부터의 거리에 관한 것입니다.공간

이제는 이렇게하면 특정 픽셀 지점에서 깊이 데이터를 쉽게 얻을 수 있습니다.

var depthInMM = DepthImagePixel.Depth; 

또한 간단히 말해서 이런 식으로하면 픽셀의 100 번째 줄에 초점을 맞추고 싶습니다.

for (int i = 0; i < this._DepthPixels.Length; ++i) //_DepthPixels.Length is obviously 307200 for 640x480 
{ 
    if (i >= 64000 && i <= 64640) //Hundredth vertical pixel line 
    { 
     //Draw line or whatever 
    } 
} 

결국 이런 식으로 끝납니다.

enter image description here

하지만 예를 들어 나는 3m 깊이에서 시야의 상단에서 50cm의 라인 절편을 할 수 있습니다. 이제 깊이가 깊어짐에 따라 영역이 표현되었지만 참조를 찾지 못하거나 자신이이 관계를 계산하는 방법을 찾는다는 것을 알았습니다.

따라서 Kinect 센서를 사용하여 주어진 깊이에서 표현 된 좌표 공간을 어떻게 계산할 수 있습니까? 어떤 도움을 진심으로 감사드립니다.

편집 : 그래서

내가 제대로이 C#으로 같은 구현 될 수 이해한다면

double d = 2; //2 meters depth 
double y = 100; //100 pixels from top 
double vres = 480; //480 pixels vertical resolution 
double vfov = 43; //43 degrees vertical field of view of Kinect 
double x = (2 * Math.Sin(Math.PI * vfov/360) * d * y)/vres; 
//x = 0.30541768893691434 
//x = 100 pixels down is 30.5 cm from top field of view at 2 meters depth 
+0

당신의 예제는 올바른 보이는 각도에서 카메라의 뷰의 수직 필드 같은 결과를 얻었다. –

답변

2
 2 sin(PI VFOV/360) D Y 
X = -------------------------- 
       VRES 

X : 이미지의 상단에서 라인의 거리 미터

D : 거리 - 이미지 평면에 직교 - 미터

Y의 카메라로부터 라인의 : 픽셀 이미지의 상단에서 라인의 거리

VRES : 픽셀

을에서 이미지의 수직 해상도 VFOV

:

+0

절대 전설! 정말 고맙습니다. 위의 내 이해를 확인할 수있는 기회? 수평 해상도와 수평 시야를 수직 해상도와 수직 시야를 대체하여 수평 거리를 계산할 수 있습니까? 마지막으로, 당신이 저에게 수학이 정확히 무엇인지에 대한 링크를 전달할 수 있습니다 (또는 정교하게 생각해보십시오). 다시 진심으로 도와 주시면 감사하겠습니다. –

+0

수평으로 동일하게 작동합니다. 그리고 그것은 단지 기본적인 삼각법입니다 (http://en.wikipedia.org/wiki/Trigonometry). –

+0

lol, 나는 그걸 많이 모았지만 특정 공식 (또는 trig의 하위 섹션)을 기반으로하고 싶었습니다. 당신이 모으는대로 나는 수학을 훌륭하게하고 개선하려고 노력합니다. 어느 쪽이든, 다시 한번 감사드립니다 ... –