function T = traslacion( I, t)
%TRASLACION Traslada una imagen el vector t
%   Emplea transf.inversa 
%   T = traslacion( I, t)
%   Imagen T del mismo tamaño que I
%   Emplea vecino más próximo.
%   Ejemplo:                                                  
%       I = imread('caja01.bmp');                                            
%       t=[100,10];                                                                                   
%       T=traslacion(I,t);                                                   
%       imshow(T);                                                           

%_________________________________________________________________________%
% NOMBRE DEL FICHERO:   traslacion.m                                      %
% RECIBE:   Imagen de niveles de gris I                                   %
% DEVUELVE: La misma imagen trasladada el vector t, de igual tamaño que I.%
% ALGORITMO EMPLEADO: Transformación inversa. Vecino más próximo          %                      
% VARIABLES:   I = imagen en niveles de gris a trasladar                  %
%              t = vector. La imagen se traslada ese vector               %
%              T = imagen  resultante                                     %
%              filas = numero de filas de I                               %
%              columnas = numero de columnas de I                         %
%              ient = fila en la imag.de entrada correspond.a pixel T(i,j)% 
%              jent = colum en  imag. de entrada correspond.a pixel T(i,j)%
% BUGS:                                                                   %
% SUPOSICIONES : La imagen de salida es del mismo tamaño.                 %                   
%                Puede perderse una parte significativa de la imagen      %
% LIBRO  VISION ARTIFICIAL INDUSTRIAL. UNIVERSIDAD DE VALLADOLID 2012     %
% TEMA 3 MANIPULACIÓN GEOMÉTRICA DE LA IMAGEN                             %
% AUTORES: Eusebio de la Fuente y Félix Miguel Trespaderne                %
%_________________________________________________________________________%

[filas,columnas]=size(I);
T=zeros(filas,columnas);   %la imagen result. T será del mismo tamaño que I

for i=1:filas
    for j=1:columnas
        
        %traslación con signo negativo pues es t.inversa
        ient= i - t(1);
        jent= j - t(2);
 
        %comprobamos que cae dentro de la imagen
        if(ient>=1 && ient<=filas && jent>=1 && jent<=columnas)
            %Vecino más próximo: redondeo al entero más cercano
            T(i,j) = I(round(ient),round(jent));
        end
    end
end
T=mat2gray(T);
end

