Domanda

Devo mettere un bordo sfumato sfumato alfa attorno a un'immagine. Il mio problema è nel mescolare gli angoli in modo che siano uniformi nel punto in cui si incontrano i gradienti orizzontali e verticali. Credo che esista un algoritmo standard che risolva questo problema. Penso di averlo incontrato anche a scuola molti anni fa. Ma non sono riuscito a trovare alcun riferimento a uno in diverse ricerche sul web.

(Ho implementato un motivo di riempimento radiale nell'angolo, ma la transizione non è ancora abbastanza regolare.)

Le mie domande :

  1. Se esiste un algoritmo standard per questo problema, come si chiama e, meglio ancora, come va implementato?

  2. Rinunciando a qualsiasi algoritmo standard, qual è il modo migliore per determinare il pixel desiderato valore per produrre un gradiente uniforme negli angoli? (Fai un liscio transizione dalla verticale gradiente rispetto all'orizzontale gradiente.)

MODIFICA : immagina quindi di avere un'immagine che inserirò sopra un'immagine più grande. L'immagine più grande è nero solido e l'immagine più piccola è bianco solido. Prima di inserirlo, voglio unire l'immagine più piccola a quella più grande impostando il valore alfa sull'immagine più piccola per creare un & Quot; border & Quot; attorno ad esso così " sfuma " nell'immagine più grande. Fatto correttamente, dovrei avere una sfumatura uniforme dal nero al bianco e lo faccio ovunque tranne gli angoli e il bordo interno.

Sul bordo del bordo sfumato vicino al centro dell'immagine, il valore sarebbe 255 (non trasparente). Man mano che il bordo si avvicina al bordo esterno, il valore alfa si avvicina a 0. Negli angoli dell'immagine in cui l'amplificatore vert &; i bordi di horiz si incontrano, si finisce con ciò che equivale a una linea diagonale. Voglio eliminare quella linea e avere una transizione graduale.

Ciò di cui ho bisogno è un algoritmo che determina il valore alfa (0 - 255) per ciascun pixel che si sovrappone nell'angolo di un'immagine quando i bordi orizzontali e verticali si incontrano.

È stato utile?

Soluzione

Presumibilmente stai moltiplicando i due gradienti in cui si sovrappongono, giusto?

Non so di un algoritmo standard. Ma se usi un gradiente a forma di signoide invece di uno lineare, ciò dovrebbe eliminare il bordo visibile in cui i due si sovrappongono.

Una semplice funzione sigmoide è smoothstep (t) = t t (3 - 2 * t) dove 0 < = t < = 1

Altri suggerimenti

Se non ti serve che sia ridimensionabile, puoi semplicemente usare una semplice mappa alfa.

Tuttavia, una volta ho usato una semplice dissolvenza gaussiana, con la media nella posizione in cui volevo che fosse l'ultimo pixel completamente opaco. Se questo ha senso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top