Можно преобразовать uint8
и данные изображения uint16
к double
с помощью
функции MATLAB® double
. Однако преобразование между классами изменяет способ, которым MATLAB и тулбокс интерпретируют данные изображения. Если вы хотите, чтобы полученный массив был интерпретирован правильно как данные изображения, необходимо повторно масштабировать или сместить данные, когда вы преобразовываете его.
Для более легкого преобразования классов используйте одну из этих функций: im2uint8
, im2uint16
, im2int16
, im2single
или im2double
. Эти функции автоматически обрабатывают перемасштабирование и возмещение исходных данных любого класса изображений. Например, эта команда преобразовывает изображение RGB с двойной точностью с данными в области значений [0,1] к изображению RGB uint8
с данными в области значений [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 для получения дополнительной информации.