2013-11-17 3 views
0

Kinect Fusion의 AlignPointCloud 기능에 데이터를 수동으로 공급하려고합니다. Kinect SDK Toolkit 1.8에는 Kinect Fusion을 사용하는 방법에 대한 예제가 있습니다. 샘플에 제공된 툴킷을 사용하여 퓨전을 사용하여 두 점 구름을 정렬하려고했습니다. 그러나 AlignPointCloud 메서드를 성공적으로 수렴 할 수없는 것처럼 보입니다.Kinect Fusion Toolkit에 포인트 클라우드 데이터 수동 공급

데이터를 FusionPointCloudImageFrame으로 복사하는 방법에 대한 오해가 있습니다.

내가 현재 (간단하게 두 개의면과 일치하는 사소한 사건을) 할 노력하고있어 실패

float[] arr1 = new float[80 * 60 * 6]; 
float[] arr2 = new float[80 * 60 * 6]; 
for (int y = 0; y < 60; y++) { 
    for (int x = 0; x < 80; x++) { 
    int ind = y * 80 + x; 

    arr1[ind] = x/.1f; // X coordinate 
    arr1[ind + 1] = y/.1f; // Y coordinate 
    arr1[ind + 2] = 1; // Z coordinate 
    // Normals 
    arr1[ind + 3] = 0; 
    arr1[ind + 4] = 0; 
    arr1[ind + 5] = 1; 

    arr2[ind] = x/.1f; // X coordinate 
    arr2[ind + 1] = y/.1f; // Y coordinate 
    arr2[ind + 2] = 2; // Z coordinate 
    // Normals 
    arr1[ind + 3] = 0; 
    arr1[ind + 4] = 0; 
    arr1[ind + 5] = 1; 
    } 
} 
FusionPointCloudImageFrame pcl1 = new FusionPointCloudImageFrame(80, 60); 
FusionPointCloudImageFrame pcl2 = new FusionPointCloudImageFrame(80, 60); 

pcl1.CopyPixelDataFrom(arr1); 
pcl2.CopyPixelDataFrom(arr2); 

Matrix4 m = Matrix4.Identity; 
bool success = FusionDepthProcessor.AlignPointClouds(pcl1, pcl2, 7, null, ref m); 
// Does not converge, m is identity regardless of what it was before 

내가 잘못하고, 또는 나는 무엇 수동으로 데이터를 공급하기 위해 변경해야 할 두 점 구름과 일치 하는가? 또한 누군가 폭과 높이를 갖는 점 구름의 중요성을 나에게 설명해 줄 수 있습니까? 각 점은 x, y 및 z 값을 가지며 순서대로 afaik가 될 필요가 없습니다. 따라서 너비 또는 높이를 제공해야하는 이유는 무엇입니까? .obj (파면) 파일에서 데이터를 읽는다면 너비와 높이를 어떻게 결정합니까?

감사합니다.

답변

0

이 예제는이 비행기를 "고칠"질감이 없으므로 수렴하지 못할 수 있습니다. 단지 미끄러 져서 똑같이 잘 맞을 수 있습니다. 덜 사소한 테스트 데이터를 사용해보십시오.

"포인트 클라우드"는 기본적으로 깊이 이미지이므로 Kinect 카메라에서 비롯된 프레임의 너비와 높이를 가질 수 있습니다.

메쉬에서 렌더링하는 경우 적절한 너비와 높이를 선택할 수 있습니다. 640x480.

0

이것이 여전히 도움이되는지는 모르겠지만 코드에 문제가있는 경우 x 좌표 만 저장하고 두 번째 배열에는 저장하지 않는 법선을 저장합니다. 필자는 kinect fusion의 이전 메쉬에서 저장 한 좌표를 파일에 저장 한 다음로드하여 실제 점 구름 프레임과 비교합니다. 그러나 그것은 나에게 사실을 알려주는 것처럼 보이므로 alignpointcloud가 두 점 구름 사이의 변형을 제한하는 데 사용되는지 또는 객체 인식에 사용될 수 있는지 여부를 알지 못합니다.