function outputmovie = colorTracker(inputmovie, skin, background, type, display) skin = double(skin) ./ 255; background = double(background) ./ 255; if(nargin < 4) type = 3; end if(nargin < 5) display = 1; end if type == 2, skin = rgb2hsv(skin); background = rgb2hsv(background); elseif type == 3 skin = rgb2circle(skin); background = rgb2circle(background); end for i = 1:length(inputmovie), img = double(inputmovie(i).cdata) ./ 255; rows = size(img,1); cols = size(img,2); if type == 2, img = rgb2hsv(img); elseif type == 3 %img = rgb2hsv(img./255); %img = [img(:,2).*cos(2*pi*img(:,1)), img(:,2).*sin(2*pi*img(:,1)), img(:,3)]; img = rgb2circle(img); end %R = double(img(:,:,1)); %G = double(img(:,:,2)); %B = double(img(:,:,3)); %all_rgb = [R(:), G(:), B(:)]; all_rgb = makeImage1D(img); L1 = gaussdensity(all_rgb, skin); L2 = gaussdensity(all_rgb, background); L3 = ones(rows,cols)/256; L1 = reshape(L1, rows, cols); L2 = reshape(L2, rows, cols); S = L1+L2+L3; L1 = L1./S; L2 = L2./S; L3 = L3./S; fr = L1 - L2; fr(fr < 0) = 0; if( display == 1 ) imagesc(fr); outputmovie(i) = getframe; else subplot(1,2,1); imagesc(inputmovie(i).cdata); half1 = getframe subplot(1,2,2); imagesc(fr); half2 = getframe outputmovie(i).cdata = [half1.cdata, half2.cdata]; outputmovie(i).colormap = []; end %imagesc(fr); %outputmovie(i) = getframe; drawnow; end