Собственно,
первый макет. Про распознавание речи пока нет, речь есть о подготовке изображения для построения пространства признаков для дальнейшей удобной кластеризации.
В основу моего подхода и данного макета положена идея
движения.
Человеческое зрение не различает статических предметов. Этот факт проще всего проверить лёжа на диване и глядя на полутоновые тени от люстры на потолке. Если уставиться на любую точку потолка и не двигать глазами в течении секунд десяти - все тени (даже очень контрастные) исчезают - остаётся белый однородный потолок. Стоит чуть двинуть глазом как все тени сразу проявляются.
Поскольку любая перцепция служит только одной цели - координации тела, такое "решение" эволюции видится вполне логичным. Движущемуся телу нет надобности в тех предметах, которые статичны относительно него. Статика и координация - не совместимы.
Поскольку человеческому телу двигаться постоянно нет никакой нужды, у зрительной системы есть механизм для создания псевдо-движения - тремор. Он заключается в том, что глаз постоянно совершает микро-движения, для того чтобы образы предметов "скользили" по сетчатке.
Из всего сказанного я предположил, что распознавать динамические буквы, в частности, выделять в них полезные признаки, может быть легче и эффективнее, чем статические. Ведь в конце концов, движущаяся буква должна координировать движения того, кто на неё смотрит.
Как именно мозг в деталях "двигает буквы" я не знаю, поэтому выдвигаю гипотезы и ставлю эксперименты.
1. Первым предположением было сделать макет, в котором точкам буквы задаются связи между собой, которые скрепляют букву в целостность. После чего букву "ударяем об стену". По разлетевшимся частям буквы пробуем судить что это было.
2. Второй вариант. Выявляем минимально необходимый набор связей, который позволяет сохранить целостность буквы при соударении и делаем его эталоном. После чего пытаемся "натянуть" этот эталон связей на произвольную букву и "стукнуть об стену", если буква разлетелась - значит эта не та буква, по которой "шился" эталон. Так, перебирая все эталоны - находим нужный.
3. Задать для точек разные силы притяжения или отталкивания, чтобы она сама разлеталась без ударов об стену (навеяно книгой Хокинга про чёрные дыры). По полученным более-менее однородным группам выясняем, что это было.
Для проверки третьей гипотезы и был построен данный макет. (Планирую проверять и выкладывать остальные по мере готовности)
Кнопкой "Open picture" вызываем диалог открытия изображения (программа "понимает" форматы BMP и JPEG). В архив положено несколько тестовых букв.
Изображение открывается в "пространстве" окна с отрисованной тенью. Открытое изображение можно перемещать мышкой - интерфейс настраивает пользователя на раздумия о пространстве и движении
Кнопкой "Do it" запускается вычислительный процесс, состоящий из таких шагов:
1. Вычисляется средний цвет изображения.
2. Ищется количество точек, которые расположены "выше" и "ниже" среднего цвета.
3. Те точки, которых больше - полагаем точками фона и окрашиваем их в белый цвет, остальные - в чёрный.
4. Каждая чёрная точка - это элементарная целостная однородность изображения буквы. У каждой точки есть свойство - она притягивается к другим точкам с силой в зависимости от расстояния в Эвклидовом пространстве (принцип как у гравитации, но с другим коэффициентом). От стенок - упругое соударение.
Выводы. В данной модели буквы трансформируются в области повышенной плотности. Например, для буквы А (вне зависимости от ориентации, размера, шумов, написания), замечено формирование (в максимальном "разлёте") трёх областей повышенной плотности. Для букв Б и В - четырёх, которые легко обнаруживаются алгоритмически.
Быстро обрабатывать большие изображения на медленных компьютерах программа пока не может. Избавиться от этого планирую в ближайшее время.
Основной целью макета является иллюстрация возможности применения физических моделей для перевода неудобных признаков букв в более удобные.
Данная модель предназначена для раздумий, коментариев, критики по поводу метода, а не для формирования каких-либо окончательных оценок.