Устранение фонового шума изображения капчи путем репликации разделительного фильтра TesserCap

У меня есть изображение капчи, которое выглядит так:

Используя утилиту под названиемTesserCap от McAfee я мог бы применить «измельчение» фильтр к изображению. (Перед запуском я удостоверился, что на изображении было только два цвета, белый и черный.) Я был очень впечатлен результатами использования этого фильтра со значением 2 в текстовом поле. Он точно удалил большую часть шума, но сохранил основной текст, в результате чего:

Я хотел реализовать что-то подобное в одном из моих собственных сценариев, поэтому я попытался выяснить, какую библиотеку обработки изображений использует TesserCap. Я ничего не смог найти; оказывается, он использует свой собственный код для обработки изображения. Я тогда читаюэтот технический документ это объясняет, как именно работает программа. Это дало мне следующее описание того, что делает этот разделочный фильтр:

If the contiguous number of pixels for given grayscale values are less than the number provided in the numeric box, the chopping filter replaces these sequences with 0 (black) or 255 (white) as per user choice. The CAPTCHA is analyzed in both horizontal and vertical directions and corresponding changes are made.

Я не уверен, что понимаю, что он делает. Мой скрипт написан на Python, поэтому я попытался использовать PIL для манипулирования пикселями, подобными описанным в цитате. Это звучит довольно просто, но я потерпел неудачу, вероятно, потому что я действительно не знал, что именно делает фильтр:

(Это сделано из немного другой капчи, которая использует круговую схему.)

Я также попытался проверить, легко ли это сделать с помощью ImageMagick's convert.exe. Их опция -chop совершенно другая. Использование -median вместе с некоторыми командами -morphology помогло уменьшить шум, но появились неприятные точки и буквы стали сильно искаженными. Это было не так просто, как сделать разделочный фильтр с TesserCap.

Итак, мой вопрос заключается в следующем: как мне реализовать разделительный фильтр TesserCap в Python, будь то с помощью PIL или ImageMagick? Этот разделочный фильтр работает намного лучше, чем любая из альтернатив, которые я пробовал, но, похоже, я не могу его повторить. Я работал над этим часами и пока ничего не понял.

Ответы на вопрос(2)

Ваш ответ на вопрос