我有十個顏色十六進制/ rgb值(它們是膚色) - 我希望能夠找到與特定十六進制/ rgb值最接近的匹配項。在顏色範圍內尋找最接近的顏色匹配
我會以某種方式迭代從開始顏色,直到我落在一個特定的範圍內?但是,我如何組織範圍?
我會說實話,我絕對沒有想法該怎麼做,甚至什麼搜索,所以任何幫助,或正確的方向點頭將不勝感激。
乾杯
我有十個顏色十六進制/ rgb值(它們是膚色) - 我希望能夠找到與特定十六進制/ rgb值最接近的匹配項。在顏色範圍內尋找最接近的顏色匹配
我會以某種方式迭代從開始顏色,直到我落在一個特定的範圍內?但是,我如何組織範圍?
我會說實話,我絕對沒有想法該怎麼做,甚至什麼搜索,所以任何幫助,或正確的方向點頭將不勝感激。
乾杯
首先,它不一定是一個編程的問題,但...
歐氏距離是一個很好的方法。舉個例子:
使用常規html顏色名稱,BlueViolet(#8A2BE2)和GoldenRod(#DAA520),它更接近LightSeaGreen(#20B2AA)?拆分3個十六進制值的三維矢量這樣:
BV = 138,43,226
GR = 218,165,32
LSG = 32,178,170
使用公式:
d(p,q) = sqrt((px - qx)^2 + (py - qy)^2 + (pz - qz)^2)
d(BV,LSG) = sqrt((138-32)^2 + (43-178)^2 + (226-170)^2)
d(BV,LSG) = sqrt(11236 + 18225 + 3136)
d(BV,LSG) = sqrt(32597)
d(BV,LSG) = 180.546
d(GR,LSG) = sqrt((218-32)^2 + (165-178)^2 + (32-170)^2)
d(GR,LSG) = sqrt(34596 + 169 + 19044)
d(GR,LSG) = sqrt(53809)
d(GR,LSG) = 231.967
因此,大家可以看到d(BV,LSG)
比d(GR,LSG)
小,所以藍紫接近海藻綠比黃花是。
我可以爲您提供使用2種顏色之間的歐氏距離。如果你有任何2種顏色,例如#89a839和#ad9009,你可以將它轉換成3維矢量,你會得到這2個矢量(ad,90,09)和(89,a8,39); 然後將數字轉換爲十進制範圍。並且算了算beetween這兩點
d = sqrt((x1-x2)^2,(y1-y2)^2,(z1-z2)^2,)
歐氏距離就指望這個距離beetween你的顏色和你有所有顏色,並找到最小值,那麼你的顏色會最接近特定的顏色。
如果您有任何編碼問題,請隨時詢問。
儘管RGB上的歐幾里得距離可能有所幫助,但使用適當的顏色模型會更好。我會建議LCH或至少HSL。然後爲每個頻道分配權重。例如,對於人眼而言,亮度是以對數尺度感知的。調整其效果可能會提供更好的匹配。所以,下面永遠不會發生:
#400(非常暗紅色)匹配#222(幾乎是黑灰色,距離12) 代替#800(暗紅色,距離16)
的http://計算器。 com/questions/14482226 /如何獲取顏色中間兩色 –
這是用於計算其他兩種顏色的平均顏色。這對我有什麼幫助? – ojsglobal