Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

pmi432 / LR07 / 2read / из Журавеля / 00. Введение

.pdf
Скачиваний:
68
Добавлен:
18.03.2015
Размер:
609.42 Кб
Скачать

Image Processing Toolbox

. 1

MATLAB.Exponenta

 

Семинары

Тренинги

Лицензирование

Материалы

Подписка

Форум

Регистрация

Matlab

Toolboxes

Simulink Запрос цены Пробная версия Запрос демонстрации Blocksets

Полезное

Вход

Введение \ Image Processing Toolbox

Введение

Рассмотрим основы обработки изображений с использованием MATLAB и Image Processing Toolbox.

Изображения в MATLAB и Image Processing Toolbox

Основной структурной единицей данных в MATLAB является массив. Для представления изображений данные в массивах должны нести информацию о соответствующих значениях интенсивностей цвета.

MATLAB запоминает большинство изображений в виде двумерного массива (т.е. матрицы), в котором каждый элемент соответствует одному пикселю отображаемого изображения. (Название элемента изображения "пиксель" - это сокращенно от "picture element".)

Например, если изображение состоит из 200 строк и 300 столбцов, то оно в системе MATLAB запоминается в виде матрицы с размерностью 200×300. Некоторые изображения, например полноцветные, представляются в виде трехмерных массивов, где представлены соответственно красная, зеленая и синяя составляющие. Такое представление изображений упрощает их обработку и позволяет в полной мере использовать возможно системы MATLAB, в частности , в области обработки изображений.

Системы координат

Изображения представляются в разных координатных системах. Рассмотрим две координатные системы, которые используются в приложении Image Processing Toolbox:

Пиксельные координаты

Пространственные координаты Использование нестандартных пространственных координатных систем

Пиксельные координаты

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

Пиксельная координатная система

Для пиксельных координат, первая компонента r (строки) возрастает вниз, вторая компонента c (столбцы) возрастает вправо. Пиксельные координаты являются целыми числами в диапазоне между 1 и числом, которое определяет количество строк или столбцов.

Пиксельная координатная система аналогична матричной координатной системе, которая используется в MATLAB. Это позволяет понимать связь между матричным представлением изображения и его визуализацией. Например, данные пикселя в пятой строке и втором столбце запоминаются в матрице как (5,2). Матричные индексы в MATLAB используются для доступа к значениям конкретных пикселей. Например, в системе MATLAB код

I(2,15)

Возвращает значение пикселя из 2 строки и 15 столбца изображения I.

Пространственные координаты

В пиксельной координатной системе пиксель представляет собой дискретную область, которая однозначно определяется парой координат, например (5,2). Из этого следует, что обозначение координат в виде (5.3,2.2) не имеет смысла.

Однако в некоторых случаях для некоторых пиксельных систем такое представление может быть оправдано. В системе пространственных координат локализация элементов изображения описывается значениями x и y (не r и c как в пиксельной системе координат).

На изображении внизу продемонстрирована пространственная система координат, которая используется для представления изображений. Отметим, что переменная y увеличивается вниз.

Пространственная система координат

http://matlab.exponenta.ru/imageprocess/book5/6_1.php

08.11.2012 17:11:56

Image Processing Toolbox

. 2

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

Отметим некоторые существенные различия. В пиксельных координатах верхний левый угол изображения имеет координаты (1,1), а в пространственной системе координат эти индексы равны соответственно (0.5,0.5). Еще одна существенная разница между ними заключается в том, что пиксельная система координат дискретная, а пространственная система координат непрерывная. Однако, в большинстве случаев, если говорят, что пиксель в левом верхнем углу принимает координаты (1,1), то имеют ввиду пространственную систему координат.

Далее, если речь будет идти о пиксельной системе координат, то будут использоваться индексы (r,c), а при работе с пространственной системой координат будут использоваться индексы (x,y).

Использование нестандартных пространственных координатных систем

По умолчанию пространственная система координат воспринимается как пиксельная. Например, координаты центрального пикселя в 5 строке и 3 столбце имеют такие пространственные координаты x=3, y=5. (Запомним, что порядок координат обратный.). Некоторые функции преимущественно работают с пространственными координатами, другие с пиксельными.

