function  chromaKey
tic                                              %cálculo tiempo
%LECTURA MATERIAL================================================================================  
    background=mmreader('ATARDECER1.avi');        %lee el video
    foreground=mmreader('foreground6.avi');      %lee el video
    numFrames=get(foreground,'numberOfFrames');  %calcular el número de frames del foreground
    k=2;                            %inicialización frame foreground
    F=moviein((numFrames-75)/3);    %inicializar la matriz video
    T=1245;                         %inicialización frame background
    
%PROCESADO DE MATERIAL===========================================================================
    for j=1:((numFrames-75)/3)
      while k<=(numFrames-75)         %quitamos frames para hacer el video más corto
        
        ima=read(foreground,k-1);   %guarda el frame anterior a "k" 
        imb=read(foreground,k);     %guarda el frame "k"
        imc=read(foreground,k+1);   %guarda el frame siguiente a "k"
        k=k+3;                      %suma 3 a la variable "k" para que las siguientes comparaciones sean los siguientes 3 frame     
        
        imd=read(background,T);     %carga en la variable imd el frame marcado por T
        if size(imd)~=size(ima)
            imd=imresize(imd, [size(foreground,1) size(foreground,2)]);%Cambia el tamaño de background por el de foreground
        end
        
        T=T+10;                     %suma acumulada de frames para el fondo
   
        a2=1.018;                   %constantes de ajuste    
        a22=0.92;   
          
%ANÁLISIS Y OBTENCIÓN DE CHROMA================================================================        
        mascara1=imb(:,:,2)>imb(:,:,3)& imb(:,:,2)>imb(:,:,1)& imb(:,:,2)>65; % máscara normal de chroma verde
        
        mascara2=(uint8(imc(:,:,2)))>=(uint8(ima(:,:,2))*a2)|(uint8(imb(:,:,2))*a2)<=(uint8(imc(:,:,2)))&(uint8(imb(:,:,2))*a2)<(uint8(ima(:,:,2)))|(uint8(imb(:,:,2)))<=(uint8(ima(:,:,2))*a22 ) | (uint8(imb(:,:,2))*a22)>=(uint8(imc(:,:,2)))|(uint8(ima(:,:,2))*a22)>(uint8(imc(:,:,2))) ;% cambio de verde con el tiempo
        
        mascara3=imb(:,:,1)>115 & imb(:,:,2)>225 & imb(:,:,3)>115; %color definido por el usuario
        mascara3=dilate_mult(~mascara3,13);                        %ajuste de relleno del color definido por le usuario
        mascara2=mascara2.*mascara3;
        
        mascara= mascara1&mascara2 ;                               %máscara final
       
        imFu = cast(mascara, 'uint8');                             %genera una tabla con los datos de máscara compatible con ima,imb,imc
        imFm = cast(~mascara, 'uint8');
             
        imCk2(:,:,1) = imb(:,:,1).*imFm + imFu.*imd(:,:,1);        %realiza el croma en cada componente de color
        imCk2(:,:,2) = imb(:,:,2).*imFm + imFu.*imd(:,:,2);  
        imCk2(:,:,3) = imb(:,:,3).*imFm + imFu.*imd(:,:,3);
        
%CAPTURA Y ALMACENAMIENTO================================================================
        figure(1),imshow(imCk2);
        F(j)=getframe;                                             %obtiene el frame y lo almacena
        j=j+1; 
        
        figure(2),
        subplot(2,2,1);imhist(imb(:,:,1));title('Histograma Rojo') %Histograma separado por componente del foreground
        subplot(2,2,2);imhist(imb(:,:,2));title('Histograma Verde')
        subplot(2,2,3);imhist(imb(:,:,3));title ('Histograma Azul')  
        subplot(2,2,4);imshow(imCk2);title('Grabando Secuencia')
                                                  
      end  
       close;
    end
        toc                                                        %fin cálculo tiempo
        title('Reproducción Secuencia')
        movie(F);                                                  %reproduce la secuencia
        movie2avi(F, 'Secuencia');                                 %pasa la secuencia de movie a Avi llamando al archivo Secuencia
        save Secuencia                                             %almacena ese vídeo en el directorio
        
        figure;
        subplot(1,3,1);imhist(imCk2(:,:,1));title('ROJO')          %histograma separado por componente de la imagen final
        subplot(1,3,2);imhist(imCk2(:,:,2));title('VERDE')
        subplot(1,3,3);imhist(imCk2(:,:,3));title ('AZUL')    
        
        figure;
        subplot(2,2,1);imshow(mascara1);title('Mascara 1 - verde') %se muestran las diferentes máscaras
        subplot(2,2,2);imshow(mascara2);title('Mascara 2 - modificación de verde')
        subplot(2,2,3);imshow(mascara);title ('Mascara final')     
