Segmentación automática de órganos respiratorios.

La segmentación manual del pulmón tarda unos 10 minutos y requiere cierta habilidad para obtener el mismo resultado de alta calidad que con la segmentación automática. La segmentación automática tarda unos 15 segundos.


Supuse que sin una red neuronal sería posible obtener una precisión de no más del 70%. También supuse que las operaciones morfológicas son solo la preparación de una imagen para algoritmos más complejos. Pero como resultado del procesamiento de esas, aunque pocas, 40 muestras de datos tomográficos disponibles, el algoritmo segmentó los pulmones sin errores. Además, después de probar en los primeros cinco casos, el algoritmo no cambió significativamente y funcionó correctamente en los otros 35 estudios sin cambiar la configuración.


Además, las redes neuronales tienen una desventaja: para su entrenamiento necesitamos cientos de muestras de entrenamiento de pulmones, que deben marcarse manualmente.



Contenido



Estructura del sistema respiratorio


El sistema respiratorio incluye las vías respiratorias y los pulmones. Las vías aéreas se dividen en las vías aéreas superiores e inferiores. El punto de separación entre el tracto respiratorio inferior y superior es el punto de intersección del esófago y las vías respiratorias. Todos los órganos que están por encima de la laringe son el tracto superior y la laringe y los órganos de abajo son el tracto inferior.


Lista de los órganos respiratorios:


La cavidad nasal es una cavidad llena de aire entre la nariz y la faringe.
La faringe es un canal a través del cual viaja la comida y el aire.
La tráquea es un tubo conectado a la laringe y los bronquios.
La laringe es responsable de la formación de la voz. Está al nivel de las vértebras cervicales C4-C6.
Los bronquios son los canales respiratorios, cuya parte principal se encuentra dentro de los pulmones.
Los pulmones son el principal órgano respiratorio.



Escala de Haunsfield


Godfrey Hounsfield era un ingeniero eléctrico inglés que, junto con el teórico estadounidense Allan Cormack, desarrolló la tomografía computarizada, por la cual compartió el Premio Nobel en 1979.



La escala de Hounsfield: es una escala cuantitativa para describir la radiodensidad, que se mide en unidades de Hounsfield, denotada como HU.


La radiodensidad se calcula sobre la base del coeficiente de atenuación de la radiación. El coeficiente de atenuación caracteriza la facilidad con la que la radiación puede penetrar un volumen de material.


La radiodensidad se calcula mediante la fórmula:


$$ display $$ {μ_ {X} -μ_ {water} \ over μ_ {water} -μ_ {air}} \ times 1000 $$ display $$


donde μX,μagua,μaireson coeficientes de atenuación lineal para el material medido, agua y aire.


La radiodensidad puede ser negativa porque la radiodensidad cero corresponde al agua. Esto significa que todos los materiales que tengan un coeficiente de atenuación más bajo que el coeficiente de atenuación del agua (por ejemplo, tejido pulmonar, aire) tendrán una radiodensidad negativa.


Las radiodensidades aproximadas para varios tejidos se enumeran a continuación:


  • Aire: -1000 HU.
  • Órganos respiratorios: de -950 a -300 HU.
  • Sangre (sin contrastar los vasos): de 0 a 100 HU.
  • Huesos: 100 a 1000 HU.


Enlaces a Wikipedia: escala Hounsfield , Godfrey Hounsfield , coeficiente de atenuación .


Morfología matemática


Las operaciones morfológicas son las principales herramientas que se utilizaron en el algoritmo.
En el campo de la visión por computadora, las operaciones morfológicas se denominan un grupo de algoritmos para la transformación de la forma de los objetos. Muy a menudo, las operaciones morfológicas se aplican a imágenes binarizadas donde las unidades corresponden a vóxeles de objeto y ceros para vaciar.
Las principales operaciones morfológicas incluyen:


La dilatación morfológica es la adición de nuevos vóxeles a todos los vóxeles de borde de los objetos. En otras palabras, el algoritmo escanea todos los vóxeles correspondientes al borde del objeto y los amplía usando un núcleo con una forma dada (esfera, cubo, cruz, etc.). El núcleo tiene su propio radio (para la esfera), o el ancho del lado (para el cubo). Esta operación se usa a menudo para fusionar múltiples objetos cercanos en un solo objeto.


La erosión morfológica es el corte de todos los vóxeles que se encuentran en el borde (límite) de los objetos. Esta operación es inversa a la dilatación. Esta operación es útil para eliminar el ruido que tiene la forma de muchos objetos pequeños interconectados. Sin embargo, este método de eliminación de ruido solo debe usarse si el objeto de interés tiene un espesor mucho mayor que el radio de erosión. De lo contrario, se perderá la información útil.


El cierre morfológico es una dilatación seguida de una erosión. Se utiliza para cerrar agujeros dentro de objetos y para fusionar objetos cercanos.


