如何填补7段字符每段之间的空白

How to fill gaps between each segment of the 7-segment character

我想使用 tesseract 库通过手机识别里程表中的数字。 源图片:

下一步:

现在我需要填补每个片段之间的空白。 你能帮我吗,我该怎么做? (英语训练数据对我来说比 https://github.com/arturaugusto/display_ocr 更好)

image processing: 

func prepareImage(sourceImage: UIImage) -> UIImage {
    let avgLuminanceThresholdFilter = GPUImageAverageLuminanceThresholdFilter()
    avgLuminanceThresholdFilter.thresholdMultiplier = 0.67

    let adaptiveThresholdFilter = GPUImageAdaptiveThresholdFilter()
    adaptiveThresholdFilter.blurRadiusInPixels = 0.67

    let unsharpMaskFilter = GPUImageUnsharpMaskFilter()
    unsharpMaskFilter.blurRadiusInPixels = 4.0

    let stillImageFilter = GPUImageAdaptiveThresholdFilter()
    stillImageFilter.blurRadiusInPixels = 1.0

    let contrastFilter = GPUImageContrastFilter()
    contrastFilter.contrast = 0.75

    let brightnessFilter = GPUImageBrightnessFilter()
    brightnessFilter.brightness = -0.25

    //unsharpen
    var processingImage = unsharpMaskFilter.imageByFilteringImage(sourceImage)

    processingImage = contrastFilter.imageByFilteringImage(processingImage)
    processingImage = brightnessFilter.imageByFilteringImage(processingImage)

    //convert to binary black/white pixels
    processingImage = avgLuminanceThresholdFilter.imageByFilteringImage(processingImage)

    return processingImage

  }

OCR:

let tesseract_eng = G8Tesseract()
    tesseract_eng.language = "eng"
    tesseract_eng.engineMode = .TesseractOnly
    tesseract_eng.pageSegmentationMode = .Auto
    tesseract_eng.maximumRecognitionTime = 60.0
    tesseract_eng.setVariableValue("0123456789", forKey: "tessedit_char_whitelist")
    tesseract_eng.image = prepareImage(image)
    tesseract_eng.recognize()

OpenCV 有一些形态学方法,白色填充黑色像素之间的间隙(如 THIS or THIS)。注意morphology opening method,这应该是解决这个问题的主要方法,但如果这没有帮助,不要害怕将它与dilating结合起来。我不知道你用什么软件做图像处理,如果有类似的方法,试试看,否则我强烈建议你安装OpenCV,它(当然是免费的)有很多图像处理操作,速度非常快.此外,您可以尝试对阈值进行一些试验,并找到它切掉多少角和去除多少阴影之间的平衡(结合形态学操作,这应该可以为您解决问题)。