%	Copyright 2005-2009 José Luis Crespo. Universidad de Cantabria
function imfinal=prediceorig(base,velpred,tamvel,fval,fconoc,cconoc,matfondo,origen)
%Función que dibuja la imagen predicha, dándole las posiciones de los
%pixels en la original
%DATOS
  %raíz de nombre de ficheros de imagen
%   velocidades predichas
%   índices de velocidades (cuántas, qué filas son en la total, y cuáles filas
			      %y columnas les corresponden al final)
%   nombre de fichero de imagen de fondo
%   instante base
%   anticipación predicha
%RESULTADO(saca por pantalla y devuelve)
%   imagen predicha según modelo

%si en algún momento la velocidad es muy pequeña, se considera punto fijo,
%es decir que sus coordenadas son las del principio
up=velpred(:,1); 
vp=velpred(:,2);
fichim=sprintf('%s%03d.gif',base,origen);
[imagen,tabla]=imread(fichim);
    imorig=ind2gray(imagen,tabla);
    imorig=im2double(imorig);
load(matfondo);
fondo=im2double(fondo);
    imfinal=fondo;
    tam=size(imorig);
 ftot=tam(1)*tam(2);
    upc(ftot,1)=0;
    vpc=upc;
    %Calcula los índices de las velocidades en la imagen parcial
            indconoc=sub2ind(size(imfinal),round(fconoc(:)),round(cconoc(:)));
	indconocval=indconoc(fval);
ffinval=fconoc(fval)';
cfinval=cconoc(fval)';
                ffinue=ffinval-vp;
                cfinue=cfinval+up;
                ffin=round(ffinue);
                cfin=round(cfinue);
            ffin=min(tam(1),ffin);
            ffin=max(ffin,1);
            cfin=min(tam(2),cfin);
            cfin=max(cfin,1);
		mascara=imfinal;
		mascara(:)=0;
            indfin=sub2ind(size(imfinal),ffin(:),cfin(:));
		mascara(indfin)=1;
		mascara=imclose(mascara,strel('square',4));
		[fext,cext]=find(mascara);
            imfinalcon=interp2(imorig,cfinval,ffinval);
		finalbuen=griddata(cfinue,ffinue,imfinalcon,cext,fext);
            indfin=sub2ind(size(imfinal),fext(:),cext(:));
		imfinal(indfin)=finalbuen;
%             figure;imshow(imfinal);title('Imagen predicha');
%            figure;imshow(imorig);title('Última imagen conocida');
    
