【问题标题】:How to fill gaps between each segment of the 7-segment character如何填补 7 段字符的每个段之间的空白
【发布时间】:2016-04-19 12:27:37
【问题描述】:

我想使用 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()

【问题讨论】:

  • 填补空白后,display_ocr 将更适合您的任务。使用 OpenCV erode 的示例代码见this

标签: android ios image-processing ocr tesseract


【解决方案1】:

OpenCV 有一些形态学方法,可以用白色填充黑色像素之间的空隙(如THISTHIS)。注意形态打开方法,这应该是解决这个问题的主要方法,但如果没有帮助,不要害怕将它与扩张结合起来。我不确定您使用什么软件进行图像处理,如果确实有类似的方法,请尝试一下,否则我强烈建议您安装 OpenCV,它(当然是免费的)具有许多非常高速的图像处理操作.此外,您可以尝试使用阈值进行一些试验,并在它切掉多少角落和移除多少阴影之间找到平衡(结合形态学操作,这应该可以解决您的问题)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-13
    • 2022-11-16
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2017-04-20
    • 1970-01-01
    相关资源
    最近更新 更多