2011-02-02 90 views
1

我正在寫一個iPhone應用程序,需要幫助弄清楚如何拍攝圖像並將其融合成單一顏色。我假設我需要做一個高斯混合,但我不確定這是否正確,或者如果這是正確的話。高斯混合的圖像

您有任何建議,指向示例高斯混合代碼片段的指針,還是我在錯誤的方向從圖像混合彩色圖像?

它不會出現我可以用現有的iPhone框架做到這一點,或者是否有在公共框架中的私人方法,這將使這項工作更容易?

回答

0

所以,你想拍攝一張圖像,並將其「融合成一種顏色」。你是否想要獲得圖像的「平均顏色」?

如果是這樣,使用高斯濾波器可能會使其過於複雜,因爲您需要的輸出只是一個單一的RGB值。做到這一點的最簡單的方法是計算平均對於每個顏色通道(紅色,綠色和藍色):

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

for (y=0 ; y<image_height ; y++) 
    for (x=0 ; x<image_width ; x++) 
    { 
     r = r + image[y,x,0]; 
     g = g + image[y,x,1]; 
     b = b + image[y,x,2]; 
    } 

num_pixels = image_height * image_width; 
average_r = r/num_pixels; 
average_g = g/num_pixels; 
average_b = b/num_pixels; 

高斯濾波器是中心加權濾波器,這意味着在的中心的像素過濾窗口的權重比其他窗口更重。如果你想模糊圖像,那麼這是合適的,但是對於混合整個圖像,像上面的僞碼一樣對所有像素進行同等加權也是一樣有效的。

+0

感謝您的澄清和僞代碼。我用它效果很好,現在可以將圖像轉換爲平均顏色。 – jangelo42 2011-02-02 22:15:43