2011-01-10 5 views
8

Ho bisogno di ritagliare un cerchio in MATLAB.MATLAB: come ritagliare un cerchio da un'immagine

Ho bisogno di eseguire la segmentazione dell'iride, e ho identificato il punto centrale e il raggio dell'iride, e ho bisogno di tagliarlo dall'immagine.

Ho un vettore ci che ci (1) è X-coordinate ci (2) è coordinata Y e ci (3) è il raggio del cerchio.

risposta

10

Un modo per fare ciò è creare una maschera binaria con quelli all'interno del cerchio e zeri all'esterno. È quindi possibile utilizzare questo array per mascherare qualsiasi cosa al di fuori del cerchio con NaNs o per leggere i valori dei pixel dell'immagine all'interno della maschera.

per creare una maschera cerchio, un modo semplice è quello di creare array coordinare centrate su l'iride, e la soglia della distanza, in questo modo:

[xx,yy] = ndgrid((1:imageSize(1))-ci(1),(1:imageSize(2))-ci(2)); 
mask = (xx.^2 + yy.^2)<ci(3)^2; 
+0

Ci va la mia risposta ... =) Very nice. +1. Per segmentare l'immagine, basta moltiplicarla con la maschera. Lascia che ci siano degli zeri all'esterno. – Marnix

+0

@ Marnix: scusa :). Ad ogni modo, suggerisco di mettere i NaN all'esterno, come 'image (~ mask) = NaN;', in modo che la scala automatica in imshow (image, []) 'non venga eliminata da tutti gli zeri nell'immagine. – Jonas

+0

Ho questo errore: ??? Funzione non definita o metodo 'sqrt' per argomenti di input di tipo 'logical'. in questa riga mask = sqrt ((xx.^2 + yy.^2)