#image #matlab #image-processing
#изображение #matlab #обработка изображений
Вопрос:
Итак, я столкнулся со странной проблемой с функцией MATLAB imread (), когда она не может прочитать старые изображения (в данном случае bmp с 2002 года). По сути, когда я передаю изображение в качестве аргумента imread(), оно распознает изображение как оттенки серого, даже если оно явно RGB.
Изображение является частью стандартного набора тестов, доступного для загрузки здесь. Я использую изображение ‘boy.bmp’.
% In Downloads folder
I_dl = imread('boy.bmp');
whos %to show current variables
ВЫВОД:
Name Size Bytes Class Attributes
I_dl 512x768 393216 uint8
Размер изображения на самом деле составляет около 390 КБ, так что дело не в том, что в рабочую область каким-то образом загружается только один канал. Похоже, это связано с какой-то старой системой кодирования.
Я запустил imshow(), чтобы проверить изображение, и это был результат.
ВРЕМЕННОЕ РЕШЕНИЕ: я импортировал изображение в GIMP, сохранил его как xcf (собственный формат GIMP), а затем экспортировал его как bmp. Затем я сделал imread()
и затем whos
. Это работает.
Name Size Bytes Class Attributes
I 512x768x3 1179648 uint8
Размер файла также увеличился до 1,2 МБ. Странно.
Кто-нибудь еще сталкивался с такой же проблемой?
С уважением.
Ответ №1:
boy.bmp
содержит индексированное изображение. Вы должны загрузить и использовать матрицу цветовой карты:
[I_dl,cmap] = imread('boy.bmp');
imshow(I_dl,cmap);
Комментарии:
1. Боже мой. Теперь я чувствую себя глупо. Спасибо!