воскресенье, 10 февраля 2013 г.

как нажать кнопку в другой программе delphi

Скелетезация по описанию очень проста, но как мне кажется, базовый алгоритм неоднозначно отскелетизирует пример со средней буквой Щ ниже на большой картинке(там где она вся дырявая и с выеденым бликом куском). По слухам в скелетезации применяется еще некоторая фильтрация для таких случаев, но у меня не было желания с этим возится.

Решать инвариантность относительно поворота нейросетями (неокогнетронами и т.п) слишком долго на обычной машине типа PC.

Надо сказать, что к началу этой работы я уже имел некоторый опыт общения с видеокамерами, и риалтаймовой обработкой. Проанализировав все алгоритмы распознавания, описанные выше, мне показалось, что:

Три дня проведенные в интернете не дали ничего готового(а жаль), поэтому проанализировав все возможные алгоритмы распознавания я решил пойти по следующему пути и создать систму, которая будет отвечать всем требованиям ТЗ выше.

Практическая часть распознавания образов

Здесь должна быть некотороя предобработка, для получения инвариантности относительно размера и положения, затем осуществляется сравнение с заготовленной базой эталонов изображений - если совпадение больше чем какая-то отметка, то считаем образ распознанным.

4 Поточечное процентное сравнение с эталоном.

Из геометрии образов можно выделить некоторые числа, инвариантные относительно размера и поворота образов, далее можно составить таблицу соответствия этих чисел конкретному образу(почти как в алгоритме скелетезации). Примеры инвариантных числе - число эллера, экцентриситет, ориентация(в смысле расположения главной оси инерции относительно чего-нить тоже инвариантного). Некоторую информацию и мат. часть можно найти в разделе ссылки ниже.

3 Инвариантрые числа.

Направление было очень модным в 60е-70е годы, в последствии интерес к ним немного поубавился, т.к солидное число нейронов требует солидные вычислительные мощности, которые обычно отсутствуют на простеньких мобильных платформах. Однако надо иметь ввиду, что нейросети иногда дают весьма интересные результаты, засчет своей нелинейной структуры, более того некоторые нейросети способны распознавать образы инвариантные относительно поворота без какой либо внешней предобработки. Так например сети на основе неокогнейтронов способны выделять некоторые характерные черты образов, и распознавать их как бы образы не были повернуты. Подробнее про эти структуры можено узнать в разделе ссылки.

2 Нейросетевые структуры.

В кратце, это некий метод распознавания одинарных бинарных образов, основанный на построение скелетов этих образов и выделения из скелетов ребер и узлов. Далее по соотношению ребер, их числу и числу узлов строится таблица соответствия образам. Так, например, скелетом круга будет один узел, скелетом буквы П - три ребра и два узла, причем ребра относятся как 2:2:1. В программировании данный метод имеет несколько возможных реализаций, подробнее информацию по методу скелетезации можно найти ниже в разделе ссылки.

1 Алгоритм скелетизации.

Теория технического зрения существует не первый день, по этому в литературе можно найти достаточно подходов и решений. Для начала перечислю некоторые из них:

Алгоритмы распознавания образов

Постановка задачи: Мобильный робот по ходу движения должен распознавать образы-команды, изображенные на полу, при помощи видеокамеры. С малым числом образов задача должна решаться в реальном времени. Алгоритм распознавания должен быть инвариантен относительно размера образов и их положения (поворота). Все работает под ОС Windows. Поскольку основная программа управления роботом была написана на Delphi7, то и модуль распознавания пришлось реализовать на Delphi. Любителям C++ Builder рекомендую посмотреть на C++ использующую подобный алгоритм.

Данная статья посвещена проблеме технического зрения и распознавания образов . Упор делается не на высокую научность, а на практическое применение, т.е. все описанное ниже работает на .

Задача распознавания образов

Распознавание образов мобильным роботом.

Распознавание образов: инварианты, нейронные сети на программа Delphi

Комментариев нет:

Отправить комментарий