фишка в том, что большинство фильтров для изображения работают именно с частями изображения от 3х3 до 64х64, и т.д... пикселя, важен сам факт, что фильтр охватывает лишь часть изображения. человеческий мозг же воспринимает изображение целиком. моя мысля - вначале уменишить изображение до 100х100 пикселей и делать анализ всего изображения. это позволит выделить объекты из общего вида. после этого можно делать анализ каждого объекта нормального размера.
едем далее: нужно создать карту по такому алгоритму. Берем точку, берем соседнюю, если один цвет (в рамках диапазона) то рисуем черную точку, если цвета отличаются - чем сильнее тем светлее точку рисуем. Получаем забавную штуку. Что на ней? я б глянул. может быть удобнее будет искать.
Человеческий мозг воспринимает тысячи нечетких накладывающихся друг на друга обрывков и формирует из них изображение. Приходилось в сумерках угадывать предмет по очертаниям: после угадывания он вдруг видится четко. Вот примерно то же самое можно сделать, проверяя совпадения контуров по паттернам.
Если брать изображения где создаётся шум как дофигищи серых точек кроме самого числа+числа могут быть наклонены под некоторым углом.Я думал про такой алгоритм. Числа могут быть от 0 до 9,остальные проверять не имеет смысла. 1)Если это 0,то можно провести линию ил 1 точки в другую,причем внутри пусто,а с другогго края -часть фигуры.Спасает даже если фигура перевернута.Несколько хорд то есть,через центр нуля.И все должны оказаться в другой части фигуры.С нулём разобрался. 2)6 и 9.По сути 6-это 0,только при прохождении одной из хорд -вверху тоже будет часть фигуры.8-это 2 склеенных нуля,вне зависимости от позиции. 3) 3-это если склеить со своей копией перевернутой-получится восьмерка.Или тоже как нибудб по хордам.Потому что 0 9 8 6 определяются однозначно как фигуры замкнутые.. 4)1-единица-такая фигура,хорда от которой(от 1 части в другую) не пересекает ничего как и 0,но разница что 1-фигура не замкнутая.По сути единица похожа на 0 в таком контексте. 5) 0 1 3 6 8 9 разобралось,осталось 2 5 4(похожа на 9) ,тоже как нить по замкнутости проверить и линии по проводить,что пересекут-та фигура и окажется. Регулярки при углу наклона и щумовой информации могут лагать.Точнее давать % от затемнения.Хорды или линии и прочие извращения как на примере с тройкой -мне кажется при сильном шуме более подходят
Есть такая штука, как характеристическая свертка по маске. Если бы собираетесь пробегать по изображению шаблонами, то информацию о сравнении нужно каким-то образом хранить. Сейчас не вспомню, как это делалось точно, но суть такая: 1. Сначала изображение разбивается на 3 цветовых канала, каждый канал обрабатывается отдельно. 2. В моём случае объект был залит внутри одним цветом, а снаружи - другим, задача была определить точность контура. На каждую из полученых ч/б картинок последовательно накладывается маска, в которой статистически определялась информирующая зона - чем дальше от границы раздела двух сред мы находимся, тем слабее информационная составляющая. Т.е. маска - это не изображение, а два ч/б изображения, одно выглядит как фигурка, а второе как подсвеченные контуры этой фигурки. Затем маска с фигуркой двигалась по исследуемому образцу (одному из каналов), и вычислялась разница в каждом пикселе. Получалась матрица с разницами по модулю, которая поэлементно перемножается на картинку с посдвеченными контурами. Затем из этой результирующей матрицы получали характеристическую свертку (т.е. одно число, которое показывает, на сколько вероятно, что в этом месте есть изображение как на маске). Как характеристическое число получали я сейчас не вспомню, увы. Но если его значение колеблется около середины, значит здесь нет ничего, а если оно близкое к 1 или 0, значит тут что-то есть. 3. Процедура 2 прогоняется по каждому каналу. Получается 3 характеристических матрицы для этой маски (это всё только для одного размера маски =)))). Потом эти матрицы преобразуют, чтобы увидеть, на сколько значения отличаются от 0,5, получаются матрицы со значениями от 0 до 0,5. Затем всё это добро объединялось в одну матрицу, где элементы усиливали друг друга при больших значениях (вроде ка по экспоненциальному закону?). Ищем элементы >1 к примеру. Вот и получаем точки, где у нас могут быть искомые фигурки. 4. Меняем размер маски и начинаем всё с начала. В моём случае было достоверно известно, где у фигурки низ, поэтому маски вращать было не нужно. Если нужно вращать, то смотрите нейронные сети - там быстрее алгоритмы, но очень сложно пройти этап обучения. Если так, то вам потребуются многослойные перцептроны. Думайте сразу над тем, как оптимизировать работу с памятью. А то до старости будете свои круги искать.
Выскажу и свой бред... Я так понял, что дуги ты уже нашел? Берем 3 точки (начало, конец и где то между) на дуге. Имеем треугольник. Находим центр и радиус окружности, в которую вписан треугольник. Далее находим точки этой окружности и сравниваем с найденной дугой. Если точки совпадают (с некоторой погрешностью), то значит нашли центр и радиус. Но это чисто так, языком поболтать... =))