Как сохранить изображения с цветовой картой в MATLAB

Я использую спутниковые данные HDF для извлечения полос, из которых я заключаю различные индексы растительности. Каждая полоса в данных hdf представлена ​​в формате серого цвета, это изображение в шкале серого цвета. После обработки данных HDF я могу преобразовать их в цвет с помощью карты цветов (я использую jet для карты цветов). Я сомневаюсь, как преобразовать изображение в оттенках серого в цветную карту при использовании imwrite. Как использовать карту цветов в imwrite. Я пробовал много раз, но на выходе только полностью синий цвет, это портит выходное изображение. Пожалуйста, помогите мне сделать это.


person prabu    schedule 29.09.2014    source источник


Ответы (2)



Попробуйте использовать функцию ind2rgb перед использованием imwrite, если вы хотите сохранить как .jpg, но если вы используете формат индексируемого изображения (например, .png), вы можете просто использовать imwrite напрямую как показано в документации:

imwrite(X, map, filename)

где X — ваше изображение в оттенках серого, map — ваша цветовая карта (т. е. jet), а filename — это имя изображения, которое вы хотите сохранить, оканчивающееся на .png.

person Dan    schedule 29.09.2014
comment
imwrite(NDVI,ind2rgb,'/var/www/html/uploads/mynewwwww.jpg','jpg'); Ошибка при использовании ind2rgb (строка 17) Недостаточно входных аргументов. - person prabu; 29.09.2014
comment
imwrite(NDVI,jet,'/var/www/html/uploads/mynew2www.jpg'); Даже сейчас я получаю полное синее изображение экрана. Если я использую цветовую карту для изображения в градациях серого, которое уже записано в изображение в градациях серого, я получаю правильный вывод цвета. это означает, что нужно записать изображение в оттенках серого в 1.jpg, после чего преобразовать этот 1.jpg в цветовую карту. Оно работает.. - person prabu; 29.09.2014
comment
@prabu, пожалуйста, прочитайте документы для ind2rgb, вы даже отдаленно не используете его правильно. Это функция, которая требует параметров и выводит изображение RGB, а не карту! Что касается вашей второй попытки, я специально сказал использовать .png и НЕ .jpg - person Dan; 29.09.2014
comment
это .png для выходного изображения? это означает imwrite(NDVI,jet,'/var/www/html/uploads/mynew2www.png'); здесь NDVI — обработанное изображение (оттенки серого), струя — для цветовой карты. - person prabu; 29.09.2014
comment
@prabu можно конкретику? Также каков диапазон значений NDVI? - person Dan; 29.09.2014
comment
ширина: 1243 пикселя высота: 6120 пикселов Изображение. - person prabu; 29.09.2014
comment
@prabu это не имеет значения. Если вы не объясните (а) что не работает точно и (б) каков диапазон значений внутри NDVI, т. е. являются ли они целыми числами от 0 до 255 , это двойники от 0-1, что-то среднее??? то помочь вам невозможно - person Dan; 29.09.2014
comment
на самом деле ndvi рассчитывается по формуле NIR-RED/NIR+RED , это полосы из данных HDF (данные со спутника Oceansat). HDF заполнен двоичными значениями. он состоит из разных полос информации, из которых я хочу рассчитать NDVI. Рассчитано, но в оттенках серого из-за двоичного кода 0 1. Размер одного файла HDF составляет ~ 200 МБ. - person prabu; 29.09.2014
comment
@prabu, если он двоичный, то зачем вам применять цветовую карту ?? Если это логическая матрица, вам следует преобразовать ее в двойную, используя либо NDVI = NDVI*1, либо NDVI = NDVI*255, и вам, вероятно, следует использовать двоичную цветовую карту, например jet(2). - person Dan; 29.09.2014