2台のカメラでキャプチャされた画像フレームを連続して処理し、2フレームごとに処理し、それを行うために我々は を持っている1.抽出されたサーフ機能。 2. Flann Matcherを使用して2つの画像の一致を確認します。 3.これらのマッチを使用してホモグラフィ行列を計算しました。 4.正しい画像にwarpPerspectiveを適用しました。 問題1: ゆがんだ画像3が動き回っているBF Matcherによって与えられたマッチを使用して作成されたホモグラフィマットを使用して画像をワーピングする際の問題
//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());
は、我々は2つの問題を抱えています。左右のカメラは固定されており、処理している画像(left、right)は毎回ほぼ同じです。我々は、歪んだ画像が適切に来ないので、試合とホモグラフィのマトリックスに問題があると思われます。 問題2: BF Matcherを使用して一致を取得しました。これらのマッチを使ってHomograpyマットを構築すると、私たちは奇妙な結果を得ていました。 Flannベースのマッチャーを使用した後の結果は比較的良好でした。