Также в некоторых случаях есть необходимость работать с нестандартными системами пространственных координат.

Для определения пространственной координатной системы нужно описать данные изображения XData и Ydata. Эти свойства будут описаны в виде двухэлементного вектора и будут задавать диапазон координат отображаемого изображения. По умолчанию для изображения A XData представляется диапазоном [1 size(A,2)], а YData - [1 size(A,1)].

Например, если изображение A состоит из 100 строк и 200 столбцов, то по умолчанию XData равно [1 200], а YData - [1 100]. Значения этих векторов представляют собой координаты центров пикселей. В действительности же диапазон отображаемых координат немного больше. Если XData равно [1 200], то диапазон вдоль x-оси изображения равен [0.5 200.5].

Продемонстрируем процедуру визуализации изображения с использованием XData и YData.

A = magic(5);

x = [19.5 23.5]; y = [8.0 12.0];

image(A,'XData',x,'YData',y), axis image, colormap(jet(25))

Для более детальной информации относительно синтаксиса системы пространственных координат см. описание функции imshow.

Типы изображений в приложении

Приложение Image Processing Toolbox работает с четырьмя типами изображений, характеристики которых приведены в таблице. Типы изображений определяют способ интерпретации системой MATLAB данных элементов матрицы в качестве значений интенсивностей пикселей. Рассмотрим некоторую информацию относительно каждого типа данных.

Тип

Описание

 

изображения

 

 

 

 

 

 

 

 

 

Бинарное

Логический массив, содержащий только единицы и нули, которые интерпретируются как черный и белый

 

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

 

(Binary)

 

содержат только два уровня интенсивностей, не обязательно 1 и 0.

 

 

 

 

 

 

 

 

 

 

Массив в формате logical, uint8, uint16, single или double, значения пикселей которого являются индексами

 

 

из палитры. Палитра представляет собой массив с размерностью m×3, который представлен в формате

 

Индексное

double. Также известны псевдоцветные изображения.

 

Примечание.

 

(Indexed)

 

Для массивов, которые представлены в формате single или double, значения находятся в диапазоне [1, p].

 

 

 

 

Для массивов, которые представлены в формате logical, uint8 или uint16 диапазон значений составляет [0,

 

 

p-1].

 

 

 

http://matlab.exponenta.ru/imageprocess/book5/6_1.php

08.11.2012 17:11:56

Image Processing Toolbox

. 3

 

формата int16 значения могут находиться в диапазоне [-32768, 32767].

 

 

 

Изображения представляются массивом с размерностью m×n×3 в формате uint8, uint16, single или double.

 

Значение пикселя равно значению интенсивности. Эти изображения известны еще как RGB изображения.

Полноцветное

Примечание.

(Truecolor)

Для изображений в формате single или double значения пикселей находятся в диапазоне [0, 1]. Если

 

изображения представлены в формате uint8, то значения пикселей находятся в диапазоне [0,255]. Если же

 

изображения представлены в формате uint16, то значения пикселей находятся в диапазоне [0, 65535].

 

 

 

 

Бинарные изображения

В бинарном изображении каждый пиксель может принимать только два дискретных значения - 1 или 0. Бинарное изображение запоминаются в виде логического массива. По договоренности, переменная BW будет обозначать бинарное изображение.

На изображении внизу показано бинарное изображение и окно просмотра некоторых значений пикселей.

Значения пикселей бинарного изображения

Индексные изображения

Индексные изображения состоят из массива и палитры изображения. Значения пикселей массива являются индексами палитры. По договоренности, будем использовать переменную X для названия массива индексного изображения.

Палитра является матрицей с размерами m×3, которая представлена в формате double и содержит значения с плавающей запятой в диапазоне [0,1]. Каждая строка палитры описывает красную, зеленую и синюю составляющие некоторого цвета. Цвет каждого пикселя изображения определяется с использованием соответствующего значения X в качестве индекса в палитре.

Палитра часто запоминается вместе с индексным изображением и автоматически считывается вместе с изображением при использовании функции imread. После считывания изображения и палитры в рабочее пространство MATLAB система воспринимает их как отдельные переменные, но между которыми существует четкая связь. Кроме того, в системе MATLAB существует ряд функций, которые позволяют работать с палитрой.

