Sì, ciononostante provi a fare così come le spiego.
Definisci la funzione tofloat con questo script
function [out, revertclass] = tofloat(in)
%T0FLOAT Convert image to floating point
% [OUT, REVERTCLASS] = TOFLOAT(IN) converts the input image IN to
% floating-point. If IN is a double or single image, then OUT
% equals IN. Otherwise, OUT equals IM2SINGLE(IN). REVERTCLASS is
% a function handle that can be used to convert back to the class
% of IN.
identity = @(x) x;
tosingle = @im2single;
table = {'uint8', tosingle, @im2uint8
'uint16', tosingle, @im2uint16
'int16', tosingle, @im2int16
'logical', tosingle, @logical
'double', identity, identity
'single', identity, identity};
classlndex = find(strcmp(class(in), table(:, 1)));
if isempty(classlndex)
error('Unsupported input image class.');
end
out = table{classlndex, 2}(in);
revertclass = table{classlndex, 3};
Successivamente inserisci queste linee di codice, dove Im è la tua immagine, ma in bianco e nero.
w = [0 1 0; 1 -4, 1; 0 1 0];
f2 = tofloat(Im);
g2 = imfilter(f2,w,'replicate');
g = f2-g2;
imshow(g)
In questa maniera dovresti avere più dettagli su un'immagine.
La funzione toflat non fa altro che portare un'immagine a valori double. Il codice dopo applica un filtro 3x3 alla tua immagine, sottraendola vengono meno alcune imperfezioni. Questo perché il filtro mette in luce i contorni, di fatto l'istogramma non viene modificato molto.