Passaggio graduale da Verde - Giallo - Rosso

3

Sto avendo un blocco mentale dell'algoritmo nel progettare un modo per passare dal Verde al Rosso, nel modo più fluido possibile con un intervallo di transizione potenzialmente potenzialmente sconosciuto.

A scopo di test, userò 300 come tempo del mio modello, ma la progettazione dell'algoritmo della metodologia deve essere abbastanza flessibile da tener conto di tempi più lunghi o anche più piccoli.

Probabilmente usando l'RGB sarebbe meglio passare, ma aprire ad altri tipi di creazione del colore, assumendo il suo nativo su .Net (VB / C #).

Attualmente ho:

t = 300
x = t/2
z = 0
low = Green (0, 255, 0)
mid = Yellow (255, 255, 0)
high = Red (255, 0, 0)

Infine, una sorta di pezzo facoltativo, è quello di rendere conto della possibilità che low , mid e high di colore siano flessibili. Suppongo che sia necessario un controllo per accertarsi che qualcuno non inserisca low = (255,0,0) , mid=(254,0,0) e high=(253,0,0) . Al di fuori di questa anomalia, che gestirò me stesso in base all'approccio migliore per valutare un colore.

Domanda:

  • Quale sarebbe l'approccio migliore per eseguire la transizione da low a mid e quindi da mid a high ?
  • Quali sarebbero le potenziali insidie nell'implementazione di questo tipo di progettazione, se esiste?
posta GoldBishop 21.11.2012 - 17:21
fonte

2 risposte

3

Non puoi farlo senza problemi usando lo spazio colore RGB, ma è più facile se fatto con HSV.

Vedi HSL e HSV

Usando lo spazio HSV puoi passare da Verde a Giallo a Rosso lungo un valore float singolo per Tonalità mantenendo costante la saturazione / valore.

    
risposta data 21.11.2012 - 17:34
fonte
7

Sebbene sia possibile eseguire la transizione nello spazio RGB (usando l'interpolazione lineare component-wise), ciò potrebbe causare transizioni dall'aspetto innaturale; il più notevole, la luminosità e la saturazione possono sbattere tra i punti di controllo. Se è accettabile, fallo in questo modo. Mappare i valori attraverso una sorta di funzione gamma prima dell'interpolazione e quindi ripristinare la gamma sui valori interpolati può alleviare un po 'i rilievi.

Se ciò non è abbastanza buono, converti i tuoi colori in uno spazio colore più vicino a come funziona la percezione umana, come HSI (tonalità - saturazione - intensità). Quindi applica la stessa interpolazione, ma tieni presente che il componente hue è circolare, ovvero se hai tonalità che vanno da 0 a 100, e i colori di input sono 95 e 5, vuoi spostarti in avanti e poi avvolgere (quindi da 95 a 100 e poi "salta" a 0, continuando fino a 5) invece di scendere da 95 a 5 - pensa all'asse della tinta come a un cerchio lungo il quale viaggi; la tua interpolazione dovrebbe prendere la via più breve lungo il bordo del cerchio.

Il calcolo HSI è più costoso, perché devi convertire il valore HSI interpolato in RGB per la visualizzazione su ciascun fotogramma, ma produce risultati molto migliori, poiché la transizione di tonalità, luminosità e saturazione è indipendente senza causare artefatti percepiti.

    
risposta data 21.11.2012 - 17:38
fonte

Leggi altre domande sui tag