问题标签 [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.
opencv - 如何正确检查H矩阵的有效性
我正在使用 SIFT 算法进行图像匹配,并计算单应矩阵以了解对象和场景之间是否存在有效的对应关系。下面发布的方法“isValidHMatrix”是我如何检查 H 矩阵是否良好,正如在这个问题中发布的那样,我计算 H 矩阵中左上角 2x2 矩阵的行列式,如果行列式 >= 0 那么否则 H 矩阵不好是好的。
但是当我应用该概念来查找某些对象和场景之间的匹配时,我得到了以下发布的图像结果:
请让我知道如何正确检查 H 矩阵的有效性
结果:
代码:
points - 查找两组二维点之间的对应关系
我有两组 2D 点(如下图所示)。我想在这些点之间找到一些高置信度的对应关系。
这些点是从 2 个不同角度的摄像机图像中提取的特征点。两个图像得到了相对较好的校正,但并不完美。但是,场景中的深度会导致失真/扭曲,点数可能不一样,可能存在异常值等。
一种方法是使用包含多个点的滑动窗口并尝试块匹配。但这可能有点慢。我觉得应该有一个相对直接的解决方案来解决这个问题。
例如,本文可能正在解决类似的问题。
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));
有人写了这个文件的具体例子吗?这个文件应该由我的应用程序自动生成。
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代码:
完整的论文可以在这里找到
opencv - 与 SURF-128 描述符比较的距离函数
我读到欧几里得距离对于高维数据并不是最优的,但是在这篇文章中写到应该使用欧几里得或曼哈顿距离。
但有什么更好的呢?任何基准测试,测试?
是否可以获得绝对阈值(我知道 knn 搜索中最近邻之间的比率约为 0.7)?
opencv - 用于行人检测训练的 HOG 描述符
我想知道为什么我的 HOG 描述符不能胜过人体的正确轮廓。我使用像这样的参数
当我绘制它们时,为什么我没有正确的轮廓作为本讨论中显示的一个示例。附上两张图。彩色图像是我的猪描述符,灰色是上面链接中的那个。
如上述讨论中的图像所示,我需要查看哪些事实才能获得正确的轮廓?
opencv - 边缘直方图描述符
我正在使用 OpenCv Library 开发一个软件,我的软件基于一篇关于多光谱立体里程计的论文。在从图像中提取边缘之后,我必须为每个提取的特征计算边缘直方图描述符。从论文中:
“描述符的空间分量如下获得:
• 从边缘图中选择一个以感兴趣的关键点为中心的 P × P 像素区域。
• 将区域划分为 16 (4 × 4) 个子区域。
• 计算每个子区域的局部边缘直方图,其中五个箱用于对边缘进行分类:水平、垂直、45° 对角线、135° 对角线和各向同性(无方向)。
然后对由 80 个 bin (4 × 4 × 5) 形成的直方图向量进行归一化。"
我的问题是:如果关键点在 edgeMap 的边界上,那么我的窗口(PxP)对于每个 P>=3 都超出范围。一些论文建议使用 P=100。如果关键点靠近边界,也会出现同样的问题。
我应该如何进行?
java - 如何从opencv for java中的位创建一个垫子?
有人可以解释如何使用位串中的值创建二进制垫吗?
例如,我想从位串和 创建我的垫子11110000
,01010101
所以我有一个 2 行和 1 列的垫子对象。
为此我初始化垫对象Mat mat = new Mat(2,1,CvType.CV_8UC1);
我可以将这些字符串转换为字节数组并使用mat.put(0,0,bytearray)
还是我必须考虑其他一些东西?
稍后我想使用这种方法来创建我自己的binary descriptor
,可以与其他描述符进行比较,由ÒRB
. 和norm(descA,descB,NORM_HAMMING)
感谢你并致以真诚的问候