Похоже, вы пишете 2D-матрицу.Эта матрица будет записана как индексированное изображение.Если цветовая карта не указана, изображение будет в градациях серого.
Если матрица img
относится к классу uint8
, IMWRITE записывает фактические значения в файл изображения.
Если матрица double
, IMWRITE предполагает, что все значения находятся в диапазоне от 0 до 1. Все отрицательные значения будут усечены до 0, а все значения больше 1 будут равны 1. Затем они масштабируются до 255 и преобразуются вuint8.
См. Поддержка классов в IMWRITE документации.
РЕДАКТИРОВАТЬ
Вот как выможет воспроизвести преобразование:
img = (rand(10)-0.5)*3;
imwrite(img,'test.bmp');
IMG = imread('test.bmp');
img2 = img;
img2(img2<0)=0;
img2(img2>1)=1;
img2 = uint8(img2*255);
%# compare imwrite vs. manual conversion
isequal(IMG,img2)
ans =
1