Domanda

Stata rovistando google e non hanno trovato alcuna, come quello che sto cercando. Così che cosa è che sto cercando? bene due cose:

  • in primo luogo che sto cercando un Algoritmo / pseudo-codice / white-paper per determinare un colore best-fit per un invia r, g, b tupla da e matrice di 256 RGB tuple.

  • In secondo luogo, sto cercando un Algoritmo / pseudo-codice / white-paper a ricolorare immagine di una tavolozza 8bit (usando la tavolozza RGB sopra) sia ad un data tonalità / saturazione o da r, g, b modifica canale. sarebbe anche bello se fosse possibile aggiungere una correzione per gamma e artifacting pixel la colorazione pure.

qualcuno ha qualche suggerimento / puntatori / suggerimenti su dove potrei trovare una cosa del genere (so che devono esistere, altrimenti alcune delle funzioni photoshops non sarebbe)

UPDATE: ecco un distanza euclidea base RGB all'indice tavolozza finder:

uint_8 __stdcall GFXUTIL_GetNearestPaletteIndex(const uint_8* pPalette, size_t nSize, uint_8 nRed, uint_8 nGreen, uint_8 nBlue)
{
    if(pPalette == NULL)
        return 0;

    int nDistance = -1;
    size_t nIndex = 0, nFoundIndex = 0;
    while(nIndex < nSize)
    {
        int nDistRed = pPalette[0] - nRed;
        int nDistGreen = pPalette[1] - nGreen;
        int nDistBlue = pPalette[2] - nBlue;
        int nCurrentDistance = (nDistRed * nDistRed) + (nDistGreen * nDistGreen) + (nDistBlue * nDistBlue);
        if(nCurrentDistance < nDistance)
        {
            nFoundIndex = nIndex;
            nDistance = nCurrentDistance;
        }

        nIndex++;
        pPalette += sizeof(uint_32);
    }

    return nFoundIndex;
} 
È stato utile?

Soluzione

http://en.wikipedia.org/wiki/Color_difference per il modo di calcolare distanze tra i colori in modo che la sensibilità dell'occhio umano viene preso in considerazione.

Altri suggerimenti

Se si desidera più veloce di ricerca lineare, quindi controllare VP-albero o KD-albero.

Se si desidera che percettivamente accurata, quindi effettuare la ricerca in Lab spazio colore .

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