При работе с файлами изображений, представленных в форматах 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, т.е. один байт на пиксел.