标签: feature-descriptor

SIFT描述符匹配的有效方法

有2个图像A和B.我从中提取关键点(a [i]和b [i]).
我想知道如何有效地确定[i]和b [j]之间的匹配?

我遇到的一个明显的方法是将A中的每个点与B中的每个点进行比较.但是对于大型图像数据库而言,它过于耗时.我怎样才能将a [i]与b [k]进行比较,其中k是小范围的?

我听说kd-tree可能是个不错的选择,不是吗?关于kd-tree有什么好的例子吗?

还有其他建议吗?

opencv match kdtree feature-descriptor

6
推荐指数
3
解决办法
6550
查看次数

SURF兴趣点参数

我想使用-p1命令将替代兴趣点作为SURF的输入(我使用作者实现:http://www.vision.ee.ethz.ch/~surf/download.html).但我不确定如何制作参数.

我需要x,y,a,b,c为每个兴趣点,并根据自述文件,a=cradius= 1/a^2([a,b;b,c]作为第二矩矩阵的条目)给出.但是当我查看surf的IP检测输出文件时,a,c参数总是非常小(例如0.003).如果radius=1/a^2,则会给出区域1/(0.003^2) > 100.000像素半径.我是否误解了README文件,或者a,c冲浪返回的参数是否错误?

image-processing computer-vision surf feature-descriptor

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

如何使用Mikolajczyk的特征检测器/描述符评估框架?

我正在尝试使用Mikolajczyk等人的事实上的标准框架来评估我的SURF描述符实现的正确性.al.我正在使用OpenCV来检测和描述SURF功能,并使用相同的功能位置作为我的描述符实现的输入.

为了评估描述符性能,框架需要首先评估检测器的可重复性.遗憾的是,重复性测试需要一系列特征位置以及定义每个特征周围图像区域的大小和方向的椭圆参数.但是,OpenCV的SURF探测器仅提供特征位置,比例和方向.

相关纸提出从第二时刻矩阵的特征值迭代地计算那些椭圆参数.这是唯一的方法吗?据我所知,这需要一些摆弄OpenCV.之后是否无法从特征列表和输入图像计算这些椭圆参数(例如在Matlab中)?

有没有人曾经使用过这个框架,可以帮助我提供一些见解或指示?

matlab computer-vision surf feature-detection feature-descriptor

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

寻找径向线段的最近邻

首先,不要被这个问题的外表吓到;)

我正在尝试在 matlab 中实现一个称为圆形模糊形状模型的形状描述符,其中一部分是获取每个径向线段的最近邻居列表,如图 1d 所示)

我在 MATLAB 中进行了直接而简单的实现,但我停留在算法的第 5 步和第 6 步,主要是因为我无法理解定义:

Xb{c,s} = {b1, ..., b{c*s}} as the sorted set of the elements in B* 
so that d(b*{c,s}, bi*) <= d(b*{c,s}, bj*), i<j
Run Code Online (Sandbox Code Playgroud)

对我来说,这听起来像是级联排序,首先按升序排序,然后按升序排序,但我找到的最近邻居不是根据论文。

圆形模糊形状模型描述算法

作为示例,我向您展示了我为段 b{4,1} 获得的最近邻居,这是图 1d 中标记为“EX”的那个)

我得到以下 b{4,1} 的最近邻居列表: b{3,2}, b{3,1}, b{3,8}, b{2,1}, b{2,8}

根据论文正确的是: b{4,2}, b{4,8}, b{3,2}, b{3,1}, b{3,8}

然而,我的点实际上是最接近由欧几里德距离测量的选定线段的集合!距离b{4,1} <=> b{2,1}小于b{4,1} <=> b{4,2}b{4,1} <=> b{4,8}...

在此处输入图片说明

这是我的(丑陋但直接的)MATLAB 代码:

width  = 734;
height = 734;

