2011-06-27 16 views
5

Entonces, lo que quiero hacer es escribir una aplicación que, al menos en el futuro, pueda ser portada a plataformas móviles (como Android) que puedan escanear una imagen de un gel de proteína y datos de retorno como el número de bandas (es decir, pesos) en una columna, la concentración relativa (grosor de la banda) y los pesos de cada columna.Usando OpenCV para analizar datos de geles de proteínas

Para los que no están familiarizados, las mezclas de proteínas desnaturalizadas (básicamente, moléculas hechas completamente rectas) se cargan en cada columna, y con el uso de electricidad las proteínas se extraen a través de un gel (porque las proteínas son moléculas polares) Las columnas finales de cada lado de esta imagen http://i52.tinypic.com/205cyrl.gif son donde coloca una mezcla de proteínas de pesos conocidos (por lo tanto, si tiene 4 pesos diferentes, la banda superior es la más grande y el peso/tamaño de la proteína disminuye cuanto más viaja hacia abajo). ¿Es posible analizar algo como esto usando OpenCV? La imagen dada es un gel realmente limpio, a menudo pueden ponerse realmente desordenados (ver imágenes de google). Pensé que si permitía a un usuario ingresar el número de columnas, qué columnas contienen marcadores de peso conocidos y sus pesos reales, así como también proporcionar un rectángulo ajustable al tamaño alrededor de los bordes del gel, tal vez sería posible escanear y extraer datos de las imágenes de estos geles? Revisé un libro de texto en OpenCV pero no vi ninguna manera obvia y confiable de abordar esto. ¿Algunas ideas? ¿Tal vez una biblioteca diferente sería más adecuada?

Respuesta

5

Creo que se puede hacer esto usando OpenCV

Mi enfoque sería una separación basada en el color. Y luego contar los diferentes componentes por separado.

en las grandes pasos que su aplicación haría los siguientes pasos:

  1. Cargar la imagen, gire TI a gran escala de forma manual a través de la interfaz gráfica de usuario de la aplicación, para satisfacer sus necesidades

  2. crear una segunda escala de grises imagen en la que cada píxel contiene un valor entre [0,255], que representa qué tan bueno es el color del punto original que coincide con el color objetivo (en el caso de this image el tono azul) En uno de mis experimentos utilicé el concepto de conjuntos difusos y cortes alfa para extraer objetos de un cierto color. La función de membresía triangular me dio muy buenos resultados. Esto simplemente significa que he definido triangular functions for all three color channels RGB, y he resumido su resultado para cada color dado como entrada. Si los valores del color estaban cerca de los centros de los triángulos, entonces tenía una gran similitud. Además, al controlar el ancho de los triángulos, puede definir la tolerancia de los partidos. (Otra opción sería usar funciones de pertenencia trapezoidales)

  3. En este punto, tiene una imagen en escala de grises, donde el fondo (gel) es negro y las proteínas son de color gris/blanco. Si desea eliminar el ruido, utilice morphological operators (página 127) para erosionar y dilatar (cvErode y cvDelate en openCV).

  4. Tras ello, puede utilizar este great openCV based blob extraction library para extraer los cuadros delimitadores de las zonas grises restantes - en representación de las proteínas

  5. tener todas las coordenadas de los cuadros delimitadores se pueden aplicar sus propios algoritmos, para extraer cualquier dato usted desea

En mi opinión, OpenCV le ofrece todas las herramientas necesarias. Sin embargo, una solución completamente automatizada puede ser difícil de obtener.Pero estoy seguro de que puede construir fácilmente una GUI donde puede establecer los parámetros de los operadores que aplica durante los pasos descritos anteriormente.

Como para Android: No desarrollé para plataformas móviles, pero sé que puede cree aplicaciones C++ para estos dispositivos; he leído varias preguntas sobre iPhone & openCV, así que creo que su aplicación sería portátil, o al menos la parte de procesamiento de imágenes (la GUI podría ser demasiado específica de la plataforma).

+1

esto puede parecer no relacionado al principio, pero puede consultar las aplicaciones móviles de depósito de cheques recientes para obtener inspiración sobre cómo guiar al usuario a tomar la fotografía para su análisis. Cosas como "alinear la columna de gel para que se ajuste a lo largo de esta línea o dentro de esta caja" le ayudarán a hacer ciertas suposiciones sobre los datos de la imagen y evitar tener que lidiar con problemas como la alineación de la foto. Básicamente, utilice un buen diseño de IU para guiar al usuario en la creación de una imagen limpia, para que no tenga que preocuparse por limpiarlo automáticamente. – Ian

Cuestiones relacionadas