2010-08-25 43 views
3

一直在谷歌周圍,並沒有發現任何像我之後。所以我在追求什麼?還有兩件事情:着色和調色板最佳擬合算法

  • 首先,我正在尋找一個 算法/僞碼/白色紙 來確定最適合的顏色爲 生成R,G,B的元組和數組 256個RGB元組。

  • 其次,我正在尋找一個 算法/僞碼/白論文 重新着色一個8位調色板圖像(使用 上述RGB調色板)要麼給定的色相/飽和度或由R A , g,b 通道修改。也可以是 很好,如果有可能爲伽瑪和僞造像素 添加修正 以及着色。

任何人有任何提示/指針/祕訣,在那裏我可以找到這樣的事(我知道他們必須存在,否則幾個photoshops功能不會)

更新:這裏是一個基本歐幾里得距離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; 
} 
+1

你的第一個問題基本上是重複的:http://stackoverflow.com/questions/3143162/color-remapping-matching-target-palette-using-a-3d-grid/3143228 – 2010-08-25 17:26:25

+0

感謝您的鏈接:)設法做出一個基本的歐幾里德距離算法,但是,仍然需要伽馬調整和白色的顏色看到眼睛對某些顏色更敏感 – Necrolis 2010-09-05 17:02:14

回答

0

如果您希望它比線性搜索更快,請檢查VP-tree或KD-tree。

如果您想讓它感知準確,請在Lab color space中進行搜索。