OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 3128|回复: 3

改进ORB(Improve ORB)

[复制链接]
发表于 2016-11-13 19:43:01 | 显示全部楼层 |阅读模式
有没有大神们搞改进ORB算法的,或者对已有ORB算法的改进的代码,求部分代码

附上opencv中的ORB算法:
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/legacy/legacy.hpp>
#include <iostream>
#include <vector>

using namespace cv;
using namespace std;
int main()
{
       
        Mat img_1 = imread("frame_0.png");
        Mat img_2 = imread("frame_1.png");
        if (!img_1.data || !img_2.data)
        {
                cout << "error reading images " << endl;
                return -1;
        }

        ORB orb;
        vector<KeyPoint> keyPoints_1, keyPoints_2;
        Mat descriptors_1, descriptors_2;

        orb(img_1, Mat(), keyPoints_1, descriptors_1);
        orb(img_2, Mat(), keyPoints_2, descriptors_2);

        BruteForceMatcher<HammingLUT> matcher;
        vector<DMatch> matches;
        matcher.match(descriptors_1, descriptors_2, matches);

        double max_dist = 0; double min_dist = 100;
        //-- Quick calculation of max and min distances between keypoints
        for (int i = 0; i < descriptors_1.rows; i++)
        {
                double dist = matches.distance;
                if (dist < min_dist) min_dist = dist;
                if (dist > max_dist) max_dist = dist;
        }
        printf("-- Max dist : %f \n", max_dist);
        printf("-- Min dist : %f \n", min_dist);
        //-- Draw only "good" matches (i.e. whose distance is less than 0.6*max_dist )
        //-- PS.- radiusMatch can also be used here.
        std::vector< DMatch > good_matches;
        for (int i = 0; i < descriptors_1.rows; i++)
        {
                if (matches.distance < 0.6*max_dist)
                {
                        good_matches.push_back(matches);
                }
        }

        Mat img_matches;
        drawMatches(img_1, keyPoints_1, img_2, keyPoints_2,
                good_matches, img_matches, Scalar::all(-1), Scalar::all(-1),
                vector<char>(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);
        imshow("Match", img_matches);
        cvWaitKey();
       
        return 0;
}

回复

使用道具 举报

发表于 2016-11-13 23:28:05 | 显示全部楼层
目前opencv提供的orb代码在哪里有问题了?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-21 11:43:15 | 显示全部楼层
jsxyheu2014 发表于 2016-11-13 23:28
目前opencv提供的orb代码在哪里有问题了?

问题倒是没有明显的问题,但是搞科研总归要改进算法呀
回复 支持 反对

使用道具 举报

发表于 2017-3-21 23:38:40 | 显示全部楼层
KAMA瑜 发表于 2017-3-21 11:43
问题倒是没有明显的问题,但是搞科研总归要改进算法呀

建议先理解OpenCV的代码。为了创新而创新可能无法创新。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-3-29 18:16 , Processed in 0.008640 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表