Principalmente, esta es una pregunta de seguimiento a un problema de hace unas semanas , a pesar de que se trata del algoritmo en general sin aplicación a mi problema real.
El algoritmo básicamente busca a través de todas las líneas de la imagen, comenzando desde la parte superior izquierda de la misma, hasta que encuentra un píxel que es un borde. En pseudo-C ++:
int start = 0;
for(int i=0; i<amount_of_pixels; ++i)
{
if(pixels[i] == border)
{
start = i;
break;
}
}
Cuando encuentra uno, inicia el algoritmo de cuadrados de marcha y encuentra el contorno del objeto al que pertenece el píxel.
Digamos que tengo algo como esto:
Donde todo excepto el color blanco es un borde.
Y he encontrado los puntos de contorno del primer blob:
Para el algoritmo general se acabó. Encontró un contorno y ha hecho su trabajo. ¿Cómo puedo pasar a los otros dos blobs para encontrar también sus contornos?
Respuestas:
¿Podría simplemente borrar el polígono que se encuentra dibujándolo en el color de fondo y repetir hasta que no quede nada?
fuente
Mira esto:
http://en.wikipedia.org/wiki/Connected-component_labeling Después de detectar blobs, simplemente aplique cuadros de marcha alg para obtener los márgenes de cada blob.
Bye Lo
fuente
¿por qué no guardar la información del blob en otra matriz y verificar si los píxeles recién encontrados caen dentro del cuadro delimitador del blob anterior? Se necesitará más manipulación para tratar las manchas debajo del centro de la gota anterior y que caen dentro del cuadro delimitador.
fuente