Domanda

Come faccio a convertire i valori RGB del pixel di una singola monocromatica valore?

È stato utile?

Soluzione

Ho trovato una possibile soluzione nelle Domande frequenti sui colori . Il componente di luminanza Y (dal sistema CIE XYZ ) cattura ciò che viene maggiormente percepito dagli umani come colore in un canale. Quindi, usa quei coefficienti:

mono = (0.2125 * color.r) + (0.7154 * color.g) + (0.0721 * color.b);

Altri suggerimenti

Questo articolo di MSDN utilizza (0.299 * color.R + 0.587 * color.G + 0.114 * color.B);

Questo articolo di Wikipedia utilizza (0.3 * color.R + 0.59 * color.G + 0.11 * color.B);

Questo recente articolo scientifico mette a confronto lo stato dell'arte della conversione di fotografie a colori in scala di grigi, inclusa la semplice formula di luminanza e tecniche più complesse.

Questo dipende da quali sono le tue motivazioni. Se vuoi solo trasformare un'immagine arbitraria in scala di grigi e farla apparire abbastanza bene, le conversioni in altre risposte a questa domanda andranno bene.

Se stai convertendo fotografie a colori in bianco e nero, il processo può essere sia molto complicato che soggettivo, richiedendo una modifica specifica per ogni immagine. Per un'idea di cosa potrebbe essere coinvolto, dai un'occhiata a questo tutorial da Adobe per Photoshop.

La replica di questo nel codice sarebbe abbastanza coinvolta e richiederebbe comunque l'intervento dell'utente per ottenere esteticamente l'immagine risultante "perfetta". (qualunque cosa significhi!).

Come accennato anche, una traduzione in scala di grigi (si noti che le immagini monocromatiche non devono essere in scala di grigi) da una tripletta RGB è soggetta a gusto.

Ad esempio, potresti imbrogliare, estrarre solo il componente blu, semplicemente gettando via i componenti rosso e verde e copiando il valore blu al loro posto. Un'altra soluzione semplice e generalmente ok sarebbe quella di prendere la media della tripletta RGB del pixel e usare quel valore in tutti e tre i componenti.

Il fatto che esiste un mercato considerevole per i plug-in di conversione in scala di grigi / monocromatici professionali e non molto economici, per il solo Photoshop, dice che la conversione è semplice o complessa come desideri.

La logica alla base della conversione di qualsiasi immagine basata su RGB in bianco e nero non è una trasformazione lineare banale. A mio avviso, un simile problema viene affrontato meglio dalla "segmentazione del colore" tecniche. Puoi ottenere " Segmentazione del colore " per k-significa clustering.

Vedi esempio di riferimento dal sito di MathWorks.

https : //www.mathworks.com/examples/image/mw/images-ex71219044-color-based-segmentation-using-k-means-clustering

Immagine originale a colori.

 Immagine con colori

Dopo la conversione in bianco e nero utilizzando il clustering k-mean Immagine dopo la conversione in bianco e nero usando il clustering k-mean

Come funziona?

Raccogli tutti i valori di pixel dell'intera immagine. Da un'immagine larga W pixel e alta H, otterrai valori di colore W * H. Ora, usando l'algoritmo k-mean crea 2 cluster (o bin) e lancia i colori negli appositi "bin". I 2 cluster rappresentano le tue sfumature in bianco e nero.

Video Youtube che mostra la segmentazione delle immagini usando k-mean? https://www.youtube.com/watch?v=yR7k19YBqiw

Sfide con questo metodo

L'algoritmo di clustering k-mean è suscettibile agli outlier. Alcuni pixel casuali con un colore la cui distanza RGB è lontana dal resto della folla potrebbero facilmente inclinare i centroidi per produrre risultati inaspettati.

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