%% Convert Images to Movie Frames
% Load an indexed image of a mandrill's face.

load mandrill

%
% Display the image X using its associated colormap, map, which has 220 colors.

figure
image(X)
colormap(map)
axis off

%
% Make a movie that shows the effect of reducing the number of colors of the image. There will be eight movie frames in total. Preallocate an array of structures to store the movie frames.

F(8) = struct('cdata',[],'colormap',[]);

%
% In a loop, reduce the number of colors in the indexed image by using the imapprox function. Use the im2frame function to convert the images into frames of a movie. The first frame is the original image with all 220 colors. The second frame has 128 colors. Each successive frame has half the number of colors. The last frame has the minimum number of colors, 2.

for j = 1:8
    q = 2^(9-j);
    [Y,newmap] = imapprox(X,map,q,'nodither');
    F(j) = im2frame(Y,newmap);
end

%
% To play the movie twice with a frame rate of three frames per second, use movie(F,2,3).
% Copyright 2018 The MathWorks, Inc.