기본적으로 내가보기의 장치 지점에서 고정 된 직선을 아무것도 도청 그것을하지만 내 예에 내가와 구성은 "레이저 라인"을 만들고 싶어하는지 확인하려면 시야의 꼭대기로부터의 거리에 관한 것입니다.공간
이제는 이렇게하면 특정 픽셀 지점에서 깊이 데이터를 쉽게 얻을 수 있습니다.
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
}
}
결국 이런 식으로 끝납니다.
하지만 예를 들어 나는 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
당신의 예제는 올바른 보이는 각도에서 카메라의 뷰의 수직 필드 같은 결과를 얻었다. –