Articulo de referencia

algoritmo de inundación por salto

El algoritmo de inundación por salto ( JFA ) es un algoritmo de inundación utilizado en la construcción de diagramas de Voronoi y transformadas de distancia . El JFA fue present...

El algoritmo de inundación por salto ( JFA ) es un algoritmo de inundación utilizado en la construcción de diagramas de Voronoi y transformadas de distancia . El JFA fue presentado por Rong Guodong en un simposio de la ACM en 2006. [ 1 ]

El algoritmo JFA posee atributos deseables en la computación GPU , especialmente por su eficiente rendimiento. Sin embargo, se trata solo de un algoritmo aproximado y no siempre calcula el resultado correcto para cada píxel, aunque en la práctica los errores son escasos y su magnitud suele ser pequeña. [ 1 ]

Implementación

La formulación original de JFA es sencilla de implementar.

Toma unnorte×norte{\displaystyle N\times N}cuadrícula de píxeles [ 2 ] (como una imagen o textura). Todos los píxeles comenzarán con un color "indefinido" a menos que sean píxeles "semilla" de color único. A medida que avanza el JFA, cada píxel indefinido se rellenará con un color que corresponda al de un píxel semilla.

Para cada tamaño de pasok{norte2,norte4,,1}{\displaystyle k\in \{{\tfrac {N}{2}},{\tfrac {N}{4}},\dots ,1\}}, ejecutar una iteración del JFA:

