Pregunta

He estado hurgando google y no han encontrado ningún parecido a lo que busco. ¿Qué es lo que busco? así dos cosas:

  • En primer lugar estoy en busca de una algoritmo / pseudo-código / White-papeles para determinar un color que mejor se adapta para una dar r, g, b tupla desde y variedad de 256 tuplas RGB.

  • En segundo lugar, estoy en busca de una algoritmo / pseudo-código / White-papeles a cambiar el color de una imagen de paleta de 8 bits (utilizando lo anterior paleta RGB) ya sea a una dado tono / saturación o por r, g, b modificación canal. También sería bueno si era posible añadir una solución para gamma y artifacting píxeles en la coloración también.

Alguien tiene alguna pista / punteros / consejos sobre dónde podría encontrar una cosa así (sé que deben existir, de lo contrario algunas de las funciones Photoshops ¿no)

ACTUALIZACIÓN: aquí hay una RGB básica distancia euclídea al buscador índice de la paleta:

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;
} 
¿Fue útil?

Solución

http://en.wikipedia.org/wiki/Color_difference de cómo calcular distancias entre los colores de modo que la sensibilidad del ojo humano es tomado en cuenta.

Otros consejos

Si quieres más rápido que la búsqueda lineal, entonces echa un vistazo a VP-árbol o KD-árbol.

Si usted quiere que perceptualmente precisa, a continuación, hacer la búsqueda en espacio de color Lab .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top