Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
расп обр / расп обр / Задания / Лабораторна робота1.doc
Скачиваний:
22
Добавлен:
10.02.2016
Размер:
42.5 Кб
Скачать

Лабораторна робота № 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.