我对@987654321@ 的调用并不十分熟悉。但是,由于您要从二进制颜色布局转换为较小的二进制颜色矩阵,您可以使用新比例细分原始图像,以便为生成的正方形正确着色。我举个例子吧。
假设您的初始图像是 14x10,并且您希望有一个 7x5 矩阵。您的初始图像如下所示:
[[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,1,0,0,0,0,0,0],
[0,0,0,0,0,0,1,1,1,0,0,0,0,0],
[0,0,0,0,0,1,1,0,1,1,0,0,0,0],
[0,0,0,0,1,1,1,1,1,1,1,0,0,0],
[0,0,0,1,1,1,1,1,1,1,1,1,0,0],
[0,0,1,1,0,0,0,0,0,0,0,1,1,0],
[0,1,1,0,0,0,0,0,0,0,0,0,1,1]]
您需要做的是 x 方向除以 7,y 方向除以 5。由于我选择了不错的数字,您将看到的大图像的切片将是 2x2。以左上角的 2x2 块为例:
[[0,0],
[0,0]] -> [0]
此迷你矩阵映射到 7x5 图像的单个像素。显然,在这种情况下它将为 0。让我们看看右下角:
[[1,0],
[1,1]] -> [1]
这将映射到 7x5 图像中的值 1。如您所见,此示例中的棘手情况是当您有相等的 1 和 0 时。幸运的是,这不会是一个大问题,因为您的初始图像始终至少为 100x100。
将此方法应用于我的示例,缩小的 7x5 图像如下所示:
[[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0],
[0,0,0,1,1,0,0],
[0,0,1,1,1,1,0],
[0,1,0,0,0,0,1]]
伪代码步骤:
求小矩阵的大小(除以 5 和 7)。这适用于 任何 尺寸大于 7x5 的图像。
对于每个小矩阵,计算黑色和白色空间(0 和 1)。
决定最终 7x5 矩阵中的空间是黑色还是白色。在我的例子中,我说如果(白色方块的数量> = 黑色方块的数量),最后的空间应该是黑色的。我担心使用它会给您带来问题,因为与 7x5 分区的大小相比,您的笔尺寸相对较薄。如果这是一个问题,请尝试类似 if (白色方块的数量 * 2 >= 黑色方块的数量)。这有效地增加了白色方块的权重。
我很高兴详细说明这个伪代码。请告诉我。
最后,如果您仍有问题,我可能会尝试使用大于 7x5 的尺寸。它会以您的 OCR 算法为代价为您提供更高的精度。祝你好运。