Compensazione del Background
Un metodo alternativo per arrivare all'identificazione degli oggetti dell'immagine grani-riso.png si avvale della capacità di imopen di trattare anche immagini a grayscale. Mentre con un'immagine binaria l'operazione i pixel vengono semplicemente posti a 0 dall'operazione di erosione nel caso di un'immagine grayscale la funzione sceglie tra i pixel adiacenti un'intensità luminosa e l'attribuisce al pixel che viene così ridefinito con un nuovo valore, invece che essere semplicemente posto a 0. Questo l'effetto
% % -- rmbackground.m % % Applicazione dell'opening di un'immagine grayscale per stimare l'illuminazione % dello sfondo dell'immagine nel caso di illuminazione variabile % % Prendiamo la solita immagine dei grani di riso % img = imread('grani-riso.png'); img = mat2gray(rgb2gray(img)); figure(1); imshow(img) % e facciamo l'operazione di 'opening' (erosione seguita da dilatazione) % usando un elemento strutturante a forma circolare con raggio 15. % Essendo così grande il raggio l'effetto finale è di cancellare tutti % i grani rimpiazzandoli con l'intensità dello sfondo adiacente ad essi. background = imopen(img,strel('disk',15)); figure(2); imshow(background) % I livelli di intensità possono essere visualizzati anche con un grafico 3D % (il numero di punti viene decimato per questioni di velocità) figure(3); surf(background(1:8:end,1:8:end))); % andiamo a sottrarre il background e mostrare il risultato figure img2 = imsubtract(img,background) imshow(img2) % riproviamo a determinare una soglia per questa immagine corretta % Prima di tutto la convertiamo nel range [0,1] img2 = mat2gray(img2); % quindi calcoliamo la soglia semplicemente con il metodo di Otsu soglia = graythresh(img2); % quindi creiamo la nuova immagine binaria: Una piccola correzione % morfologica sarebbe in grado di individuare tutti i grani presenti % nel campo dell'immagine bwimg2 = im2bw(img2,soglia); imshow(bwimg2); % -- rmbackground.m
La sequenza di comandi che elabora la nuova immagine dopo aver fatto il detrending
del background è equivalente a usare la funzione
imtophat
.
L'immagine ottenuta dalla sottrazione potrebbe ulteriormente essere
migliorata usando la funzione di aumento del contrasto
imadjust
con uno dei suoi metodi