¿Cómo funciona el algoritmo de ‘forma de relleno’ en los programas de dibujo?

La forma más fácil es la conectividad 4 u 8 (ver conectividad Pixel).

Puede ser un algoritmo recursivo (en cuyo caso es muy fácil) que verifica el píxel de entrada si es cualquier color que no sea el color asignado o el color del límite / color anterior de la región. Si no es el color asignado, cambia el color del píxel, luego se llama a sí mismo en todos los demás píxeles conectados.

El pseudocódigo se ve así.

void colour_fill_4_connectivity (int x, int y, int fill_colour, int region_colour) {
if (píxel [x] [y] == color de relleno || píxel [x] [y]! = color_región)
regreso;

píxel [x] [y] = color de relleno;

colour_fill_4_connectivity (x-1, y, fill_colour, region_colour);
colour_fill_4_connectivity (x + 1, y, fill_colour, region_colour);
colour_fill_4_connectivity (x, y-1, fill_colour, region_colour);
colour_fill_4_connectivity (x, y + 1, fill_colour, region_colour);
}

Todas las regiones de color están cerradas en una imagen delimitada, por lo que si desea encontrar una región delimitada en una imagen, puede hacerlo simplemente comprobando si la región alcanza un píxel límite o no.

More Interesting

¿Los árboles binarios / árboles de búsqueda binaria se usan realmente en la práctica o se usan principalmente con fines didácticos?

¿Los algoritmos de aprendizaje automático han salido del laboratorio y han pasado a entornos clínicos que involucran pacientes?

¿Puedo encontrar el camino hamiltoniano más corto en un gráfico completo ponderado no dirigido en tiempo polinómico (donde todos los pesos no son negativos)?

¿Cómo es que la mayoría de las empresas solicitan específicamente estructuras de datos y algoritmos? ¿Qué sucede cuando un adicto a los algoritmos con solo conocimiento de C ++ o Java es aceptado en una empresa que utiliza tecnologías web, aprende el marco utilizado desde cero?

¿Qué proyectos usan algoritmos de redes neuronales?

¿Cómo se copia el contenido de un árbol de búsqueda binario que tiene emparejamientos K, V?

En la programación en C, dada una matriz de tamaño n, ¿cómo encuentras la suma de todas las combinaciones posibles de sus números?

¿Cuál es el algoritmo de programación monotónico de velocidad en los sistemas operativos?

¿Cuál es el algoritmo más complejo en CS?

¿Cómo se puede explicar el algoritmo para la conversión de un número binario a un hexadecimal (código fuente incluido)?

¿Cuáles son algunas diferencias entre los campos de la investigación algorítmica y la investigación de operaciones?

Si una cadena de números contiene todas las demás cadenas de números, ¿eso significa que la cadena también se contiene estrictamente a sí misma?

¿Qué calcula este algoritmo? ¿Cuál es su funcionamiento básico? ¿Cuántas veces se ejecuta la operación básica? ¿Cuál es la clase de eficiencia de este algoritmo?

¿Cuáles son los actos que se consideran hacer trampa durante un desafío de contratación en Interviewstreet?

¿Son los sentimientos la función del costo del algoritmo de aprendizaje automático de los humanos?