Segmentación de la arteria aorta con openCV

Javier Abellán Abenza
Neurosapiens
Published in
2 min readDec 22, 2018

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:

--

--

Javier Abellán Abenza
Neurosapiens

M.S. Computer Science student interested in deep learning