问题标签 [corner-detection]

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 投票
5 回答
18016 浏览

matlab - 查找由区域掩码表示的多边形的角

BW = poly2mask(x, y, m, n)从由向量 x 和 y 表示的 ROI 多边形计算二进制感兴趣区域 (ROI) 掩码 BW。BW 的大小是 m×n。

poly2mask将 BW 中位于多边形 (X,Y) 内的像素设置为 1,将多边形外的像素设置为 0。

问题: 给定这样一个凸四边形的二进制掩码BW,确定四个角的最有效方法是什么?

例如,

例子

迄今为止最好的解决方案: 使用edge找到边界线,霍夫变换在边缘图像中找到 4 条线,然后找到这 4 条线的交点,或者在边缘图像上使用角检测器。看起来很复杂,我不禁觉得那里有一个更简单的解决方案。

顺便说一句,convhull并不总是返回 4 个点(也许有人可以建议qhull防止这种情况的选项):它也沿边缘返回几个点。

编辑: Amro 的回答似乎非常优雅和高效。但是每个真正的角落可能有多个“角落”,因为峰不是唯一的。我可以基于θ对它们进行聚类并平均一个真实角落周围的“角落”,但主要问题是使用order(1:10).

10足以说明所有角落还是会排除真实角落的“角落” ?

0 投票
5 回答
36567 浏览

algorithm - 实现 Harris 角点检测器

我正在为教育目的实施哈里斯角检测器,但我被困在哈里斯响应部分。基本上,我正在做的是:

  1. 计算 x 和 y 方向的图像强度梯度
  2. (1) 的模糊输出
  3. 根据 (2) 的输出计算 Harris 响应
  4. 在 3x3 邻域和阈值输出中抑制 (3) 输出中的非最大值

1 和 2 似乎工作正常;但是,作为 Harris 响应,我得到的值非常小,并且没有任何点达到阈值。输入是标准的户外摄影。

对于示例图片,max 最终为 6.4163e-018,这似乎太低了。

0 投票
1 回答
14509 浏览

image-processing - RANSAC 算法

谁能告诉我如何使用 RANSAC 算法在两个具有一定重叠部分的图像中选择共同特征点?问题来自基于特征的图像拼接。
替代文字 替代文字

0 投票
2 回答
1607 浏览

detection - Harris & Stephens 角点检测算法:行列式始终为 0(零)

作为我的学士论文的一部分,我正在尝试使用 Harris 和 Stephens 算法实现角检测器: A combined Corner and Edge Detector

我计算:

  1. 使用 sobel 滤波器 (3x3) 的 x 和 y 偏差
  2. 计算系统矩阵 M

    M = [交流; CB]

    这意味着,如果我没问题:

    1. A = sobel_x 平方的响应:Ix * Ix(在特定像素处)
    2. B = sobel_y 平方的响应:Iy * Iy(在特定像素处)
    3. C = sobel_x 的响应乘以 sobel_y 的响应:Ix * Iy(在某个像素处)
  3. 现在我确实计算了 trace(M) 以及我特别关心的:行列式(M)

在那篇论文中,他们提出了行列式的以下近似值,因为它避免了对特征值进行昂贵的计算:

det(M) = A * B - C^2

必须始终以零结尾!

表达式 det(M) = A * B - C^2 可以重写为:(利用第 2 点的知识)

det(M) = A * B - C * C

det(M) = Ix*Ix * Iy*Iy - Ix*Iy * Ix*Iy

det(M) = Ix*Ix * Iy*Iy - Ix*Ix * Iy*Iy

det(M) = 0

那么我为什么还要费心计算行列式呢?据我所知,计算trace就足够了!(或者我在某个地方犯了一个重大错误?)

0 投票
1 回答
2114 浏览

algorithm - 从一组点中找到四边形的角点

