# Matrices And Color

This page describes how one can think of a digital images as a vector in a vector space. Essentially, one rearranges the pixel values from the rectangular shape of an image into a one-diminsional list of real numbers (usually integers in [0,255].

## Contents

## The Image Function

The MATLAB function "image.m" creates an image from a matrix. You pass it the matrix, scaled to have values in [0,1], and it converts each entry in the matrix to a color. Since any color can basically be thought of as a combination of three primary colors (red-green-blue), you can create a full color image by creating a "3-dimensional matrix", or cube.

RandomColorMatrix = 255*rand(4,4,3) figure;

RandomColorMatrix(:,:,1) = 206.3470 83.0876 46.0881 166.6935 190.8978 139.3446 65.1236 237.8165 30.6477 101.7146 5.2366 41.6957 133.8865 105.8488 235.5373 234.8798 RandomColorMatrix(:,:,2) = 202.6378 191.7463 171.1566 99.6443 147.2355 58.3107 182.3792 208.1157 112.2091 16.3677 163.7255 80.9441 65.6915 195.6690 106.8573 207.7076 RandomColorMatrix(:,:,3) = 201.2137 242.4781 160.9531 166.3750 217.3273 113.2109 90.5438 154.2726 128.9373 15.3048 254.2358 98.7476 162.0937 221.0212 57.1637 36.2577

## A random color matrix (3 different matrices, stacked like pancakes)

image(1/255*RandomColorMatrix);

## A random greyscale matrix (1 random matrix, copied and stacked)

A random can be seen in several different, but really equivalent ways. The first is as either a red, green or blue sheet. MyColors will be a "black matrix" filled with zeros, RandomMatrix is filled with random numbers in [0,1].

RandomMatrix = round(255*rand(4,4))

RandomMatrix = 6 94 45 57 107 215 244 95 47 187 68 22 185 146 236 163

## In red

MyColors = zeros(4,4,3); MyColors(:,:,1) = RandomMatrix; figure; image(1/255*MyColors);

## In green

MyColors = zeros(4,4,3); MyColors(:,:,2) = RandomMatrix; figure; image(1/255*MyColors);

## In blue

MyColors = zeros(4,4,3); MyColors(:,:,3) = RandomMatrix; figure; image(1/255*MyColors);

## In grey

MyColors = zeros(4,4,3); MyColors(:,:,1) = RandomMatrix; MyColors(:,:,2) = RandomMatrix; MyColors(:,:,3) = RandomMatrix; figure; image(1/255*MyColors);

## Linear combinations of color

Any color can be thought of as a kind of "linear combination" of three basis colors, red, green and blue. For example, if

zero_matrix = zeros(4,4,3); red = zero_matrix; red(:,:,1) = ones(4); green = zero_matrix; green(:,:,2) = ones(4); blue = zero_matrix; blue(:,:,3) = ones(4); % then white is % To see this color we can map the three components of the vector to the three color components expected by the image function (after scaling appropriately).

## White as the linear combination

white = 255*red + 255*green + 255*blue; figure; image(1/255*white);

## Animations of many linear combinations

%Prepare the new file. Vid = VideoWriter('deform_blue'); open(Vid); h = []; % Initial handle to plot k = 1; % Index of snapshot MyFig = figure; hold on; axis off set(gca,'nextplot','replacechildren','visible','off') % Let the coefficient of the blue vector vary from 0 to 255, and plot the results for c = 0:255 FunnyColor = 45*red + 35*green + c*blue; MaxValue = max(max(max(FunnyColor))); image(1/MaxValue*FunnyColor); frame = getframe(MyFig); writeVideo(Vid,frame); end close(Vid);