Взаимосвязь между значениями матрицы изображения и палитры зависит от формата матрицы изображения. Если матрица изображения представлена в формате single или double, то она содержит значения от 1 до p, где p равно длине палитры. Значение 1 соответствует первой строке в палитре, значение 2 - второй строке в палитре и т.д. Если матрица изображения представлена в формате logical, uint8 или uint16, значение 0 представляет первую строку палитры, значение 1 - вторую строку и т.д.

На изображении внизу продемонстрировано структуру индексного изображения. На рисунке матрица изображения представлена в формате double, а значение 5 соответствует пятой строке в палитре.

Соотношение значений пикселей и палитры в индексных изображениях

Полутоновые изображения

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

Матрица данных может быть представлена в формате uint8, uint16, int16, single или double. В очень редких случаях полутоновые изображения запоминаются вместе со своей палитрой, которая используется затем при визуализации изображения.

http://matlab.exponenta.ru/imageprocess/book5/6_1.php

08.11.2012 17:11:56

Image Processing Toolbox

. 4

Для матриц, которые представлены в формате single или double используется полутоновая палитра. Интенсивность 0 отображается черным цветом, а интенсивность 1 - белым. Для матриц, которые представлены в формате uint8, uint16 или int16 интенсивность intmin(class(I)) представляет черный цвет, а интенсивность intmax(class(I)) - белый цвет.

На рисунке внизу показано полутоновое изображение, которое представлено в формате double.

Значения пикселей на полутоновом изображении

Полноцветные изображения

Полноцветные изображения представляют собой такой тип изображений, где каждый пиксель описывается тремя значениями красной, синей и зеленой составляющих пиксельного цвета. Система MATLAB запоминает полноцветные изображения в виде массива данных с размерностью m×n×3. В этом массиве хранится каждая компонента цвета для каждого отдельного пикселя. Полноцветные изображения не используют палитры. Цвет каждого отдельного пикселя определяется комбинацией красной, зеленой и синей интенсивностей, которая запоминается для каждого пикселя.

Графический файловый формат запоминает полноцветные изображения как 24-битные данные, где красная, зеленая и синяя компонента представлены 8 битами каждая. В сумме это дает около 16 миллионов цветов. Благодаря этому полноцветные изображения могут отображать объекты с большой точностью и являются очень реалистическими.

Полноцветные изображения могут быть представлены в формате uint8, uint16, single или double. Если массив полноцветного изображения представлен в формате single или double, то значение каждой цветовой компоненты находится в диапазоне от 0 до 1. Пиксель, цветовыми компонентами которого являются (0,0,0) отображается черным цветом, а пиксель, компонентами которого являются (1,1,1) отображается белым цветом. Три цветовые компоненты для каждого пикселя запоминаются вдоль каждой из трех размерностей массива данных. Например, красная, зеленая и синяя составляющие пикселя (10,5) запоминаются соответственно в RGB(10,5,1), RGB(10,5,2) и RGB(10,5,3).

На следующем рисунке отображено полноцветное изображение, которое представлено в формате double.

Цветовые составляющие полноцветного изображения

http://matlab.exponenta.ru/imageprocess/book5/6_1.php

08.11.2012 17:11:56

Image Processing Toolbox

. 5

Для определения цвета пикселя (2,3) необходимо получить все RGB составляющие, которые находятся в (2,3,1:3). Пусть (2,3,1) содержит значение 0.5176, (2,3,2) содержит значение 0.1608 и (2,3,3) - значение 0.0627. Тогда цвет для пикселя (2,3) может быть представлен как

0.5176 0.1608 0.0627

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

RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);

R=RGB(:,:,1);

G=RGB(:,:,2);

B=RGB(:,:,3);

imshow(R) figure, imshow(G) figure, imshow(B)

figure, imshow(RGB)

Отдельные цветовые составляющие RGB-изображения

http://matlab.exponenta.ru/imageprocess/book5/6_1.php

08.11.2012 17:11:56

Image Processing Toolbox

. 6

