function E = escaladoDirecta( I,factor )
%ESCALADO Reescala una imagen según factor.
%   E = escalado( I,factor )
%   Emplea transf.directa e interp. vecino más próximo.
%  Ejemplo:                                                  
%       I = imread('caja01.bmp');                                            
%       E = escalado(I,0.5);
%       imshow(E);                                 

%_________________________________________________________________________%
% NOMBRE DEL FICHERO:   escalado.m                                        %
% RECIBE:   Imagen de niveles de gris I                                   %
% DEVUELVE: La misma imagen rotada angulo grados, de igual tamaño que I.  %
% ALGORITMO EMPLEADO: Transformación directa. Vecino más próximo          %                      
% VARIABLES:   I = imagen en niveles de gris a trasladar                  %
%              factor = factor de escala.  Numero real positivo           %
%              E = imagen  resultante                                     %
%              filas = numero de filas de I                               %
%              columnas = numero de columnas de I                         %
%              filasE = numero de filas de E                              %
%              columnasE = numero de columnas de E                        %
%              ient = fila en la imag.de entrada correspond.a pixel E(i,j)% 
%              jent = colum en  imag. de entrada correspond.a pixel E(i,j)%
% BUGS:        falla con factores de escala negativos.                    %
%              Emplea transf.directa -> aparecerán PUNTOS NEGROS!!!       %
% SUPOSICIONES :                                                          %                   
% LIBRO  VISION ARTIFICIAL INDUSTRIAL. UNIVERSIDAD DE VALLADOLID 2012     %
% TEMA 3 MANIPULACIÓN GEOMÉTRICA DE LA IMAGEN. pág.42                     %
% AUTORES: Eusebio de la Fuente y Félix Miguel Trespaderne                %             
%_________________________________________________________________________%
%  Ejemplo de ejecucion:                                                  %
% >> I = imread('caja01.bmp');                                            %
% >> E = escalado(I,0.5);                                                 %
% >> imshow(E);                                                           %
%_________________________________________________________________________%
% Con funciones de matlab
% >> I = imread('caja01.bmp');                                            %
% >> E = imresize(I, 0.5);                                                %
% >> imshow(E);                                                           %
%_________________________________________________________________________%

[filas,columnas]=size(I);
filasE=round(factor*filas); %numero de filas que tendrá imag. transformada
columnasE=round(factor*columnas); %num.columnas que tendrá la img. transf.
E=zeros(filasE,columnasE);

for i=1:filas
    for j=1:columnas
        isal= i*factor; %divido porque estoy haciendo transf. directa
        jsal= j*factor;
        isal=round(isal); %vecino más próximo
        jsal=round(jsal);
        %para que no se vaya al indice 0 y dé error
        if isal==0 
            isal=1;
        end
        if jsal==0 
            jsal=1;
        end
        E(isal,jsal)=I(i,j);
    end
end
E=mat2gray(E);     

end

