Определение типов и преобразование изображений.
7.1 Определение типа изображения
7.1.1 Команда проверки бинарного изображения
7.1.2 Команда проверки полутонового изображения
7.1.3 Команда проверки палитрового изображения
7.1.4 Команда проверки полноцветного изображения
7.2 Преобразование изображений.
7.2.1 Получение бинарного изображения отсечением по порогу яркости.
7.2.2 Преобразование палитрового изображения в полутоновое.
7.2.3 Преобразование полутонового изображения в палитровое.
7.3 Другие функции преобразования.
7.3.1 Диффузионное ( ) цветов.
7.3.2 Преобразование полноцветного изображения в палитровое.
7.1 Определение типа изображения
В IPT пакете существуют команды, позволяющие определить тип изображения. Т.к. типов изображения – 4, то и команд 4:
1) ISBW – команда проверки бинарного изображения.
2) ISGRAY - команда проверки полутонового изображения.
3) ISIND - команда проверки палитрового изображения.
4) ISRGB - команда проверки полноцветного изображения.
7.1.1 Команда проверки бинарного изображения.
ISBW
Синтаксис: flag=isbw(s)
Описание: результат работы команды – если выводится 1, то это значит, что анализируемое изображение бинарное, если 0 – изображение не является бинарным.
Массив является бинарным, если он удовлетворяет следующим условиям:
1) Является двумерным;
2) Имеет формат double, при этом все его элементы имеют значения 0 или 1, или имеет формат uint8;
3) Для этого массива установлен логический флаг, который является некоторым атрибутом массивов MATLAB и который может быть установлен функцией logical.
Сопутствующие функции: isind, isgray, isrgb, islogical, logical.
7.1.2 Команда проверки полутонового изображения.
ISGRAY
Синтаксис: flag=isgray(s);
Описание: данная функция возвращает 1, если изображение полутоновое и 0 в противном случае.
Массив является полутоновым, если он удовлетворяет следующим условиям:
1) Является двумерным;
2) Имеет формат double, при этом значения всех его элементов принадлежит диапазону [0,1].
3) Имеет формат uint8 вне зависимости от логического флага.
4) Сопутствующие функции: isind, isbw, isrgb, islogical, logical.
7.1.3 команда проверки палитрового изображения.
ISIND
Синтаксис: flag=isind(s);
Описание: функция isind возвращает 1, если изображение s является палитровым и 0 в противном случае.
Как известно, массив представляет собой палитровое изображение, если он удовлетворяет следующим условиям:
1) Является двумерным;
2) Имеет формат представления double, при этом значение всех его элементов являются целыми числами, большими нуля;
3) Если имеет формат представления данных uint8 и логический флаг сброшен.
Существует ли некоторая неоднозначность при определении типа изображения с помощью рассмотренных функций:
Isbw, isgray isind? Да. Почему? Потому что один и тот же массив может одновременно считаться бинарным и полутоновым, полутоновым и палитровым изображением. Сказанное не противоречит здравому смыслу.
Так, действительно, бинарное изображение может рассматриваться как частный случай полутонового и т.д.
В ряде случаев необходимо учитывать особенности работы функций Isbw, isgray isinit.
Проанализируем на примерах работу этих функций для различных вариантов массива, состоящего только из 0-ей и1-ц.
Естественно, если массив будет состоять не только из 0-ей и1-ц, результат будет иным.
%examp2m
%пример, демонстрирующий работу функций Isbw, isgray isind
Im=[1 0 1 0 1];
%массив в формате double, логический флаг сброшен
Isbw(Im);
ans
%будет выведено
%=0
Isgray(Im);
ans
%=1
Isind(Im);
ans
%=0
Im=logical(Im);
%массив в формате double, логический флаг установлен
Isbw(Im);
ans
%=1
Isgray(Im);
ans
%=1
Isind(Im);
ans
%=0
Im=[1 0 1 0 1];
Im=uint8(Im);
%массив в формате double, логический флаг сброшен
Isbw(Im);
ans
%=0
Isgray(Im);
ans
%=1
Isind(Im);
ans
%=1
Im=logical(im);
%массив в формате uint8, логический флаг установлен
Isbw(Im);
ans
%=1
Isgray(Im);
ans
%=1
Isind(Im);
ans
%=0
7.1.4 Команда проверки полноцветного изображения.
Для этого существует следующая функция: ISRGB.
Синтаксис: flag=isrgb(s);
Описание: функция isrgb возвращает 1, если s является полноцветным изображением и 0 в противном случае.
Считается, что массив представляет собой полноцветное изображение, если он удовлетворяет следующим условиям:
1) Является трехмерным массивом размером MxNx3, где M – число строк изображения, а N – число столбцов изображения.
2) Имеет формат представления данных double, при этом значения всех элементов принадлежат диапазону [0,1];
3) Или имеет формат uint8;
4) Логический флаг сброшен
7.2 Преобразование типов изображений
При обработке изображений возникает необходимость преобразования одного вида изображения в другое. В IPT имеются функции как для преобразования одного вида изображения в другое, так и обратного преобразования.
7.2.1 Бинарное отсечение по порогу яркости.
Это преобразование используется наиболее часто.
Функция:IM2BW
Синтаксис: BW=im2bw(s, threshold); BW=im2bw(x, map, threshold)
Описание: указанная функция im2bw создает бинарное изображение путем отсечения по порогу яркости.
Для этой цели сначала полноцветное и палитровое изображение конвертируются в полутоновое. Пикселы результирующего бинарного изображения BW принимают 2 значения 0(черный цвет), если яркость анализируемого пикселя меньше установленного порога – threshold, или значение 1(белый цвет), если яркость соответствующего пикселя исходного изображения наоборот, больше либо равно threshold(порогу). Порог задается в диапазоне [0,1]. Часто эту операцию называют бинаризацией по порогу.
Как используется функция? Первая функция BW=im2bw(s, threshold) используется для преобразования полутонового или полноцветного изображения s в бинарное BW.
Вторая функция BW=im2bw(x, map, threshold) используется для преобразования палитрового изображения x с палитрой map в бинарное BW.
Какой формат имеет исходное и результирующее изображения? Исходное изображение может иметь формат представления данных double или uint8. Результирующее изображение имеет формат uint8.
?дальше пример.
7.2.2 Преобразование палитрового изображения в полутоновое.
Функция: IND2GRAY
Синтаксис: I=ind2gray(x, map)
Описание: функция ind2gray создает полутоновое изображение I, преобразуя R-, G-, B- составляющие из палитры map, соответствующие индексам палитрового изображения x, в значение яркости.
? Яркость полагают равной Y- составляющей цветовой системы YIQ.
Для преобразования в цветовую систему YIQ внутри функции rgb2gray используется функция rgb2ntsc.
Форматы представления данных исходного x и результирующего I совпадают.
7.2.3 Преобразование полутонового изображения в палитровое.
Функция: GRAY2IND
Синтаксис: [x, map]=gray2ind(I, n)
Описание: функция gray2ind создает палитровое изображение x с палитрой map, преобразуя полутоновое изображение I. Палитра map содержит и градации серого цвета равномерно распределенные в диапазоне [0,1]. По умолчанию значение n=64.
Для создания палитры внутри функции gray2ind вызывается функция gray(n). Если n<=256, то результирующее палитровое изображение x имеет формат представления данных uint8. В противном случае x имеет формат double.
7.3 Другие функции преобразования.
Кроме функций, приведенных в качестве примеров преобразования изображений, существуют следующие функции:
7.3.1 Диффузионное псевдосмешение цветов.
x=dither(RGB, map,Qm,Qe); BW=dither(I).
Эта функция создает палитровое изображение x с палитрой map из полноцветного, используя алгоритм Флойда – Стенберга диффузного псевдосмешения цветов.
7.3.2 преобразование полноцветного изображения в палитровое.
RGB2IND
Имеются 4- ре разновидности синтаксиса, позволяющие получить следующие виды палитровых изображений из полноцветных:
1) Палитровое изображение без уменьшения количества цветов
2) Получение раномерной палитры
3) Оптимальное преобразование палитры
4) Использование некоторой предопределенной палитры
7.3.3 преобразование палитрового изображения в полноцветное .
IND2RGB
Синтаксис: RGB=ind2rgb(x, map)
Описание: исходное изображение формата uint8 или double, результирующее RGB – всегда double.
И т.д.