In this example, we will try to set the values of the pixels in the top-left corner of our image to {R, G, B} = {128, 128, 128} and the values of the pixels in the bottom-right corner to {R, G, B} = {255, 0, 0}. To see the difference, we will try to accomplish our goal using indexing. Let's start:
>> img_color = imread('my_image_color.bmp'), >> img_color_orig = img_color;
>> img_color(1:50,1:50,:) = 128;
>> img_color(end-49:end,end-49:end,1) = 255; >> img_color(end-49:end,end-49:end,2) = 0; >> img_color(end-49:end,end-49:end,3) = 0;
>> subplot(1,2,1),imshow(img_color_orig);title('Original Image') >> subplot(1,2,2),imshow(img_color);title('Altered Image')
We just managed to play with the colors of a color image. We used the indexing in exactly the same way you already knew, to turn an area to gray (with all color channels set to 128) and then we repeated the process for each color channel in another area to set its pixels to red. A useful observation is that three identical values in all color channels denote a shade of gray. This fact is rather intuitive, as in Chapter 1, Basic Image Manipulations, we saw that imtool
represented the pixels of grayscale images as triplets of identical values. The process must be slightly altered when we want a color other than gray. This is why, in our example, we changed the values in each channel separately.