% APRENDIZAJE AUTOMÁTICO (G. Pajares y J. M. de la Cruz, Eds.)
% Editorial: RA-MA
% Capítulo 11: Razonamiento Basado en Casos
% Autores: Ángela Ribeiro, Xavier P. Burgos Artizzu y Jesús M. Conesa Muñoz

%PLATAFORMA DE PROCESAMIENTO DE IMÁGENES NATURALES
% Analysis of natural images processing for the extraction of agricultural
% elements. Image Vision Comput. 28(1): 138-149 (2010)
function [ims,ime,imr,mh] = plataforma(im,segm,elim,filt,param)
cd ..
cd procesamiento %([pwd '..\procesamiento'])

[f,c,x] = size(im);

%figure('Name','Resultado Procesamiento CBR','NumberTitle','off'),subplot(2,2,1),imshow(im),title('Imagen de entrada');

%SEGMENTACION
if(segm==1)
	res = S1(im,param(1),param(2),param(3),round(param(4)));
    res = res/255;
	ult=5;
else
	res = S2(im,round(param(1)),round(param(2)),round(param(3)),round(param(4)),round(param(5)));
	ult=6;
end;

%subplot(2,2,2), imshow(res),title('Segmentación');
ims = res;


%ELIMINACION DE LAS LINEAS DE CULTIVO
v = sum(res);
ind1 = find(v>=f/4);
if(length(ind1)>10)%Comprobacion de que la segmentacion es aceptable

    if(elim==1)
            [res,colI2,colD1,aux] = E1(res,param(ult)/100);
            ult= ult+1;
    elseif(elim==2)
            [res,colI2,colD1,aux] = E2(res,round(param(ult)),round(param(ult+1)));
            ult=ult+2;
    else
            [res,colI2,colD1,aux] = E3(res,round(param(ult)),round(param(ult+1)),param(ult+2)/100);
            ult=ult+3;
    end;
    
    %subplot(2,2,4), imshow(aux), title('Eliminación líneas de cultivo');
    ime = res;

    %FILTRADO DE LAS MALAS HIERBAS
    colD1 = ceil(colD1);
    colI2 = ceil(colI2);
    if(colD1>colI2)
        res(:,1:colI2)=0;
        res(:,colD1:c)=0;
        if(filt==1)
                res = F1(res,param(ult)/100);
                [mh,res] = actualiza(im,res);
        elseif(filt==2)            
                res = F2(res,param(ult)/100);
                [mh,res] = actualiza(im,res);        
        end;
        %subplot(2,2,3), imshow(res),title('Imagen resultado');
        imr = res;
    else
        'Error Procesamiento, la eliminación de líneas de cultivo ha fallado'
        mh = -1;%no la tiene en cuenta para Pearson
    end;
else
    'Error Procesamiento, la segmentación no es aceptable'
    mh = -1;%no la tiene en cuenta para Pearson
end;

cd ..
cd CBR