如何从同一阵列的图像中提取2D阵列?

时间:2018-07-14 12:24:11

标签: arrays algorithm image-processing

是否可以从相同图像中提取2D矩阵?没有该领域的相关经验,我无法继续进行下去。

例如,如果数组的图像为this,则对应的2D数组(空白用0表示)将如下所示:

5 3 0 0 7 0 0 0 0
6 0 0 1 9 5 0 0 0
0 9 8 0 0 0 0 6 0
8 0 0 0 6 0 0 0 3
4 0 0 8 0 3 0 0 1
7 0 0 0 2 0 0 0 6
0 6 0 0 0 0 2 8 0
0 0 0 4 1 9 0 0 5
0 0 0 0 8 0 0 7 9

我想知道一些可以帮助我提取阵列的算法或软件。由于我没有经验,即使朝正确的方向前进也将不胜感激。

背景:我正在使用Java开发基本的Sudoku求解器,并且已经使用基本的回溯算法实现了同样的功能。现在,我不想通过键入2D数组来手动提供输入,而是希望从数组的图像中获得相同的输入。

1 个答案:

答案 0 :(得分:1)

图像识别并不像看起来那样简单。带有阴影或发光部分比其他部分明亮的低分辨率低质量图片很难处理。更不用说相机的3D角度和图像平面中的2D旋转了。在开始图像识别之前,应减少或消除所有这些因素。

假设您有一个已知宽度和高度的干净输入图像,则需要将输入图像切成与矩阵条目相对应的几个正方形。然后为每个小子图像运行一个数字识别算法。

对于第一部分,很多时候最好将图像从24位rgb颜色转换为8位灰度。这样,在rgb空间中具有几乎相同颜色的图像像素将被聚类为8位灰度空间中具有相同强度的图像。在这种情况下,即使只有两个强度的二进制图像也将是有用的。有一些图像处理程序包可以帮助您。然后将图像切碎不比2D阵列处理难。

对于第二部分,您可以丢弃所有强度与空白相同的正方形。对于非空平方,必须调用数字识别算法。

您可以使用许多软件包来进行模式识别,例如OpenCV或特定的OCR(光学字符识别)软件包。

为此编写自己的前馈神经网络并不难:

https://en.m.wikipedia.org/wiki/Feedforward_neural_network

另请参阅:

Recognize numbers in images