2011-04-06 31 views
13

¿Cómo puedo segmentar las células de una imagen tomada en un microscopio, siguiendo el modelo de lo que se hizo aquí en Matlab?Segmentación celular y recuento de fluorescencia en Python

http://blogs.mathworks.com/steve/2006/06/02/cell-segmentation/

También, si tomo múltiple imagen en diferentes canales fluorescentes (después de la tinción de las células con un poco de anticuerpo/fabricante), ¿cómo puedo cuantificar automáticamente la fracción de células positivas para cada marcador? ¿Alguien ha hecho algo como esto en Python? ¿O hay una biblioteca en Python que se puede usar para hacer esto?

+0

seguro de cómo tomar este que está en espera, pero trató de edición para hacer frente a la (en lugar nitpicking e incorrecta) "off -topic "marcando. –

+0

@bluefeet: ¿por qué estaba cerrado? Es una pregunta específica, con dos respuestas específicas a continuación. Edité la parte pidiendo una recomendación. –

+0

@thouis ¿Por qué estaba cerrado? Porque es una pregunta demasiado amplia y también está pidiendo una biblioteca. Su edición para eliminar la última línea básicamente invalida cada respuesta en esta pregunta que solo apunta a un enlace. Cerrar una pregunta no significa que se eliminará, pero esta pregunta tal como está escrita no está relacionada con el tema. – Taryn

Respuesta

6

Puede hacer esto en Python usando la biblioteca OpenCV.

En particular, usted estará interesado en las siguientes características:

  • histograma de estiramiento (cv.EqualizeHist). Esto es missing de la API actual de Python, pero si descarga la última versión SVN de OpenCV, puede usarla. Esta parte es para propósitos de la pantalla, no se requieren para obtener el mismo resultado
  • image thresholding
  • operaciones morfológicas tales como erode (también dilatan, abrir, cerrar, etc)
  • determinar el contorno de una burbuja en una imagen binaria usando cv.FindContours - vea this question. Está utilizando C, no Python, pero las API son prácticamente las mismas, de modo que puede aprender mucho de allí
  • Segmentación de cuencas (use cv.Watershed - exists, pero por alguna razón no puedo encontrarlo en el manual)

con esto en mente, aquí es como me gustaría utilizar OpenCV para obtener los mismos resultados que en el artículo de MATLAB:

  1. umbral de la imagen usando un umbral determinado empíricamente (o método de Ohtsu)
  2. Aplicar dilatación a la imagen para llenar los vacíos. Opcionalmente, falta de definición de la imagen antes de la etapa de umbral anterior - que también eliminar pequeñas "agujeros"
  3. Determinar contornos usando cv.FindContours
  4. Opcionalmente, paint the contours
  5. Utilizando la información blob, iterar sobre cada blob en el originales imagen y aplicar un umbral diferente para cada nota para separar los núcleos de las células (esto es lo que su funcionamiento está haciendo imextendedmax)
  6. Opcionalmente, la pintura en los núcleos
  7. Aplicar la cuenca transformada

No he probado nada de esto (lo siento, no tengo tiempo ahora), por lo que aún no puedo mostrarle ningún código. Sin embargo, de acuerdo con mi experiencia con OpenCV, estoy seguro de que todo hasta el paso 7 funcionará bien. Nunca he usado la transformada watershed de OpenCV antes, pero no veo una razón para que no funcione aquí.

Pruebe a seguir los pasos que he mostrado y díganos si tiene algún problema. Asegúrese de publicar su fuente de esa manera, más personas podrán ayudarlo.

Por último, para responder a su pregunta sobre la tinción de las células y cuantificar su presencia, es bastante fácil conocer los tintes que está utilizando. Por ejemplo, para determinar las células teñidas con colorante rojo, extraería el canal rojo de la imagen y examinaría las áreas de alta intensidad (tal vez mediante el umbral).

1

Usted también puede encontrar esta biblioteca útil:

https://github.com/luispedro/pymorph/

me pareció más fácil de ponerse en movimiento con el que la biblioteca OpenCV.

+0

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. –

+0

@AndrewSvetlov gracias amigo ... ¿dónde estabas hace 4 años para decirnos esto? – so12311

1

Y sólo para añadir una más: cellprofiler.org (software de análisis de imágenes de células de código abierto, en python)

No
Cuestiones relacionadas