<< ПредыдущаяОглавлениеСледующая >>


3.4. Отображение растровых изображений

Система MatLab позволяет загружать, отображать и сохранять растровые изображения, представленные в известных графических форматах: bmp, jpg, tiff, gif, png и т.д. Для загрузки изображений используется функция

imread(FILENAME,FMT);

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

A=imread('1024.bmp','bmp'); % A – 1024x1024 матрица uint8

Если исходное изображение имеет глубину цвета не более 256, то матрица A будет двумерной и каждое ее значение будет представлять соответствующий уровень яркости точки. Если же точка исходного изображения  представляется, например, 24 битами (3 байта), то матрица А будет иметь размерность 1024x1024x3, где третья размерность будет соответствовать цветовым составляющим исходного изображения. Поэтому для обработки изображений в экспериментальных целях часто используют формат с 256 градациями серого без индексации цвета.

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

A=double(imread('1024.bmp','bmp'));

В результате матрица А будет состоять из элементов типа double.

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

image(A);

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

Неверное отображение изображения объясняется несоответствием палитры цветов по умолчанию (hot), заданное в MatLab, с палитрой цветов загруженного изображения (gray(256) ). Для замены одной палитры на другую используется функция

colormap(gray(256));

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

Рис. 3.14. Результат работы функции image

Рис. 3.15. Коррекция цветовой палитры функцией colormap

Если цветовая палитра заранее неизвестна на момент загрузки изображения, то ее можно узнать, используя второй возвращаемый параметр функции imread:

[A, map]=imread(‘1024.bmp’,’bmp’);
image(A);
colormap(map);

где map – цветовая карта текущего изображения.

При работе с изображениями возникают ситуации, когда диапазон значений элементов матрицы A может не соответствовать диапазону значений цветовой карты, например, gray(256). В результате отображения такой матрицы на экране монитора изображение будет показываться некорректно и некоторые его детали будут незаметны. Чтобы избежать такой ситуации, диапазон значений и диапазон цветовой карты должны совпадать. Это можно сделать искусственно, масштабируя соответствующим образом значения элементов матрицы А. Однако MatLab предоставляет функцию

imagesc(A);

которая делает это автоматически. Благодаря ее использованию, масштаб значений матрицы А всегда будет приведен к масштабу цветовой карты.

 



<< ПредыдущаяОглавлениеСледующая >>