Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

bwmorph3

Las operaciones morfológicas en el volumen binario

Descripción

ejemplo

J = bwmorph3(V,operation) aplica la operación morfológica especificada por la cadena o el vector de caracteres al volumen binario. Devuelve los resultados de la operación en el volumen lógico, que tiene las mismas dimensiones que el volumen de entrada.operationVbwmorph3J

Ejemplos

contraer todo

Cargue datos volumétricos 3-D MRI y cree un volumen binario. Se utiliza para ver los datos volumétricos.volshow

load mristack; BW1 = mristack > 127; volshow(BW1);

Para eliminar los vóxeles que se establecen en 1 y que también están rodeados de vóxeles configurados en 0, realice la operación en los datos volumétricos.'clean' Al determinar qué vóxeles eliminar, la operación considera 26 voxels vecinos.'clean' Se usa para ver los resultados.volshow

BW2 = bwmorph3(BW1,'clean'); volshow(BW2);

Para la comparación, realice la ' operación en los datos volumétricos.majority' La ' operación realiza una tarea similar a la ' operación, pero sólo retiene los voxels si más de la mitad (la mayoría) de los vóxeles en la vecindad de los vóxeles objetivo se establecen en 1.majority'clean' Al determinar qué vóxeles retener, la ' operación también considera 26 voxels vecinos.majority' Se usa para ver los resultados.volshow

BW3 = bwmorph3(BW1,'majority'); volshow(BW3);

Este ejemplo muestra cómo cada una de las operaciones morfológicas admitidas por trabajos en volúmenes simples.bwmorph3

Haga un 9-por-9-por-3 cuboides de 0s que contenga un cubo 3-por-3-por-3 de 1s en su centro.

innercube = ones(3,3,3); cube_center = padarray(innercube,[3 3],0,'both')
cube_center =  cube_center(:,:,1) =       0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0   cube_center(:,:,2) =       0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0   cube_center(:,:,3) =       0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0  

Desactivar píxeles con la operación de eliminación

Establezca el voxel central del cubo interno en el uso de la operación.0'remove' Esta operación establece el valor de cualquier voxel completamente rodeado de vóxeles.'on''on''off'

remove_center = bwmorph3(cube_center,'remove')
remove_center = 9x9x3 logical array
remove_center(:,:,1) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0


remove_center(:,:,2) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   0   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0


remove_center(:,:,3) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0

Establecer píxeles en activado con la operación de relleno

Establezca el voxel central del cubo interno en el uso de la operación.1'fill' Esta operación establece el valor de cualquier voxel completamente rodeado de vóxeles.'off''on''on'

fill_center = bwmorph3(remove_center,'fill')
fill_center = 9x9x3 logical array
fill_center(:,:,1) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0


fill_center(:,:,2) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0


fill_center(:,:,3) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0

Eliminación de píxeles no conectados con la operación Clean

Utilice la operación para eliminar los vóxeles perdidos que estén configurados pero que no estén conectados a un componente del volumen.'clean'1 El ejemplo crea un vóxeles extraviado estableciendo un voxel aleatorio en el segundo plano en 1 y, a continuación, utiliza la operación para eliminarlo.'clean'

cube_center(2,2,2) = 1
cube_center =  cube_center(:,:,1) =       0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0   cube_center(:,:,2) =       0     0     0     0     0     0     0     0     0      0     1     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0   cube_center(:,:,3) =       0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     1     1     1     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0      0     0     0     0     0     0     0     0     0  
cube_cleaned = bwmorph3(cube_center,'clean')
cube_cleaned = 9x9x3 logical array
cube_cleaned(:,:,1) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0


cube_cleaned(:,:,2) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0


cube_cleaned(:,:,3) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0

Encontrar la mayoría

Encontrar la mayoría de la utilización de la ' operación.cube_centermajority' Esta operación retiene un vóxon sólo si más de la mitad (la mayoría) de los vóxeles en la vecindad de 26 conectados alrededor de los vóxeles están configurados.1

cube_major = bwmorph3(cube_center,'majority')
cube_major = 9x9x3 logical array
cube_major(:,:,1) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   1   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0


cube_major(:,:,2) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   1   0   0   0   0
   0   0   0   1   1   1   0   0   0
   0   0   0   0   1   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0


cube_major(:,:,3) =

   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   1   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0

Crear una forma similar a un esqueleto

Para ilustrar las opciones de puntos de bifurcación y puntos finales, cree otra matriz pequeña, esta vez con una forma lineal, como un esqueleto.

