2015-06-10 3 views
-1

Я хотел бы прочитать пользовательское изображение и применить цветовой палитру, как в примере из Matlab. Как я могу это сделать? Я вижу, что пример imageext использует пользовательские изображения и применяет цветовые схемы, и я хотел бы сделать то же самое с моими изображениями. Как это можно сделать? Я хочу просто использовать свою собственную картинку для примера, например, imageext в Matlab.Как использовать цветную карту в Matlab?

Это не работает:

I = im2double(imread('niklas3.png')); figure(1); imshow(I,[]); daspect([1 1 1]); axis off; colormap gray;

niklas3.png:

enter image description here

Но этот код работает:

I = im2double(imread('cameraman.tif')); figure(1); imshow(I,[]); daspect([1 1 1]); axis off; colormap summer;

+1

не ясно, ожидаете ли вы поместить в массиве с одноканальным изображением и получить из трех цветных каналов или вы просто хотите визуализировать его с помощью цветовой карты? – Mikhail

+1

Не могли бы вы привести пример, на который вы ссылаетесь? Либо добавив ссылку, либо лучше, включив изображение напрямую. – Cat

+0

Мне нужен эффект colormap с моей фотографией, похожий на то, что происходит с 'I = im2double (imread ('cameraman.tif')); Рисунок 1); imshow (I, []); daspect ([1 1 1]); ось выключена; colormap summer; '. Но цветовой код никогда не работает с моими изображениями. –

ответ

2

Yo u может применять цветовую карту любого изображения, которое вы хотите, если оно было ранее отображено на фигуре.

Я рекомендую вам использовать imagesc или imshow для отображения изображений. Для этого вам нужно загрузить изображение с imread. Хорошей практикой является преобразование ваших данных изображения в двойную точность.

I = im2double(imread('cameraman.tif')); 

Как вы можете видеть, im2double преобразует данные изображения с двойной точностью в диапазоне от 0 до 1 значений величин. Если вы этого не хотите, вы можете использовать функцию double, от 0 до 255.

Позже вам необходимо отобразить изображение на фигуре. Я настоятельно рекомендую использовать imagesc вместо imshow, потому что imagesc позволяет настроить ваши данные и ваш дисплей (например, добавив другую цветовую карту).

figure(1); imagesc(I); daspect([1 1 1]); axis off; 

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

colormap gray; 

Если вы построены несколько изображений, необходимо указать прицельное изображение с:

figure(1); colormap gray; 

Если вы хотите использовать imshow, просто введите:

figure(1); imshow(I,[]); daspect([1 1 1]); axis off; colormap gray; 

Отредактировано: После того, как я увидел изображение, я знал, что Ваша проблема в том, что вы пытаетесь применить цветовую палитру в RGB изображения. То есть вы пытаетесь применить его в 3D-матрице, где строки и столбцы определяют значение пикселя, а третье измерение идентифицирует компоненты RGB.

Итак, вам необходимо преобразовать изображение RGB в 2D-матрицу (черно-белое изображение). Вы можете сделать это, выполнив среднее значение по третьему измерению.

I = nanmean(I,3); 

Наконец, вы должны применить палитру цветов, как я уже говорил. Окончательный код будет:

I = im2double(imread('niklas3.jpg')); 
I = nanmean(I,3); 
figure(1); imshow(I,[]); daspect([1 1 1 ]); axis off; 
colormap jet; 

Это результат использования струи палитры:

Jet colormap applied to the RGB image

+0

Спасибо за ответ. Но это не работает для меня. Цветовая палитра не относится к изображению, которое находится на моей фигуре. Все работает, кроме цветовой карты, и я не получаю сообщение об ошибке. –

+1

Скопируйте и вставьте свой код. Может быть, я могу помочь вам, если вы это сделаете. –

+0

Я пробовал с этим кодом 'I = im2double (imread ('niklas2.jpg')); Рисунок 1); imread (I, []); daspect ([1 1 1]); ось выключена; colormap grey ", который загрузил изображение на фигуру, но не применил цветовой код. –

Смежные вопросы