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

Какой лучший набор операций предварительной обработки изображений применим к изображениям для распознавания текста в EmguCV?

Я включил два примера изображений здесь.

Применение фильтра низких или высоких частот не подходит, так как текст может быть любого размера. Я пробовал медианы и двусторонние фильтры, но они, похоже, не сильно влияют на изображение.

Идеальным результатом будет бинарное изображение со всем белым текстом, а большинство остальных - черным. Затем это изображение будет отправлено в механизм OCR.

Спасибо

Ответ 1

Нет ничего лучшего, как лучший набор. Имейте в виду, что цифровые изображения могут быть приобретены различными устройствами захвата, и каждое устройство может встроить собственную систему предварительной обработки (фильтры) и другие характеристики, которые могут радикально изменить изображение и даже добавить к ним шум. Таким образом, каждый случай должен обрабатываться (предварительно обработанный) по-разному.

Однако есть операции с сообщением, которые могут быть использованы для улучшения обнаружения, например, очень простой был бы преобразование изображения в оттенки серого и применение threshold для бинаризации изображения. Еще один метод, который я использовал ранее, - ограничивающий прямоугольник, который позволяет обнаружить область текста. Чтобы удалить шумы с изображений, вы можете быть заинтересованы в действиях по размыванию/расширению. Я демонстрирую некоторые из этих операций на этом сообщении.

Кроме того, есть другие интересные сообщения об OCR и OpenCV, которые вы должны посмотреть:

Теперь, чтобы показать вам простой подход, который можно использовать с вашим образцом, это результат инверсии цвета и применения порога:

FwJvI.png

cv::Mat new_img = cv::imread(argv[1]);
cv::bitwise_not(new_img, new_img);

double thres = 100;
double color = 255;
cv::threshold(new_img, new_img, thres, color, CV_THRESH_BINARY);

cv::imwrite("inv_thres.png", new_img);

Ответ 2

Попробуйте морфологическую обработку изображений. Посмотрите . Тем не менее, он работает только на двоичных изображениях - так что вам придется бинаризовать изображение (порог?). Хотя, это просто, это зависит от размера шрифта, поэтому один элемент структуры не будет работать для всех размеров шрифтов. Если вы хотите получить общее решение, существует ряд документов для обнаружения текста в изображениях. Поиск этого термина у google ученого должен предоставить вам некоторые полезные публикации.