Вобщем сразу к делу. Пишу прогу для автоматической регистрации доменов в зоне pp.ru и net.ru. Проблема только в распозновании капчи, а точнее.. Имеется капча следующего вида Для себя выстроил следующий алгоритм работы: 1. Перевожу изображения в черно белый цвет 2. Удаляю шумы 3. Выделяю символы по отделности 4. И далее идет распознование (Тут у мнея имеются готовые решения на основе нейросетей, главное в нормалный вид привести до этого пункта) С первыми двумя пунктами справился, получилось следующее.. Перепробовал кучу изображений шумы отлично убираются. С п.4 надеюсь больших проблем не должно быть. Вобщем не получаеться с п.3, выделить отдельно символы и развернуть на первоначальные позиции. Проблема вся втом что символы часто накладываются друг на друга с поворотом в разные стороны. Пожалуйста помогите советом ,что можно сделать.. Пишу на дельфях, но буду рад любому совету.
Когдато подобным пытался заниматься, но забил на это. А вообще идея была в том, чтобы взять алгоритм обхода препятствий (в исходниках для игр много их). И вот выбрать саму крайнюю левую точку. И в алгоритме обхода задать условие - прийти из неё в неё же. но делай обход по часовой стрелке и не проверяя первый шаг. Главное чтобы обход был тока в одну сторону движения. И получалась примерно такая работа: 1) черная точка - стена, её нужно обойти. 2) как столкнулся с черной точкой, так запомнил её координаты. 3) далее по гонять обход подобным методом. 4) когда ты встретил точку из которой начал движение, то у тебя уже будет иметься набор координат внешних точек, который составляют многоугольник. 5) берешь копируеш этот многоугольник себе - это будет готовая выдранная буква 6) по координатам этого многоугольника делаеш заливку белым цветом (цветом фона) и в конечном итоге ты удалешь с рисунка выделенную букву. 7) далее желательно в той области где ты удалил букву опять убрать шумы (могут случайно отстаться случайные точки) 8) Опять находишь крайнюю точку и повторяй действия. Хотя тут судя по виду набор букв одинаковый тут имеется. Так что сразу выбери образы всех букв. И далее поворотом картинки сверяй с образами. хотябы просто по кол-ву совпадающих точек Если так прокатит то относительно быстро будет распознаваться. Вот если посчитать, что 1) угол поворота достаточно будет 5 градусов. 2) всего 90 градусов (типа максимум 45 в одну сторону наклон и в другую стокаже) 3) нужно значит максимум 18 позиций проверить 4) в англ алфавите 26 букв, итого получается максимум сравнений 468 5) если учесть что на капче 6 символов, то 2808 сравнений. 6) если учесть что буква каждая буква максимум 30*30 то 900 точек сравнить надо 7) итого 2808 * 900 = 2527200 точек сравнить надо для распознавания. Если учесть что код будет иметь среднюю оптимизацию (чисто ток работа с памятью) то на обычных процах в однопотомном режиме выйдет 16-32 миллесек. И то это за счет того что поток будет прерываться по истечению процессорного времени.
Пасибо большое, с алгоритмом обхода препятствий т.е. оконтуривания в моем случаи посмотрю но опять же натыкаюсь на неприятность 1. Не все буквы получаються замкнуты(впринципи обойти это можно) 2. Самый неприятный гемор это наложение букв друг на друга, я показал более нормальный образец. Вот такие капчи выпадают порядка 1 из 10. перевожу в ЧБ изображения и убираю шумы и вот W и Y не получиться отделить оконтурив их, буква E тоже полхо замкнута. У меня родиласт новая идея, оцените её, плиз.. Что если взять из координат Чб изображения вырезать цветные буквы чтобы было без шумов. Я это к тому что в исходном изображении буквы отличаються по цветам и вырезать каждую букву по разности в цветах. Тогда необходимо решит еще одну задачку: 1.Необходимо определить наиболее часто встречающиеся 6 цветов и исходя из этих эталонов вырезать изображения. 2. А дальше разворот и распознание. надеюсь идея понятна, помогите сформулировать более точно, может че-нибудь еще подскажите или исправите.. Заранее ОГРОМНОЕ СПАИБО! Как даделаю обязательно выложу.
Если действительно интересно вот здесь форма для входа http://www.ripn.net:8080/nic/dns/form/ регни по нижней ссылки (на этой же странице) персону,а затем на нее службу тех. потдержки. После входа в панель сразу же увидишь страницу регистрации доменов и заветную капчу которая все портит... Может я и забил бы на капчу и вводил её вручную . Весь гемор в железном ограничении на количество доменов в час, помоему около пяти если не ошибаюсь .. Т.е пять челов могут регнуть домен, а остальные пролетают в течении часа конечно.. на PP.RU нет такого ожиотажа , а на NET.RU очень сложно попасть.