Вывод изображения на дисплей
Изображения можно вывести на дисплей компьютера с помощью функции imshow, которая имеет синтаксис:
imshow(fg,G);
где f – матрица изображения, а G – число уровней яркости, используемое при отображении этого изображения. Если аргумент G опущен, то по умолчанию принимается 256 уровней яркости. Команда
imshow(f,[low high])
означает, что все пиксели со значением не больше числа low надо показывать черными, а все пиксели со значениями не меньше числа high - белыми. Все промежуточные значения показываются с промежуточной яркостью с использованием числа уровней, принятому по умолчанию.
Запись в командной строке
imshow(f, [ ])
задает для переменной low минимальное значение массива f, а переменной high присваивает его максимальное значение.
Пример 1. Чтение и вывод изображения.
Следующая команда читает изображение bird.bmp, выдает основную информацию об этом изображении и отображает его с помощью функции imshow:
>> f=imread('D:\Document\bird.bmp');
>> whos f
Name |
Size |
Bytes |
Class |
f |
512x512 |
262144 |
uint8 array |
Grand total is 262144 elements using 262144 bytes |
|||
>> imshow(f , [ ])
В
результате выполнения этой команды
появится окно, содержащее рисунок,
ниспадающие меню и кнопки инструментов.
С помощью кнопок инструментов можно выполнять такие действия, как смена масштаба, сохранение и преобразование графического содержимого этого окна.
Если теперь показать другое изображение с помощью функции imshow, то MATLAB поместит его на место старого. Чтобы сохранить на рабочем столе предыдущее изображение, можно использовать команду figure. Если набрать строку
>> imshow(f), figure, imshow(g)
то будут показаны оба изображения. Если изображение имеет узкий динамический диапазон, то его можно расширить для лучшей его визуализации командой
>> imshow(g, [ ])
Сохранение изображений
Изображения записываются на диск функцией imwrite, которая имеет следующий синтаксис:
imwrite(f, ‘filename’)
При такой записи строка filename должна содержать расширение, поддерживаемое системой MATLAB (см. табл. 1). Иначе желаемый формат можно задать явно с помощью третьего аргумента функции. Например, следующая команда записывает матрицу f в изображение с форматом TIFF с именем patient:
>> imwrite(f, ‘ patient ’, ‘tif ’)
или, что эквивалентно,
>> imwrite(f, ‘ patient.tif ‘)
Если строка filename не содержит информацию о пути, то функция imwrite записывает файл в текущую рабочую папку. функция imwrite может иметь другие параметры, зависящие от выбранного формата.
Классы данных
Несмотря на то, что приходится работать с целочисленными координатами, значения самих пикселей не обязательно должны быть целыми числами. В табл. 1 перечислены разные классы данных, поддерживаемые системой MATLAB. Все численные операции в MATLAB выполняются с двойной точностью в классе данных double.
Таблица 1. Классы данных. Первые восемь классов называются числовыми, девятый — символьный класс, последний класс — логический
Имя |
Описание |
double |
Вещественные числа с плавающей запятой двойной точности в диапазоне, примерно, от — 10308 до 10308 (8 байт на число). |
uint8 |
Целые без знака в интервале [0,255] (1 байт на число). |
uintl6 |
Целые без знака в интервале [0,65535] (2 байта на число). |
uint32 |
Целые без знака в интервале [0,4294967295] (4 байта на число). |
int8 |
Целые со знаком в интервале [—128,127] (1 байт на число). |
intl6 |
Целые со знаком в интервале [—32768, 32767] (2 байта на число). |
int32 |
Целые со знаком в интервале [-2147483648, 2147483647] (4 байта). |
single |
Вещественные числа с плавающей запятой обычной точности в диапазоне, примерно, от —1038 до 1038 (4 байта на число). |
char |
Символы (буквы и знаки) (2 байта на символ). |
logical |
Значения 0 или 1 (1 байт на элемент). |
