Среда программирования MATLAB
Для написания программы нам потребует среда программирования MatLab, которая имеет именно те функции, которые понадобятся нам для реализации нашей прогркаммы.
MATLAB является языком высокого уровня для выполнения технических и научных вычислений. В нем интегрированы вычисления, визуализация и программирование в удобной пользовательской среде, в которой задачи и их решения выражаются с помощью привычных математических обозначений. Типичный набор действий включает:
- математические вычисления;
- разработку алгоритмов;
- моделирование и создание прототипных систем;
- анализ данных, их исследование и визуализацию;
- построение различных графиков;
- разработку приложений и пользовательский интерфейс.
MATLAB представляет собой интерактивную систему, в которой базовым элементом выступает массив элементов, который не требует задания фиксированной размерности. Это позволяет легко формулировать условия и решения многих вы- числительных задач, которым требуется матричное представление объектов. При этом необходимая работа займет лишь малую долю времени, которое потребовалось бы для написания аналогичных программ на скалярном и неинтерактивном языке типа С или Fortran.
Программа очень удобна и проста в использовании. Ее интерфейс представлен на Рис.2.
Рис. 2. Интерфейс MatLab.
Рабочий стол MATLAB — это основное окно приложения MATLAB, рабочий стол состоит из пяти подокон: окна команд (Command Window), окна рабочего пространства (Workspace Browser), окна текущей папки (Current Directory Window), окна совершенных команд (Current History Window) и одного или нескольких окон графиков.
Окно команд (Command Window) — это область, где пользователь набирает команды и выражения MATLAB после приглашения системы (>>) (ввод) и где система помещает свои отклики на команды пользователя (вывод). При каждом сеансе работы MATLAB формирует рабочее пространство, т. е. множество переменных, создаваемых пользователем.
Окно рабочего пространства (Workspace Browser) показывает эти переменные, а также сообщает некоторую информацию о них. Двойное нажатие левой клавиши мыши на любую переменную в этом окне вызывает окно Редактор массивов, в котором можно увидеть дополнительную информацию о данном массиве, а также (во многих случаях) отредактировать его содержимое.
Над заголовком окна рабочего пространства расположена метка Current Directory (текущая папка), за которым расположено окно текущей папки (Current Directory Window), отражающее ее полный системный путь, например, C:\MATLAB\Work. Это означает, что папка «Work» является подпапкой главной папки «MATLAB» приложения MATLAB, которое установлено на диск С. Если нажать левой клавишей мыши на треугольник справа от окна текущей папки, то раскроется список путей недавно использованных папок, что позволяет пользователю быстро менять текущую рабочую папку.
Система MATLAB использует переменную окружения путь поиска (Search Path) для обнаружения М-файлов и файлов других типов, используемых в этой системе, которые организованы в виде компьютерных папок. Любой исполняемый файл должен располагаться или в рабочей папке, или в папке, на которую указывает путь поиска. По умолчанию, файлы, поставляемые вместе с MATLAB и MathWorks, помещаются в Search Path. Самый простой путь узнать, какие папки помещены в Search Path, а также добавить, удалить или модифицировать имеющиеся там записи, — это выбрать пункт Set Path в меню File рабочего стола и совершить необходимые действия в появившемся диалоговом окне Set Path. В начале работы бывает удобно поместить ссылки на часто используемые папки в путь поиска. В этом случае не придется часто менять текущую папку системы.
Окно совершенных команд (Current History Window) содержит записи всех команд, которые пользователь вводил в окне команд, включая текущую и все предыдущие сеансы работы с MATLAB. Ранее исполненные команды можно выбирать и повторно исполнять из окна совершенных команд. Для этого достаточно щелкнуть правой кнопкой мыши по команде или последовательности команд. Такое действие активирует меню, из которого необходимо выбрать некоторые дополнительные опции для выполнения этих команд. Такая организация хорошо помогает при экспериментировании с разными командами в сеансе работы с MATLAB.
Распознавание образов
Разработка систем обработки изображений всегда тесно связана с большим объемом тестирования и экспериментальной работы, который необходимо выполнить для достижения приемлемого решения поставленной задачи.
Изображение представляет собой двумерную функцию f (x, у), где х и у — это пространственные координаты, а амплитуда f в любой точке с парой координат (х, у) называется интенсивностью или уровнем серого цвета изображения в этой точке. Если переменные x, у и f принимают значения их конечного (дискретного) множества, то говорят о цифровом изображении. Под цифровой обработкой изображений подразумевается обработка цифровых изображений с помощью цифровых вычислительных машин (компьютеров). Отметим, что цифровое изображение состоит из конечного числа элементов, каждый из которых расположен в конкретном месте и имеет определенное значение. Эти элементы принято называть элементами изображения или пикселями.
Зрение является самым совершенным из наших органов чувств, поэтому зрительные образы играют такую важную роль в человеческом восприятии. Однако в отличие от людей, которые способны воспринимать лишь электромагнитное световое излучение видимого диапазона, машинная обработка изображений покрывает практически весь спектр электромагнитных волн от гамма-излучения до радиоволн.
В своей работе мы будем иметь дело с топографическими картами. Они содержат в себе несколько цветов, то есть это цветные изображения, на них есть линии, цифры, водные объекты, которые нам необходимо будет распознать.
Задача распознавания образов является основной в большинстве интеллектуальных систем. Распознавание образов - процесс отнесения объекта по фиксированной группе его свойств к одному объекту из множества образов по заранее оговоренному правилу.
Подходы к компьютеризации распознавания образов можно разделить на две основные категории: методы, основанные на теории решений, и структурный анализ. Первая категория имеет дело с образами, которые описываются количественными дескрипторами, такими как длина, площадь, текстура и многими другими дескрипторами, а вторая категория методов ориентирована на образы, которые можно хорошо представить символьной информацией, например, символьными строками, и которые можно описать свойствами и взаимоотношениями между этими символами.
Выделим наиболее важные шаги в процедуре распознавания:
1. Восприятие образа. На этом этапе производят получение значений характеристических свойств объекта (измерения линейных замеров, фотографирование, оцифровка звука);
2. Предварительная обработка (удаление шумов, представление изображения в черно-белом варианте, обрезание ненужных частей изображения);
3. Выделение характеристик (индексация). На этом этапе измеряются характеристический свойства объекта (измеряем длину рыбы и ее цвет);
4. Классификация (принятие решения).
Разработка системы распознавания образов происходит несколькими этапами:
1. Разработка тренировочной коллекции. Тренировочная коллекция - коллекция объектов для которых заведомо известны их образы. Например, коллекция аудио записей для каждого звука, или коллекция изображений каждой буквы латинского алфавита;
2. Выбрать модель представления объектов;
3. Выбрать значимые характеристики. Один из самых важных этапов разработки системы распознавания. Например, если в случае идентификации рыбы окунь/лосось в качестве характеристики выбрать только длину рыбы, то никакое классифицирующее правило не сможет точно определить тип рыбы, поскольку весьма вероятно встретить лосося и окуня одинаковой длины;
4. Разработать классифицирующее правило. Классифицирующее правило - правило, которое по значениям характеристических свойств объекта отнесет его к одному из образов.
5. Обучение алгоритма. На этом этапе алгоритм "собирает опыт" на основе распознавания тренировочной коллекции. Для того, чтобы правильно выставить коэффициенты (параметры) алгоритма его прогоняют на тренировочной коллекции контролируя результат работы алгоритма;
6. Проверить качество. Вернуться к шагу 2,3 и 4). Если частота ошибок алгоритма не устраивает решаемую задачу, то необходимо вернуться к п. 2 (3, 4). Интуитивно понятно, что увеличение количества характеристических свойств, увеличение тренировочной коллекции улучшают качество работы алгоритма.
7. Оптимизация алгоритма. После того, как качество работы алгоритма подходит под условие рассматриваемой задачи, иногда приходится произвести его оптимизацию. Изначальный алгоритм может быть слишком долгим или ресурсоемким. Ускорить алгоритм распознавания можно уменьшив количество характеристических свойств объекта, выбрав другие характеристические свойства, используя другое классифицирующее правило.
В целом, можно выделить три метода распознавания образов: Метод перебора. В этом случае производится сравнение с базой данных, где для каждого вида объектов представлены всевозможные модификации отображения. Например, для оптического распознавания образов можно применить метод перебора вида объекта под различными углами, масштабами, смещениями, деформациями и т. д. Для букв нужно перебирать шрифт, свойства шрифта и т. д. В случае распознавания звуковых образов, соответственно, происходит сравнение с некоторыми известными шаблонами (например, слово, произнесенное несколькими людьми).
Второй подход - производится более глубокий анализ характеристик образа. В случае оптического распознавания это может быть определение различных геометрических характеристик. Звуковой образец в этом случае подвергается частотному, амплитудному анализу и т. д.
Следующий метод - использование искусственных нейронных сетей (ИНС). Этот метод требует либо большого количества примеров задачи распознавания при обучении, либо специальной структуры нейронной сети, учитывающей специфику данной задачи. Тем не менее, его отличает более высокая эффективность и производительность.
Перед нами стоят задачи распознавания нескольких видов объектов - линии и цифры. Цифры - более сложные элементы для распознавания. Они могут быть под любым наклоном, могут находиться в любом месте на карте. Для них подошел бы первый из перечисленных методов, но иногда карты бывают очень большие и обработка такого изображения, сравнение цифр под разным наклоном из базы данных со всеми возможными цифрами на большой карте, займет слишком много времени. Поэтому мы создадим продукционную модель знаний.
Продукционные модели можно считать наиболее распространенными моделями представления знаний. Продукционная модель – это модель, основанная на правилах, позволяющая представить знание в виде предложений типа: "Если ( выполняется условие), то (выполняется действие)".
Существуют два типа продукционных систем – с «прямыми» и «обратными» выводами. Прямые выводы реализуют стратегию «от фактов к заключениям». При обратных выводах выдвигаются гипотезы вероятностных заключений, которые могут быть подтверждены или опровергнуты на основании фактов, поступающих в рабочую память. Существуют также системы с двунаправленными выводами. Основные достоинства систем, основанных на продукционных моделях, связаны с простотой представления знаний и организации логического вывода.
Мы будем использовать некоторые свойства цифр и линий, которые присущи только им, чтобы выделить от остальных объектов, а так же между собой. Каждая цифра имеет свою форму, площадь, центр масс и так далее, список особенностей практически не ограничен.