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

Operaciones morfológicas en 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 volumen lógico.operationVbwmorph3J

Ejemplos

contraer todo

Cargue datos volumétricos de RMN 3D 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 están configurados en 1 y que también están rodeados por vóxeles establecidos en 0, realice la operación en los datos volumétricos.'clean' Al determinar qué vóxeles eliminar, la operación considera 26 vóxeles vecinos.'clean' Utilícelo 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 conserva los vóxeles si más de la mitad (la mayoría) de los vóxeles en la vecindad del voxel objetivo se establecen en 1.majority'clean' Al determinar qué vóxeles conservar, la operación ' también considera 26 vóxeles vecinos.majority' Utilícelo para ver los resultados.volshow

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

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

Haga un cuboide de 9 por 9 por 3 de 0s que contenga un cubo de 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  

Desactivación de píxeles con la operación Eliminar

Establezca el voxel central del cubo interior en el uso de la operación.0'remove' Esta operación establece el valor de cualquier voxel completamente rodeado de vóxeles en .'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

Ajuste de píxeles a Activado con la operación de relleno

Establezca el voxel central del cubo interior en el uso de la operación.1'fill' Esta operación establece el valor de cualquier voxel completamente rodeado de vóxeles en .'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 desconectados con la operación de limpieza

Utilice la operación para eliminar los vóxeles perdidos que estén configurados para un componente del volumen pero que no estén conectados a él.'clean'1 En el ejemplo se crea un voxel perdido estableciendo un voxel aleatorio en el segundo plano en 1 y, a continuación, se usa la operación para quitarlo.'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

Encuentre la mayoría de la operación using the '.cube_centermajority' Esta operación conserva un voxel sólo si más de la mitad (la mayoría) de los vóxeles en el vecindario 26 conectado alrededor del voxel están configurados en .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

Creación de 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  

Búsqueda de puntos finales

Busque los puntos finales de la forma mediante 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

Búsqueda de puntos de sucursal

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

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 una matriz numérica o lógica. Para la entrada numérica, los píxeles distintos de cero se consideran ( ).1true

acepta matrices 1-D, 2-D o 3D.bwmorph3 Si especifica matrices de entrada 1-D o 2-D, realiza la operación morfológica tal como se define para un volumen 3D.bwmorph3 Si desea un comportamiento 2D, 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 escalares de cadena. Para ver ejemplos de estas operaciones, consulte .Ilustraciones de Operaciones Morfológicas

Operación

Descripción

Ilustración

'branchpoints'

Encuentra puntos de rama de esqueleto. Los puntos de bifurcación son los vóxeles en el cruce donde se encuentran varias ramas.

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

'clean'

Retire los vóxeles aislados, estableciéndolos en 0. Un voxel aislado es un voxel individual de 26 conectados que está configurado para que esté rodeado de vóxeles establecidos en .10

'endpoints'

Encuentra puntos finales de 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'

Llene los vóxeles interiores aislados, estableciéndolos en .1 Los vóxeles interiores aislados son vóxeles individuales que están conectados (6 conectados) por vóxeles establecidos en .01

'majority'

Mantenga un voxel establecido en si 14 o más vóxeles (la mayoría) en su 3 por 3 por 3, 26-conectado vecindario está establecido en ; de lo contrario, ajuste el voxel a .110

Ver.Ilustraciones de Operaciones Morfológicas

'remove'

Retire los vóxeles interiores, estableciéndolos en .0 Los vóxeles interiores son vóxeles individuales que están configurados para que estén rodeados (6 conectados) por vóxeles establecidos en .11

Tipos de datos: char | string

Argumentos de salida

contraer todo

Volumen después de operaciones morfológicas, devuelto como una matriz lógica del mismo tamaño que el volumen de entrada.V

Sugerencias

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

  • Para realizar el cierre morfológico, la apertura, el filtrado de sombrero superior o el filtrado de sombrero inferior en volúmenes 3D, utilice las funciones , , , o de cierre, especificando el elemento estructurante.imcloseimopenimtophatimbothatones(3,3,3)

Introducido en R2018a