Распознавание текста:Как сравнить изображения, отсортировать несоответствующие и сделать это быстро?
Вопрос
Мне удалось сохранить каждый символ в виде растрового изображения, и я ищу способ быстро определить, какой это символ.
Поэтому я собираюсь сохранить все возможные символы в массив 1 и 0 и сравнить их с массивом растрового изображения, которое я только что захватил.
Я мог бы выполнить простые проверки, например сравнить, сколько черных пикселей у меня получилось, сравнить размеры и так далее, Но все эти проверки идут медленно (просто предположение ..).
Итак, что я ищу, так это метод, который проходит через каждый пиксель снизу вверх, или случайным образом, который сравнивает массив с набором массивов и сортирует без соответствия, пока не останется только один массив.Но как я могу это реализовать?
Спасибо за вашу помощь.
Sven
Решение
В мире распознавания текста довольно редко вы сталкиваетесь с "идеальным соответствием" между targetresource и вашим исходным ресурсом сравнения.
На самом деле это огромная область науки, но вот хорошая диссертация на эту тему, которая должна дать вам некоторые базовые знания:http://www.discover.uottawa.ca /~qchen/my_papers/master_thesis.pdf
Обратите внимание, что подобные алгоритмы очень сложны с математической точки зрения и в настоящее время оптимизированы для стандартного процессора x86.
Если вы ищете идеальное соответствие (я имею в виду, действительно идеальное, вплоть до байта в байт) и вы хотите реализовать это быстро и просто, я бы предложил выполнить алгоритм "быстрого пропуска очевидных несоответствий" - что-то вроде:
1) Сравните размер массивов, если они разные, это не то, что вы ищете
2) Сравните хэш-значение каждого растрового изображения
3) Сравните каждый бит / байт один за другим, и как только вы увидите разницу, это не то, что вы ищете
4) Выиграйте, вы нашли совпадение :)
Это очень медленно, в зависимости от того, чего вы пытаетесь достичь, но легко реализовать, и это сработает.Это хорошо подходит для приложения, похожего на прототип.Как я уже сказал, распознавание текста (и все другие формы цифровой обработки сигналов) - это огромная область исследований, поэтому, к сожалению, вы не можете ожидать, что люди научат вас этому в кратком посте на форуме: (
Удачи
[РЕДАКТИРОВАТЬ] Глядя на комментарий в вашем OQ, я скажу, что переход к структуре данных хэш-таблицы / словаря был бы для вас самым быстрым.Это или бинарное дерево поиска..Оба очень зависят от вашего генератора хэш-ключей :)
[EDIT2 (xD)] "Это текст с псевдонимами, сгенерированный компьютером.Фон отличается, но текст всегда имеет один и тот же цвет ". Там содержится довольно важная информация: P Размер текста / растровых изображений также всегда одинаков?Я бы предложил либо реализовать свой собственный алгоритм хеширования, в котором вы отбрасываете предустановленные цвета фона, чтобы значение хеширования зависело только от цвета текста (и формы этого тоже ofc), либо просто переписать все пиксели фона в ваших целях, чтобы они были того же цвета, что и ваши исходные (или просто установить исходный фон таким же, как у ваших целей?Зависит опять же от того, с какими данными вы здесь боретесь - нужно больше информации :)).