La apertura morfológica es una erosión seguida de una dilatación. Se utiliza para eliminar pequeños objetos de ruido y para separar los objetos en varios objetos.



Algoritmo de Lee y compresión RLE


Para seleccionar objetos en volumen de vóxel binarizado, se utiliza el algoritmo de Lie. Originalmente, este algoritmo se inventó para encontrar la forma más corta de salir del laberinto. Lo usamos para seleccionar el objeto y moverlo de un conjunto tridimensional de vóxeles a otro. La idea básica del algoritmo consiste en un movimiento paralelo en todas las direcciones posibles desde el punto de partida. Para un caso tridimensional, es posible moverse en 26 o 6 direcciones desde un vóxel.


Para optimizar el rendimiento, se aplicó el algoritmo de codificación de longitud de ejecución. La idea principal del algoritmo es que la secuencia de unos y ceros se reemplaza por un dígito igual al número de elementos en la secuencia. Por ejemplo, la cadena "00110111" se puede reemplazar por: "2; 2; 1; 3 ". Esto reduce el número de accesos a la memoria.



Enlaces de Wikipedia: algoritmo Lee , algoritmo RLE .


Transformación umbral del volumen base


Usando el tomógrafo se obtuvieron los datos sobre una radiodensidad en cada punto del espacio escaneado. Los vóxeles aéreos tienen una radiodensidad en el rango de -1100 a -900 HU, y los vóxeles de los órganos respiratorios tienen radiodensidad de -900 a -300 HU. Por lo tanto, podemos eliminar todos los vóxeles innecesarios con radiodensidad superior a -300 HU. Como resultado, obtenemos un volumen de vóxel binarizado que contiene solo los órganos respiratorios y el aire.



Extracción de aire externo


Para segmentar el aire interno del cuerpo, eliminamos todos los objetos adyacentes a las esquinas del volumen 3D. Por lo tanto, eliminamos el aire externo.



Sin embargo, no en todos los casos se eliminará el aire dentro de la mesa del tomógrafo, ya que puede no tener una conexión con las esquinas del volumen 3D.



Por lo tanto, escanearemos no solo las esquinas, sino también todos los vóxeles que se encuentran en cualquiera de los planos de borde de la f. Pero, como podemos ver en la imagen a continuación, también se extrajeron los pulmones. Resulta que la tráquea también tenía una conexión con el plano superior del volumen 3D.



Tendremos que excluir el plano superior del área de escaneo. También hay estudios en los que los pulmones no se capturaron completamente y el plano inferior está conectado a los pulmones.
Entonces, si lo desea, también puede excluir el plano inferior.



Pero este método solo afecta los estudios de tórax. En el caso de la captura del volumen completo del cuerpo, aparecerá la conexión de aire interno y externo a través de la cavidad nasal. Por lo tanto, es necesario aplicar erosión morfológica para separar el aire interno y externo.



Después de aplicar la erosión, podemos volver al método de segmentación del aire externo previamente obtenido que se basa en la conectividad del aire externo con los planos laterales del volumen 3D.



Después de la segmentación del aire externo, podríamos restar inmediatamente el aire externo del volumen total del aire y los pulmones y obtener el aire interno del cuerpo y los pulmones. Pero hay un problema. Después de la erosión, se perdió parte de la información sobre el aire externo. Para restaurarlo, aplicamos dilatación del aire externo.



Luego, restamos el aire externo del aire completo y los órganos respiratorios y obtenemos el aire interno y los órganos respiratorios.




Segmentación del objeto de volumen máximo.


A continuación, segmentamos los órganos respiratorios como el objeto máximo en volumen. Los órganos respiratorios no tienen conexión con el aire dentro del tracto gastrointestinal.



Vale la pena señalar que la elección correcta del umbral de radiodensidad en el paso inicial es importante. De lo contrario, en algunos casos, puede no haber conexión entre los dos pulmones como resultado de la baja resolución. Por ejemplo, si suponemos que los vóxeles de los órganos respiratorios tienen una radiodensidad de -500 HU y menos, entonces, en el siguiente caso, la segmentación de los órganos respiratorios como el objeto más grande en volumen conducirá a un error, porque no hay conexión entre Los dos pulmones. Por lo tanto, el umbral debe aumentarse a -300 HU.



Cerrar los vasos dentro de los pulmones.


Para capturar los vasos dentro de los pulmones, utilizaremos el cierre morfológico, es decir, dilatación seguida de erosión con el mismo radio. La radiodensidad de los vasos (sin contraste) es de aproximadamente 0..100 HU.



En la imagen podemos ver que los canales sanguíneos grandes no están cerrados. Pero esto no es necesario. El propósito de esta operación fue destruir los muchos agujeros pequeños dentro de los pulmones para simplificar el proceso de segmentación pulmonar en los próximos pasos.


Algoritmo de segmentación de órganos respiratorios


