- •Содержание
- •1. Обработка изображений в matlab 4
- •2. Обработка изображений и видео в Simulink 28
- •Введение Общие требования к выполнению лабораторных работ
- •Основные рекомендации по использованию инструктивно-методических материалов
- •Обработка изображений в matlab Общая характеристика пакета расширения Image Processing Toolbox среды matlab
- •Основные сведения о графической системе среды matlab
- •Типы изображений и их представление в matlab
- •Цветовые системы и их преобразования
- •Базовые возможности среды matlab по работе с изображениями
- •Основные форматы хранения растровых изображений
- •Вывод изображения на экран средствами Image Processing Toolbox
- •Базовые возможности matlab по созданию, вводу-выводу, отображению и обработке изображений Задания к работе
- •Пояснения к работе
- •Основные возможности Video and Image Processing Blockset
- •Базовые элементы работы с avi-файлами в Simulink Задание к работе
- •Пояснения к работе
- •Литература
Основные сведения о графической системе среды matlab
Для многих исследований и вычислительных работ важным этапом является визуализация данных, поддержка которой осуществляется в MATLAB при помощи набора мощных графических команд высокого уровня и программируемого интерфейса дескрипторной графики Handle Graphics. Команды высокоуровневой графики реализуют построение графиков кривых в двумерном и трехмерном пространствах, изображение поверхностей, рисование линий уровня, гистограмм, многие виды специализированной графики и анимацию. При этом управление цветом, масштабирование, нанесение подписей, маркировка осей и т. д. осуществляется достаточно просто, а назначенные по умолчанию режимы вполне удовлетворительны в большинстве случаев. Имеется возможность интерактивного оформления рисунков. Объектно-ориентированная система Handle Graphics предоставляет доступ ко всем характеристикам графических объектов и позволяет создавать новые графические команды.
Кривые, поверхности и другие графические объекты строятся в специальном графическом окне (figure). Первое обращение в сеансе к графической команде автоматически вызывает появление окна, которому присваивается первый номер. Чтобы организовать новое окно или перейти от одного окна к другому, нужно выбрать пункт New Figure в меню File командного или графического окна. Для того чтобы перейти к имеющемуся окну с номером N или организовать новое окно, достаточно в строке ввода ввести команду figure N. Явно вызванная внутри программы функция figure('Name', 'Figure name') позволяет задать графическому окну с именем 'Figure name' те параметры, которые более предпочтительны, исходя из логики дальнейших действий. Одновременно может быть открыто несколько графических окон. В MATLAB для сохранения рисунка имеется большой выбор форматов графических файлов, причем рисунок можно записать, используя меню графического окна или выполнив команду в программе.
Основная команда двумерной графики plot строит графики кривых с абсциссами x1, x2, … и ординатами y1, y2, … и имеет следующий формат: p1ot( x1, y1, s1, x2, y2, s2, … ). Наиболее типичный вариант ее использования выглядит следующим образом: p1ot( x, y ). Здесь x и y – векторы одинаковой длины, задающие соответствующие координаты точек, выводимых на график. По умолчанию точки соединяются сплошными линиями синего цвета. Дополнительные параметры, представленные строками s1, s2, ..., позволяют задать тип, толщину и цвет рисуемой кривой, а также форму и размер маркера.
При построении графика выбор масштаба и построение осей совершаются автоматически, а для изменения масштабов применяется команда axis. Чтобы определить интервалы изменения координат самостоятельно, нужно выполнить команду: axis( [xmin, xmax, ymin, ymax] ). Здесь числа xmin и xmax задают интервал изменения горизонтальной координаты (минимальное и максимальное значения), а ymin и ymax – соответственно интервал изменения вертикальной координаты. Если нужно сохранить автоматическое масштабирование по какой-нибудь оси, то в качестве значения следует поставить идентификатор Inf (или -Inf). Характерные применения команды axis сведены в таблице.
Команда |
Действие |
axis(axis) |
Использование текущего масштаба для последующих графиков (фиксация текущих назначений) |
axis(auto) |
Восстановление режима автомасштабирования |
v = axis |
Получение вектора с текущими значениями масштаба |
axis('ij') |
Размещение начала отсчета в левом верхнем углу (матричная система координат) |
axis('xy') |
Размещение начала отсчета в левом нижнем углу (декартова система координат) |
axis off |
Отключение обозначения осей и насечек |
axis on |
Восстановление осей и насечек |
Для коррекции размеров рисунка используются стили масштабирования, позволяющие установить одинаковый масштаб по обеим переменным и согласовать область вывода. Для указания нужного стиля STYLE нужно выполнить команду: axis STYLE. Стили масштабирования для команды axis приведены в таблице.
Имя |
Описание |
square |
Область вывода — квадрат |
normal |
Масштабирование по умолчанию. MATLAB выбирает диапазон и разметку по собственному алгоритму |
equal |
Одинаковый масштаб по осям |
tight |
Изображаемые данные занимают всю область вывода |
auto |
Включение автомасштабирования |
manual |
Масштабирование вручную |
Функции системы дескрипторной графики Handle Graphics позволяют эффективно работать с графическими объектами (линиями, поверхностями и другими объектами). Основными здесь являются исходные одиннадцать примитивов, перечисленные в таблице.
Объект |
Назначение |
Root |
Корневой объект, соответствующий экрану и создаваемый MATLAB автоматически в начале сеанса |
Figure |
Графическое окно на экране |
Uicontrol |
Пользовательский интерфейс (кнопки, прокрутки и т. д.) |
Axes |
Физическая область в окне |
Uimenu |
Пользовательское меню |
Image |
Двумерный образ, задаваемый массивом |
Line |
Базисный примитив линии |
Patch |
Базисный примитив закрашенного многоугольника |
Surface |
Базисный примитив поверхности |
Text |
Строки символов |
Light |
Источники света, действующие на объекты в пределах области, определенной Axes |
Например, объект Line нуждается в размерах отображаемой области, которые содержатся в Axes. В свою очередь, для Axes требуются данные об объекте Figure.
Каждый графический объект при его создании получает некоторое значение (дескриптор), которое присваивается идентификатору и впоследствии может быть использовано для изменения свойств объекта. Если график сформирован из нескольких объектов, то каждый объект характеризуется своим дескриптором.
Значение дескриптора для корневого объекта равно нулю, а для окна (Figure) совпадает с его номером. Для остальных объектов дескрипторы задаются вещественными числами, содержащими информацию, используемую MATLAB. Для использования дескриптора графического объекта необходимо присвоить результат выполнения графической команды некоторой переменной. Эта переменная является дескриптором и предоставляет доступ к свойствам графического объекта. Информацию о свойствах графического объекта при помощи дескриптора позволяет получить функция get, а функция set служит для переопределения свойств объекта.
Чтобы переопределить свойство объекта при помощи функция set, достаточно указать несколько первых букв, специфицирующих свойство объекта. Чтобы получить перечень возможных значений какого-нибудь свойства Prop, надо выполнить команду set(h, 'Prop').
В таблице ниже приведены функции, предоставляющие доступ к часто используемым дескрипторам. Значения дескрипторов могут меняться в зависимости от платформы и сеанса. Эти функции можно использовать в качестве аргументов других функций. Например, удалить графическое окно можно по команде delete(gcf). Для очистки текущего окна достаточно выполнить команду clf, а для осей – cla.
Имя |
Назначение |
gcf |
Получение дескриптора текущего окна (figure) |
gca |
Получение дескриптора осей (axes) для текущего окна (figure) |
gco |
Получение дескриптора текущего объекта для текущего окна (figure) |
Каждый рисунок (окно Figure) имеет свою палитру, заданную матрицей с тремя столбцами и числом строк, отвечающим количеству заданных цветов. Три числа на одной строке, которые могут принимать значения от 0 до 1, определяют соответственно интенсивности красной, зеленой и синей компонент (RGB).
Для задания и изменения палитры используется команда colormap. По умолчанию стандартной является палитра jet, содержащая 64 цвета. Чтобы назначить новую палитру при помощи массива СС, нужно выполнить команду colormap(CC), а вернуть стандартную палитру можно при помощи команды colormap('default'). Обращение к команде colormap без параметров выводит матрицу с текущей палитрой.
Используя стандартные операции с массивами, можно приготовить свою палитру. В то же время имеется набор приготовленных палитр, в частности: hsv (радуга), hot (комбинации черного, красного, желтого и белого), cool (фиолетово-голубая палитра), summer (желто-зеленая палитра), bone (серо-синяя палитра), gray (оттенки серого). При обращении к любой из этих функций указывается параметр, задающий число цветов, а если параметр не указан, то формируется палитра с тем же числом цветов, что и текущая. Например, по команде colormap(gray(4)) сформируется палитра из четырех оттенков серого цвета.
Палитры необходимы при построении графических объектов: поверхностей с помощью команд mesh, surf и др., контурных рисунков (при помощи семейства команд contour), и т. д. Диапазон изменения цвета для текущей палитры можно сузить при помощи команды caxis([cmin cmax]). Здесь cmin и cmax определяют диапазон палитры (соответственно начальный и конечный цвета), который будет использоваться для окрашивания. Команда caxis без параметров выводит текущие значения cmin и cmax, команда caxis('auto') позволяет вернуться к автоматическому назначению цветов.