Relleno de inundación: Relleno de inundación: exploración del terreno dinámico de la visión por computadora
Por Fouad Sabry
()
Información de este libro electrónico
Qué es el relleno por inundación
El relleno por inundación, también llamado relleno de semillas, es un algoritmo de inundación que determina y altera el área conectada a un nodo determinado en una matriz multidimensional con algún atributo coincidente. Se utiliza en la herramienta de relleno "cubo" de los programas de pintura para rellenar áreas conectadas de colores similares con un color diferente, y en juegos como Go y Buscaminas para determinar qué piezas se limpian. Una variante llamada relleno de límites utiliza los mismos algoritmos pero se define como el área conectada a un nodo determinado que no tiene un atributo particular.
Cómo se beneficiará
(I) Información y validaciones sobre los siguientes temas:
Capítulo 1: Relleno por inundación
Capítulo 2: Representación de líneas de escaneo
Capítulo 3: Profundidad -primera búsqueda
Capítulo 4: Quadtree
Capítulo 5: Recorrido de gráficos
Capítulo 6: Etiquetado de componentes conectados
Capítulo 7: Watershed (procesamiento de imágenes)
Capítulo 8: Algoritmo de resolución de laberintos
Capítulo 9: Difusión de rayos
Capítulo 10: Desenfoque de cuadro
(II) Responder las principales preguntas del público sobre el relleno contra inundaciones.
(III) Ejemplos del mundo real sobre el uso de relleno contra inundaciones en muchos campos.
Para quién es este libro
Profesionales, estudiantes de pregrado y posgrado, entusiastas, aficionados y aquellos que quieran ir más allá del conocimiento o la información básica para cualquier tipo de Flood Fill.
Lee más de Fouad Sabry
Tecnologías Emergentes En El Transporte [Spanish]
Relacionado con Relleno de inundación
Títulos en esta serie (100)
Transformacion afin: Desbloqueo de perspectivas visuales: exploración de la transformación afín en visión por computadora Calificación: 0 de 5 estrellas0 calificacionesVisión por computador: Explorando las profundidades de la visión por computadora Calificación: 0 de 5 estrellas0 calificacionesCorrección gamma: Mejora de la claridad visual en la visión por computadora: la técnica de corrección gamma Calificación: 0 de 5 estrellas0 calificacionesHistograma de imagen: Revelando conocimientos visuales, explorando las profundidades de los histogramas de imágenes en visión por computadora Calificación: 0 de 5 estrellas0 calificacionesTransformación dura: Revelando la magia de Hough Transform en visión por computadora Calificación: 0 de 5 estrellas0 calificacionesRetinax: Revelando los secretos de la visión computacional con Retinex Calificación: 0 de 5 estrellas0 calificacionesBanco de filtros: Información sobre las técnicas del banco de filtros de Computer Vision Calificación: 0 de 5 estrellas0 calificacionesReducción de ruido: Mejora de la claridad, técnicas avanzadas para la reducción del ruido en la visión por computadora Calificación: 0 de 5 estrellas0 calificacionesVisión por computadora submarina: Explorando las profundidades de la visión por computadora debajo de las olas Calificación: 0 de 5 estrellas0 calificacionesJoint Photographic Experts Group: Liberando el poder de los datos visuales con el estándar JPEG Calificación: 0 de 5 estrellas0 calificacionesVisión estéreo por computadora: Explorando la percepción de profundidad en la visión por computadora Calificación: 0 de 5 estrellas0 calificacionesHomografía: Homografía: Transformaciones en Visión por Computador Calificación: 0 de 5 estrellas0 calificacionesEn Pintura: Cerrar brechas en la visión por computadora Calificación: 0 de 5 estrellas0 calificacionesDetector de bordes astuto: Revelando el arte de la percepción visual Calificación: 0 de 5 estrellas0 calificacionesEcualización de histograma: Mejora del contraste de la imagen para mejorar la percepción visual Calificación: 0 de 5 estrellas0 calificacionesTransformación lineal directa: Aplicaciones prácticas y técnicas en visión por computadora. Calificación: 0 de 5 estrellas0 calificacionesMapeo de tonos: Mapeo de tonos: perspectivas iluminadoras en visión por computadora Calificación: 0 de 5 estrellas0 calificacionesFiltro adaptativo: Mejora de la visión por computadora mediante filtrado adaptativo Calificación: 0 de 5 estrellas0 calificacionesCompresión de imagen: Técnicas eficientes para la optimización de datos visuales Calificación: 0 de 5 estrellas0 calificacionesPercepción visual: Información sobre el procesamiento visual computacional Calificación: 0 de 5 estrellas0 calificacionesDifusión anisotrópica: Mejora del análisis de imágenes mediante difusión anisotrópica Calificación: 0 de 5 estrellas0 calificacionesModelo de color: Comprensión del espectro de la visión por computadora: exploración de modelos de color Calificación: 0 de 5 estrellas0 calificacionesTransformación de Hadamard: Revelando el poder de la transformación de Hadamard en visión por computadora Calificación: 0 de 5 estrellas0 calificacionesContorno activo: Avances en la visión por computadora con técnicas de contorno activo Calificación: 0 de 5 estrellas0 calificacionesTransformación de radón: Revelando patrones ocultos en datos visuales Calificación: 0 de 5 estrellas0 calificacionesModelo de cámara estenopeica: Comprender la perspectiva a través de la óptica computacional Calificación: 0 de 5 estrellas0 calificacionesSistema de gestión de color: Optimización de la percepción visual en entornos digitales Calificación: 0 de 5 estrellas0 calificacionesDetección de contorno: Revelando el arte de la percepción visual en la visión por computadora Calificación: 0 de 5 estrellas0 calificacionesModelo de apariencia de color: Comprensión de la percepción y la representación en visión por computadora Calificación: 0 de 5 estrellas0 calificacionesConsenso de muestra aleatoria: Estimación robusta en visión por computadora Calificación: 0 de 5 estrellas0 calificaciones
Libros electrónicos relacionados
Método de ajuste de nivel: Avances en la visión por computadora, exploración del método de conjunto de niveles Calificación: 0 de 5 estrellas0 calificacionesAlgoritmo de dibujo lineal: Dominar técnicas para la representación de imágenes de precisión Calificación: 0 de 5 estrellas0 calificacionesEliminación de líneas ocultas: Revelando lo invisible: secretos de la visión por computadora Calificación: 0 de 5 estrellas0 calificacionesInterpolación bilineal: Mejora de la resolución y claridad de la imagen mediante interpolación bilineal Calificación: 0 de 5 estrellas0 calificacionesAlgoritmo de la línea de Bresenham: Representación eficiente de líneas con píxeles perfectos para visión por computadora Calificación: 0 de 5 estrellas0 calificacionesGeneración de malla: Avances y aplicaciones en la generación de mallas de visión por computadora Calificación: 0 de 5 estrellas0 calificacionesGráficos rasterizados: Comprender los fundamentos de los gráficos rasterizados en visión por computadora Calificación: 0 de 5 estrellas0 calificacionesDeterminación de superficies ocultas: Revelando los secretos de la visión por computadora Calificación: 0 de 5 estrellas0 calificacionesPartición del espacio binario: Explorando la partición del espacio binario: fundamentos y aplicaciones en visión por computadora Calificación: 0 de 5 estrellas0 calificacionesRepresentación de línea de exploración: Explorando el realismo visual a través de técnicas de renderizado Scanline Calificación: 0 de 5 estrellas0 calificacionesReconstrucción tridimensional multivista: Técnicas avanzadas de percepción espacial en visión por computadora Calificación: 0 de 5 estrellas0 calificacionesClasificación de imágenes contextuales: Comprensión de los datos visuales para una clasificación eficaz Calificación: 0 de 5 estrellas0 calificacionesEspacio de escala: Explorando las dimensiones en visión por computadora Calificación: 0 de 5 estrellas0 calificacionesVóxel: Explorando las profundidades de la visión por computadora con tecnología Voxel Calificación: 0 de 5 estrellas0 calificacionesMatplotlib, Introducción a la Visualización 2D, Parte II Calificación: 0 de 5 estrellas0 calificacionesConsenso de muestra aleatoria: Estimación robusta en visión por computadora Calificación: 0 de 5 estrellas0 calificacionesHashing geométrico: Algoritmos eficientes para el reconocimiento y la comparación de imágenes Calificación: 0 de 5 estrellas0 calificacionesIntroducción a las matemáticas Calificación: 3 de 5 estrellas3/5Ecualización de histograma: Mejora del contraste de la imagen para mejorar la percepción visual Calificación: 0 de 5 estrellas0 calificacionesGráfico de trama digital: Revelando el poder de los gráficos rasterizados digitales en la visión por computadora Calificación: 0 de 5 estrellas0 calificacionesTransformación de radón: Revelando patrones ocultos en datos visuales Calificación: 0 de 5 estrellas0 calificacionesNumpy Libro 1, Introducción Calificación: 0 de 5 estrellas0 calificacionesDetección de bordes: Explorando los límites en la visión por computadora Calificación: 0 de 5 estrellas0 calificacionesTablas dinámicas y Gráficas para Excel: Una guía visual paso a paso Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar con Matlab Calificación: 0 de 5 estrellas0 calificacionesAproximaciones de pi Usando Python y Numpy Calificación: 0 de 5 estrellas0 calificacionesCuadro delimitador mínimo: Revelando el poder de la optimización espacial en la visión por computadora Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar en MATLAB Calificación: 4 de 5 estrellas4/5Transformación lineal directa: Aplicaciones prácticas y técnicas en visión por computadora. Calificación: 0 de 5 estrellas0 calificacionesAprender selecciones, capas y canales con Photoshop CS6 Calificación: 0 de 5 estrellas0 calificaciones
Inteligencia (IA) y semántica para usted
Fundamentos de Programación: Diagramas de flujo, Diagramas N-S, Pseudocódigo y Java Calificación: 0 de 5 estrellas0 calificacionesResumen CHAT GPT IA Revolución en 2023: Guía de la Tecnología CHAT GPT y su Impacto Social: Resumen Tecnológico, #1 Calificación: 0 de 5 estrellas0 calificacionesCómo Ganar Dinero por Internet con Inteligencia Artificial Emprende tu negocio digital con ChatGPT, Escríbelo.ia, Playground AI, You.com, Canva, Midjourney, Dall-E 2, Amazon... Calificación: 0 de 5 estrellas0 calificacionesIntroducción a la ingeniería Calificación: 0 de 5 estrellas0 calificacionesInteligencia Artificial Calificación: 4 de 5 estrellas4/5Dominando ChatGPT: Desbloquea el poder de la IA para mejorar la comunicación y las relaciones: Spanish Calificación: 3 de 5 estrellas3/5Máquinas predictivas: La sencilla economía de la inteligencia artificial Calificación: 5 de 5 estrellas5/5Metodología de la programación Calificación: 0 de 5 estrellas0 calificacionesEl mito de la inteligencia artificial: Por qué las máquinas no pueden pensar como nosotros lo hacemos Calificación: 5 de 5 estrellas5/5Klara y el Sol Calificación: 5 de 5 estrellas5/5GuíaBurros: Inteligencia Artificial: Su lado oscuro y el fin del principio Calificación: 0 de 5 estrellas0 calificacionesCómo usar Chatgpt para tu negocio Calificación: 0 de 5 estrellas0 calificacionesAprendizaje automático y profundo en python: Una mirada hacia la inteligencia artificial Calificación: 0 de 5 estrellas0 calificacionesInteligencia artificial: Una exploración filosófica sobre el futuro de la mente y la conciencia Calificación: 4 de 5 estrellas4/5Escritura Creativa en la Era de la IA: Dominando la Colaboración con ChatGPT para Crear Libros Impactantes Calificación: 4 de 5 estrellas4/5ANDROID: Aprende desde cero a crear aplicaciones Calificación: 0 de 5 estrellas0 calificacionesCalidad en el desarrollo de software Calificación: 0 de 5 estrellas0 calificacionesChat GPT-4 para Principiantes: Chat GPT, #1 Calificación: 0 de 5 estrellas0 calificacionesIntroducción a la Ingeniería Industrial Calificación: 0 de 5 estrellas0 calificacionesMecatrónica Calificación: 0 de 5 estrellas0 calificacionesMáquinas como yo Calificación: 4 de 5 estrellas4/5Sobreviviendo a la IA Calificación: 3 de 5 estrellas3/5Business Intelligence: Técnicas herramientas y aplicaciones Calificación: 0 de 5 estrellas0 calificacionesMonetización de ChatGPT: aproveche el poder de AI: Spanish Calificación: 1 de 5 estrellas1/5El poder de las imagenes, la palabra no tiene poder Calificación: 0 de 5 estrellas0 calificacionesCómo triunfar en Instagram usando ChatGPT: La guía definitiva para crear contenido impactante con ChatGPT Calificación: 0 de 5 estrellas0 calificacionesEl imperio de los algoritmos: IA inclusiva, ética y al servicio de la humanidad Calificación: 0 de 5 estrellas0 calificacionesCiencias de la Computación en la escuela: Guía para enseñar mucho más que a programar Calificación: 5 de 5 estrellas5/5
Comentarios para Relleno de inundación
0 clasificaciones0 comentarios
Vista previa del libro
Relleno de inundación - Fouad Sabry
Capítulo 1: Relleno de inundación
El relleno de inundación, también conocido como relleno de semilla, es un algoritmo de inundación que elige y modifica la región en una matriz multidimensional asociada a un nodo específico con un atributo particular. Se utiliza en juegos como Go y Buscaminas para determinar qué piezas se eliminan, así como en la herramienta de relleno cubo
de las aplicaciones de pintura para rellenar áreas conectadas de colores similares con un tono distintivo. La región conectada a un nodo determinado pero que carece de un atributo específico es lo que se entiende por la variación conocida como relleno de borde, que emplea las mismas técnicas.
Tenga en cuenta que el relleno de inundación perderá ciertos píxeles en las esquinas más agudas, lo que lo hace inadecuado para dibujar polígonos rellenos. En su lugar, compruebe la regla distinta de cero y la regla par-impar.
El algoritmo clásico de relleno de inundación requiere tres variables: un nodo de inicio, un color de destino y un color de reemplazo. El método cambia al color de reemplazo para cada nodo de la matriz que está conectado al nodo de inicio por una ruta de acceso que es el color de destino. En lugar del color de destino, se proporcionaría un color de borde para un relleno de límite.
En su lugar, se proporcionarán dos rutinas en las siguientes descripciones para generalizar el método de la manera habitual. Entre ellos se encuentran Set, que rellena un píxel o nodo, e Inside, que devuelve true para los puntos sin rellenar que, en función de su color, estarían dentro del área rellena. Una vez que Set ha sido llamado en un nodo, debe salir del Inside.
Hay dos versiones dependiendo de si contamos los nodos que se tocan en las esquinas como conectados o no: de ocho y de cuatro vías, respectivamente.
A continuación se muestra la implementación de relleno de inundación de cuatro vías más antigua conocida que se basa implícitamente en la pila:
Relleno de inundación (nodo):
1. Si el nodo no está dentro , devuelva.
2. Establecer el nodo
3. Realice el relleno de inundación un paso al sur del nodo.
4. Realice el relleno de inundación un paso al norte del nodo
5. Realice el relleno de inundación un paso al oeste del nodo
6. Realice el relleno de inundación un paso al este del nodo
7. Devolución.
En lenguajes y situaciones en las que el espacio de pila es extremadamente limitado, la implementación de la técnica utilizada anteriormente es fácil de entender pero inviable (por ejemplo, microcontroladores).
Se evita un desbordamiento de pila moviendo la recursividad a una estructura de datos, como una pila o una cola. La elección de la estructura de datos afecta al patrón de proliferación, pero es similar al método recursivo simple en el sentido de que empuja los nodos a una pila o cola para su consumo en lugar de realizar llamadas recursivas:
Relleno de inundación (nodo):
1. Establezca Q en la cola o pila vacía.
2. Agregue el nodo al final de Q.
3. Mientras Q no esté vacío:
4. Iguale n al primer elemento de Q.
5. Elimine el primer elemento de Q.
6. Si n está dentro:
Establezca el parámetro n
Agregue el nodo al oeste de n al final de Q.
Agregue el nodo al este de n al final de Q.
Agregue el nodo al norte de n al final de Q.
Agregue el nodo al sur de n al final de Q.
7. Continúe haciendo un bucle hasta que se agote Q.
8. Devolución.
Antes de agregar un nodo a la pila o cola, determine y establezca su color de píxel para minimizar el tamaño de la pila o cola.
Utilice un bucle para moverse en una dirección este-oeste mientras pone en cola los píxeles por encima y por debajo (lo que lo hace similar a los algoritmos de llenado de intervalos, a continuación).
Para proporcionar a los procesadores desordenados más oportunidades de paralelizar, intercala dos o más copias del código con pilas y colas adicionales.
Use varios hilos, idealmente con horarios de visita ligeramente diferentes para que no se congreguen en un solo lugar.
Método sencillo que es fácil de crear sin errores.
Uso intensivo de memoria, especialmente cuando se usa una pila.
Prueba los píxeles más rellenos cuatro veces en total.
El relleno de patrones no es posible ya que necesita que cambien los resultados de las pruebas de píxeles.
El patrón de acceso para la variación de cola no es compatible con la memoria caché.
Difícil de optimizar para planos de bits o palabras de varios píxeles.
Trabajar en gran medida con intervalos, una fila con y constante, permite una mayor optimización. El primer ejemplo completo publicado opera de acuerdo con el siguiente principio fundamental:
Rellene a la izquierda y a la derecha después de un punto semilla. Realice un seguimiento de los puntos rellenos más a la izquierda y más a la derecha, lx y rx, respectivamente. Esto establece el rango.
Busque más puntos de inicialización escaneando de lx a rx por encima y por debajo del punto de inicialización actual.
El proceso de análisis se optimiza para que solo se deban reiniciar los puntos de inicialización al principio del siguiente intervalo. Una cola explora primero los intervalos, mientras que una pila investiga primero los intervalos en términos de profundidad.
A pesar de comprobar los píxeles más llenos tres veces en total, este enfoque es el más común en términos de implementaciones y citas.
fn relleno (x, y):
si no es Inside(x, y) entonces return
let s = nueva pila o cola vacía
Suma (x, y) a s
while s no está vacío:
Eliminar un (x, y) de s
Sea lx = x
mientras que Inside(lx - 1, y):
Conjunto (lx - 1, y)
lx = lx - 1
mientras que Inside(x, y):
Conjunto (x, y)
x = x + 1
Escaneo (Lx, X - 1, Y + 1, S)
Escaneo (Lx, X - 1, Y - 1, S)
Escaneo FN (LX, RX, Y, S):
let span_added = falso
para x en lx .. Rx:
si no es Inside(x, y):
span_added = falso
De lo contrario, si no span_added:
Suma (x, y) a s
span_added = verdadero
Con el tiempo, se realizaron las siguientes mejoras:
No sería necesario poner en cola un nuevo análisis si estuviera totalmente dentro de un intervalo de abuelos, ya que solo detectaría píxeles rellenos.
Además, solo se deben escanear los voladizos (giros en U y giros en W) cuando un nuevo escaneo cruza un tramo de abuelos.
Puedes llenarte mientras buscas semillas.
fn relleno (x, y):
si no es Inside(x, y) entonces return
let s = nueva cola o pila vacía
Suma (x, x, y, 1) a s
Suma (x, x, y - 1, -1) a s
while s no está vacío:
Elimine an (x1, x2, y, dy) de s
Sea x = x1
si está dentro(x, y):
mientras que Inside(x - 1, y):
Conjunto (x - 1, y)
x = x - 1
Si x < x1:
Suma (x, x1-1, y-dy, -dy) a s
mientras que x1 <= x2:
mientras que Inside(x1, y):
Conjunto (x1, y)
x1 = x1 + 1
Suma (x, x1 - 1, y+dy, dy) a s
Si x1 - 1 > x2:
Suma (x2 + 1, x1 - 1, y-dy, -dy) a s
x1 = x1 + 1
mientras que x1 < x2 y no Inside(x1, y):
x1 = x1 +