algorithm - 您如何看待这种兴趣点检测算法?

标签 algorithm image-processing

我一直在尝试想出一个兴趣点检测算法,这就是我想出的:

您一次穿过 X 轴和 Y 轴 3n 个像素,创建 3n x 3n 的正方形。

对于3n x 3n正方形中间的n x n正方形(姑且称之为Z正方形),将R、G、B的值取平均后四舍五入到预设值来限制颜色的数量,即该正方形将被视为的颜色。

对周围的 8 个 n x n 方 block 也是如此。

之后,将方 block Z 的颜色与周围的方 block 进行比较,如果它与周围 8 个方 block 中的 x 匹配,其中 x <= 3 或 x => 5 则这是一个兴趣点(检测到角点) .

以此类推,直到覆盖所有图像。

n越大,图像扫描速度越快,检测精度越低,反之亦然。

据推测,这可以检测“字面角”,即您可以在图像上实际看到的角。

你觉得这个算法怎么样?有效率吗?它可以用于手持设备上的实时视频流(比如来自相机)吗?

最佳答案

很抱歉,我认为这不太可能很好。您的算法看起来有点像 Moravec's algorithm 的简化版本,它本身就是最简单的角点检测算法之一。您测试的硬编码限制有效地使您的边缘测试成为阶梯函数,这与求和平方差等方法不同。对于某些值,这几乎肯定会给您的检测功能带来不连续性(角落不匹配,而它们应该匹配)。

您也有与 Moravec 相同的问题,即如果边缘与所考虑的邻居的方向成一定角度,则不会检测到它。

开发算法很有趣,如果这不是业务关键型项目,那么一定要继续进行修补和试验(不要被我的评论拖延!)。但事实是,对于几乎所有实际问题,几乎肯定已经存在针对您要解决的任务的更好算法。真正的挑战是确定如何以最好的方式对问题建模,以便您可以使用专家设计的现有的、易于理解的方法来解决问题。

特别是,对边缘情况和最坏情况运行时的稳健识别和分析是一项棘手的工作;除非你是专业的算法学家,否则你可能会发现进展很困难。但我当然鼓励您通过尝试自己发现这一点。 nlucaroni提到了一些很好的问题,可用作您分析的起点。

关于algorithm - 您如何看待这种兴趣点检测算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1362984/

相关文章:

algorithm - 求解多源多汇流网络的最优方法

c++ - OpenCV Mat 数据成员访问

php - Sobel 过滤器上的这段代码有什么问题?

android - 在 Imageview 上同时合并两个 ColorMatrix 或应用两个或多个 ColorMatrix

python - 平均后图像全灰

php - 在数组中查找连续值并创建按其计数分组的数组

algorithm - 从一组元素中检索最接近的元素

algorithm - 如何从随机点识别椭圆/椭圆体? IN加权平均值?

python - 我可以找到相似的条目并将它们组合在一起吗?

c++ - 用于将 JPEG 图像转换为 TIFF 格式的 C、C++ 或 Objective-C 代码