2009-07-24 64 views
4

我正在編寫一個程序,該程序可以與圖像一起使用,並且在某些時候我需要對圖像進行後期處理。這意味着我需要將顏色分類,但是我很難決定如何判斷一種顏色與另一種顏色的接近程度。顏色之間的相似性

鑑於RGB顏色,我能想到的至少2種方式,看看他們是多麼的不同:

  1. | R1 - R2 | + | g1 - g2 | + | b1 - b2 |
  2. 的sqrt((R1 - R2)^ 2 +(G1 - G2)^ 2 +(B1 - B2)^ 2)

如果我進入HSV,我能想到的這樣做的其他方式它。

所以我問,忽略速度,告訴兩種顏色有多相似的最好方法是什麼?對人眼最準確的最佳含義。

+0

如果你忽略速度,你在什麼標準問最好的? – Sneakyness 2009-07-24 13:14:06

+0

我的意思是對人眼最準確,但很好抓,編輯。 – ReaperUnreal 2009-07-24 13:28:23

回答

0

你是什麼意思的「posterize圖像」?

如果你想羣集色入垃圾桶,你應該看看 cluster analysis

1

好,如果速度不是問題,最準確的方法是採取一些採樣圖像並使用距離的各種截止值對它們應用濾波器(距離由在旁邊的色彩差異頁面上的其中一個方程式確定,這意味着您必須使用其中列出的那些色彩空間中的一個以及計算,然後轉換爲sRGB或其他東西[這也意味着如果它不在其中,首先需要將圖像轉換爲其他色彩空間]),然後讓大量人員檢查圖像以查看看起來最好的是什麼,然後用大多數人認爲最適合的圖像的截止值。

基本上,這在很大程度上是主觀性的問題;實際上,這也取決於你想要圖像的風格化程度,而且你甚至可能想要添加某種控制,以便可以即時改變截斷距離。

如果速度確實成爲一個有點問題和/或您想了解更多的簡單,那麼就使用距離計算(你的第二個選擇是簡單的CIE76公式;只要確保用L 一個 b *色彩空間),截止頻率爲2或2.3左右。

0

只是一個評論,如果你要移動到HSV(或類似的空格):

  • 版本比較於H:差異0°和359°之間的數值大,但感覺上是可以忽略不計。

  • 如果V或S很小,H差異很小。

  • 對於計算機視覺應用程序,更重要的不是感知差異(主要由塗料製造商使用),但是這些顏色是否屬於同一個對象/區段。這意味着我們可能部分忽略V,這可能會從照明條件改變。