问题标签 [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.
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
足以说明所有角落还是会排除真实角落的“角落” ?
algorithm - 实现 Harris 角点检测器
我正在为教育目的实施哈里斯角检测器,但我被困在哈里斯响应部分。基本上,我正在做的是:
- 计算 x 和 y 方向的图像强度梯度
- (1) 的模糊输出
- 根据 (2) 的输出计算 Harris 响应
- 在 3x3 邻域和阈值输出中抑制 (3) 输出中的非最大值
1 和 2 似乎工作正常;但是,作为 Harris 响应,我得到的值非常小,并且没有任何点达到阈值。输入是标准的户外摄影。
对于示例图片,max 最终为 6.4163e-018,这似乎太低了。
image-processing - RANSAC 算法
谁能告诉我如何使用 RANSAC 算法在两个具有一定重叠部分的图像中选择共同特征点?问题来自基于特征的图像拼接。
detection - Harris & Stephens 角点检测算法:行列式始终为 0(零)
作为我的学士论文的一部分,我正在尝试使用 Harris 和 Stephens 算法实现角检测器: A combined Corner and Edge Detector
我计算:
- 使用 sobel 滤波器 (3x3) 的 x 和 y 偏差
计算系统矩阵 M
M = [交流; CB]
这意味着,如果我没问题:
- A = sobel_x 平方的响应:Ix * Ix(在特定像素处)
- B = sobel_y 平方的响应:Iy * Iy(在特定像素处)
- C = sobel_x 的响应乘以 sobel_y 的响应:Ix * Iy(在某个像素处)
现在我确实计算了 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就足够了!(或者我在某个地方犯了一个重大错误?)
algorithm - 从一组点中找到四边形的角点
我尝试从一组点中获取四边形的角点。
- 这组点是有序的并描述了一个轮廓
- 有时轮廓有一些噪音(见第二张图)
- 搜索到的角点不必是给定点集之外的点(见左下角第三张图)
- 搜索到的角点描述一个凸四边形,不一定是矩形
第二张图片有点极端,但我的一组点的“质量”介于第一张和第二张图片之间。
首先,我想从超过 1-360° 和长度制作直方图,以下两点描述。四个最高峰将描述每条线的长度。但是由于我失去了顺序点,只知道度数和长度或一条线,不知道一条线属于哪个位置。
然后我想合并以下两条线,如果它们或多或少具有相同的度数,但我不知道如何处理这里的噪音或预测角落。
有谁知道处理这个问题或类似问题的算法?
opencv - 如何检测具有特定角度的角
我有一个等边三角形和一个矩形的图像:
我只想检测三角形的 3 个角。我遵循OpenCV Harris 角点检测器教程,我看到三角形的所有角点的阈值 = 80(当矩形阈值的所有 4 个角点 = 255 时)。但我没有找到阈值和程度之间的联系。
例如,如何找到在 [55,65] 度范围内的角?
这是输出垫http://pastebin.com/raw.php?i=qNidEAG0
P/s:我对CV很陌生,希望你能提供更多的细节!
python-2.7 - 在 OpenCV for python 中找到用 CornerHarris 方法标记的角的坐标
我试图找到 HarrisCorner 方法在我的图像上标记的所有形状的坐标。
我已经设置好了,所以它标记了正确的角落并显示了正确的结果,但我不知道在说完之后在哪里可以找到坐标。我需要一个由该算法标记的所有角的列表,以便我可以找到它们的面积、重心、形状和大小。另外,我有每个形状中包含的所有像素的列表,因此我很容易将坐标与相应的形状相匹配。如果这是一个绿色问题,我很抱歉。我一直在阅读我能找到的所有内容。感谢 OpenCV 专业人士!
c++ - 如何在 OpenCV 中找到菱形角并从中裁剪出一个较小的矩形?
我愿意从扭曲的图像中得到一个普通的矩形。
例如,一旦我有这种图像:
...我想裁剪与以下矩形相对应的区域:
...但是我的代码正在提取这个更大的框架:
我的代码如下所示:
关于如何找到菱形角并尝试将它们缩小为较小的矩形的任何想法?
python - 使用 Python 在 OpenCV 中进行 Harris 角点检测和定位
我正在使用以下代码来尝试检测折线的角以“测量”线条。该代码基于我在 SO某处找到的片段,并且基于cv2.cornerHarris():
原始代码导致角落位置出现白点,并且水平似乎是“角落”的指标。由于某种原因,该片段(更新为使用 cv2)迭代生成的图像并扫描大于 10e-06 的值,我已将其替换为我认为应该是图像中的亮度的比较。
然而,在这些位置绘制的圆圈与标准化 harris 输出中发现的实际热点相去甚远。
我究竟做错了什么?
或者,可以将cv2.goodFeaturesToTrack()设置为使用 Harris (useHarrisDetector=True),但我尝试使用它不会导致cornerHarris 似乎可以正确检测到:
对 cv2.cornerHarris() 的等效函数调用是什么?