Iterar sobre cada píxelpag{\displaystyle p}en(incógnita,y){\displaystyle (x,y)}.
Por cada vecinoq{\displaystyle q}en(incógnita+i,y+j){\displaystyle (x+i,y+j)}dóndei,j{k,0,k}{\displaystyle i,j\in \{-k,0,k\}}:
sipag{\displaystyle p}no está definido yq{\displaystyle q}está coloreado, cambiapag{\displaystyle p}color aq{\displaystyle q}'s
sipag{\displaystyle p}es coloreado yq{\displaystyle q}está coloreado, sidist(pag,s)>dist(pag,s){\displaystyle \mathrm {dist} (p,s)>\mathrm {dist} (p,s')}dóndes{\displaystyle s}ys{\displaystyle s'}son los píxeles semilla parapag{\displaystyle p}yq{\displaystyle q}, respectivamente, luego cambiarpag{\displaystyle p}color aq{\displaystyle q}'s.

Tenga en cuenta que los píxeles pueden cambiar de color más de una vez en cada paso, y que el JFA no especifica un método para resolver los casos en los que las distancias son iguales; por lo tanto, se utiliza el color del último píxel comprobado.

El JFA finaliza después de evaluar el último píxel en el último tamaño de paso. Independientemente del contenido de los datos iniciales, el bucle más interno ejecuta un total de9registro2(norte){\displaystyle 9\log _{2}(N)}veces sobre cada píxel, para una complejidad computacional general deO(norte2registro2(norte)){\displaystyle O(N^{2}\log _{2}(N))}.

Variantes

Algunas variantes de JFA son:

  • Paso adicional al final : JFA+1 tiene un paso adicional con un tamaño de paso de 1, es decir, los tamaños de paso son N/2, N/4, ..., 1, 1; JFA+2 tiene dos pasos adicionales con tamaños de paso de 2 y 1, es decir, los tamaños de paso son N/2, N/4, ..., 1, 2, 1; JFA2{\displaystyle ^{2}}tieneregistro2(norte){\displaystyle \log _{2}(N)}Pasadas adicionales, es decir, los tamaños de paso son N/2, N/4, ..., 1, N/2, N/4, ..., 1. JFA+1 tiene muchos menos errores que JFA, y JFA+2 tiene aún menos errores. [ 1 ]
  • Paso adicional al inicio : 1+JFA tiene un paso adicional con un tamaño de paso de 1, es decir, los tamaños de paso son 1, N/2, N/4, ..., 1. 1+JFA tiene una tasa de error muy baja (similar a JFA+2) y el mismo rendimiento que JFA+1. [ 3 ]
  • Media resolución: Esta variante ejecuta JFA normal a media resolución, amplía el resultado a la resolución original y ejecuta una pasada adicional con un tamaño de paso de 1. Debido a que la mayoría de las pasadas tienen solo media resolución, la velocidad de esta variante es mucho mayor que la de JFA a resolución completa. [ 3 ]

Usos

Visualización del algoritmo de inundación por saltos utilizado para construir un diagrama de Voronoi de una cuadrícula de 200×200 con nueve píxeles semilla. El algoritmo converge en tres iteraciones: k = 100, k = 50, k = 25.

El algoritmo de inundación de saltos y sus variantes pueden utilizarse para calcular mapas de Voronoi [ 1 ] [ 3 ] y teselaciones de Voronoi centroidales (CVT), [ 4 ] generar campos de distancia , [ 5 ] renderizado de nubes de puntos , [ 6 ] coincidencia de características , [ 7 ] el cálculo de diagramas de potencia , [ 8 ] y renderizado de sombras suaves . [ 9 ] El desarrollador de juegos de gran estrategia Paradox Interactive utiliza el JFA para renderizar fronteras entre países y provincias. [ 10 ]

Nuevos desarrollos

El JFA ha inspirado el desarrollo de numerosos algoritmos similares. Algunos tienen propiedades de error bien definidas que los hacen útiles para la computación científica. [ 11 ]

En el ámbito de la visión por computadora , el JFA ha inspirado nuevos algoritmos de propagación de creencias para acelerar la solución de diversos problemas. [ 12 ] [ 13 ]

Referencias

  1. 1 2 3 4 Rong, Guodong; Tan, Tiow-Seng (14 de marzo de 2006). "Inundación de saltos en GPU con aplicaciones al diagrama de Voronoi y la transformada de distancia" (PDF) . Actas del simposio de 2006 sobre gráficos y juegos 3D interactivos - SI3D '06 . Redwood City, California: Association for Computing Machinery. págs. 109–116 . doi : 10.1145/1111411.1111431 . ISBN  978-1-59593-295-2. S2CID 7282879 . 
  2. El artículo original utiliza el caso óptimo, una cuadrícula cuadrada, como ejemplo, pero funciona con cuadrículas de cualquier tamaño, aunque con menor eficiencia. Para más información, consulta esta pregunta de StackOverflow .
  3. 1 2 3 Rong, Guodong; Tan, Tiow-Seng (julio de 2007). "Variantes del algoritmo de inundación de saltos para el cálculo de diagramas de Voronoi discretos" . 4.º Simposio Internacional sobre Diagramas de Voronoi en Ciencia e Ingeniería (ISVD 2007) . págs. 176–181 . doi : 10.1109/ISVD.2007.41 . ISBN  978-0-7695-2869-4. S2CID 386735 . 
  4. Guodong Rong; Yang Liu; Wenping Wang; Xiaotian Yin; Gu, XD; Xiaohu Guo (2011-03-25). "Cálculo asistido por GPU de la teselación de Voronoi centroidal". IEEE Transactions on Visualization and Computer Graphics . 17 (3): 345– 356. Bibcode : 2011ITVCG..17..345R . doi : 10.1109/TVCG.2010.53 . hdl : 10722/132211 . ISSN 1077-2626 . PMID 21233516 . S2CID 11970070 .   
  5. Golus, Ben (1 de abril de 2021). "La búsqueda de contornos muy amplios" . Medium . Recuperado el 19 de agosto de 2021 .
  6. Farias, Renato (2014). "RENDERIZACIÓN DE NUBE DE PUNTOS MEDIANTE INUNDACIÓN DE SALTOS" (PDF) .
  7. Yu, Pei; Yang, Xiaokang; Chen, Li (2012). "Parallel-Friendly Patch Match Based on Jump Flooding" . En Zhang, Wenjun; Yang, Xiaokang; Xu, Zhixiang; An, Ping; Liu, Qizhen; Lu, Yue (eds.). Advances on Digital Television and Wireless Multimedia Communications . Communications in Computer and Information Science. Vol. 331. Berlín, Heidelberg: Springer. pp. 15–21 . doi : 10.1007/978-3-642-34595-1_3 . ISBN   978-3-642-34595-1.
  8. Zheng, Liping (1 de mayo de 2019). "Cálculo eficiente del diagrama de potencia basado en GPU" . Computers & Graphics . 80 : 29–36 . doi : 10.1016/j.cag.2019.03.011 . ISSN 0097-8493 . S2CID 131923624 .  
  9. Rong, Guodong; Tan, Tiow-Seng (1 de noviembre de 2006). "Utilización de la inundación por salto en sombras suaves basadas en imágenes" . Actas del simposio de la ACM sobre software y tecnología de realidad virtual . VRST '06. Limassol, Chipre: Association for Computing Machinery. págs. 173–180 . doi : 10.1145/1180495.1180531 . ISBN  978-1-59593-321-8. S2CID 15339123 . 
  10. Boczula, Bartosz; Eriksson, Daniel (2020). "Optimized Gradient Border Rendering in Imperator: Rome" . Intel . Recuperado el 28 de marzo de 2021 .
  11. Schneider, Jens; Kraus, Martin; Westermann, Rüdiger (2010). "Transformadas de distancia euclidiana basadas en GPU y su aplicación a la renderización de volumen" . En Ranchordas, AlpeshKumar; Pereira, João Madeiras; Araújo, Hélder J.; Tavares, João Manuel RS (eds.). Visión por computadora, procesamiento de imágenes y gráficos por computadora. Teoría y aplicaciones . Communications in Computer and Information Science. Vol. 68. Berlín, Heidelberg: Springer. pp. 215–228 . doi : 10.1007/978-3-642-11840-1_16 . ISBN   978-3-642-11840-1.
  12. Alchatzidis, Stavros; Sotiras, Aristeidis; Paragios, Nikos (06-11-2011). "Cálculo eficiente de mensajes en paralelo para inferencia MAP" . Conferencia Internacional de Visión por Computadora de 2011 (PDF) . págs. 1379–1386 . doi : 10.1109/ICCV.2011.6126392 . ISBN  978-1-4577-1102-2. S2CID 17554205 . 
  13. Choi, Jungwook; Rutenbar, Rob A. (29 de agosto de 2016). «Acelerador de propagación de creencias configurable y escalable para visión artificial». 26.ª Conferencia Internacional sobre Lógica Programable en Campo y Aplicaciones (FPL) de 2016. pp. 1–4 . doi : 10.1109/FPL.2016.7577316 . ISBN  978-2-8399-1844-2. S2CID 10923625 . 

Al momento de esta edición , este artículo utiliza contenido de "¿Es separable el algoritmo de inundación de salto?" , escrito por alan-wolfe y trichoplax en Stack Exchange, cuya licencia permite su reutilización bajo la Licencia Creative Commons Atribución-CompartirIgual 3.0 No Adaptada , pero no bajo la GFDL . Deben respetarse todos los términos pertinentes.