Система 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.
При работе с изображениями возникают ситуации, когда диапазон значений элементов матрицы A может не соответствовать диапазону значений цветовой карты, например, gray(256). В результате отображения такой матрицы на экране монитора изображение будет показываться некорректно и некоторые его детали будут незаметны. Чтобы избежать такой ситуации, диапазон значений и диапазон цветовой карты должны совпадать. Это можно сделать искусственно, масштабируя соответствующим образом значения элементов матрицы А. Однако MatLab предоставляет функцию
imagesc(A);
которая делает это автоматически. Благодаря ее использованию, масштаб значений матрицы А всегда будет приведен к масштабу цветовой карты.