Jump to content
Compvision.ru
VironZizu

Распознавание текста паспорта, OpenCV!

Recommended Posts

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

Share this post


Link to post
Share on other sites

По игрался с инверсиями и все получилось, спасибо!)

Получилось убрать мелкие шум с изображения, я доволен)осталось научиться как то аккуратней его удалять, а то бывает что с мелким шумом и части букв удаляешь))

Непонимаю, при выполнении собственно копирования с маской появляется такой дибильный эффект с верху! Из за чего это может быть? Причем на разных изображениях одна хрень)) эти полоски)

Cv.Copy(src, dstMask, Mask);

Share this post


Link to post
Share on other sites

Такой эффект бывает когда используешь не инициализированную матрицу. Она заполнена всяким мусором, если не указать явно что она нулевая или явно не присвоить всем элементам какое-нибудь значение.

Share this post


Link to post
Share on other sites

Спасибо большое за наводку! а то год бы разбирался!))

 

Продолжаю шлифовать свой алгоритм удаления шумов, уже неплохо, но удаляются периодически и нужные запчасти. Появилась одна идейка, вот хочу узнать, возможно ли реализовать! Вот у меня есть контур, мы смотрим цвет внутри этого контура, если он похож на цвет внутри другого контура, то оставляем, если не похож, то удаляем. Больше всего кончено смущает момент "если похож")) может у вас есть какие-нибудь мысли по этому поводу))

Share this post


Link to post
Share on other sites

Можно сравнивать усредненный по всем пикселям цвет контура. 

 

Тут есть два подхода:

1) Задать эталон и порог расстояния вручную, и сравнивать с ним.

2) Провести кластеризацию средних цветов контуров.

    Но тут нужно знать на сколько кластеров будем разбивать.

    И опять задать какой контур оставляем, эталон цвета,

    или определять по количеству (или геометрическим свойствам) контуров в кластере. 

 

Важно еще задать удобную метрику, можно конечно просто евклидово расстояние измерять в RGB пространстве, но есть и другие способы: http://en.wikipedia.org/wiki/Color_difference

 

 

Share this post


Link to post
Share on other sites

По пробовал сам разобраться, но не получилось. Случаем нету примера как узнать этот усредненный цвет внутри контура? Я так понимаю у одинаковых букв эти цвета должны будут примерно совпадать!? Это было бы здорово!

Share this post


Link to post
Share on other sites
Smorodov

Приветствую!) Появилось снова время немного заняться проектом, решил усовершенствовать механизм обнаружения паспорта, все таки сделать через Хью лайнс.

 

Подскажите пожалуйста, вот у меня получился скоп линий, как мне из них построить прямоугольник? Нужна математическая магия судя по всему))

Share this post


Link to post
Share on other sites

Эту тему смотрели?

 

А вообще, поиск прямоугольников имеется и в стандартных примерах.

Share this post


Link to post
Share on other sites

Смотрел, ничего полезного для себя не нашел. Примеры для нахождения прямоугольников не отрабатывают для моего случая, так как после бинаризации, когда начинаю искать контуры как там предлагается, он далеко не всегда нужный квадрат находит, так как сканы иногда засвечивают изображения, особенно если документ положить ближе к краю. По моему мнению правильней было бы реализовать через Хью лайнс, он отрабатывает неплохо, но куча лишних линий естественно получается, из них всех нужно как то по пробовать построить прямоугольные области, вот ломаю голову, как!? Если бы находил конкретно 4 линии, было бы все намного проще.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Моя версия распознавание российского паспорта. При распознавании букв использовал Tesseract

 

  • Thanks 1

Share this post


Link to post
Share on other sites
13 часа назад, Король сказал:

Моя версия распознавание российского паспорта. При распознавании букв использовал Tesseract

А первая картинка это что?

Share this post


Link to post
Share on other sites

Делю изображение по 40 пикселей (это не важно по сколько, зеленого цвета вертикальные линии). Преобразую функцией Собеля изображение. Затем высчитываю разность соседних пикселей по горизонтали. Сглаживаю кривую (красный цвет). Затем высчитываю Максимумы (точки желтого цвета). Затем ищу, чтобы в линии было по 2 и более столбцов (считаю что это текст). Затем поиск минимумов этих максимумов (Блоки с текстом предполагаю - 2 изображение на видео). Как-то так! 

 

1.jpg

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

×