Pregunta

Necesito poner una mezcla alfa gradiente de borde alrededor de una imagen.Mi problema es en la mezcla de las esquinas por lo que son suaves, donde la horizontal y vertical de los gradientes de cumplir.Creo que hay un algoritmo que resuelve este problema.Creo que incluso se encontró en la escuela hace muchos años.Pero he tenido éxito en la búsqueda de cualquier referencia a uno en varias búsquedas en la web.

(He implementado un radial patrón de relleno en la esquina, pero la transición no es todavía lo suficientemente suave.)

Mis preguntas:

  1. Si hay un algoritmo estándar de este problema, ¿cuál es el nombre de es, y mejor aún, ¿cómo es implementado?

  2. La necesidad de renunciar a cualquier algoritmo estándar, ¿cuál es la mejor manera para determinar el alcance de píxeles valor para producir un degradado suave en las esquinas?(Hacer un suave la transición de la vertical gradiente horizontal gradiente.)

EDITAR:Así que imagina que tengo una imagen que me va a insertar en la parte superior de una imagen más grande.La imagen más grande es de color negro sólido y el más pequeño de la imagen es de color blanco sólido.Antes de insertarlo, quiero mezcla la imagen más pequeña a la más grande estableciendo el valor de alfa en la imagen pequeña para crear un sistema transparente de la "frontera" alrededor de él para que "se desvanece" en la imagen más grande.Hecho correctamente, debería haber un suave degradado de negro a blanco, y lo hago en todas partes excepto en las esquinas y el borde interior.

En el borde de la pendiente de la frontera, cerca del centro de la imagen, el valor sería de 255 (no transparente).Como la frontera de los enfoques del borde exterior, el valor de alfa se aproxima a 0.En las esquinas de la imagen donde el vert & horiz fronteras cumplir, al final con lo que se constituye en una línea diagonal.Quiero eliminar esa línea y tener una transición suave.

Lo que necesito es un algoritmo que determina el valor de alfa (0 - 255) para cada píxel, que se superpone en la esquina de una imagen como los bordes horizontales y verticales cumplir.

¿Fue útil?

Solución

Es de suponer que usted está multiplicando los dos gradientes donde se superponen, ¿verdad?

No sé acerca de un algoritmo estándar.Pero si usted utiliza un signoid en forma de gradiente en lugar de uno lineal, que debe eliminar el borde visible, donde la superposición de dos.

Una simple función sigmoide es smoothstep(t) = tt(3 - 2*t), donde 0 <= t <= 1

Otros consejos

Si usted no lo necesita para ser de tamaño variable, que sólo puede utilizar un simple alfa mapa.

Sin embargo, una vez utilizado un simple Gaussiano fundido, con la media en el lugar donde yo quería estar a la última, totalmente opaco píxeles.Si que tiene sentido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top