Преобразуйте данные изображения между типами данных

Обзор преобразований типа данных image

Можно преобразовать uint8 и uint16 данные изображения к double использование MATLAB® double функция. Однако преобразование между типами данных изменяет способ, которым MATLAB и тулбокс интерпретируют данные изображения. Если вы хотите, чтобы полученный массив был интерпретирован правильно как данные изображения, необходимо перемасштабировать или возместить данные, когда вы преобразуете его.

Для более легкого преобразования типов данных используйте одну из этих функций: im2uint8, im2uint16, im2int16, im2single, или im2double. Эти функции автоматически обрабатывают перемасштабирование и возмещение исходных данных любого типа данных image. Например, эта команда преобразует изображение 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 для получения дополнительной информации.