algorithm - principiantes - ejemplos de algoritmos en informatica
Recursos para algoritmos de distorsiĆ³n de imagen (5)
¿Dónde puedo encontrar algoritmos para distorsiones de imagen? Hay mucha información de Blur y otros algoritmos clásicos, pero muy pocos de los más complejos. En particular, estoy interesado en el algoritmo de distorsión de imagen de efecto de remolino.
Eche un vistazo a ImageMagick . Es un kit de herramientas de conversión y edición de imágenes y tiene interfaces para todos los idiomas populares.
El operador -displace puede crear remolinos con el mapa de desplazamiento correcto.
Si por algún motivo no está satisfecho con la interfaz de ImageMagick, siempre puede echar un vistazo al código fuente de los filtros e ir desde allí.
El remolino y otros similares son una transformación de matriz en las ubicaciones de los píxeles. Usted crea una imagen nueva y obtiene el color de una posición en la imagen que obtiene al multiplicar la posición actual por una matriz.
La matriz depende de la posición actual.
aquí hay un buen CodeProject que muestra cómo hacerlo
http://www.codeproject.com/KB/GDI-plus/displacementfilters.aspx
Existe una implementación de Java de muchos filtros / efectos de imagen en los filtros de imagen de Jerry Java . Tal vez puedas inspirarte desde allí.
Hay una nueva biblioteca gráfica que tiene muchas características
No puedo encontrar ninguna referencia, pero puedo dar una idea básica de cómo funcionan los efectos de distorsión.
La clave de la distorsión es una función que toma dos coordenadas (x, y) en la imagen distorsionada y las transforma en coordenadas (u, v) en la imagen original. Esto especifica la función inversa de la distorsión, ya que devuelve la imagen distorsionada a la imagen original
Para generar la imagen distorsionada, uno realiza un bucle sobre xey, calcula el punto (u, v) desde (x, y) usando la función de distorsión inversa, y establece las componentes de color en (x, y) para que sean las mismas que las en (u, v) en la imagen original. Por lo general, uno utiliza la interpolación (por ejemplo, http://en.wikipedia.org/wiki/Bilinear_interpolation ) para determinar el color en (u, v), ya que (u, v) generalmente no se encuentra exactamente en el centro de un píxel, sino que más bien en algún punto fraccional entre píxeles.
Un remolino es esencialmente una rotación, donde el ángulo de rotación depende de la distancia desde el centro de la imagen. Un ejemplo sería:
a = amount of rotation
b = size of effect
angle = a*exp(-(x*x+y*y)/(b*b))
u = cos(angle)*x + sin(angle)*y
v = -sin(angle)*x + cos(angle)*y
Aquí, supongo por simplicidad que el centro del remolino está en (0,0). El remolino puede colocarse en cualquier parte restando las coordenadas de posición del remolino de xey antes de la función de distorsión, y sumarlas a uyv después de ella.
Hay varios efectos de remolino alrededor: algunos (como el anterior) giran solo un área localizada, y tienen la cantidad de remolino disminuyendo hacia el borde de la imagen. Otros aumentan el remolino hacia el borde de la imagen. Este tipo de cosas se puede hacer jugando con el ángulo = línea, por ejemplo
angle = a*(x*x+y*y)