خوارزميات اللون واللوحة الأفضل
-
01-10-2019 - |
سؤال
كنت يتدفق حول 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.
إذا كنت تريدها دقيقة بشكل إدراكي ، فقم بالبحث في مساحة لون المختبر.