# How to replace RGB values

25 views (last 30 days)

Show older comments

Hi Everyone,

I was wondering if it is possible to replace the RGB values of an image with values of certain range?

I have this image below and would like to change scale from 1600 to 3800.

Many thanks in advance.

##### 0 Comments

### Accepted Answer

Guillaume
on 4 May 2016

To go from the colour image to a grayscale image, assuming you have the original colour bar, use rgb2ind:

grayimg = rgb2ind(colourimg, map, 'nodither'); %where map is an nx3 matrix

This should give you a gray image with intensities from 0 to the number of colours in your map - 1.

You can then rescale that to whatever range you want with multiplication and addition.

### More Answers (2)

Alessandro Masullo
on 3 May 2016

If I understood it correctly, you may simply use a linear scale. Once you read you image, you have a 3d matrix (row,col,3). The third dimension is the RGB. (:,:,1) is R, is (:,:,2) is G and the last one is B.

If you want to replace colours, you simply need to scale those matrices using some constants. If your image is 8 bits, the matrix will range from 0 to 255 (2^8-1). Convert it to double first, so that you won't lose information during the scale due to the rounding, and then scale the colours according to what you need:

RGB_Values = double(imread('RGB.jpg'));

RGB_Values(:,:,3) = RGB_Values(:,:,3)/2+40; % example of scaling

Image Analyst
on 3 May 2016

Try this:

binaryImage = RGB_Values(:, :, 3) == 1600;

imshow(binaryImage);

##### 7 Comments

Image Analyst
on 4 May 2016

### See Also

### Community Treasure Hunt

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

Start Hunting!