Отметим, что каждая отдельная цветовая составляющая содержит белую область. Белая область соответствует наибольшим значениям каждой отдельной цветовой составляющей.

Преобразование типов изображений

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

Примечание.

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

В таблице перечислены все функции преобразования типов изображений в приложении Image Processing Toolbox.

Функция

Описание

 

 

 

 

Dither

Использует метод диффузионного псевдосмешения цветов (dithering) для преобразования полутонового

изображения в бинарное или преобразования полноцветного изображения в индексное.

 

 

 

 

 

gray2ind

Преобразование полутонового изображения в индексное изображение.

 

 

 

 

grayslice

Преобразование полутонового изображения в индексное изображение с использованием многоуровневой

 

установки порогов.

 

 

im2bw

Преобразование полутонового, индексного или полноцветного изображения в бинарное изображение с

использованием яркостных порогов.

 

 

 

 

 

ind2gray

Преобразование индексного изображения в полутоновое изображение.

 

 

 

 

ind2rgb

Преобразование индексного изображения в полноцветное изображение.

 

 

 

 

mat2gray

Преобразование матрицы данных в полутоновое изображение с проведением масштабирования данных.

 

 

 

 

rgb2gray

Преобразование полноцветного изображения в полутоновое изображение.

 

 

 

 

rgb2ind

Преобразование полноцветного изображения в индексное изображение.

 

 

 

 

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

RGB = cat(3,I,I,I);

Результирующее полноцветное изображение идентифицирует красную, зеленую и синюю составляющие матрицы. Однако при визуализации это будет полутоновое изображение.

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

Преобразование цветовых пространств

Этот вопрос уже затрагивался ранее, поэтому рассмотрим его только в общих чертах. Приложение Image Processing Toolbox представляет цвет в виде RGB-значений для полноцветных и индексных изображений. Однако, существуют также другие методы представления цвета. Например, цвет может быть представлен тремя параметрами - тип цвета (hue), его насыщенность (saturation) и значение (value) яркости цвета (HSV). Различные методы представления цветов называются цветовыми пространствами.

Функции приложения обеспечивают преобразования между различными цветовыми пространствами. Функции обработки изображений работают с данными, которые представлены в формате RGB. Т.е. обрабатывать можно изображения, которые используют любые цветовые пространства, но сначала эти изображения переводятся в RGB-формат, а после обработки переводятся обратно в исходное цветовое пространство.

http://matlab.exponenta.ru/imageprocess/book5/6_1.php

08.11.2012 17:11:56

Image Processing Toolbox

. 7

Преобразования классов изображений

Существует возможность преобразования данных изображения из формата uint8 и uint16 в формат double с использованием функции MATLAB double. Однако преобразования классов приводит к изменению их интерпретации приложением как данных изображения. Поэтому, чтобы после преобразования класса данные воспринимались как матрица изображения, необходимо провести некоторые действия, например, масштабирование.

Для реализации преобразования классов изображений может быть использована одна из встроенных функций приложения im2uint8, im2uint16, im2int16, im2single или im2double. Эти функции автоматически масштабируют и преобразуют исходные данные в изображение выбранного класса. Например, команда преобразования данных изображения RGB, которые представлены в формате удвоенной точности в диапазоне [0,1] в RGB изображение класса uint8 с диапазоном данных [0,255]:

RGB2 = im2uint8(RGB1);

Потеря информации при преобразованиях

При проведении преобразований классов, которые сопровождаются изменением числа бит, представляющих данные, может произойти потеря информации о изображении. Например, полутоновое изображение класса uint16 может хранить и отображать 65,536 различных оттенков серого, а полутоновое изображение класса uint8 отображает только 256 различных оттенков серого. Поэтому при проведении преобразований полутонового изображения из класса uint16 в класс uint8 (можно с использованием функции im2uint8) некоторые данные о полутонах исходного изображения будут утеряны. Потери информации будут еще больше при преобразовании полутонового изображения из класса uint16 в бинарный вариант. Однако, преобразования данных и потери информации, которые их сопровождают, оправдываются теми задачами и целями, в рамках которых они выполняются.

Преобразования индексных изображений

