сопоставление символов в изображении в градациях серого - PullRequest
2 голосов
/ 08 апреля 2010

Я сделал узоры: изображения с буквой «А» разных размеров (от 12 до 72: 12, 14, .., 72) И я протестировал метод сопоставления с образцом, и он дал хорошие результаты. Один из способов выбора текстовых областей на изображении - запустить этот алгоритм для всех маленьких и больших букв и цифр разных размеров. И шрифты! Мне это не нравится Вместо этого я хочу сделать что-то вроде универсального шаблона или лучше сказать: сканировать изображение с различными размерами окна и выбрать те области, где некоторая функция (вероятность того, что в этом окне есть символ) больше некоторого фиксированного значения Знаете ли вы какие-либо методы или идеи, чтобы сделать эту функцию? Должен работать с исходным изображением (в оттенках серого).

1 Ответ

2 голосов
/ 23 сентября 2010

Полагаю, вы разрабатываете OCR, верно?

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

Подход к расположению букв, который вы описали, очень-очень-очень сложен в вычислениях. Вы должны отсканировать все изображение (image_size ^ 2), затем сопоставить с шаблоном (* pattern_size ^ 2), а затем сделать это для каждого паттена (* pattern_num). Это будет невероятно медленно.

Вместо этого попробуйте упростить свой алгоритм, разбив его на два этапа. Сначала следует найти некоторые элементы на изображении (например, связанные темные области или разбить изображение на большие квадраты и отбросить все светлые), а затем выполнить сопоставление с образцом на небольшом количестве найденных областей. Это все, по крайней мере, N ^ 2, и вы можете попытаться уменьшить сложность, чтобы сначала работать со строками или столбцами изображения (создавая гистограмму). Таким образом, существует множество различных методов упрощения, с которыми вы можете попробовать поиграть.

После того, как вы разместили эти объекты на картинке и собираетесь сопоставить их с рисунками, вы на самом деле знаете их размер, поэтому вам не нужно хранить букву А во всех размерах, вы можете просто изменить масштаб исходного изображения объекта до размера скажи 72 и сопоставь это.

Что касается шрифтов - у вас на самом деле нет большого выбора, вам нужно будет сопоставить все возможные формы A, чтобы убедиться, что вы нашли A. Но как только вы сопоставите только с одним размером A - у вас будет больше вычислений сила, чтобы попробовать разные А.

...