Алгоритмы раскрашивания и наилучшего соответствия палитры

StackOverflow https://stackoverflow.com/questions/3568546

Вопрос

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

  • Во-первых, я ищу алгоритм/псевдо-код/белые капиталы, чтобы определить наиболее подходящий цвет для получения R, G, B Tuple от и массива 256 кортежей RGB.

  • Во-вторых, я ищу алгоритм/псевдо-код/белые карты, чтобы перераспределить изображение палитра 8-бит (с использованием приведенной выше палитра RGB) в данном оттенке/насыщении или с помощью модификации канала 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;
} 
Это было полезно?

Решение

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

Другие советы

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

Если вам нужна точность восприятия, выполните поиск в Цветовое пространство лаборатории.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top