Ciao
sono un neofita di matlab e vorrei avere un consiglio per implementare un adaptive treshold che mi trasformi un immagine da "colorata" in un immagine in bianco e nero che scelga il valore di treshold automaticamente.
Il tutto dovrebbe essere fatto usando la convoluzione per evitare loop....
io ho provato il seguente codice
function bw=adaptivethreshold(IM,windows,C)
% bw=adaptivethreshold(IM,C) outputs a binary image bw with the local
% threshold .
% IM is the image
% windows is the windows size
% C costant
if (nargin<2)
error('You must provide the image IM and teh costant C.');
end
%convertx matrix a of the image in the inensity matrix
IM=mat2gray(IM);
%imfilter filter the multidimensional array A (IM) with the multidimensional
%array B (fspecial('average',ws);with the option 'replicate'
%fspecial(type) creates a two-dimensional filter h of the specified type (in this case averagin filter).
mIM=imfilter(IM,fspecial('average',windows),'replicate');
figure,imshow (mIM),title ('mIm');
sIM=mIM-IM-C;
bw=im2bw(sIM,0);
figure,imshow (bw),title ('bw');
%compute the complement of the image
bw=imcomplement(bw);
ma come risultato mi esce un immagine in cui sono evidenziati i contorni delle figure mentre io dovrei avere un immagine in bianco e nero (come se usassi per esempio im2bw ('image') per capirci meglio)
qualcuno sa dove sbaglio e come faccio a correggermi ?
grazie mille in anticipo!