
Лабораторна робота № 1
Работа с изображениями.
Загрузка изображений
Для загрузки изображений в рабочее пространство MATLAB используется функция imread со следующим синтаксисом:
imread('f ilename')
Например,
>> f=imread('chestxray.jpg');
Некоторые графические форматы, распознаваемые командами imread и imwrite, начиная с MATLAB 6.5
-
Формат изображения
Допустимые изображения
Расшифровка сокращения
TIFF
.tif, .tiff
Tagged Image File Format
JPEG
.jpg, .jpeg
Joint Photographic Experts Group
GIF
.gif
Graphics Interchange Format
BMP
.bmp
Windows Bitmap
PNG
.png
Portable Network Graphics
XWD
.xwd
X Window Dump
Функция size (f) возвращает размер изображения, т. е. число строк и столбцов:
Например,
>> size(f)
ans =
1024 1024
Эта функция будет особенно полезной при автоматическом определении размера изображения, которое делается операцией:
» [M,N] = size(f);
При такой записи переменной М будет присвоено число строк изображения, а переменной N — число столбцов.
Функция whos сообщает дополнительную информацию о массиве. Например, строка
>> whos f
дает следующий результат:
Name Size Bytes Class
f 1024x1024 1048576 uint8 array
Grand total is 1048576 elements using 1048576 bytes
Вывод изображения на дисплей
Изображения можно вывести на дисплей компьютера с помощью функции imshow, которая имеет следующий синтаксис:
imshow(f, G),
где f — это матрица изображения, a G — это число уровней яркости, используемое при отображении этого изображения. Если аргумент G опущен, то по умолчанию принимается 256 уровней яркости.
Команда imshow(f, [low high]) означает, что все пикселы со значением не больше числа low надо показывать черными, а все пикселы со значениями не меньше числа high — белыми. Все промежуточные значения показываются с промежуточной яркостью с использованием числа уровней, принятому по умолчанию.
Команда imshow(f, [ ]) задает для переменной low минимальное значение массива f, а переменной high присваивается его максимальное значение. Такая форма функции imshow бывает полезной при показе изображений, имеющих узкий динамический диапазон значений пикселов, или когда среди них имеются положительные и отрицательные значения.
Если теперь показать другое изображение, скажем, g, с помощью функции imshow, то MATLAB поместит его на место старого. Чтобы сохранить на рабочем столе предыдущее изображение, можно использовать команду figure. Если набрать строку
>> imshow(f), figure, imshow(g)
то будут показаны оба изображения.
Функция pixval часто используется для интерактивного определения значений яркости отдельных пикселов. Эта функция отображает курсор, расположенный поверх изображения. Курсор перемещается по изображению вместе с мышью, а под окном изображения отображаются текущие координаты курсора и значение интенсивности в этой точке. При работе с цветным изображением вместе с координатами отображается интенсивность (яркость) красной, зеленой и синей компоненты цветного пиксела. При нажатии и удержании левой клавиши мыши функция pixval показывает евклидово расстояние от исходного до текущего положения курсора. Нажатие кнопки X в окне курсора отключает курсор на изображении.
Сохранение изображений
Изображения записываются на диск функцией imwrite, которая имеет следующий синтаксис:
imwrite(f, 'filename')/
Более общий синтаксис функции imwrite, применяемый только к файлам в формате JPEG, имеет следующий вид:
imwrite(f, 'filename.jpg', 'quality', q),
где q — это целое число в интервале от 0 до 100 (чем меньше это число, тем выше степень искажения при сжатии файла в формате JPEG).
Чтобы определить степень достигнутой компрессии (сжатия) и получить другую информацию о файле изображения, можно использовать функцию imf info, которая имеет вид imfinfo filename, где filename — это полное имя файла изображения, хранящегося на диске.
Для нахождения числа байтов в исходном (несжатом) изображении надо просто перемножить величины Widht, Height и BitDepth, а затем разделить полученное произведение на 8. Если результат разделить на FileSize, то получится степень сжатия, которая показывает во сколько сокращается времени передачи сжатых изображений.
Информационные поля, которые выводятся на экран функцией imf info, можно ввести в структурные переменные, которые затем можно использовать в последующих вычислениях.
Например,
>> К = imf info('filename.jpg'') ;
для сохранения в переменной К всей информации, генерируемой командой imf info.