OpenCV исправляет отсканированные документы, отсутствующие (белые пиксели) линии сканирования

У меня есть около 500 страниц PNG, представляющих схему для мэйнфрейма DIGITAL DECsystem-20 KL10PV начала 1980-х годов (общедоступный). Процесс сканирования был ошибочным в том, что в PNG случайно вкраплены белые линии, которые представляют систематическую «соль» на чертеже. Это мешает процессу, который я использую для восстановления схемы — как для распознавания текста, так и для восстановления списка соединений компонентов и соединений.

Увеличенная часть страницы схемы

Страница полной схемы с красными отметками вокруг области примера, показывающая проблему, о которой я говорю, Вот.

Какой волшебный механизм OpenCV я могу использовать, чтобы обнаружить эти белые полосы и «исцелить» их, скопировав среднее значение ряда выше и ряда ниже, или подобного? Я ожидаю попробовать несколько методов «исцеления», чтобы найти лучший, когда найду механизм для систематического выявления этих недостатков.

2

Решение

Вы имеете в виду, как это?

введите описание изображения здесь

Этот конкретный метод использует размытие и морфологию для обработки изображения. Я позаимствовал код у Вот

    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);

Боюсь, у меня нет особого энтузиазма, чтобы написать много разных способов, это не совсем то, для чего нужно переполнение стека. Этот предложенный способ может привести вас на правильный путь.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]