2011-01-10 39 views
8

Necesito hacer un círculo en MATLAB.MATLAB: cómo recorto un círculo de una imagen

Necesito realizar la segmentación del iris, e identifiqué el punto central y el radio del iris, y necesito cortarlo de la imagen.

Tengo un vector ci que ci (1) es coordenada X ci (2) es coordenada Y y ci (3) es el radio del círculo.

Respuesta

10

Una forma de hacerlo es crear una máscara binaria con las que están dentro del círculo y los ceros fuera. A continuación, puede usar esta matriz para enmascarar todo lo que esté fuera del círculo con NaN, o para leer los valores de píxel de la imagen dentro de la máscara.

para crear una máscara círculo, una forma fácil es crear matrices de coordenadas centradas en el iris, y el umbral de la distancia, así:

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

Ahí va mi respuesta ... =) Muy agradable. +1. Para segmentar la imagen, simplemente multiplíquela con la máscara. Deje que haya ceros en el exterior. – Marnix

+0

@Marnix: Lo siento :). De todos modos, sugiero poner NaNs afuera, como 'image (~ mask) = NaN;', de modo que la escala automática en 'imshow (image, [])' no se descarta por todos los ceros en la imagen. – Jonas

+0

Tengo este error: ??? Función o método no definido 'sqrt' para argumentos de entrada de tipo 'lógico'. en esta línea mask = sqrt ((xx.^2 + yy.^2)

Cuestiones relacionadas