【问题标题】:OpenCV repairs to scanned document missing (white pixels) scan linesOpenCV 修复扫描文档丢失(白色像素)扫描线
【发布时间】:2018-04-08 12:38:40
【问题描述】:

我有大约 500 页的 PNG,代表 1980 年代早期 DIGITAL DECsystem-20 KL10PV 大型机的示意图(可公开获得)。扫描过程存在缺陷,因为随机散布在 PNG 中的是代表绘图中系统“盐”的白线。这干扰了我用来恢复原理图的过程 - OCR 以及组件和互连网表的恢复。

一个完整的原理图页面,在一个示例区域周围带有红色标记,显示我正在谈论的问题是here。

我可以使用什么神奇的 OpenCV 机制来检测这些白色条带并通过复制上面一行和下面一行的平均值或类似方法来“治愈​​”它们?一旦找到系统地识别这些缺陷的机制,我希望尝试几种“修复”技术以找到最好的技术。

【问题讨论】:

    标签: c++ opencv image-processing data-recovery image-morphology


    【解决方案1】:

    你的意思是这样吗?

    这种特殊方法使用模糊和形态来处理图像。我借用here的代码

        int morph_elem = 1;
        int morph_size = 1;
        int morph_operator = 0;
    
        Mat origImage = mat;
        medianBlur(origImage, origImage,1);
        cvtColor(origImage, origImage, COLOR_RGB2GRAY);
        threshold(origImage, origImage, 0, 255, THRESH_OTSU);
    
        Mat element = getStructuringElement(morph_elem, Size(2 * morph_size + 1, 2 * morph_size + 1), cv::Point(morph_size, morph_size));
    
        morphologyEx(origImage, origImage, MORPH_OPEN, element);
        //thin(origImage, true, true, true);
        imshow("@", origImage);
    

    恐怕我真的没有热情写出许多不同的方式,这不是 Stack Overflow 的真正目的。不过,这种建议的方式可能会让您走上正确的道路。

    【讨论】:

    • 是的,这正是我正在寻找的结果。谢谢指点。
    • 还有一点。如果这不是 Stack Overflow 的真正用途,那么它是为了什么?我问了一个算法问题并得到了一个指向答案的指针。这不就是人们每天在这里做的事情吗?
    • 问题是您的问题非常广泛,可以通过许多不同的解决方案来解决,即使我的回答也只能部分解决问题。 SO 的真正目标是“我有这个特定的问题,这是我尝试过的以及我遇到的错误,请帮我解决它。”例如,如果您要求获得更适合的形态代码的特定帮助。我建议阅读帮助指南,或者如果仍然不确定,请在 Meta.stackexchange.com 上询问
    • 感谢您的指导。以后我会尽量让我的问题更具体。
    猜你喜欢
    • 2011-01-15
    • 2018-11-14
    • 2020-05-18
    • 2015-02-24
    • 2014-11-17
    • 2011-09-22
    • 2018-04-01
    • 2016-03-16
    • 1970-01-01
    相关资源
    最近更新 更多