Преобразуйте данные изображения между классами

Обзор преобразований класса изображений

Можно преобразовать 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 для получения дополнительной информации.