5

我正在尝试找到一个很好的算法来检测手机图像中的角落。有多种算法可以做到,我不确定哪一种在内存和处理器受限的环境中表现更好。

具体来说,我试图在使用手机相机拍摄的照片中找到数独网格。我正在使用 C#,找不到任何具有基本图像处理功能的库。我实现了一个 Sobel 滤波器来进行边缘检测,这就是我的立场。

为了清楚起见,问题是有人对使用特定算法或库有什么建议吗?

4

3 回答 3

2

我不会说“角落检测”本身就是一种很好的方法。退后一步,想想一张数独网格的照片,您可能可以做出很多假设来简化事情。

例如,数独网格总是看起来完全一样:

  • 白色方块
  • 9 x 9 常规网格

在 HSV 颜色空间中处理图像将允许您寻找高亮度区域(白色),RGB 对于大多数图像处理技术来说有点不足。

然后对图像进行阈值处理应该可以减少噪声

首先调整图像直方图也可能会给您带来更好的结果,因为它可能会使网格变白(尽管取决于图像)。

那么你所要做的就是找到一个正方形。因为您知道网格在其中是规则的,所以您可以相应地划分像素并对带有数字的正方形进行 OCR。

:D

于 2009-07-20T08:49:38.620 回答
2

由于您正在寻找常规的 9x9 网格,请考虑Hough 变换。一种方法是首先运行边缘检测器,使用原始霍夫变换找到所有直线,然后尝试找出它们中的哪一条形成了网格。或者,也许您可​​以想出一个巧妙的方法来参数化整个网格。

于 2009-07-27T04:21:33.403 回答
1

我发现OpenCV在处理图像方面非常有用,我认为自己是一个非常普通的程序员。

这是一个在 OpenCV 中进行角点检测的示例(在 C++ 中,但您可能可以移植它)。

于 2009-07-20T22:42:07.140 回答