clear all;
close all;
clc;

cnn_setenv;

mCNN.TemGroup='temlib_plus';


input=loadCNN('peppers_srcratched.bmp');
scratch=loadCNN('scratch.bmp');

mCNN.INPUT1= 1* input;
mCNN.INPUT2 = 1*input;
mCNN.STATE= 1* input;
mCNN.Boundary= 2;
mCNN.TimeStep=0.02;
mCNN.IterNum=50;
loadtem('MEDIAN');
runtem;
filtered = 1 * mCNN.OUTPUT;




for a=1:10
    mCNN.INPUT1= 1* scratch;
    mCNN.STATE= 1* zeros(size(scratch));
    mCNN.Boundary= 2;
    mCNN.TimeStep=1;
    mCNN.IterNum=10;
    loadtem('EROSION');
    runtem;
    RemainingScratch= 1. *mCNN.OUTPUT;
    mCNN.INPUT1= 1* mCNN.OUTPUT;
    mCNN.STATE= 1* scratch;
    mCNN.Boundary= 2;
    mCNN.TimeStep=1;
    mCNN.IterNum=10;
    loadtem('LOGDIF');
    runtem;
    contour= 1* mCNN.OUTPUT;
    for ind=1:8
        %kivalasztja,hogy hova toltsunk erteket
        mCNN.INPUT1= 1* scratch;
        mCNN.STATE= 1* scratch;
        mCNN.Boundary= 2;
        mCNN.TimeStep=0.1;
        mCNN.IterNum=100;
        loadtem(strcat('SKR', num2str(ind)));
        runtem;
        Mask=1.*mCNN.OUTPUT;

        mCNN.INPUT1= 1* Mask;
        mCNN.STATE= 1* contour;
        mCNN.Boundary= 2;
        mCNN.TimeStep=1;
        mCNN.IterNum=10;
        loadtem('LOGAND');
        runtem;
        Mask=1.*mCNN.OUTPUT;

        %eloallitja a betoltendo erteket
        mCNN.INPUT1= 1* filtered;
        mCNN.STATE= 1* filtered;
        mCNN.Boundary= 2;
        mCNN.TimeStep=1;
        mCNN.IterNum=10;
        loadtem(strcat('SEL', num2str(ind)));
        runtem;
        Values=1* mCNN.OUTPUT;

        %kiegesztjuk a pixeleket
        B=find(Mask>0.5);
        filtered(B(:))=Values(B(:));
    end
    scratch=1*RemainingScratch;

end

subplot(1,3,1);
cnnshow(input);
subplot(1,3,2);
cnnshow(filtered);
subplot(1,3,3);
cnnshow(mCNN.OUTPUT);