2013-07-05 1136 views
0

我想要執行一個簡單的圖像分析,我可以確定圖像的哪個部分對應某個「控制顏色範圍」。我將圖像縮小爲包含RGB值的二維像素圖,但現在我試圖確定某個像素中包含多少紅色。如何計算RGB顏色中的顏色分量「數量」

我對顏色知之甚少,即使找到正確的術語來開始我的搜索,我也很難找到。是否有一個簡單的公式來計算RGB顏色中包含的RGB分量(控制顏色)的平均或大部分?我們的目標是提供一個控制顏色和它存在的量的百分比,這樣我就可以從像素圖中的其他顏色中濾除它(即該像素爲80%紅色)。

感謝您的想法。

+0

您是否檢查過Color.GetHue函數/ HSV系統而不是RGB值? – RelevantUsername

+0

你可以顯示一些你的代碼你已經做了什麼? – Danilo

+0

我不知道如何使用色相,所以我沒有考慮它。 NSColor提供了一種檢索色調的方法,但是在時間/ CPU和內存分配方面確實很昂貴。如果我知道這是需要的,我認爲這可以更有效地計算。 – GenericPtr

回答

0

這是一個想法。

將圖像加載到RGB顏色數組中。

檢查數組的每個條目以查找該像素中最大的顏色數量。

下面是我想解釋的一些小圖。

| R | G | B |
| 0 | 1 | 255 |

經過你看到藍色是最接近255的數字。將它添加到一個整數。

int r = 0; int g = 0; int b = 0;

b = b + 1;

當您完成分析的陣列檢查每個條目,看看什麼顏色是最接近255

r = 255 - r; g = 255 - r; b = 255 - r;

比較每個值以找到最大的數字。

他們你走了。

+0

也許我誤解了,但我認爲這將決定整個圖像的平均值,但我試圖確定一個RGB顏色是否滿足一定顏色的閾值。例如255,10,10確實是紅色,但是255,190,92更黃。我怎麼知道第一個值是紅色的,因爲這兩個紅色分量都是255。 – GenericPtr

+0

是的這段代碼會爲整個圖像找到它。爲了找出它是否更黃,那麼你會需要某種數據庫。或者您需要黃色的最小值和最大值。你試圖完成的任務不是一天可以完成的,而是更像是幾周。對於至少爲整個圖像提供代碼的情況如何?) – Mozzie