2012-05-13 16 views
0

如何計算圖像的多數顏色在PHP中的含義?我寧願將不同顏色的相似顏色分組到一個桶中,例如,所有藍色陰影都被計爲「藍色」。如何找到使用PHP的圖像的「多數顏色」?

換句話說,我想一個函數,它的圖像,並返回類似於一個簡單的數組:

"blue":90%, "white":10% 

無需精度高,剛夠顯性和子歸類圖像主色調。謝謝!

+0

您在開始時選擇多少個水桶/顏色?這可能有點棘手。 – Hindol

+0

如果分度部分使事情複雜化,那麼將顏色聚合到非常寬泛的平均值的答案會使我朝着正確的方向前進。類似#0000FF:90%,#FFFFFF:10% – soulkphp

+0

這應該被標記爲'算法'。 – Hindol

回答

2

這裏有一個辦法:

1)定義了一套我們稱之爲質心的顏色 - 這些都是要打破圖像到基本顏色的中間。例如,您可以使用像k-means這樣的羣集算法來執行此操作。所以現在你已經擁有了100個質心(水桶,你可以把它們想象成是),每一個都是一個RGB色彩三元組,並且你可以手動附加一個名字。

2)爲了生成新的圖像直方圖:

  • gd打開圖像或任何
  • 其轉換爲像素值的陣列(例如,使用imagecolorat
  • 確定距離(euclidean distance確定)像素值和所有質心之間。將每個像素分類爲最接近哪個存儲桶。
  • 您的輸出是每個像素的質心分配。或者,由於您只需要一個直方圖,因此您可以統計每個質心出現的次數。

請記住,這種顏色分配有點主觀。我不確定是否有從顏色到名稱的明確映射(例如,它是language dependent)。但是如果你是谷歌,可能會有一個你可以使用的查找表,儘管我沒有遇到過。

希望這會有所幫助!

+0

謝謝,這非常有幫助。你是否認爲三維歐幾里德距離(r,g,b)對於將像素顏色映射到質心是準確的,還是您知道任何將人類感知考慮在內的顏色測量計算? – soulkphp

+1

這是一個很好的問題......這些鏈接可能會有幫助:http://99designs.com/tech-blog/blog/2012/05/11/color-analysis/和(更多技術):http:// www .seas.upenn.edu /〜ofirpele/publications/ECCV2010.pdf – Ben

+0

哇,第一個鏈接是超級有用的,再次感謝! – soulkphp