Как узнать тип изображения

когда я использую imread в MATLAB и читать изображение, как бы я знал, если это RGB, серый масштаб или один программно?

    I1 = imread('sample_image.jpg');

как я могу знать, какого типа I1 перед любым преобразованием?

1 ответов


можно использовать imfinfo чтобы получить информацию о файле изображения перед его загрузкой:

info = imfinfo('sample_image.jpg');
info.ColorType % e.g. 'grayscale', 'truecolor', 'indexed'
info.BitDepth % e.g. 8, 16

вы также можете посмотреть раздел справки по imread, чтобы узнать, каким будет выходной класс для разных типов файлов. Проблема заключается в определении разницы между изображением в оттенках серого и индексированным цветовым файлом - они будут иметь одинаковый размер и класс. В этом случае вам нужно проверить ColorType заранее загрузить карту, когда вы читаете изображение:

[I, map] = imread(filename)