如果我得到淺灰色的顏色(例如R = G = B = 200)和暗的一個(例如R = 46,G = 41,B = 35),我想兩者分類到簡單的灰色顏色組(想象一張桌子)。如何將某些顏色分類爲顏色範圍?
所以,我怎麼能組織顏色,顏色組?
如果我得到淺灰色的顏色(例如R = G = B = 200)和暗的一個(例如R = 46,G = 41,B = 35),我想兩者分類到簡單的灰色顏色組(想象一張桌子)。如何將某些顏色分類爲顏色範圍?
所以,我怎麼能組織顏色,顏色組?
對於顏色視覺的分類,它往往是比較容易的顏色轉換先到HSL or HSV。要檢測灰色,請檢查飽和度是否低於某個閾值。要檢測其他顏色,請檢查色調。
public string Classify(Color c)
{
float hue = c.GetHue();
float sat = c.GetSaturation();
float lgt = c.GetLightness();
if (lgt < 0.2) return "Blacks";
if (lgt > 0.8) return "Whites";
if (sat < 0.25) return "Grays";
if (hue < 30) return "Reds";
if (hue < 90) return "Yellows";
if (hue < 150) return "Greens";
if (hue < 210) return "Cyans";
if (hue < 270) return "Blues";
if (hue < 330) return "Magentas";
return "Reds";
}
你當然可以使用其他部門。
我做了一個簡單的JavaScript應用程序來測試這一點:Color classification
嗯,泰克,我立即嘗試。 – laszlokiss88
有分類顏色的幾種方法。一種方法是將rgb視爲一個三維座標,然後所有可能的顏色都可以在一個盒子或立方體中呈現,其中原色中的黑色和位於(255,255,255)處的對角的白色。所有的灰色將接近對角線。 靠近軸的是紅色,綠色和藍色。 這樣分類問題已經轉化爲找到三維空間中一個點(顏色)和一條線(灰色對角線)之間的最近距離。如果距離低於給定的閾值,顏色將被分類爲灰色。
這可以工作,但有點複雜... – laszlokiss88
是的。它與使用HSL/HSV表示法基本上是相同的,但是它已經被轉換爲圓柱體而不是立方體。 – danca
如何下面顏色表的實現:
而下面的代碼編寫生成/獲得色彩組:
//Generating Color Group Table
List<ColorTable> MyColorTable = new List<ColorTable>();
MyColorTable.Add(new ColorTable { GroupName = "Gray", ColorName = Color.Gray });
MyColorTable.Add(new ColorTable { GroupName = "Gray", ColorName = Color.LightGray });
MyColorTable.Add(new ColorTable { GroupName = "Green", ColorName = Color.Green });
MyColorTable.Add(new ColorTable { GroupName = "Green", ColorName = Color.LightGreen });
//Getting required Color Group, say "Gray"
List<ColorTable> GreenColor = MyColorTable.Where(c => c.GroupName == "Gray").ToList();
我剛剛已通過色彩的名字,你可以用範圍發送彩色的名字,感謝 –
謝謝,但這不是我的問題的答案。 假設你有一個顏色,用下面的RGB值: 55,83,70(很暗綠色,幾乎灰色)
所以,問題是,這組將包含這種顏色?綠色還是灰色? (所以我沒有任何預定義的顏色,分類到組,只有幾個羣名稱(與rgb值),例如綠色和灰色。)
但是RGB不是必需的,它可以如果CMYK或者hexa或者任何東西更容易。 –
laszlokiss88
你是什麼顏色的組織呢? –
你有什麼樣的顏色組合? – Magnus
我還沒有決定。首先,我想創建算法。 (但你可以用50-60組計算) – laszlokiss88