OpenCV修复扫描文档缺失(白色像素)扫描线

时间:2017-10-27 01:08:00

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

我有大约500页的PNG代表20世纪80年代早期DIGITAL DECsystem-20 KL10PV主机(公开发布)的原理图。扫描过程存在缺陷,因为随机散布在PNG中的是白线,代表图中系统的“盐”。这干扰了我用来恢复原理图的过程 - 包括OCR和组件和互连网表的恢复。

A zoomed in part of a schematic page

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

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

1 个答案:

答案 0 :(得分:1)

你是说这个意思吗?

enter image description here

这种特殊方法使用模糊和形态学来处理图像。我借用了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的真正含义。这种建议的方式可能会让你走上正确的道路。