我有一個RGB格式的約200種顏色的數組。我想編寫一個採用任何RGB顏色的程序,並嘗試匹配最「相似」的數組中的顏色。匹配顏色的最佳算法。
我需要一個很好的「相似」的定義,它儘可能接近人類的感知。
我也想顯示一些關於匹配精度的信息。例如黑白:100%,相似顏色,色調略有不同:-4%。
我需要使用神經網絡嗎?有更簡單的選擇嗎?
我有一個RGB格式的約200種顏色的數組。我想編寫一個採用任何RGB顏色的程序,並嘗試匹配最「相似」的數組中的顏色。匹配顏色的最佳算法。
我需要一個很好的「相似」的定義,它儘可能接近人類的感知。
我也想顯示一些關於匹配精度的信息。例如黑白:100%,相似顏色,色調略有不同:-4%。
我需要使用神經網絡嗎?有更簡單的選擇嗎?
轉換所有顏色到CIE Lab color space的和計算的距離在那個空間
deltaE = sqrt(deltaL^2 + deltaA^2 + deltaB^2)
顏色具有最低的DeltaE是最感知彼此相似。
不,你不需要神經網絡!簡單地考慮HSL色彩值的向量和定義的加權模函數的矢量是這樣的:
modulus = sqrt(a*H1*H1 + b*S1*S1 + c*L1*L1);
where a,b,c are weights you should decide based on your visual definition of what
creates a bigger difference in perceived color - a 1% change in Hue or a 1%
change in Saturation
我建議你用A = B = 0.5和c = 1
最後,找出範圍你的模數將採取和定義相似的顏色是那些有他們的模數非常接近彼此(比如5%)
我也指出least squares方法,就像稍微簡單些。也就是說,你取一個數的差值,將其平方,然後求和所有這些平方差。
我正在尋找的東西,但沒有找到很多答案,我決定創建這個小圖書館。
https://github.com/sebastienjouhans/c-sharp-colour-utilities
發佈促進您自己的工作的答案時,請特別小心。確保你真的在這裏回答這個問題,只使用你的博客/來源作爲備份和參考。目前這可能被標記爲垃圾郵件。 – ChrisF 2013-04-08 22:10:03
是關於一個建議,什麼可能是一個很好的相似性功能的問題,或者是關於一個算法來快速找到數組中的最相似的顏色(一個或多個),相對於一個給定的顏色? – mjv 2009-11-05 05:15:28
兩者。如果首先我需要一些相似的定義,然後才能嘗試使用crating算法。我認爲「感知類似」就是我所期待的。 – 2009-11-05 05:22:54