Можно преобразовать uint8
и uint16
данные изображения к double
использование MATLAB®
double
функция. Однако преобразование между классами изменяет способ, которым MATLAB и тулбокс интерпретируют данные изображения. Если вы хотите, чтобы полученный массив был интерпретирован правильно как данные изображения, необходимо повторно масштабировать или возместить данные, когда вы преобразуете его.
Для более легкого преобразования классов используйте одну из этих функций: im2uint8
, im2uint16
, im2int16
, im2single
, или im2double
. Эти функции автоматически обрабатывают перемасштабирование и возмещение исходных данных любого класса изображений. Например, эта команда преобразует изображение RGB с двойной точностью с данными в области значений [0,1] к uint8
Изображение RGB с данными в области значений [0,255].
RGB2 = im2uint8(RGB1);
Когда вы преобразуете в класс, который использует меньше битов, чтобы представлять числа, вы обычно теряете часть информации в вашем изображении. Например, uint16
полутоновое изображение способно к хранению до 65 536 отличных оттенков серого, но uint8
полутоновое изображение может сохранить только 256 отличных оттенков серого. Когда вы преобразуете uint16
полутоновое изображение к uint8
полутоновое изображение, im2uint8
квантует серые оттенки в оригинальном изображении. Другими словами, все значения от 0 до 127 в оригинальном изображении становятся 0 в uint8
изображение, значения от 128 до 385 всего становятся 1 и так далее.
Не всегда возможно преобразовать индексируемое изображение от одного класса памяти до другого. В индексируемом изображении матрица изображений содержит только индексы в палитру, а не сами цветные данные, таким образом, никакое квантование цветных данных не возможно во время преобразования.
Например, uint16
или double
индексируемое изображение с 300 цветами не может быть преобразовано в uint8
, потому что uint8
массивы имеют только 256 отличных значений. Если вы хотите выполнить это преобразование, необходимо сначала сократить количество цветов в изображении с помощью imapprox
функция. Эта функция выполняет квантование на цветах в палитре, чтобы сократить количество разных цветов в изображении. Смотрите Уменьшают Цвета Индексируемого Изображения Используя imapprox для получения дополнительной информации.