Общие приёмы при скелетном анализе изображений на примере капч
Вот список действий (алгоритм) которые необходимо выполнить для скелетного анализа:
1) Удаление шума, контрастность, цвето-фильтры
Про это писал здесь.
Ещё: пример цветокорекции.
Тут надо сделать символы как можно более различимыми чтобы было удобнее с ними работать дальше.
2) Разлепливание символов.
Это самая сложная часть, но она всегда желательна.
Можно не разлеплять! Переходим к пункту 3. Но это понизит вероятность распознавания очень сильно. Вообще данный пример я писал под рекапчу.
Как же быть если символы одноцветные и налезают друг на друга? Как их разлепить?
Разлепить способов много. В нашем примере вот я провёл мысленные линии. Можно прогнать по вертикали — так узнаем сколько раз встречается черный цвет ( тут цвета всего 2: черный и белый). Если цвет 3 раза встречается (белый -черный -белый -черный -белый -черный) — то скорее всего налегает на другой символ или это буква S или 8 или 9 и тп.
4 раза меняет — стопудов налегает.
+ Размеры символов у нас почти одинаковые.
То есть вот уже видите оптимизировали. Если один раз (белый -черный -белый), то вероятно это составляющая буквы.
Прогонять можно также и по горизонтали — оптимизируйте везде — где только можно.
Главное помнить — не принимайте решения на расчёте одного пикселя. Делайте побальную систему.
Также буквы в капче можно растянуть или увеличить.
Смотрим какие максимальные размеры символа.
Если габариты различаются слишком сильно — нужно уменьшить большие до маленьких.
Старайтесь работать с символами одного размера — это увеличит вероятность на успех.
На последнем этапе у нас будут символы одного размера ( либо двух с заглавными).
3) Скелетный подбор по шаблону.
Ну тут все понятно, вращаем шаблон если надо стараемся попасть.
Тут нужно будет правильно подобрать процент совпадения скелетов.