我尝试从一组点中获取四边形的角点。

  • 这组点是有序的并描述了一个轮廓
  • 有时轮廓有一些噪音(见第二张图)
  • 搜索到的角点不必是给定点集之外的点(见左下角第三张图)
  • 搜索到的角点描述一个凸四边形,不一定是矩形

示例1 示例2 示例3

第二张图片有点极端,但我的一组点的“质量”介于第一张和第二张图片之间。

首先,我想从超过 1-360° 和长度制作直方图,以下两点描述。四个最高峰将描述每条线的长度。但是由于我失去了顺序点,只知道度数和长度或一条线,不知道一条线属于哪个位置。

然后我想合并以下两条线,如果它们或多或少具有相同的度数,但我不知道如何处理这里的噪音或预测角落。

有谁知道处理这个问题或类似问题的算法?

0 投票
1 回答
8189 浏览

opencv - 如何检测具有特定角度的角

我有一个等边三角形和一个矩形的图像:
等边三角形和矩形
我只想检测三角形的 3 个角。我遵循OpenCV Harris 角点检测器教程,我看到三角形的所有角点的阈值 = 80(当矩形阈值的所有 4 个角点 = 255 时)。但我没有找到阈值和程度之间的联系。

例如,如何找到在 [55,65] 度范围内的角?
这是输出垫http://pastebin.com/raw.php?i=qNidEAG0

P/s:我对CV很陌生,希望你能提供更多的细节!

0 投票
1 回答
5159 浏览

python-2.7 - 在 OpenCV for python 中找到用 CornerHarris 方法标记的角的坐标

我试图找到 HarrisCorner 方法在我的图像上标记的所有形状的坐标。

我已经设置好了,所以它标记了正确的角落并显示了正确的结果,但我不知道在说完之后在哪里可以找到坐标。我需要一个由该算法标记的所有角的列表,以便我可以找到它们的面积、重心、形状和大小。另外,我有每个形状中包含的所有像素的列表,因此我很容易将坐标与相应的形状相匹配。如果这是一个绿色问题,我很抱歉。我一直在阅读我能找到的所有内容。感谢 OpenCV 专业人士!

0 投票
1 回答
2093 浏览

c++ - 如何在 OpenCV 中找到菱形角并从中裁剪出一个较小的矩形?

我愿意从扭曲的图像中得到一个普通的矩形。

例如,一旦我有这种图像: 在此处输入图像描述

...我想裁剪与以下矩形相对应的区域: 在此处输入图像描述

...但是我的代码正在提取这个更大的框架: 在此处输入图像描述

我的代码如下所示:

关于如何找到菱形角并尝试将它们缩小为较小的矩形的任何想法?

0 投票
2 回答
8407 浏览

python - 使用 Python 在 OpenCV 中进行 Harris 角点检测和定位

我正在使用以下代码来尝试检测折线的角以“测量”线条。该代码基于我在 SO某处找到的片段,并且基于cv2.cornerHarris()

原始代码导致角落位置出现白点,并且水平似乎是“角落”的指标。由于某种原因,该片段(更新为使用 cv2)迭代生成的图像并扫描大于 10e-06 的值,我已将其替换为我认为应该是图像中的亮度的比较。

然而,在这些位置绘制的圆圈与标准化 harris 输出中发现的实际热点相去甚远。

我究竟做错了什么?

或者,可以将cv2.goodFeaturesToTrack()设置为使用 Harris (useHarrisDetector=True),但我尝试使用它不会导致cornerHarris 似乎可以正确检测到:

对 cv2.cornerHarris() 的等效函数调用是什么?

0 投票
1 回答
2800 浏览

c++ - Opencv如何在应用cv :: findContours和cv :: drawContour后检测矩形的4个角

我的问题是我想在使用 cvfindcontours 后找到矩形的 4 个角?这是我的结果:

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

如何找到每个矩形的 4 个角?我认为建筑功能 Cv 查找和绘制轮廓有他们的角落信息,那么我该如何阅读呢?