Segmentación de la arteria aorta con openCV
1. Leer las imágenes
Se lee la secuencia de imágenes de forma interactiva con un “slider” que permite ver la imagen deseada.
2. Binarizar las imágenes
Solo nos interesa la región de densidad de la aorta, esto lo seleccionamos con cv2.inRange(img, 19000, 21000). Además para quitar ruido, aplicamos una transformación morfológica de abrir y cerrar.
3. Generar una matriz numpy en 3D con la imágenes binarizadas
Se leen todas las imágenes binarizadas, se guardan en una lista “list_of_masks”, y se genera una matriz 3D con la función: cube = np.stack(list_of_masks)
Este “cube” tiene la forma de (400, 512, 512)
4. Buscar “connected components” en el cubo
Con la función label(cube) de scipy.ndimage se buscan las connected components, (NOTA: la función de openCV solo vale para imágenes 2D)
Se busca la connected component más grande que corresponde con la arteria aorta. Podemos ver en el histograma que corresponde con el valor 9:
Así que se transforma la matriz 3D en 3 arrays con los puntos 3D cuyo valor tengan 9, esto sirve para poder visualizar.
z,x,y = np.where(labelled_cube == 9)
5. Visualizar
Finalmente vemos como quedaría la arteria aorta segmentada: