Фильтр для точек и линий

Очень часто попадается капча с таким шумом как точки и линии, пора бы от них избавится.

Точки(CLEAR_INTERFERENCE). От точек избавится легко, первое как всегда приводим капчу в черно белый вид, ищем черный пиксель, и запоминаем его и всю цепочку  пикселей что прилегают к нему и к его прилагающим, далее считаем сколько пикселей собрали, если их примерно меньше 10(зависит от капчи), то  значит это шум из точек который можно закрасить.

Трещины — это разрыв между пикселями  из-за которого теряется целостность символа, в последствии его невозможно считать.

tr

Тут нам нужно эти трещины залепить, делаем так, преобразуем капчу в черно белую, перебираем пиксели, по вертикали и горизонтали, и закрашиваем пиксели которые находятся между двух черных, ну или можно увеличить расстояние, зависит от капчи

tr2

 

В итоге имеем функцию SEAL_MICROCRACKS которая порадует нас следующим результатом

obnova8

 

Линии(CLEAR_LINES). Логика удаления линий следующая, перебираем пиксели с верху в низ, пока не попадется черный пиксель, как нашли идем ниже и считаем сколько черных пикселей в высоту, если их мало, 2-3(зависит от капчи) значит это пересекающая линия и эти пиксели можно закрасить. Главное чтобы линии не были толще или такими же по толщине как и символы на капче, иначе такой вариант не прокатит.

А Теперь наглядный пример

[LOAD_CAPTCHA][https://www./modules/captcha/captcha.php?r=login]
[DISPLAY_IMG]
[COLOR_TRESHOLD][128]
[DISPLAY_IMG]
[CLEAR_LINES][2]
[CLEAR_INTERFERENCE][20]
[DISPLAY_IMG]
[SAVE_CAPTCHA]

 

clear_line

Проголосовать за статью

One thought on “Фильтр для точек и линий

  1. на первой каптче, если узор на символах статичный, можно было обойтись простым подсчетом пикселей, на этих пятёрках четко видно, что узоры одинаковые

Добавить комментарий для buxer Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *