2013-04-15 7 views
2

У меня такой же вопрос, как у this.Colorbar не показывает цвета, которые я хочу

У меня есть изображение в градациях серого, и я рисую на нем точки. Fro строит точки, которые я использую colormap('jet'), но так как я хочу, чтобы изображение было в оттенках серого, после построения точек я возвращаю цветовой код, colormap('gray').

Но я хочу показать цветную панель! И цветная панель отображается в оттенках серого, а не «струи». Как я могу это сделать?

EDIT: Я хочу, чтобы в Colorbar отображались цвета точек!

enter image description here

+1

так что вы хотите 'jet' Colorbar в изображении с помощью' gray' Colormap ?? ? – Dan

+0

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

+0

Итак, просто для уточнения: у вас есть изображение в оттенках серого, на которое вы рисуете цветные точки. Вы хотите, чтобы цветная панель отображала цвета точек, сохраняя в оттенках серого (фоновое) изображение. Это верно? –

ответ

2

Как обсуждалось here, есть несколько способов:

  1. Если у вас есть набор инструментов для обработки изображения, использовать subimage создать независимое изображение с отдельной палитрой. Затем нарисуйте изображение, свои точки и соедините их с одним, используя linkaxes.

  2. Используйте freezeColors из файла обмена (или multiple colormaps, которого я лично не испытывал лично). Это очень простой способ создать больший набор цветов и автоматически выбирать правую часть цветовой карты для отображения изображений и цветных панелей.

  3. Как ответил андер, преобразуйте изображение в оттенках серого в RGB; Matlab не использует цветовые карты на изображениях RGB, что оставляет вам свободу рисовать ваши очки и показывать свою цветную панель независимо от изображения.

Пример кода для (3):

I = imread('cameraman.tif'); 
imshow(cat(3,I,I,I)) 

hold on 

x = @() round(size(I,1) * rand(50,1)); 
y = @() round(size(I,2) * rand(50,1)); 

plot(x(), y(), 'r.') 
plot(x(), y(), 'g.') 
plot(x(), y(), 'b.') 

colormap('jet') 
colorbar 

результат:

pic w/ points & colorbar

5

Вы должны преобразовать изображение в RGB, помещая те же данные в R-, G- и B-каналов (это будет в оттенках серого RGB изображения). Colormap в MatLab не применяется к изображениям RGB, только для индексированных. Затем нарисуйте свои точки над изображением с помощью цветовой карты, которая вам нравится.

+0

Как легко! благодаря –

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