OpenCV3.0 RGB-D Odometry 평가 프로그램을 Viz를 사용하여 멋지게 표시한다. (Visual Studio 2013, C++, OpenCV3.0, 3차원 점군 처리)
5671 단어 C++VisualStudioOpenCV3D이미지 처리
OpenCV3.0 RGB-D Odometry 평가 프로그램
샘플 에는 친절하게 TUM의 RGB-D Dataset을 이용한 odometry 평가용 프로그램이 있다.
Viz를 사용하여 멋지게 표시
viz::Viz3d myWindow("Point Cloud");
/// Pose of the widget in camera frame
cv::Affine3d cloud_pose = cv::Affine3d().translate(cv::Vec3d(0.0f, 0.0f, 0.0f));
/// Pose of the widget in global frame
cv::Affine3d cloud_pose_global = cloud_pose;
cv::Affine3d cam_pose;
//10フレームごと変換して表示
Mat rot = Rts[count](Rect(0, 0, 3, 3)).t();
Mat tvec = Rts[count](Rect(3, 0, 1, 3)).t();
if (count % 10 == 0){
int downSamplingNum = 4; //e.g. 4
Mat image2(image.rows / downSamplingNum, image.cols / downSamplingNum, CV_8UC3);
resize(image, image2, image2.size(), 0, 0, INTER_LINEAR);
Mat pCloud(image.rows / downSamplingNum, image.cols / downSamplingNum, CV_64FC3);
for (int y = 0; y < 480; y += downSamplingNum){
for (int x = 0; x < 640; x += downSamplingNum){
if (depth.at<float>(y, x) < 8.0 && depth.at<float>(y, x) > 0.4){
//RGB-D Dataset
Mat pmat(1, 3, CV_64F);
pmat.at<double>(0, 2) = (double)depth.at<float>(y, x);
pmat.at<double>(0, 0) = (x - cx) * pmat.at<double>(0, 2) / fx;
pmat.at<double>(0, 1) = (y - cy) * pmat.at<double>(0, 2) / fy;
pmat = (pmat)*rot + tvec;
Point3d p(pmat);
pCloud.at<Point3d>(y / downSamplingNum, x / downSamplingNum) = p;
pmat.release();
}
else{
//RGB-D Dataset
pCloud.at<Vec3d>(y / downSamplingNum, x / downSamplingNum) = Vec3d(0.f, 0.f, 0.f);
}
}
}
viz::WCloud wcloud(pCloud, image2);
string myWCloudName = "CLOUD" + NumToString(count);
myWindow.showWidget(myWCloudName, wcloud, cloud_pose_global);
cam_pose = cv::Affine3d(rot.t(), tvec);
viz::WCameraPosition cpw(0.1); // Coordinate axes
viz::WCameraPosition cpw_frustum(cv::Matx33d(cameraMatrix), /*image,*/ 0.1, viz::Color::white()); // Camera frustum
string widgetPoseName = "CPW" + NumToString(count);
string widgetFrustumName = "CPW_FRUSTUM" + NumToString(count);
myWindow.showWidget(widgetPoseName, cpw, cam_pose);
myWindow.showWidget(widgetFrustumName, cpw_frustum, cam_pose);
myWindow.spinOnce(1, true);
실험 환경
실행 준비
TUM 데이터 세트 :RGB-D SLAM 평가용 데이터 세트. 궤적 평가에는 모션 캡처 시스템에 의해 얻은 고정밀 참값이 사용됩니다. ※evaluate_tools를 이용해 RGB와 Depth 프레임의 동기 associations.txt 파일의 생성이 필요.
ICL-NUIM 데이터 세트 : RGB-D SLAM 평가용 데이터 세트. 궤적뿐만 아니라 3차원 재구축의 평가도 할 수 있다. 데이터 세트는 POV-Ray 시뮬레이션에 의해 생성됩니다.
결과
다운 샘플링하지 않고 (downSamplingNum = 1) 표시했다. ICP에서 추정한 TUM 데이터 세트 fr1/xyz의 결과.
관련 기사
Reference
이 문제에 관하여(OpenCV3.0 RGB-D Odometry 평가 프로그램을 Viz를 사용하여 멋지게 표시한다. (Visual Studio 2013, C++, OpenCV3.0, 3차원 점군 처리)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/SatoshiGachiFujimoto/items/4c34ff21e0bd4f87c7d9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)