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

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

Точки(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. на первой каптче, если узор на символах статичный, можно было обойтись простым подсчетом пикселей, на этих пятёрках четко видно, что узоры одинаковые

Добавить комментарий

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