Как преобразовать изображение из double в uint8 в matlab?

у меня есть картинка I типа double. Я хочу преобразовать изображение из double to uint8. Я пробовал использовать оба:

  1. I=uint8(I)
  2. I=im2uint8(I).

когда я использую imshow(I) команда, я получаю только черное изображение и ничего больше. Что я делаю не так?

1 ответов


The im2uint8 функция предполагает, что double изображение масштабируется в диапазоне [0,1]. Если ваше изображение имеет значения больше, чем 1 или меньше 0, эти значения будут обрезаны. Рассмотрим следующий пример:

im2uint8([-1 0 0.5 1 2])
ans =
    0    0  128  255  255

раствор для масштабирования входного изображения к [0,1] путем вычитания минимального значения и деления на общий диапазон:

I = (I - min(I(:))) / (max(I(:)) - min(I(:)));
I = im2uint8(I);
imshow(I);