Форматы представления данных.
5.1 Представление элементов массива в формате double.
5.2 Представление элементов массива в формате uint8.
5.3 Представление изображения массивом в формате double.
5.4 Представление изображения массивом в формате uint8.
В пакете IPT существует два формата double и uint8. В этих форматах могут представляться как элементы изображения, так и сами изображения. Для этого имеется четыре функции:
DOUBLE – для представления элементов массива в формате double,
UINT8 - для представления элементов массива в формате uint8,
IM2DOUBLE – для представления изображения массивом в формате double,
IN2UINT8- для представления изображения массивом в формате uint8.
Рассмотрим особенности применения этих форматов.
5.1 Представление элементов массива в формате double.
Команда: DOUBLE
Синтаксис: D= double(s) (дабл)
Описание: функция D= double(s) преобразует элементы массивов чисел S в действительные числа двойной точности и помещает их в новый массив D.
Если S является массивом чисел в формате double, то осуществляется копирование из массива S в D.
Где используется данная функция? Данная функция используется для преобразования данных матрицы изображения из формата uint8 в формат double.
Сопутствующие функции: im2double, uint8, im2uint8.
5.2 Представление элементов массива в формате uint8.
Команда: UINT8
Синтаксис: D= uint8(s)
Описание: функция D= uint8(s) преобразует элементы массива S в целые неотрицательные числа в диапазоне [0, 255] и помещает их в новый массив D.
Если S – массив данных в формате uint8, то осуществляется копирование из массива S в массив D.
Данная функция используется для изменения представления данных матрицы изображения из формата double в формат uint8.
Каковы особенности применяемой функции D= uint8(s)?
Система MATLAB не осуществляет в этом плане никакого контроля соответствия и грамотного использования тех или иных функций. Обязанность следить за правильностью преобразования полностью возлагается на пользователя.
Что имеется ввиду?
1) При использовании команды D= uint8(s), дробная часть отбрасывается. Поэтому рекомендуется предварительно округлить значения элементов массива до ближайшего целого. Для этого используется функция round, например:
D= uint8(round(s)).
2) Для элементов массива S вне диапазона [0, 255] значения в массиве D не определены и могут быть различными для различных вычислительных платформ.
Так, например, на платформе Intel при преобразовании из double в uint8 сначала исходное число преобразуется в целое число, а затем берется младший байт этого числа.
Так, значение 256 из массива S будет преобразовано в 0, т. к. младший байт целочисленного представления числа 256 равен 0.
3) Отрицательные целые числа хранятся в памяти ПК в дополнительном коде. Значение – 1 из массива S будет преобразовано в 255 т. к. младший байт представления в дополнительном коде числа – 1 равен 255.
Пример.
%examp1.m
%пример демонстрирует использование функции uint8
X=[-10.3 -1.9 0.0 15 100.8 255.2 300.3 600.9]
Y=uint8(X)
%будет выдано
%Y= 246 255 0 10 100 255 44 88
Z=uint8(round(X))
%будет выдано
%Z= 246 254 0 10 100 255 44 88
Сопутствующие функции: DOUBLE, IM2UINT8, IM2DOUBLE.
5.3 Представление изображения массивом в формате double.
Команда: IM2DOUBLE
Синтаксис: D=im2double(S); XD=im2double(XS, ‘index’).
Описание: функция im2double позволяет представить все пикселы матрицы изображения в виде действительных чисел двойной четкости. При реализации этой функции, в отличие от функции double, осуществляется приведение значения пикселов к требуемому диапазону. Для бинарных, полутоновых и полноцветных изображений это диапазон [0,1], а для палитровых изображений – [1,N], где N – количество цветов в палитре.
Функция D=im2double(S) преобразует бинарные, полутоновые и полноцветные изображения S в формат double и помещает новый результат в матрицу D. Такое преобразование осуществляется со следующими соотношениями:
Бинарное - D=im2double(S);
Полутоновое – D=double(S)/255;
Полноцветное – D=double(S)/255
Функция XD=im2double(XS, ‘indexed’) преобразует в формат double палитровые изображения XS и помещает результат в полученную матрицу XD.
Такое преобразование описывается соотношением :XD=double(XS)+1
Сопутствующие функции: DOUBLE, UINT8, IM2UINT8.
5.4 Представление изображения массивом в формате uint8.
Команда: IM2UINT8
Синтаксис: D=im2uint8(S); XD=im2uint8(XS, ‘indexed’).
Описание: функция im2uint8 позволяет представить все пикселы изображения в виде целых неотрицательных чисел в диапазоне [0,255].
При конвертировании, в отличие от функции uint8, осуществляется приведение значений пикселов к требуемому диапазону.
Функция D=im2uint8(S) преобразует в формат uint8 бинарное, полутоновое и полноцветное изображение S и помещает результат в новую матрицу D. преобразование осуществляется в соответствии со следующим соотношением:
Таблица ..
Бинарное | D=logical(uint8(S)) |
Полутоновое | D=uint8(round(S*255)) |
Полноцветное | D=uint8(round(S*255)) |
Функция XD=im2uint8(XS, ‘indexed’) приводит к формату uint8 палитровые изображения XS и помещает результат в новую матрице XD. Такое преобразование описывается соотношением:
XD=uint8(round(XS-1)).
Сопутствующие функции: DOUBLE, UINT8, IM2DOUBLE.
Рассматривая форматы представления данных, следует иметь ввиду, что имеются отдельные команды для представления всего изображения ( массив данных изображения). В этом случае перед названием формата добавляется приставка im2. Кроме того для форматов палитрового изображения имеются две отдельные команды.
Для представления элементов массива имеются отдельные команды.
Это объясняется тем, что необходимо представлять изображение целиком и необходимо представлять отдельные элементы изображения.