
X = double(imread('luna.png'));

l = [0 1 0; 1 -4 1; 0 1 0];
l2 = [1 1 1; 1 -8 1; 1 1 1];

Y = filter2(l, X);
% riscala tra 0 e 255
Y2 = (Y-min(Y(:)))/(max(Y(:))-min(Y(:)))*255;

X2 = X-.4*Y;

fprintf('intervallo X2 (immagine + laplaciano): [%f, %f]\n', [min(X2(:)) max(X2(:))]);

X = uint8(X);
X2 = uint8(X2);
Y = uint8(Y);
Y2 = uint8(Y2);

figure; imshow(X); title('Immagine originale');
figure; imshow(Y); title('Laplaciano');
figure; imshow(Y2); title('Laplaciano riscalato'); 
figure; imshow(X2); title('Applicazione del laplaciano');

Z = filter2(l2, X);
% riscala tra 0 e 255
Z2 = (Z-min(Z(:)))/(max(Z(:))-min(Z(:)))*255;

X = double(X);
X3 = X-.3*Z;
fprintf('intervallo X3 (immagine + laplaciano diagonale): [%f, %f]\n', [min(X3(:)) max(X3(:))]);

X = uint8(X);
X3 = uint8(X3);
fprintf('intervallo Z (laplaciano diagonale): [%d, %d]\n', [min(Z(:)) max(Z(:))]);
Z = uint8(Z);
Z2 = uint8(Z2);

figure; imshow(Z); title('Laplaciano (con diagonali)');
figure; imshow(Z2); title('Laplaciano (con diagonali) riscalato');
figure; imshow(X3); title('Applicazione del laplaciano (con diagonali)');

