小编Wil*_*ill的帖子

使用 OpenCV 进行低质量航空拼接

我最近一直在尝试在 OpenCV 中拼接由四轴飞行器拍摄的低质量、低分辨率 (320x180) 图像。这是我得到的:

http://postimg.org/gallery/1rqsycyk/

拍摄的照片几乎是最低点,并且您可以看到重叠很多。每个镜头之间都有一个平移,我试图将物体放在地面上,使场景几乎保持平面,以免干扰单应性的要求。无论如何,在拼接过程中没有考虑到很多图片。

这里再举一个例子,(只有三张图片拼接在一起):

http://postimg.org/gallery/1wpt3lmo/

我正在使用 Surf Featuredetector 并认为图像的低质量不适合它,但我不确定。

这是我使用的代码,我在一个类似的问题OpenCV 非旋转图像拼接中找到了它,并决定使用它,因为它比我的工作得更好:

    Mat pano;
    Stitcher stitcher = Stitcher::createDefault(false);

    stitcher.setWarper(new PlaneWarper());
    stitcher.setFeaturesFinder(new detail::SurfFeaturesFinder(1000,3,4,3,4));
    stitcher.setRegistrationResol(0.1);
    stitcher.setSeamEstimationResol(0.1);
    stitcher.setCompositingResol(1);
    stitcher.setPanoConfidenceThresh(1);
    stitcher.setWaveCorrection(true);
    stitcher.setWaveCorrectKind(detail::WAVE_CORRECT_HORIZ);
    stitcher.setFeaturesMatcher(new detail::BestOf2NearestMatcher(false,0.3));
    stitcher.setBundleAdjuster(new detail::BundleAdjusterRay());
    Stitcher::Status status = Stitcher::ERR_NEED_MORE_IMGS;
    try{
        status = stitcher.stitch(picturesTaken, pano);
    }
    catch(cv::Exception e){}
Run Code Online (Sandbox Code Playgroud)

我的另一个猜测是手动进行拼接过程,而不是使用 Stitcher 类,但我不确定它是否会发生很大变化。所以问题是:尽管图像质量低,我怎样才能使拼接过程更加健壮?另外:定义 ROI 是否仅对性能或实际拼接的机会产生影响?

c++ opencv image-stitching opencv-stitching

5
推荐指数
1
解决办法
3395
查看次数

标签 统计

c++ ×1

image-stitching ×1

opencv ×1

opencv-stitching ×1