Сохранение вывода в Imshow () - сохранение масштабированных изображений на диск - PullRequest
1 голос
/ 12 февраля 2012

Я начал изучать обработку изображений в Matlab, и у меня возникла небольшая проблема.

Я пытаюсь визуализировать БПФ изображений. Функция imshow делает то, что мне нужно, когда я поставляю пустую матрицу (например, sintax imshow (image, []).

Теперь, imshow делает хорошую работу, потому что, когда он снабжен пустой матрицей, он отображает самое низкое значение на изображении как черный, самое высокое как белый и соответственно корректирует все остальные значения. (по крайней мере, так я это понял).

Масштабирование, которое делает imshow, великолепно, и мне было интересно, есть ли функция Matlab, которая бы снимала изображение и выполняла такого рода масштабирование? Я думал о сохранении фотографий вручную после использования imshow, но я хотел бы сделать это программно.

Я предполагаю, что есть хорошая функция Matlab, которая делает это, но после поиска, я не смог найти никаких решений.

Ответы [ 3 ]

1 голос
/ 12 февраля 2012

Вам нужно изменить масштаб изображения, чтобы его минимум был равен нулю, а максимум - 255 (для 8-битного изображения) перед вызовом imwrite.

Например:

img = randn(100);
figure,imshow(img,[]); %# show the image

mx = max(img(:));
mn = min(img(:));

imgScaled = (img-mn)/(mx-mn);

%# convert to uint8 and save
imwrite( uint8(round(imgScaled*255))), 'test.tif');

%# reload and display without scaling 
%# if we have done everything correctly
%# the images before and after should look alike
imgLoaded = imread('test.tif');
figure,imshow(imgLoaded)
0 голосов
/ 12 февраля 2012

Есть много хороших ответов на этот вопрос, но для быстрого взлома вы можете print увидеть то, что вы видите на рисунке, просто посмотрите doc print для получения дополнительной информации.

0 голосов
/ 12 февраля 2012

Похоже, imagesc это то, что вы хотите, здесь .Но, естественно, для отображения БПФ вам придется избавиться от сложных значений, например, сделать что-то вроде создания величины, фазовых графиков отдельно.Но это говорит о том, что imshow уже является функцией Matlab, которая выполняет масштабирование, поэтому я не совсем уверен, зачем вам нужна новая функция;imagesc позволяет получить цвет, по крайней мере.

Затем для сохранения используйте imwrite.

...