Last updated on November 2nd, 2013
You have an image, and you would like to highlight certain select pixels in the image a different color, say green.
Here’s how to draw and highlight specific pixels on an image while leaving the background intact.
Remember a color image is nothing more than a matrix composed of numbers. A color image simply has three matrices, one for each color channel.
So you have your original image in the variable:
And a binary image where a 0 represent the background and a 1 represents the pixels you want to highlight in the variable:
You can almost simply add the two images together… Here’s a commented and worked out example of how to highlight select pixels in an image.
%% Example on how to color select pixels in an image. % % Kawahara (2013). % The original COLOR image. origImg = imread('ngc6543a.jpg'); % Make sure the values are within 0-255. origImg = uint8(origImg); % View the original image. figure; fId = imagesc(origImg); axis image; title('click and hold mouse to draw on the original image'); % The user draws on the image to select the pixels to highlight. M = imfreehand(); % 0 = background pixels (do not change). % 1 = foreground pixels (change these colors). maskImg = M.createMask; % View the black and white mask. figure; imagesc(maskImg); colormap gray; axis image; % Now let's color the mask green to make it more interesting. % To do this, we have to make three matrices, one for each color channel. % Increase the color by half the max value so we can see some transparancy % in the original image. amountIncrease = 255/2; alphaImg(:,:,1) = zeros(size(maskImg)); % All zeros. alphaImg(:,:,2) = round(maskImg*(amountIncrease)); % Round since we're dealing with integers. alphaImg(:,:,3) = zeros(size(maskImg)); % All zeros. % Convert alphaImg to have the same range of values (0-255) as the origImg. alphaImg = uint8(alphaImg); % View alphaImg. figure; imagesc(alphaImg); axis image; % Combine the original images and the alpha values to highlight the select % pixels. blendImg = origImg + alphaImg; % Show the blended images. figure; imagesc(blendImg); axis image;
And that’s all there is too it 🙂