x1 = eye(5); x2 = zeros(5); x2(3,3) = 1; x3 = x2; shape = cat(3,x1,x2,x3)
shape =  shape(:,:,1) =       1     0     0     0     0      0     1     0     0     0      0     0     1     0     0      0     0     0     1     0      0     0     0     0     1   shape(:,:,2) =       0     0     0     0     0      0     0     0     0     0      0     0     1     0     0      0     0     0     0     0      0     0     0     0     0   shape(:,:,3) =       0     0     0     0     0      0     0     0     0     0      0     0     1     0     0      0     0     0     0     0      0     0     0     0     0  

Encontrar puntos finales

Encuentre los puntos finales de la forma utilizando la operación.'endpoints' La forma tiene tres puntos finales, uno en cada extremo de la diagonal en el primer plano y otro al final de la línea a través del centro, en el tercer plano.

shape_endpts = bwmorph3(shape,'endpoints')
shape_endpts = 5x5x3 logical array
shape_endpts(:,:,1) =

   1   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   1


shape_endpts(:,:,2) =

   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0


shape_endpts(:,:,3) =

   0   0   0   0   0
   0   0   0   0   0
   0   0   1   0   0
   0   0   0   0   0
   0   0   0   0   0

Encontrar puntos de bifurcación

Busque los puntos de bifurcación de la forma mediante la operación.'branchpoints' La forma tiene un solo punto de bifurcación, donde la línea diagonal y la línea horizontal se encuentran.

shape_brpts = bwmorph3(shape,'branchpoints')
shape_brpts = 5x5x3 logical array
shape_brpts(:,:,1) =

   0   0   0   0   0
   0   1   0   0   0
   0   0   1   0   0
   0   0   0   1   0
   0   0   0   0   0


shape_brpts(:,:,2) =

   0   0   0   0   0
   0   0   0   0   0
   0   0   1   0   0
   0   0   0   0   0
   0   0   0   0   0


shape_brpts(:,:,3) =

   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0
   0   0   0   0   0

Argumentos de entrada

contraer todo

Volumen de entrada, especificado como un array real, no disperso, numérico o lógico. acepta matrices 1-D, 2-D o 3-D.bwmorph3 Si especifica matrices de entrada 1-D o 2-D, realiza la operación morfolgica definida para un volumen 3-D.bwmorph3 Si desea un comportamiento en 2-D, utilice en su lugar.bwmorph

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Operación morfológica que se va a realizar, especificada como uno de los siguientes vectores de caracteres o escalar de cadena. Para ver ejemplos de estas operaciones, consulte.Ilustraciones de operaciones morfológicas

Operación

Descripción

Ilustración

'branchpoints'

Encuentra puntos de ramificación de esqueleto. Los puntos de bifurcación son los voxels en el cruce donde se reúnen varias ramas.

Para encontrar puntos de bifurcación, la imagen debe estar esqueletizada. Para crear una imagen esqueletizada, utilice.bwskel

'clean'

Eliminar los vóxeles aislados, establecerlos en 0. Un vóxeles aislado es un vóxon individual de 26 conectados que está establecido en el que está rodeado de voxels.10

'endpoints'

Encuentra los puntos finales del esqueleto. Los puntos finales son vóxeles en los extremos de las ramas.

Nota: Para encontrar puntos finales, la imagen debe ser esqueletizada. Para crear una imagen esqueletizada, utilice.bwskel

'fill'

Rellena los vacíos interiores aislados, fijándolos en.1 Los vóxeles interiores aislados son voxels individuales que están rodeados (6 conectados) por voxels configurados.01

'majority'

Mantenga un voxel establecido en si 14 o más voxels (la mayoría) en su vecindad 3-por-3-por-3, 26-conectado se fijan a; Si no, fije el voxel a.110

Ver.Ilustraciones de operaciones morfológicas

'remove'

Retire los voxels interiores, estableciendo a.0 Los vóxeles interiores son voxels individuales que están rodeados (6 conectados) por voxels configurados.11

Tipos de datos: char | string

Argumentos de salida

contraer todo

Volumen de salida, devuelto como una matriz lógica.

Sugerencias

  • Para realizar la erosión o dilatación de operaciones morfológicas en volúmenes 3-D, utilice las funciones o, especificando el elemento de estructuración.imerodeimdilateones(3,3,3)

  • Para realizar el cierre morfológico, la apertura, el filtrado de Top-Hat o el filtrado de la parte inferior del sombrero en volúmenes 3D, utilice las funciones, o, especificando el elemento de estructuración.imcloseimopenimtophatimbothatones(3,3,3)

Introducido en R2018a