%Programa: SubstraccionFondo_BG_promedio
%Descripción: Substracción de fondo utilizando como actualización del BG el
%promedio de N frames
%Autor: FJHL
%Fecha inicial: 25/Sept/2015
%Fecha actualización: 25/Sept/2015

clear all;
close all;
clc;
%Leer video original
video=VideoReader('../videos/highway_460to869.avi');

%Crear el modelo del BG
%Vamos a tomar el promedio de los N primeros frames
N=10;
BG_promedio=Calcular_BG_promedio(video,1,N);

%Desplegar el modelo del BG promedio
figure(1);
imagesc(BG_promedio);
colormap gray;

%Parámetros
theta=5;
%Leer los siguientes frames del video
for i=N+1:video.NumberOfFrames
    frame_RGB=read(video,i);%escala RGB
    frame_Gray=double(rgb2gray(frame_RGB));%en escala grises y double
   
    %Substracción del fondo entre el frame actual y el BG_promedio
    r=frame_Gray-BG_promedio;
    
    %Substracción simple: Aplicamos un umbral a r^2
    rr=r.*r;
    rr_norm=normalizar(rr,0,255);
    b=rr_norm>theta;
    
    %Actualización del modelo del BG
    %BG_promedio=Calcular_BG_promedio(video,1,i);
    %BG_promedio=Calcular_BG_promedio(video,i-N+1,i);
    
    figure(2);
    imagesc(frame_Gray);
    colormap gray;
    
    figure(3);
    imagesc(b);
    colormap gray;
    
    figure(4);
    imagesc(BG_promedio);
    colormap gray;
    
    
    pause(0.03);
end


% for i=1:video.NumberOfFrames
%     frame=read(video,i);
%     image(frame);
%     pause(0.001);
% end







