我正在努力寻找能够检测手机图像中角落的好算法。有多种算法要做,我不确定哪种算法在内存和处理器有限的环境中表现更好。
具体来说,我试图在使用手机相机拍摄的照片中找到数独网格。我正在使用C#,找不到任何具有基本图像处理功能的库。我实施了一个Sobel滤波器来进行边缘检测,这就是我的立场。
要明确问题,是否有人建议使用特定算法或库?
答案 0 :(得分:2)
我不会说“角点检测”本身就是一个非常好的方法。退后一步,想一下sodoku网格的照片,你可以做很多假设来简化事情。
例如,sodoku网格看起来总是完全相同:
treating the image in the HSV colour space将允许您寻找高亮度区域(白色),RGB对于大多数图像处理技术来说都是一点点裤子。
thresholding the image应该降低噪音
Adjusting the image histogram首先也可能会给你更好的结果,因为它可能会使网格变白(虽然取决于图像)。
然后你所要做的就是找个方格。因为您知道网格在其中是常规的,所以您可以相应地划分像素并使用数字OCR对正方形进行OCR。
:d
答案 1 :(得分:2)
由于您正在寻找常规9x9网格,请考虑Hough transform。一种方法是首先运行边缘检测器,使用原始Hough变换找到所有直线,然后尝试找出它们中的哪一个形成网格。或许你可以想出一种聪明的方法来参数化整个网格。
答案 2 :(得分:1)
我发现OpenCV在处理图像时非常有用,我会把自己评为一个非常普通的程序员。
Here's an example(在C ++中,但你可以移植它)在OpenCV中进行角点检测。