Главная страница

Практикум лаб раб. Контрольные вопросы для проверки усвоения материала и задания на выполнение работы


Скачать 1.14 Mb.
НазваниеКонтрольные вопросы для проверки усвоения материала и задания на выполнение работы
Дата03.02.2018
Размер1.14 Mb.
Формат файлаpdf
Имя файлаПрактикум лаб раб.pdf
ТипКонтрольные вопросы
#35741
страница5 из 8
1   2   3   4   5   6   7   8
compass? Какие функции MATLAB используются для построения трехмерных графиков функций В чем заключается особенность применения функции plot3? Как можно построить 3D график в виде сетчатой поверхности Как можно построить 3D график в виде сетчатой поверхности с функциональной окраской Каким способом можно вывести водно графическое окно несколько разных графиков Какие команды MATLAB используются для изменения вида и стиля графиков Какие интерактивные инструменты используются для изменения вида и стиля графиков Какие правила следует выполнять при подготовке программ в виде файлов В чѐм отличия графиков построенных командами mesh(Z) и mesh(X,Y,Z)? Рекомендуемая литература
Matlab и Simulink – сообщество пользователей, материалы, книги, форум Электронный ресурс – Режим доступа http://matlab.exponenta.ru, свободный. – Загл. с экрана. Дьяконов, В. П. MATLAB. Полный самоучитель Текст / В. П. Дьяконов. – М ДМК Пресс, 2012. – 768 с. Дьяконов, В. П. MATLAB 6.5 SP1/7/7 SP1 + Simulink 5/6. Работа с изображениями и видеопотоками Текст / В. П. Дьяконов. – М СОЛОН-Пресс, 2005. – с, 102. Солонина, АИ. Цифровая обработка сигналов. Моделирование в MATLAB Текст / АИ. Солонина, СМ. Арбузов. – СПб.: БХВ-Петербург, 2008. – 816 с.

