1

我正在研究手写数字识别问题,使用 OpenCV 进行预处理,使用 Keras/Tensorflow 进行推理。我在预处理中丢失某些功能时遇到问题,这些功能大致包括:

  1. 大津门槛
  2. 膨胀(使数字厚度与我用来预训练神经网络的另一个数据集相同)
  3. 使用 cv2.INTER_AREA 缩小到 28x28 像素(再次匹配预训练数据)

这是一个特征损失的例子:

在此处输入图像描述

这意味着是一个 2,顶部循环中的微小间隙对于帮助将其与 9 或 8 区分开来很重要。但是我的预处理版本失去了间隙,所以循环看起来是封闭的。

我已经问过一个类似的问题来保留漏洞并得到了很好的答案,尽管我认为我需要对其进行更多概括。

就像我自己的一个想法一样:也许有一种方法可以在膨胀操作中添加第二个更大的内核。该内核将具有与膨胀内核相同的形状,但只有轮廓(未填充)。然后,如果该轮廓触及原始图像中的任何白色像素,则取消该位置的膨胀动作。

注意:请随意发表评论,以更好的方式提出该标题(“连通性”是我能想到的全部)。

4

1 回答 1

0

骨架化第一个图像背景(参见https://medium.com/analytics-vidhya/skeletonization-in-python-using-opencv-b7fa16867331或者是否有任何内置函数可以在 openCV 中进行骨架化?)。在骨架和第二张图像之间使用逻辑运算。

于 2020-05-04T05:53:55.743 回答