سؤال

كنت يتدفق حول Google ولم يجد أيًا مثل ما بعد ذلك. إذن ما الذي أنا عليه؟ حسنا شيئين:

  • أولاً ، أنا أبحث عن خوارزمية/كود كود/أبيض/أبيض لتحديد لون أفضل لاعب لـ A R ، G ، B Tuple من ومجموعة من 256 RGB Tuples.

  • ثانياً ، أنا أبحث عن خوارزمية/كود كود/أبيض/أبيض لإعادة حل صورة لوحة 8bit (باستخدام لوحة RGB أعلاه) إما إلى تعديل قناة/تشبع من R ، G ، B. سيكون من الرائع أيضًا إضافة إصلاح لجاما والبكسلات القطع الأثرية في اللون أيضًا.

أي شخص حصل على أي تلميحات/مؤشرات/نصائح حول المكان الذي قد أجد فيه مثل هذا الشيء (أعلم أنه يجب أن يكون موجودًا ، وإلا فإن بعض وظائف Photoshops لن)

تحديث: هنا مسافة إقليدية أساسية RGB إلى Finder Palette Index:

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 لكيفية حساب المسافات بين الألوان بحيث تؤخذ حساسية العين البشرية في الاعتبار.

نصائح أخرى

إذا كنت تريد ذلك بشكل أسرع من البحث الخطي ، تحقق من ذلك نائب الرئيس أو KD Tree.

إذا كنت تريدها دقيقة بشكل إدراكي ، فقم بالبحث في مساحة لون المختبر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top