MATLAB: Fake colorbar for image

colorbar

I would like to be able to show an image like the example below, but instead make a fake color scale that is not related to the image values. The scale would ideally look like a colorbar, but I would choose the number of colors in the scale, the text label of each color, and its RGB value. My example below might have 4 color patches: 'Red Pepper' [194 24 25], 'Green Pepper' [157 153 47], 'Purple Cloth' [134 94 157], and 'White Garlic' [255 255 255]. Or it could have a different number of color patches. I do not want to do any image processing on the image, just annotate it. Is this possible?
figure;
I = imread('peppers.png'); % Read in example image
imshow(I); % Show image
colorbar; % Not what we want, since it is a continuous color map which is automatically labelled 0, 0.2, 0.4, ...1
% Instead we want a color scale with with the color patch RGB values and text labels supplied by the user

Best Answer

Do you mean like this:
% Read in the color demo image.
[rgbImage, colorMap] = imread('peppers.png');
imshow(rgbImage, colorMap);
axis on;
title('Original Color Image', 'FontSize', fontSize);
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
drawnow;
% 'Red Pepper' [194 24 25], 'Green Pepper' [114 24 55], 'Purple Cloth' [117 74 26], and 'White Garlic' [255 255 255].
cMap = [194 24 25;114 24 55; 117 74 26; 255 255 255]/255
colormap(cMap);
colorbar('Ticks',32:64:255,...
'TickLabels',{'Red Pepper','Green Pepper','Purple Cloth','White Garlic'},...
'FontSize', 20);
I think your color definitions are strange though. Purple and green seem switched.