views:

95

answers:

1
a = imread('autumn.tif');
a = double(a); 
[row col dim] = size(a);
red = a(:, :, 1);
green = a(:, :, 2);
blue = a(:, :, 3);

What does the colon : in the last three lines mean? (The above snippet is from "Image Processing" by Dhananjay Theckedath.)

+11  A: 

:, in this context means 'all'.

red = a(:,:,1)

is equivalent to

red = a(1:end,1:end,1)

where end is automatically replaced by the number of elements in the respective dimension by Matlab.

So if a is a 23-by-55-by-3 array,

a(:,:,1) 

is

a(1:23, 1:55, 1)

That means, this takes all rows, all columns from the first 'plane' of a. Since a RGB image is composed of a red, green, and a blue plane (in this order), a(:,:,1) is the red component of the image.

Jonas
I don't understand that latter syntax either. :(
missingfaktor
@missingfactor: better now?
Jonas
Okay, understood. Thanks a lot! :-)
missingfaktor
@missingfaktor: You're welcome.
Jonas
*slice* is perhaps not the best word in this scenario. `x(5:10)` is a slice. The set of elements sharing the third index is a *plane*. Conveniently, much of the graphics literature also speaks of *color planes*.
Ben Voigt
@Ben Voigt: Good point. I'll fix this.
Jonas