Спасибо, с живой картинкой проблема стала гораздо понятнее.
Сразу бросилось в глаза, что картинка получена с видеокамеры и потому имеет интерлейс. От него лучше бы избавиться. В ФШ для этого есть специальный фильтр. Если его лень изучать и имплементировать, то придется работать на ужатых вдвое картинках. Но это даже неплохо, т.к. ускорит алгоритм.
Вот что я делал с картинкой. В Фотошопе на оригинальной картинке (после деинтерлейса) я запустил медианный фильтр с радиусом 3 (параметр метода, подбирается вручную), затем запустил Edge фильтр. Затем сделал инверсию (границы стали белыми) и с помощью curves отсек все пикселы темнее 0.6 (еще один параметр, тоже ручной подбор). Все что получилось спас в grayscale файл. Эти процедуры, понятное дело, Вам придется запрограммировать, но дело это нехитрое.
Чтоб сократить поиск по всей картинке, я, во первых, уменьшил ее разрешение вдвое (важно делать это гладко, а не простым выкидывание строк или столбцов). Во вторых, сделал маску для сокращения поиска следующим способом. Сначала сосчитал суммы пикселей по строкам и столбцам. Потом оставил только строки (и, соотвественно, столбцы) в которых сумма была больше среднего взятого с некоторым коэффициентом (у меня получилось 0.3, это параметр метода, подбирать вручную). Таким образом удалось отсечь примерно половину картинки. Подозреваю что этот результат можно легко улучшить (оставляю место для Вашего творчества
)
Затем я заготовил образцы цифр от 0 до 9 – напечатал в фотошопе жирным шрифтом, примерно нужного размера, и построил их границы. Спас их все в отдельные файлы.
После всего этого по оставшимся пикселам я начал перебор и поиск наилучшей корреляции с образцами. Найденные цифры из картинки удалялись.
Оставшиеся длинные горизонтальные линии сильно коррелировали с семеркой. Поэтому мой совет с помощью преобразования Хафа (Hough) от них избавиться теперь мне кажется вполне оправданным. Цифры уверенно находились даже при одной только вариации масштаба. Не нашлась только цифра 4 – для нее всеж был нужен поворот.
Программа была на Python 2.4 с использованием PIL. Программирование заняло примерно два часа, включая рисование картинок и т.п. и т.д. Работала она не быстро даже на уменьшенной картинке, но все цифры кроме 4 нашла. К сожалению, False positives на семерку нашлись тоже в избытке, но по их поводу применяйте уже упомнятного Хафа.
Успехов.