How can I reverse black and white in a grayscale image?

469 views (last 30 days)
I have a grayscale image and I'm trying to reverse the black and white in it as an exercise. I think I'm supposed to use for loops in some way to access the colormap so the entire image matrix is composed of 1's and 0's (at which point I could switch the two by subtracting 1 from all values) but I don't know how to get this matrix in the first place. Thank you!
Cedric Wannaz
Cedric Wannaz on 2 Jul 2014
Edited: Cedric Wannaz on 2 Jul 2014
And here is a second hint:
>> I = imread('board.tif');
>> J = rgb2gray(I);
>> size(J)
ans =
648 306
>> min(J(:))
ans =
>> max(J(:))
ans =
so pixels' "grayscale" level seem to be coded with (unsigned) integers in the range 0 to 255.
Note that you can visualize J with
>> imshow( J ) ;
Now maybe there is an operation that you could perform on J which would reverse the scale ..

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 2 Jul 2014
Try this
inverseGrayImage = uint8(255) - grayImage;
  1 Comment
Mark Quesada
Mark Quesada on 26 Mar 2019
You animal, that was spot on; Worked right out of the gate!

Sign in to comment.

More Answers (1)

Roche de Guzman
Roche de Guzman on 14 Jan 2021
I = imcomplement(I)


Find more on Environment and Settings in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by