42 Лабораторная работа №4 Простейшие операции с изображениями Цель работы Изучение возможностей пакета Image Processing Toolbox. Изучение основных приѐмов работы с изображениями. Получение практических навыков в составлении программ. Теоретический материал Пакет Image Processing Toolbox (IPT) представляет собой набор функций для расширения возможностей системы MATLAB при работе с цифровыми изображениями. Данный пакет поддерживает различные операции для обработки изображений, такие как пространственное преобразование нелинейная и линейная фильтрация анализ и улучшение изображений восстановление изображений сжатие изображений. Представление цифровых изображений Монохромное (черно-белое) изображение (Grayscale) можно определить как двумерную функцию f(x, y), где x и y представляют пространственные координаты, а амплитуда f для каждой пары координат (x, y) является интенсивностью или яркостью изображения в точке с заданными координатами. Цветные изображения формируются комбинацией нескольких монохромных. Например в системе RGB цветное изображение состоит из комбинаций трех монохромных компонент R - красной, G - зеленой и B - синей. В аналоговых изображениях, например, изображениях на фотографиях, или на картинах, нарисованных художником, каждую точку можно характеризовать непрерывными пространственными координатами (x, y) и соответствующей интенсивностью или цветом. Преобразование аналогового изображения в цифровое требует представления координат и интенсивностей некоторыми дискретными значениями. Для оцифровки выполняются операции пространственная дискретизация координат, при которой непрерывные координаты заменяются конечным множеством отсчетов квантование по амплитуде, при котором интенсивности в каждой полученной точке заменяются квантованными значениями (округленными до некоторых эталонных. Результатом дискретизации и квантования является матрица чисел, состоящая из элементов изображения (пикселов) и имеющая M строки столбцов. Это значит, что изображение имеет размер MxN. Цифровые изображения, загруженные в среду MATLAB, помещаются в прямоугольную систему координат, где дискретные координаты (x, y) заменяются на (r, c) для обозначения строки столбцов (column). Начало этой системы соответствует верхнему левому углу изображения, координаты которой (r, c)= (1, 1). При этом значения координат могут меняться следующим образом r = 1, 2,…,M; c = 1, 2,…,N. Математически такое цифровое изображение описывается матрицей (4.1), вид которой приведен ниже.

43 Рис. 4.1 – Координатное соглашение в системе MATLAB
(1,1)
(1, 2)
(1,
)
(2,1)
(2, 2)
(2,
)
( , )
(
,1)
(
, 2) . . .
(
,
)
f
f
f
N
f
f
f
N
f r c
f M
f M
f M N
(4.1) Классы данных Координаты пикселов изображений являются целыми числами, однако значения пиксе-
лов (интенсивность, яркость, несмотря на то, что они проквантованы, могут принимать дискретные значения в разных диапазонах числовых значений. Это определяется классом данных, который используется для представления изображений. Используемые в MATLAB классы данных приведены в табл. 4.1. Таблица 4.1 Классы данных Имя класса Описание
uint8 Целые числа без знака в интервале [0, 255]
(1 байт на число)
uint16 Целые числа без знака в интервале [0, 65 535]
(2 байта на число)
uint32 Целые числа без знака в интервале
[0, 4 294 967 295]
(4 байта на число)
int8 Целые числа со знаком в интервале [-128, 127]
(1 байт на число)
int16 Целые числа со знаком в интервале [-32 758,
32 767]
(2 байта на число)
int32 Целые числа со знаком в интервале
[-2 147 483 648, 2 147 483 647] (4 байта на число)
single Вещественные числа с плавающей запятой одинарной точности в диапазоне, примерно, от -10 38
до 10 38
(4 байта на число)
double Вещественные числа с плавающей запятой двойной точности в диапазоне, примерно, от -
10 308
до 10 308

44
(8 байт на число)
char Символы (буквы и знаки) (2 байта на символ)
logical Значения логического 0 или 1 (1 байт на элемент) Классы данных double, uint8 и logical (см. табл. 4.1) наиболее часто используются для представления изображений. Класс uint16 используется значительно реже. Символьный класс char хранит символы в кодировке Unicode. Символьная строка представляет собой массив размером 1xn символов, в котором каждый символ занимает 2 байта. Класс данных logical используется для описания логических массивов, элементы которых содержат значения логических 0 или 1. Такие массивы хранятся в памяти занимая по 1 байту на пиксел. Все численные операции в MATLAB выполняются с двойной точностью в классе
double. Типы изображений Пакет расширений IPT может работать с изображениями следующих типов

полутоновые(черно-белые, монохромные, grayscale) изображения. Это матрица, элементы которой представлены числовыми значениями. Если элементы этого изображения принадлежат классу uint8 или uint16, то они представляются целыми числами в интервалах [0, 255] и [0, 65 535] соответственно. Если изображение использует класс double, то интенсивность пикселов представляется вещественными числами с плавающей точкой двойной точности (см. табл. 4.1). При этом условлено, что интенсивность пикселов лежит в диапазоне [0, 1].

двоичные(бинарные, bitmap) изображения являются логическими массивами, состоящими из 1 и 0. Массив элементов из 1 и 0 других классов, например, uint8, не является двоичным изображением. Для преобразования числовых массивов в логические используется функция logical:
G = где A – числовой массив, состоящий из 1 и 0, G – логический массив с теми же элементами. Если массив А имеет элементы отличные от 0 и 1, то эта функция преобразует все его отличные от 0 элементы в логические 1, а все нулевые в логический 0. индексированные цветные изображения

полноцветные изображения. Цветные изображения будут рассмотрены в последующих лабораторных работах. Таким образом, изображения, обрабатываемые в MATLAB, характеризуются типом изображения и классом данных. Например полутоновое изображение класса double или бинарное изображение класса logical. Конвертирование классов данных и типов изображений Преобразование (конвертирование) изображений из одних классов и типов в другие классы и типы является самым распространенным действием в IPT. Применяя конвертирование типов данных, следует помнить о диапазонах значений величин каждого класса, приведенных в табл. 4.1. Классы конвертируются командой следующего формата В = data_class_name(A), где data_class_name – это одно из имен классов данных из первого столбца табл. 4.1. Например, пусть А — массив класса uint8. Массив двойной точности В генерируется командой В = double (А).
Такое преобразование используется весьма часто, поскольку MATLAB предполагает, что операнды числовых операций являются вещественными числами с двойной точностью.

45 Если С – это массив класса double, элементы которого лежат в интервале [0, 255], но среди них могут встречаться дробные числа, то для их исключения его можно преобразовать в массив uint8 следующим образом
D = Если массив класса double имел элементы со значениями вне интервала [0, 255] ион был конвертирован в класс uint8 описанным выше способом, то MATLAB преобразует все отрицательные величины (меньшие 0) в 0, все величины, большие 255 — в 255, ау всех остальных элементов отбрасываются дробные части. Это означает, что перед преобразованием массивов double в uint8 необходимо совершить подходящую перенормировку (перемасштабирование) его элементов. Преобразование любых числовых данных в логические приводит к логическому массиву, в котором стоят логические 1 везде на месте ненулевых элементов входного массива и 0 на месте тех элементов, которые равны нулю. Уточнить информацию о размерах массива и классе изображения f можно с помощью команды whos f:
>> whos f
Name Size
Bytes Class
f
3x3
72
double array В IPT имеются специальные функции, которые реализуют перенормировку (перемас- штабирование) при конвертировании одних классов и типов изображений в другие. Функция
im2uint8 сначала распознает класс данных на входе и совершает все необходимые преобразования, чтобы выходное изображение имело правильный тип данных. В качестве примера рассмотрим изображение f размера 2x2 класса double, которое может являться результатом некоторых промежуточных вычислений
f =
-0.5 0.5
0.75 1.5 Выполнив преобразование
>> g = im2uint8(f) получим результат
g =
0 128
191 255 Из примера видно, что функция im2uint8 обнуляет все отрицательные значения входного изображения, ставит число 255 на место величин, больших 1, и умножает остальные значения на 255, после чего округляет результат до ближайшего целого числа. Преобразование произвольных массивов double в перенормированные массивы изображения со значениями в интервале [0, 1] выполняется с помощью функции
mat2gray, имеющий следующий синтаксис
g = mat2gray(A, [A
min
, A
max
]) , где изображение g имеет значения пикселов в интервале от 0 (черный) до 1 (белый. Это происходит следующим образом все элементы, меньшие или равные A
min
, обнуляются; все элементы, большие или равные A
max
, заменяются на 1,0. остальные элементы отображаются пропорциональными значениями в интервале
[0, 1.0].
f =
1 2

46
3 4
>> g=mat2gray(f, [1, 4])
g =
0 0.3333
0.6667 1.0000 При выполнении команды без параметров [A
min
, A
max
]
g = mat2gray(A), создается новый массив класса double в котором значения A
min и A
max
– это настоящие максимум и минимум массива А.
f1 =
0 3 2
6 0 2
5 0 4
>> g1=mat2gray(f1)
g1 =
0 0.5000 0.3333
1.0000 0 0.3333
0.8333 0 0.6667 Функция im2double преобразует входной массив классов logical, uint8 или uint16 в класс double с диапазоном [0, 1]. Если входной массив был класса double, то функция
im2double оставляет его без изменений.
>> f2=uint8([15 3 25; 66 0 200; 51 40 49])
f2 =
15 3 25
66 0 200
51 40 49
>> g2=im2double(f2)
g2 =
0.0588 0.0118 0.0980
0.2588 0 0.7843
0.2000 0.1569 0.1922 Из примера видно, что входной массив класса uint8 перемасштабируется делением каждого его элемента на 255. В случае перемасштабирования массива класса uint16 каждый элемент будет делиться на 65535. Для получения двоичных изображений из полутоновых в IPT используется функция
im2bw, имеющая синтаксис
g = im2bw(f, Результатом будет двоичное изображение g, полученное из полутонового изображения f, преобразованное по порогу Т. Значения всех элементов f, меньших Т, становятся логическими, а все остальные – логическими 1. Значение порога Т должно находиться в интервале
[0, 1] независимо от класса входного изображения. Выходной массив автоматически будет логическим. Если порог не указывать
g = im2bw(f), то по умолчанию он принимается Т = 0.5
. Если входное изображение было класса uint8, то im2bw сначала делит его элементы на
255, а потом применяет заданный порог или порог, принятый по умолчанию. Если входной массив был класса uint16
, то деление производится на 65 535. Если входное изображение принадлежало классу double, то im2bw сразу применяет соответствующий порог.

47 Если входной массив был логическим, то выходной массив будет ему идентичен. Логический (двоичный) массив можно преобразовать в числовой с помощью любой из четырех функций

im2uint8;

im2uint16;

mat2gray;

im2double. Основные приемы работы с изображениями Одной из самых частых операций по работе с изображениями является их считывание из графических файлов с целью загрузки в рабочее пространство MATLAB. Эта операция реализуется функцией imread:
imread('filename'). Здесь filename – это строка символов, образующих полное имя загружаемого файла изображения (включая любое расширение. Для случая, когда графический файл включен в приложение Image Processing Toolbox, достаточно указать только имя файла и его расширение, например
>> A=imread(‘image.bmp’); При этом матричной переменной А присваивается значения матрицы, соответствующей изображению, хранящемуся в файле с именем image.bmp. Точка с запятой в конце командной строки запрещает (подавляет) вывод результата. Для данной команды запрещается вывод на экран значений массива A. В случае, когда изображение расположено в конкретной папке, необходимо в явном виде указать полный путь к этой директории, например
>> A=imread(‘D:\Image\image.jpeg’). Для вывода на дисплей изображения, находящегося в рабочем пространстве, используется функция imshow, которая имеет следующий синтаксис
imshow (A, G), где A – матрица выводимого изображения, G – число градаций яркости, используемое для отображения изображения А. Если G отсутствует, по умолчанию используется 256 градаций яркости. Команда
imshow(f, [low high]) позволяет вывести изображение в котором все пикселы с интенсивностью не больше числа
low отображаются черными, а пикселы с интенсивностью не меньше числа high отображаются белыми. Если значения [low high] не задаются, а квадратные скобки остаются пустыми, то пикселы с минимальной интенсивностью отображаются черными, а пикселы с максимальной интенсивностью – белыми, те. вывод в графическое окно производится с максимальным контрастом. Следующая последовательность команд производит загрузку изображения 1.tif из папки на диске D в рабочее пространство и выводит графическое окно с изображением на экран
>> A=imread(‘D:\Image\1.tif’);
imshow(A) Результат выполнения команд изображен на рис. 4.2.

48 Рис. 4.2 – Изображение, выведенное на экран Для того, чтобы вывести несколько изображений в отдельных графических окнах, необходимо выполнить последовательность команд
>> imshow (A);
>> figure, imshow (B); title(['Image B']);
>> figure, imshow (C); title(['Image C']); где А – матрица первого изображения, B – матрица второго изображения, С – матрица третьего изображения. Команда title(['string1', 'string2', '...']) позволяет добавить надписи в выводимое окно, которые необходимо указывать в апострофах. Если в надпись нужно ввести значения переменных, то это производится следующей конструкцией
title(['string1', 'string2', '…', имя перем, имя прем, …]). Для сохранения изображения в файл используется функция imwrite, имеющая формат
imwrite (A, 'filename' ), где А – матрица изображения, 'filename' – имя сохраняемого файла с указанием расширения, поддерживаемого системой MATLAB. Если 'filename' не содержит информацию о пути к папке, то сохранение производится в текущую папку. Зачастую возникает необходимость сохранения изображения на диске точно в том виде, в каком оно отображено в графическом окне на экране. Содержимое окна изображений можно экспортировать на диск с помощью команды Export в ниспадающем меню File в окне изображений (см. рис. 4.2). Для того, чтобы получить информацию о размере изображений, необходимо использовать функцию size (A), которая возвращает размер изображения А в виде вектора из двух элементов M и N. Пример
>> size (A)
ans =
500 500 Для того, чтобы получаемые значения размеров использовать для дальнейших вычислений следует применять функцию size в следующем виде
>> [M N] = size (A);

49 Получить информацию о массиве можно функцией
1   2   3   4   5   6   7   8


написать администратору сайта