我正在研究手写数字识别问题,使用 OpenCV 进行预处理,使用 Keras/Tensorflow 进行推理。我在预处理中丢失某些功能时遇到问题,这些功能大致包括:
- 大津门槛
- 膨胀(使数字厚度与我用来预训练神经网络的另一个数据集相同)
- 使用 cv2.INTER_AREA 缩小到 28x28 像素(再次匹配预训练数据)
这是一个特征损失的例子:
这意味着是一个 2,顶部循环中的微小间隙对于帮助将其与 9 或 8 区分开来很重要。但是我的预处理版本失去了间隙,所以循环看起来是封闭的。
我已经问过一个类似的问题来保留漏洞并得到了很好的答案,尽管我认为我需要对其进行更多概括。
就像我自己的一个想法一样:也许有一种方法可以在膨胀操作中添加第二个更大的内核。该内核将具有与膨胀内核相同的形状,但只有轮廓(未填充)。然后,如果该轮廓触及原始图像中的任何白色像素,则取消该位置的膨胀动作。
注意:请随意发表评论,以更好的方式提出该标题(“连通性”是我能想到的全部)。