assert(width == height, 'Image …
Run Code Online (Sandbox Code Playgroud)

algorithm matlab geometry nearest-neighbor feature-descriptor

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

OpenCV的SiftDescriptorExtractor如何转换描述符值?

我对SiftDescriptorExtractor工作的最后一部分有疑问,

我正在做以下事情:

    SiftDescriptorExtractor extractor;
    Mat descriptors_object;
    extractor.compute( img_object, keypoints_object, descriptors_object );
Run Code Online (Sandbox Code Playgroud)

现在我想检查一下descriptors_object Mat对象的元素:

std::cout<< descriptors_object.row(1) << std::endl;
Run Code Online (Sandbox Code Playgroud)

输出看起来像:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 32, 15, 0, 0, 0, 0, 0, 0, 73, 33, 11, 0, 0, 0, 0, 0, 0, 5, 114, 1, 0, 0, 0, 0, 51, 154, 20, 0, 0, 0, 0, 0, 154, 154, 1, 2, 1, 0, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

c++ opencv sift feature-descriptor

4
推荐指数
1
解决办法
5821
查看次数

OpenCV - 将FLANN与ORB描述符一起使用以匹配要素

我正在使用OpenCV 3.2

我试图使用FLANN以比蛮力更快的方式匹配功能描述符.

// Ratio to the second neighbor to consider a good match.
#define RATIO    0.75

void matchFeatures(const cv::Mat &query, const cv::Mat &target,
                   std::vector<cv::DMatch> &goodMatches) {
    std::vector<std::vector<cv::DMatch>> matches;
    cv::Ptr<cv::FlannBasedMatcher> matcher = cv::FlannBasedMatcher::create();
    // Find 2 best matches for each descriptor to make later the second neighbor test.
    matcher->knnMatch(query, target, matches, 2);
    // Second neighbor ratio test.
    for (unsigned int i = 0; i < matches.size(); ++i) {
        if (matches[i][0].distance < matches[i][1].distance * RATIO)
            goodMatches.push_back(matches[i][0]);
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码使用SURF和SIFT描述符,但不使用ORB.

OpenCV Error: …
Run Code Online (Sandbox Code Playgroud)

c++ opencv orb flann feature-descriptor

4
推荐指数
2
解决办法
9989
查看次数

为什么我们使用SURF描述符?

我只是研究SURF并开始实施它,但我仍然不明白为什么我们使用descriptor它,我理解keypoints它的目的,但是当我们提取关键点而不是我们需要去的时候descriptors?什么是它们在承认中的重要性和作用?

我从纸上,通过论坛和网络阅读它,但我没有通过这些方程式得到它,我只是想用简单的语言来了解它,因为有人可能不善于理解方程式.

opencv image-processing computer-vision surf feature-descriptor

3
推荐指数
1
解决办法
312
查看次数

使用MSER作为有趣的关键点计算描述符大小

我正在研究应用于组织学图像的图像配准方法.

我有一个问题.我想使用MSER特征检测器来检测图像上的关键点.在使用opencv提供的MSER函数检索MSER轮廓之后,我计算每个轮廓的质心,以便将其用作有趣点.

如果我直接描述有趣的点,例如使用Surf描述符,描述符的大小就是1,并且不可能比较它们.

因此,有必要用合适的大小修改描述符的大小.

有没有人有想法?

谢谢

opencv point-of-interest mser keypoint feature-descriptor

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

计算两个描述符之间的距离

我正在尝试计算已计算的两个描述符之间的距离(欧几里德或汉明).问题是我不想使用匹配器,我只想计算两个描述符之间的距离.我正在使用OpenCV 2.4.9,并且我的遗留描述符存储在Mat类型中:

Mat descriptors1;
Mat descriptors2; 
Run Code Online (Sandbox Code Playgroud)

现在我只想计算描述符1的row1和描述符2的row1之间的距离(最好是因为我使用二进制描述符的汉明距离)(例如).

我试过使用bitwise_xor()函数,但后来我没有一个有效的方法来做bitcount.没有函数来计算两个阵列之间的汉明距离?

我注意到我对OpenCV很新,但我很感激任何帮助.谢谢

c++ opencv euclidean-distance hamming-distance feature-descriptor

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

比较大量图像的特征描述符

我有一组几千个图像,并且对于每个图像,我提取了一组SIFT特征描述符(当前绑定到每个图像200个).

我需要形成每个图像之间距离的完整图表.也就是说,我需要通过一些指标来计算每个图像到每个其他图像的距离.

到目前为止,我已经尝试使用FLANN来计算两个节点之间的20个最近的相邻描述符,然后计算每个匹配描述符之间的平均距离.不幸的是,这个过程耗时太长而无法执行.

有没有办法让我更有效地比较这些图像的描述符?

opencv image-processing computer-vision sift feature-descriptor

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

如何使用 Python 和 OpenCV 实现 KAZE 和 A-KAZE?

我正在尝试在航拍图像上实现KAZEA-KAZE使用PythonOpenCV进行特征检测和描述

代码是什么?

另外,特征匹配应该使用什么描述符?

python opencv feature-extraction feature-detection feature-descriptor

0
推荐指数
1
解决办法
1045
查看次数