Алгоритмы подбора цвета и палитры - PullRequest
3 голосов
/ 25 августа 2010

ковырялся в гугле и не нашел ничего похожего на то, что я ищу.так что же мне после?ну, две вещи:

  • во-первых, я ищу алгоритм / псевдокод / ​​технические документы, чтобы определить наиболее подходящий цвет для набора данных r, g, b из имассив из 256 RGB-кортежей.

  • Во-вторых, я ищу алгоритм / псевдокод / ​​документы для перекрашивания 8-битного изображения палитры (используя вышеупомянутую палитру RGB) в любойзаданный оттенок / насыщенность или изменение канала r, g, b.также было бы неплохо, если бы было возможно добавить исправление для гамма и артефактных пикселей в раскраске.

любой получил какие-либо подсказки / указатели / подсказки относительно того, где я мог бы найти такиевещь (я знаю, что они должны существовать, иначе некоторые функции фотошопов не будут)

ОБНОВЛЕНИЕ: вот базовое евклидово расстояние RGB до искателя индекса палитры:

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;
} 

Ответы [ 2 ]

1 голос
/ 04 января 2011

См. http://en.wikipedia.org/wiki/Color_difference о том, как рассчитать расстояния между цветами, чтобы учитывать чувствительность человеческого глаза.

0 голосов
/ 05 марта 2013

Если вы хотите, чтобы это было быстрее, чем линейный поиск, тогда посмотрите VP-дерево или KD-дерево.

Если вы хотите, чтобы оно было перцептивно точным, то выполните поиск в Лабораторное цветовое пространство .

...