2011-02-02 93 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