Я использую спутниковые данные HDF для извлечения полос, из которых я заключаю различные индексы растительности. Каждая полоса в данных hdf представлена в формате серого цвета, это изображение в шкале серого цвета. После обработки данных HDF я могу преобразовать их в цвет с помощью карты цветов (я использую jet для карты цветов). Я сомневаюсь, как преобразовать изображение в оттенках серого в цветную карту при использовании imwrite. Как использовать карту цветов в imwrite. Я пробовал много раз, но на выходе только полностью синий цвет, это портит выходное изображение. Пожалуйста, помогите мне сделать это.
Как сохранить изображения с цветовой картой в MATLAB
Ответы (2)
Зачем использовать имрайт? Вы можете использовать имшоу.
Пример:
- им-шоу (им)
- imshow (им, 'Цветовая карта', струя (255))
Со ссылкой: http://www.alecjacobson.com/weblog/?p=1655 а>
person
lakesh
schedule
29.09.2014
Нет, я хочу написать это изображение для отображения в веб-интерфейсе. Это веб-приложение.
- person prabu; 29.09.2014
Мистер Лакеш, выше вы сказали правильно. Но при использовании imwrite выходное сохраненное изображение окрашено в синий цвет. colormap не работает с imwrite.
- person prabu; 29.09.2014
Попробуйте использовать функцию ind2rgb
перед использованием imwrite
, если вы хотите сохранить как .jpg
, но если вы используете формат индексируемого изображения (например, .png
), вы можете просто использовать imwrite
напрямую как показано в документации:
imwrite(X, map, filename)
где X
— ваше изображение в оттенках серого, map
— ваша цветовая карта (т. е. jet
), а filename
— это имя изображения, которое вы хотите сохранить, оканчивающееся на .png
.
person
Dan
schedule
29.09.2014
imwrite(NDVI,ind2rgb,'/var/www/html/uploads/mynewwwww.jpg','jpg'); Ошибка при использовании ind2rgb (строка 17) Недостаточно входных аргументов.
- person prabu; 29.09.2014
imwrite(NDVI,jet,'/var/www/html/uploads/mynew2www.jpg'); Даже сейчас я получаю полное синее изображение экрана. Если я использую цветовую карту для изображения в градациях серого, которое уже записано в изображение в градациях серого, я получаю правильный вывод цвета. это означает, что нужно записать изображение в оттенках серого в 1.jpg, после чего преобразовать этот 1.jpg в цветовую карту. Оно работает..
- person prabu; 29.09.2014
@prabu, пожалуйста, прочитайте документы для
ind2rgb
, вы даже отдаленно не используете его правильно. Это функция, которая требует параметров и выводит изображение RGB, а не карту! Что касается вашей второй попытки, я специально сказал использовать .png
и НЕ .jpg
- person Dan; 29.09.2014
это .png для выходного изображения? это означает imwrite(NDVI,jet,'/var/www/html/uploads/mynew2www.png'); здесь NDVI — обработанное изображение (оттенки серого), струя — для цветовой карты.
- person prabu; 29.09.2014
@prabu можно конкретику? Также каков диапазон значений
NDVI
?
- person Dan; 29.09.2014
ширина: 1243 пикселя высота: 6120 пикселов Изображение.
- person prabu; 29.09.2014
@prabu это не имеет значения. Если вы не объясните (а) что не работает точно и (б) каков диапазон значений внутри
NDVI
, т. е. являются ли они целыми числами от 0 до 255 , это двойники от 0-1
, что-то среднее??? то помочь вам невозможно
- person Dan; 29.09.2014
на самом деле ndvi рассчитывается по формуле NIR-RED/NIR+RED , это полосы из данных HDF (данные со спутника Oceansat). HDF заполнен двоичными значениями. он состоит из разных полос информации, из которых я хочу рассчитать NDVI. Рассчитано, но в оттенках серого из-за двоичного кода 0 1. Размер одного файла HDF составляет ~ 200 МБ.
- person prabu; 29.09.2014
@prabu, если он двоичный, то зачем вам применять цветовую карту ?? Если это логическая матрица, вам следует преобразовать ее в двойную, используя либо
NDVI = NDVI*1
, либо NDVI = NDVI*255
, и вам, вероятно, следует использовать двоичную цветовую карту, например jet(2)
.
- person Dan; 29.09.2014