Отметим, что преобразование индексных изображений из одного класса в другой не всегда возможны. На индексных изображениях, матрицы которых содержат только индексы, могут возникнуть проблемы с преобразованием цветовых данных.

Например, если индексное изображение класса uint16 или double содержит 300 цветов, то его нельзя корректно преобразовать в класс uint8, поскольку массивы класса могут содержать только 256 различных значений. Если все же есть необходимость выполнить такое преобразование, то сначала нужно уменьшить количество цветов на исходном изображении с помощью функции imapprox. Эта функция выполняет квантование цветов палитры изображения, уменьшая их количество до заданного числа.

Работа с последовательностями изображений

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

Последовательности изображений могут храниться в виде N-мерного массива. Например, массив с размерностью m×n×p может хранить p двумерных изображений (например, полутоновых или бинарных). Это продемонстрировано на рисунке. Массивы с размерность m×n×3×p могут хранить полноцветные изображения, каждое из которых состоит из трех составляющих.

Многомерный массив содержит последовательность изображений

Много функций приложения могут обрабатывать многомерные массивы и, соответственно, могут обрабатывать последовательности изображений. Например, если многомерный массив обработать с помощью функции imtransform, то обработанными будут все составляющие этого массива. Результат будет аналогичен тому, если бы каждая составляющая обрабатывалась отдельно.

Некоторые функции приложения, которые работают с многомерными массивами, не могут интерпретировать массивы с размерностью m×n×p или m×n×3×p как последовательности изображений. Используя эти функции при обработке последовательностей необходимо использовать специальный синтаксис, а также учитывать другие ограничения. В таблице внизу приведен список функций приложения и указания как их использовать при обработке последовательностей.

Две функции приложения immovie и montage работают с четырехмерными массивами, которые еще называются многофреймовыми массивами изображений.

 

Размерность

 

Функция

последовательности

Указания при работе с последовательностью изображений

 

изображений

 

 

 

 

 

 

 

bwlabeln

только m×n×p

Нужно использовать синтаксис bwlabeln(BW,conn) с 2-D связностью.

 

 

 

 

 

 

deconvblind

m×n×p или m×n×3×p

Аргумент PSF должен быть одномерным или двумерным.

 

 

 

 

 

 

deconvlucy

m×n×p или m×n×3×p

Аргумент PSF должен быть одномерным или двумерным.

 

 

 

 

 

 

edgetaper

m×n×p или m×n×3×p

Аргумент PSF должен быть одномерным или двумерным.

 

 

 

 

 

 

entropyfilt

только m×n×p

Аргумент nhood должен быть двумерным.

 

 

 

 

 

 

imabsdiff

m×n×p или m×n×3×p

Изображения последовательности должны иметь одинаковый размер.

 

 

 

 

 

 

imadd

m×n×p или m×n×3×p

Изображения последовательности должны иметь одинаковый размер. Нельзя

к последовательности изображений прибавлять скаляр.

 

 

 

 

 

 

 

 

imbothat

только m×n×p

Аргумент SE должен быть двумерным.

 

 

 

 

 

 

imclose

только m×n×p

Аргумент SE должен быть двумерным.

 

 

 

 

 

 

imdilate

только m×n×p

Аргумент SE должен быть двумерным.

 

 

 

 

 

 

imdivide

m×n×p или m×n×3×p

Изображения последовательности должны иметь одинаковый размер.

 

 

 

 

 

 

imerode

только m×n×p

Аргумент SE должен быть двумерным.

 

 

 

 

 

 

imextendedmax

только m×n×p

Необходимо использовать синтаксис imextendedmax(I,h,conn) при двумерной

связности.

 

 

 

 

 

 

 

 

imextendedmin

m×n×p или m×n×3×p

Необходимо использовать синтаксис imextendedmin(I,h,conn) при двумерной

связности.

 

 

 

 

 

 

 

 

 

 

Для полутоновых изображений параметр h должен быть двумерным. Для

imfilter

m×n×p или m×n×3×p

полноцветных изображений (RGB) параметр h должен быть двумерным или

 

 

трехмерным.

 

 

 

 

 

 

http://matlab.exponenta.ru/imageprocess/book5/6_1.php

08.11.2012 17:11:56