Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    31

    Conversione RGB a 16 colori

    Salve a tutti!

    io ho un immagine formata da pixel RGB, e devo crare un programma che mi converta l'immagine a 16 colori (devo farlo in java ma forse esiste un metodo standard)

    come si fa?

    devo mappare ogni ogni rgb nel corrispondente colore (dei 16)
    ci sono dei range?
    grazie! ciao

  2. #2
    Dipende dal metodo di riduzione che vuoi utilizzare. In primo luogo devi decidere che palette utilizzare per i 16 colori: devi utilizzare quella "standard" o intendi crearne una personalizzata ottimizzata per la tua immagine (cosa quasi sempre consigliabile)? Una volta che hai la palette, devi poi decidere se sostituire semplicemente ad ogni colore quello più simile della palette, oppure applicare anche una diffusione di errori per cercare di far somigliare maggiormente l'immagine ridotta a quella originale.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    31
    grazie della risp

    si a me basta anche la palette standard,
    ma il fatto è che non saprei come fare la conversione da rgb a 16colori, ci sono dei range di valori già pronti in modo tale che posso mappare i colori di un range con il rispettivo colore della palette?
    per la riduzione degli errori non saprei di cosa si tratta, diciamo che a me basta che si capisca l'immagine anche se non è proprio perfetta.

  4. #4
    Originariamente inviato da Codek
    grazie della risp

    si a me basta anche la palette standard,
    ma il fatto è che non saprei come fare la conversione da rgb a 16colori, ci sono dei range di valori già pronti in modo tale che posso mappare i colori di un range con il rispettivo colore della palette?
    Puoi calcolarli facilmente, calcolando ad ogni pixel la "distanza" del colore da sostituire rispetto ai colori della palette, oppure precalcolando quali range di colori RGB assegnare a ciascun colore della palette.
    per la riduzione degli errori non saprei di cosa si tratta, diciamo che a me basta che si capisca l'immagine anche se non è proprio perfetta.
    Diffusione di errore, in sostanza si "sporca" un po' l'immagine con i vari colori per farla assomigliare di più all'originale. Per maggiori informazioni su questa tecnica, cerca dithering.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    31
    garzie 1000 per la risposta!

    avrei un altra domanda, allora io dovrei trasformare un immagine in modo tale che presenti meno sfumature di pixels possibili,
    cioè avere aree di colore più omogene (la compressione con gif in questo caso sarebbe più efficace).

    ad esempio facendo uno zoom di 800% con paint su un immagine, si vede che essa presenta molte sfumature di colore...

    provando a salvarla in 16 colori .. il problema viene in parte risolto.. ma l'immagine presenta molti pixel singoli con colori contrastanti.. io vorrei rendere MOLTO più pulita l'immagine.... basta che si capiscano le forme e il testo scritto (ad esempio il testo in uno screenshot). c'è un nome per questo processo di trasformazione?

    e magari esiste un algoritmo per farlo?
    io ho pensato a fare una media dei colori, però ci devo un pò ragionare perchè dovrei pensare in quali aree, di quale grandezza etc etc

    spero di essermi spiegato... grazie comunque, ciao!

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    31
    forse appena trovo un pixel troppo contastante, invece di convertirlo in quello corrispondente dei 16, lo converto al colore più prevalente nel suo intorno di pixel. oppure alla media del suo intorno mhm

  7. #7
    Dovresti applicare prima un algoritmo per aumentare il contrasto, o uno di posterizzazione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    31
    ecco un bel termine: la posterizzazione!.. ma esiste qualche classe java che lo fa?
    ora provo a cercare.. cmq grazie!

  9. #9
    Di niente; un consiglio: prova a smanettare un po' con qualche programma di grafica (prova ad esempio il GIMP), in modo da trovare l'effetto che produce il risultato più simile a quello che vuoi, e quindi cerca qualche implementazione o spiegazione dell'algoritmo dell'effetto in questione.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.