Como resultado, obtenemos el siguiente algoritmo de segmentación de órganos respiratorios:


  1. Transformación de umbral del volumen base con el umbral "<-300 HU".
  2. Erosión morfológica con un radio de 3 mm para la separación del aire externo e interno.
  3. Segmentación del aire externo basada en la conectividad del aire externo con los planos laterales del volumen 3D.
  4. Dilatación morfológica del aire externo para restaurar la información perdida después de la erosión.
  5. Resta del aire externo de todo el aire y los órganos respiratorios para obtener el aire interno y los órganos respiratorios.
  6. Segmentación del objeto de volumen máximo.
  7. Cierre morfológico de los vasos dentro de los pulmones.


Implementación de algoritmos en MATLAB


Función "getRespiratoryOrgans"


% Returns the whole respiratory organs volume (lung and airway volume) % without separating of the left and right lung. % V = base volume with radiodensity data in Hounsfield units. % cr = radius of vessels morphological closing. % ci = iteration count of vessels morphological closing (fe 3-times % make dilation and after that 3-times make erosion. function RO = getRespiratoryOrgans(V,cr,ci) % Threshold transform of the base volume with the threshold level "<-300 HU". AL=~imbinarize(V,-300); % Morphological erosion with the 3 mm radius for the separation of external % and internal air. SE=strel('sphere',3); EAL=imerode(AL,SE); % Segmentation of external air based on external air connectivity with the % boundary side planes of the 3D volume. EA=getExternalAir(EAL); % Morphological dilation of the external air to restore the information lost % after the erosion. DEA=EA; for i=1:4 DEA=imdilate(DEA,SE); DEA=DEA&AL; end % Subtraction of the external air from the whole air and respiratory organs to % obtain the internal air and respiratory organs. IAL=AL-DEA; % Segmentation of the maximum volume object. RO=getMaxObject(IAL); Morphological closing of the vessels inside the lungs. RO=closeVoxelVolume(RO,3,2); 

Función "getExternalAir"


 % Returns the volume which is connected with the edge surfaces of % the voxel scene (except the top surface, because lungs can have % a connection with the top surface). % EAL = eroded lung-and-air binarized volume. function EA = getExternalAir(EAL) % The “bwlabeln” function segments objects: voxels of a one object % equates to 1, and of another one - to 2, etc. V=bwlabeln(EAL); % We request such characteristics of the objects as bounding box and % list of all object voxels. R=regionprops3(V,'BoundingBox','VoxelList'); n=height(R); % Create a 3D matrix for storing external air voxels. s=size(EAL); EA=zeros(s,'logical'); % Scan all the objects to find objects belonging to the external air. for i=1:n % Define the minimum and maximum x and y coordinates of the object. x0=R(i,1).BoundingBox(1); y0=R(i,1).BoundingBox(2); x1=x0+R(i,1).BoundingBox(4); y1=y0+R(i,1).BoundingBox(5); % If the edge voxels of the object are in contact with the side planes of % the 3D volume, then copy all the voxels of this object into the matrix EA. if (x0 < 1 || x1 > s(1)-1 || y0 < 1 || y1 > s(2)-1) % Convert the object voxel coordinates data to the matrix type: % [[x1 y1 z1] [x2 y2 z3] ... [xn yn zn]]. mat=cell2mat(R(i,2).VoxelList); ms=size(mat); % Fill the matrix containing the voxels of the external air. for j=1:ms(1) x=mat(j,2); y=mat(j,1); z=mat(j,3); EA(x,y,z)=1; end end end 

Función "getMaxObject"


 % Returns the largest object in the voxel volume V. % O = the voxels of the largest object. % m = the volume of the largest object. function [O,m] = getMaxObject(V) % Segment the objects. V=bwlabeln(V); % Reqiest the information about the objects volume and objects voxel coordinates. R=regionprops3(V,'Volume','VoxelList'); % Determine the index of the maximum volume object. v=R(:,1).Volume; [m,i]=max(v); % Create the 3D matrix for storing the largest object voxels. s=size(V); O=zeros(s,'logical'); % Copy the largest object voxels to the new matrix. mat=cell2mat(R(i,2).VoxelList); ms=size(mat); for j=1:ms(1) x=mat(j,2); y=mat(j,1); z=mat(j,3); O(x,y,z)=1; end 

El código fuente puede ser descargado por la referencia .


Conclusión


Los siguientes artículos serán:


  1. segmentación de tráquea y bronquios;
  2. segmentación pulmonar;
  3. segmentación de lóbulos pulmonares.

Se considerarán los siguientes algoritmos:


  1. transformación de distancia;
  2. transformación vecina más cercana, también conocida como transformación de características;
  3. cálculo de los valores propios de la matriz de Hesse para la segmentación de objetos planos en 3D;
  4. segmentación de cuencas hidrográficas.

Source: https://habr.com/ru/post/461329/


All Articles