Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Image( X1 ); colormap( map1 );. Здесь размеры m и n изображения X1 навязываются в качестве физического размера картинки в графическом окне системы MATLAB



Здесь размеры m и n изображения X1 навязываются в качестве физического размера картинки в графическом окне системы MATLAB. Для слишком маленьких картинок при этом ничего хорошего не получится.

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

[ X2, map2 ] = imread('myfile1.jpg')

и показать в графическом окне. Заметим только, что файл должен быть в текущем каталоге системы MATLAB, иначе его нужно указать вместе с полным путём к нему.

Рассмотренное нами строение данных для объекта Image, состоящее из двух матриц, одна из которых построчно задаёт цвета, а вторая своими элементами указывает входы в таблицу (матрицу) цветов, называется более точно как Indexed Image (индексированное изображение). Есть и другой тип объекта Image - так называемый Truecolor Image (картинки с очень большим количеством цветов - до 16 миллионов). Этот второй тип объектов Image устроен по-другому.

Для TruecolorImage- объектов таблица цветов не требуется, так как массивы данных таких объектов непосредственно определяют цвета.

Эти массивы имеют размер m x n x 3 (это массивы размерности 3). Величины m и n определяют размер картинки на экране (m x n пикселов), а вдоль третьего направления располагаются RGB-составляющие цвета каждого пиксела. Зададим для примера следующий массив для изображения TrueColor:

xTrue(1,1,1) = uint8(127); xTrue(1,1,2) = uint8(127); xTrue(1,1,3) = uint8(127);

xTrue(1,2,1) = uint8(19); xTrue(1,2,2) = uint8(12); xTrue(1,2,3) = uint8(255);

xTrue(1,3,1) = uint8(245); xTrue(1,3,2) = uint8(127); xTrue(1,3,3) = uint8(1);

xTrue(2,1,1) = uint8(6); xTrue(2,1,2) = uint8(203); xTrue(2,1,3) = uint8(128);

xTrue(2,2,1) = uint8(100); xTrue(2,2,2) = uint8(1); xTrue(2,2,3) = uint8(80);

xTrue(2,3,1) = uint8(60); xTrue(2,3,2) = uint8(249); xTrue(2,3,3) = uint8(5);

Массив xTrue создаёт изображение 2 x 3 пиксела с помощью вызова одной функции image(xTrue):

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

[ X, map ] = imread('name.xxx')

В случае TrueColor изображений здесь матрица X получит размер m x n x 3 а матрица палитры map будет пустой:

size(map) = 0 0

В дальнейшем функция image автоматически по размеру матрицы X распознаёт типы изображений и действует в обоих случаях как надо, а функция colormap в случае пустого массива map не делает ничего, так что оба этих случая могут быть обработаны одинаково.

Однако, если бы мы заранее знали, что в файле содержится изображение типа TrueColor, то мы бы выполняли для его чтения более короткий код

X = imread('name.xxx')

а показывали бы изображение вызовом только одной функции image(X). Чтобы заранее узнать тип изображения в файле, нужно вызвать функцию

imfinfo('name.xxx')

В частности для файла 'myfile1.jpg', созданного в предыдущем разделе данного пособия, функция imfinfo выдаст следующую информацию:

Отсюда видно, что тип изображения в файле (ColorType) есть truecolor. Это означает, что можно полностью обойтись без матрицы цветов.


#$Глава 3.





Дата публикования: 2015-01-23; Прочитано: 305 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...