Emule/OpenCV를 사용하여 Kinect 카메라와 외부 카메라의 교정을 시도하고 있습니다. 나는 붙어있어 정말 도움이된다.기본 매트릭스를 통한 교정되지 않은 카메라의 교정
나는 기본 행렬 즉 에피 폴라 기하학을 통해 이것을 선택했다. 하지만 그 결과는 내가 예상 한대로 아닙니다. 결과 이미지는 검은 색이거나 아무런 의미가 없습니다. Mapx 및 Mapy 점은 일반적으로 모두 무한 또는 무한 또는 모두가 0.00이고 거의 정규 값을 갖지 않습니다. 이미지의 집합에서)
1) 찾기 이미지 포인트 이미지 지점의 두 개의 배열을 얻을 (한 모든 카메라 :
이 내가 정류을 시도하는 방법이다. 체스 판과 FindChessboardCorners 기능으로이 작업을 수행했습니다.
2) 기본 매트릭스 찾기
CvInvoke.cvFindFundamentalMat(points1Matrix, points2Matrix,
_fundamentalMatrix.Ptr, CV_FM.CV_FM_RANSAC,1.0, 0.99, IntPtr.Zero);
나는 이미지, 아니면 그냥 바로 잡기 위해 노력 두 이미지에서 전체 집합에서 수집 된 모든 지점을 통과합니까?
3) 찾기 호모 그래피 행렬
CvInvoke.cvStereoRectifyUncalibrated(points11Matrix, points21Matrix,
_fundamentalMatrix.Ptr, Size, h1.Ptr, h2.Ptr, threshold);
4) 가져 오기 MAPX 및 mapy
double scale = 0.02;
CvInvoke.cvInvert(_M1.Ptr, _iM.Ptr, SOLVE_METHOD.CV_LU);
CvInvoke.cvMul(_H1.Ptr, _M1.Ptr, _R1.Ptr,scale);
CvInvoke.cvMul(_iM.Ptr, _R1.Ptr, _R1.Ptr, scale);
CvInvoke.cvInvert(_M2.Ptr, _iM.Ptr, SOLVE_METHOD.CV_LU);
CvInvoke.cvMul(_H2.Ptr, _M2.Ptr, _R2.Ptr, scale);
CvInvoke.cvMul(_iM.Ptr, _R2.Ptr, _R2.Ptr, scale);
CvInvoke.cvInitUndistortRectifyMap(_M1.Ptr,_D1.Ptr, _R1.Ptr, _M1.Ptr,
mapxLeft.Ptr, mapyLeft.Ptr) ;
내가 보정 사용하지 않는 때문에 내가 ... 여기에 문제가있다 이미지, 카메라 매트릭스 및 왜곡 계수 란 무엇입니까? 근본적인 행렬 또는 호모 그래피 행렬에서 어떻게 구할 수 있습니까?
5) 다시 매핑
CvInvoke.cvRemap(src.Ptr, destRight.Ptr, mapxRight, mapyRight,
(int)INTER.CV_INTER_LINEAR, new MCvScalar(255));
그리고 이것은 좋은 결과를 반환하지 않습니다. 누군가 내가 뭘 잘못하고 있는지 말해 주시면 감사하겠습니다.
나는 25 쌍의 이미지 세트와 9x6 체스 보드 패턴을 가지고 있습니다.