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


5.4. Функции imread и imwrite

При работе с файлами изображений, представленных в форматах bmp, png, gif, jpeg, tif и т.д., используются функции чтения

[X, map] = imread(filename, fmt)

и записи

imwrite(X, map, filename, fmt)

Здесь X – матрица точек изображения; map – цветовая карта изображения; filename – путь к файлу; fmt – графический формат файла изображения.

Работа функции imread() была подробно рассмотрена в п. 3.4. Ниже приведен пример ее использования для загрузки растрового изображения

[A, map]=imread('1024.bmp','bmp');

где A – матрица размером 1024х1024xN точек; map – цветовая карта загруженного изображения. Значение N показывает число байт, расходуемых на представление точки изображения. Например, если изображение представляется в формате RGB с 24 бит/пиксел, то N=3. Если же загружается изображение с 256 градациями серого (8 бит/пиксел), то N=1.

После обработки изображение A можно обратно сохранить в файл, используя следующую запись:

imwrite(A, map, 'out_img.bmp', 'bmp');

В результате в рабочем каталоге MatLab будет сохранено изображение в формате bmp с исходной цветовой картой. Однако следует отметить, что если загруженное изображение A было преобразовано, например, в формат double

A = double(A);

то непосредственная запись такой матрицы как изображение невозможно. Дело в том, что значения матрицы A должны соответствовать целым числам в диапазоне от 0 до 255, т.е. являться байтовыми числами. Этого можно добиться преобразованием типов при записи изображения в файл следующим образом:

imwrite(uint8(A), map, 'out_img.bmp', 'bmp');

Здесь uint8 – беззнаковый целый тип в 8 бит.

В качестве переменной map можно указывать любые другие цветовые карты (hot, hsv, gray, pink, cool, bone copper) отличные от исходной. Например, для записи изображения в 256 градациях серого можно записать

imwrite(uint8(A), gray(256), 'out_img.bmp', 'bmp');

При этом матрица A должна иметь размерность MxNx1, т.е. один байт на пиксел.

 



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