# MATLAB – how to highlight select pixels in an image

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: `origImg`

And a binary image where a 0 represent the background and a 1 represents the pixels you want to highlight in the variable: `maskImg`

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 ðŸ™‚

## 5 thoughts on “MATLAB – how to highlight select pixels in an image”

Dear Sir,
I am doing the DWT on an image and I would like to hide information using the HH part of the image, but to do so I have to process that area ( HH), then re embed the information in that area. So that I need the help to do ( processing and then read the entire image) back again. I have to do all that without doing any cropping in the image.
Yours

Dear Sir,
I am working on an image, processing part of it, with out cropping that part, now I want to read and display the whole image after processing that part. what in your opinion the code will be.

1. Jeremy says:

Hi Ziyad, I’m not sure if I understand your question. What have you tried so far?

3. KT Yung says:

But `origImg` and `alphaImg` have different dimensions, `256 256` and `256 256 3` respectively, so Matlab won’t allow them to be added. Thank you.

1. Jeremy says:

Hi KT, nice question!
In this particular example, the built in MATLAB image I used
`(origImg = imread('ngc6543a.jpg');)`
`blendImg = origImg + alphaImg;`
`blendImg = repmat(origImg, [1,1,3]) + alphaImg;`
The `repmat()` function replicates the original image 3 times in this case.