Frage

Wurde Stochern Google und haben festgestellt, nicht wie das, was ich bin nach. so was ist es bin ich nach? gut zwei Dinge:

  • zunächst Ich suche eine Algorithmus / Pseudo-Code / weiß-Papiere eine Best-Fit-Farbe für ein zu bestimmen, geben r, g, b Tupel von und Anordnung von 256 RGB Tupel.

  • Zweitens, ich suche für eine Algorithmus / Pseudo-Code / weiß-Papiere recolor eine 8bit-Palette Bild (mit Die obige RGB-Palette), um entweder ein Farbton / Sättigung gegeben oder durch r, g, b Kanal-Modifikations. auch wäre schön, wenn es möglich ist, ein Update hinzufügen für Gamma- und artifacting Pixel in das Einfärben als auch.

jemand irgendwelche Hinweise / Hinweise / Tipps, wo ich so etwas finden könnte (ich weiß, sie müssen vorhanden sein, sonst einige photoshops Funktionen würde nicht)

UPDATE: hier ist eine grundlegende euklidische Distanz RGB-Palette-Index-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;
} 
War es hilfreich?

Lösung

Siehe http://en.wikipedia.org/wiki/Color_difference wie zu berechnen Abstände zwischen den Farben, so dass die Augenempfindlichkeit berücksichtigt wird.

Andere Tipps

Wenn Sie es schneller als lineare Suche wollen, dann schauen Sie VP-Baum oder KD-Baum.

Wenn Sie es wahrnehmungs genau wollen, gehen Sie dann die Suche in Lab-Farbraum .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top