问题标签 [feature-descriptor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
299 浏览

opencv - 如何正确检查H矩阵的有效性

我正在使用 SIFT 算法进行图像匹配,并计算单应矩阵以了解对象和场景之间是否存在有效的对应关系。下面发布的方法“isValidHMatrix”是我如何检查 H 矩阵是否良好,正如在这个问题中发布的那样,我计算 H 矩阵中左上角 2x2 矩阵的行列式,如果行列式 >= 0 那么否则 H 矩阵不好是好的。

但是当我应用该概念来查找某些对象和场景之间的匹配时,我得到了以下发布的图像结果:

请让我知道如何正确检查 H 矩阵的有效性

结果

代码

图像1 img2 图像3 img4 图像5 img6 图像7

0 投票
1 回答
907 浏览

points - 查找两组二维点之间的对应关系

我有两组 2D 点(如下图所示)。我想在这些点之间找到一些高置信度的对应关系。

这些点是从 2 个不同角度的摄像机图像中提取的特征点。两个图像得到了相对较好的校正,但并不完美。但是,场景中的深度会导致失真/扭曲,点数可能不一样,可能存在异常值等。

左视图 右视图

一种方法是使用包含多个点的滑动窗口并尝试块匹配。但这可能有点慢。我觉得应该有一个相对直接的解决方案来解决这个问题。

例如,本文可能正在解决类似的问题。

0 投票
0 回答
178 浏览

opencv - 在 Visual Structure From Motion 中使用自己的描述符和特征

嗨,我正在使用程序 Visual Structure From Motion 来恢复 3d 位置的结构。但是,我已经计算了我的描述符和我的特征;所以我想在 Motion 的视觉结构中使用它们。我读过包含描述符信息的文件应该具有以下模式:

[标题][位置数据][描述符数据][EOF]

[标题] = int[5] = {名称、版本、npoint、5、128};名称 = ('S'+ ('I'<<8)+('F'<<16)+('T'<<24)); 版本 = ('V'+('4'<<8)+('.'<<16)+('0'<<24)); 或 ('V'+('5'<<8)+('.'<<16)+('0'<<24)) 如果包含颜色信息 npoint = 特征数。

[位置数据] 是一个 npoint x 5 浮点矩阵,每一行是 [x, y, color, scale,orientation]。通过将浮点数转换为 unsigned char[4] 来写入颜色 比例和方向仅用于可视化,因此您可以简单地为它们写入 0

  • 按重要性递减的顺序对特征进行排序,因为 VisualSFM 可能只使用这些特征的一部分。
  • VisualSFM 按降序对特征进行排序。

[描述符数据] 是一个 npoint x 128 无符号字符矩阵。请注意,特征描述符被归一化为 512。

[EOF] int eof_marker = (0xff+('E'<<8)+('O'<<16)+('F'<<24));

有人写了这个文件的具体例子吗?这个文件应该由我的应用程序自动生成。

0 投票
3 回答
999 浏览

algorithm - 寻找径向线段的最近邻

首先,不要被这个问题的样子吓到;)

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

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

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

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

作为一个例子,我向你展示了我为片段 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代码:

完整的论文可以在这里找到

0 投票
1 回答
224 浏览

image-processing - GLCM 和 LIRE 用于图像匹配的性能比较

我想创建一个图像匹配应用程序。当我搜索它时,我发现了两种好方法。

1) LIRE - Lucene Image Retrieval 可用于执行图像匹配,它实现了各种图像匹配算法,并索引特征描述符,稍后可用于与查询图像进行匹配。

2) GLCM - Gray Scale Co-occurance Matrix,其中灰度图像的特征以矩阵的形式存储,称为共生矩阵,当必须匹配图像时,则为给定图像的矩阵计算并匹配重要特征以计算相似度。

这两种方法似乎都具有可扩展性和快速性。但我无法决定哪个可能表现更好。因此,我正在寻找有关此问题或它们具有优势的情况的任何帮助。

0 投票
0 回答
211 浏览

opencv - 与 SURF-128 描述符比较的距离函数

我读到欧几里得距离对于高维数据并不是最优的,但是在这篇文章中写到应该使用欧几里得或曼哈顿距离。
但有什么更好的呢?任何基准测试,测试?
是否可以获得绝对阈值(我知道 knn 搜索中最近邻之间的比率约为 0.7)?

0 投票
2 回答
2283 浏览

opencv - Opencv Feature Matching 不能正确匹配不同尺寸的裁剪图像和从各种来源拍摄的图像?

我正在尝试匹配两个图像,一个是移动屏幕的屏幕截图,模板图像是任何应用程序图标。如果我匹配从相同图像裁剪的源和模板,它完全匹配。但是当我使用从不同移动屏幕裁剪的应用程序图标时,它是没有正确匹配。

对于图像匹配,我正在处理以下代码:

[从不同来源裁剪时的错误匹配][1]

上述结果是在匹配来自一个移动屏幕截图的源和来自不同屏幕截图的模板时获得的。

我正在使用opencv3.0

请帮助我是否对代码进行了更改,或者我必须使用模板匹配或其他一些技术。我不能使用 SUR 检测器,因为由于许可证冲突,我无法获得付费版本?

示例图像:

源图像

模板

0 投票
1 回答
1383 浏览

opencv - 用于行人检测训练的 HOG 描述符

我想知道为什么我的 HOG 描述符不能胜过人体的正确轮廓。我使用像这样的参数

当我绘制它们时,为什么我没有正确的轮廓作为本讨论中显示的一个示例。附上两张图。彩色图像是我的猪描述符,灰色是上面链接中的那个。

如上述讨论中的图像所示,我需要查看哪些事实才能获得正确的轮廓?

在此处输入图像描述 在此处输入图像描述

0 投票
0 回答
1274 浏览

opencv - 边缘直方图描述符

我正在使用 OpenCv Library 开发一个软件,我的软件基于一篇关于多光谱立体里程计的论文。在从图像中提取边缘之后,我必须为每个提取的特征计算边缘直方图描述符。从论文中:

“描述符的空间分量如下获得:

• 从边缘图中选择一个以感兴趣的关键点为中心的 P × P 像素区域。

• 将区域划分为 16 (4 × 4) 个子区域。

• 计算每个子区域的局部边缘直方图,其中五个箱用于对边缘进行分类:水平、垂直、45° 对角线、135° 对角线和各向同性(无方向)。

然后对由 80 个 bin (4 × 4 × 5) 形成的直方图向量进行归一化。"

我的问题是:如果关键点在 edgeMap 的边界上,那么我的窗口(PxP)对于每个 P>=3 都超出范围。一些论文建议使用 P=100。如果关键点靠近边界,也会出现同样的问题。

我应该如何进行?

0 投票
1 回答
513 浏览

java - 如何从opencv for java中的位创建一个垫子?

有人可以解释如何使用位串中的值创建二进制垫吗?

例如,我想从位串和 创建我的垫子1111000001010101所以我有一个 2 行和 1 列的垫子对象。

为此我初始化垫对象Mat mat = new Mat(2,1,CvType.CV_8UC1);

我可以将这些字符串转换为字节数组并使用mat.put(0,0,bytearray)还是我必须考虑其他一些东西?

稍后我想使用这种方法来创建我自己的binary descriptor,可以与其他描述符进行比较,由ÒRB. 和norm(descA,descB,NORM_HAMMING)

感谢你并致以真诚的问候