2012-01-15 6 views
3

좋아요. 아무것도 마우스 오른쪽 버튼이나 맨 오른쪽 가까이에 물건을 얻지 못하는 것처럼 보이지 않는 프로그래밍 4 일 후에 stackoverflow에 내 인생의 수수께끼를 게시하고 있습니다. 조금 극적인 것에 대해 유감스럽게 생각하지만 오늘은 비열한 프로그래머가되었습니다.OpenCV를 사용한 3D 재구성 C++ ... 근본적인 매트릭스가 너무 크다

어쨌든, 내 문제이다

는 RANSAC (N> 8)를 이용하여 기본 행렬을 얻었다.

넓은베이스 라인이지만 충분한 겹침이있는 두 개의 이미지가 있으므로 적절한 수의 SURF 키포인트 (~ 308)가 올바르게 일치합니다 (나는 그려줍니다).

이제 문제가 있습니다. 2D 점을 cv :: findFindamentalMat로 전달하지만 완전히 근거없는 결과를 얻습니다. 함수가 리턴

 FundMat=[2.05148e-13 3.72341 -2.03671e+10 
       1.6701e+26 -4.17712 4.59533e+29 
       3.32414e+18 2.8843 1.91069e-26] 

행렬의 큰 동적 범위를 회피, 하틀리 (유클리드 공간 아닌 투영 공간 정규화) 데이터 포인트를 정상화 제안 .... 심지어 결과가 있음을 수행 한 후 거의 동일합니다. (10^-9에서 10^9)

나는 FundMat가 단지 규모까지만 정확하지만 10^-9에서 10^+ 9의 차이가 너무 많다는 것을 알고 있습니다.

나는 여기에 다른 질문이라고하지만 난 단서를 얻을 수가 해달라고 : findfundamentalmatrix-doesnt-find-fundamental-matrix how-to-calculate-the-fundamental-matrix-for-stereo-vision

어떤 아이디어가 좋은 것입니다. 이것은 소프트웨어 파이프 라인의 나머지 부분에 대한 교정되지 않은 이미지를 고려할 때 매우 중요한 단계입니다.

n 코드가 도움이됩니다. (그게 들여 쓰기도 채색 .. 공간이 너무 적습니다.) https://sites.google.com/site/3drecon124/

답변

0

해결 된 ... 바보 같은 사람의 실수. double에서 float 로의 데이터 유형 변환이 있었고 메모리의 잘못된 위치에서 데이터를 가져 왔습니다. 이제는 매끄럽고 에피 폴라 (epipolar) 제약이 스케일까지 만족된다.