¿Cómo contar las células sanguíneas en opencv? El problema es que se mantienen unidos.
La imagen de ejemplo:
¿Quizás histograma geométrico por pares ( Histogramas geométricos ) adecuado para hacer coincidir la forma del círculo parcial?
¿Cómo contar las células sanguíneas en opencv? El problema es que se mantienen unidos.
La imagen de ejemplo:
¿Quizás histograma geométrico por pares ( Histogramas geométricos ) adecuado para hacer coincidir la forma del círculo parcial?
Respuestas:
Solo una idea sin garantía de éxito:
De manera similar a la sugerencia de @ SalemMansour, también es un enfoque basado en áreas.
Se puede calcular una estimación realmente aproximada si podemos suponer
Luego, puede medir previamente el tamaño promedio de una celda y calcular una máscara barata para las celdas de esta manera:
from SimpleCV import *
im = Image("s58Hl.jpg")
r,g,b = im.splitChannels()
cellmask = g.equalize().threshold(90).invert()
masksize = cellmask.getGrayNumpy().sum()/255.
cellsize = 27*27 # premeasured cell size
cellnum = masksize/cellsize
print(cellnum)
Me da ~ 211 para el recuento celular.
La imagen de la máscara es así:
Para esta imagen más pequeña, contaría manualmente 9 celdas:
La solución da el resultado de 9.46502057613.
Por supuesto, si alguno de los supuestos no es válido, entonces este enfoque es inútil. También es sensible al umbral de color duro y al tamaño de celda constante. Debido a la ecualización del color, puede fallar totalmente si no hay una celda presente en la imagen.
Pero es realmente simple y barato :)
Primero debe cambiar la imagen a imagen binaria utilizando el umbral, el método otsu. Puede separar las celdas (celdas superpuestas) utilizando la morfología matemática como la erosión, la apertura. Estima el área.