2017-12-12 18 views
0

BF 매처에 의해 주어진 일치를 사용하여 구성. 그렇게하기 위해서 우리는 1. 추출 된 서핑 기능. 2. Flann Matcher를 사용하여 두 이미지 사이의 일치 항목을 찾습니다. 3.이 일치 항목을 사용하여 호모 그래피 행렬을 계산했습니다. 4. 올바른 이미지에 warpPerspective를 적용했습니다. 문제 1 : 워핑 된 이미지 3 주위에 이동문제 동안 우리는 완벽한보기를 얻기 위해 그들을 스티치 다음 두 개의 카메라로 촬영 한 사진 프레임, 과정마다 두 개의 프레임을 처리하고 continuosly 노력하고있다

//To get the surf keypoints and descriptors: 

cuda::SURD_CUDA surf(700); 
surf(leftImgGpu, cuda::GpuMat(), keyPointsGpuA, descriptorsAGpu); 
surf(rightImgGpu, cuda::GpuMat(), keyPointsGpuB, descriptorsBGpu); 
surf.downloadKeypoints(keypointsAGpu, keypoiintsA); 
surf.downloadKeypoints(keypointsBGpu, keypoiintsB); 

//Flann based matcher: 
FlannBasedMatcher matcher(new cv::flann::KDTreeIndexParams(4), new 
cv::flann::SearchParams()) 

//To get the homography matrix: 
vector<Point2f> imgPtsA, imgPtsB; 
for(int i=0;i<matches.size();i++){ 
    imgPtsB.push_back(keypointsB[matches[i].queryIdx].pt); 
    imgPtsA.push_back(keypointsA[matches[i].trainIdx].pt); 
} 
Mat H=findHomography(imgPtsA, imgPtsB, CV_RANSAC); 

//To a warp right image: 
warpPerspective(rightImg, warpRight, H, rightImg.size()); 

우리는 두 가지 문제가 있습니다. 좌우의 카메라가 고정 된 우리는 처리 된 이미지 (left, right)는 매회 거의 동일하다된다. 뒤틀린 이미지가 제대로 나오지 않아 일치 및 호모 그래피 매트릭스에 문제가 있다고 의심됩니다. 2 호 : BF Matcher를 사용하여 일치 항목을 얻었습니다. 이 성냥을 사용하여 Homograpy 매트를 만들었을 때, 우리는 이상한 결과를 얻고있었습니다. Flann 기반의 정규식을 사용한 결과는 비교적 좋았습니다.

답변

1

스티칭을 사용하여 적절한 "파노라마"이미지를 만들려면 카메라가 공간의 거의 동일한 위치에 있어야합니다. 그렇지 않으면 시차 오류가 발생합니다 (here 참조). 일반적으로 homography는 펜던트에 등록 된 이미지 내에서 단일 평면 만 왜곡 할 수 있습니다. 따라서, 그것은 가능할 수있다. 바닥을 단지 꿰매기 위해서입니다 (당연히 기능을위한 충분한 질감을 제공한다면). 호모 그래피는 이러한 변화를 모델링 할 수 없기 때문에

그래서, 당신은, 안정된 결과를 기대할 수 없다. 더 생생하게 : 의자의 앞면은 오른쪽 이미지에만 표시되므로이 영역을 왼쪽 이미지와 "일치"시킬 수는 없습니다.