高斯混合图像

时间:2011-02-02 15:32:01

标签: ios objective-c colors gaussian color-blending

我正在编写一个iPhone应用程序,需要帮助来确定如何拍摄图像并将其混合成单一颜色。我假设我需要做一个高斯混合,但不确定这是否正确或如果它是如何做到的。

您是否有任何建议,指向高斯混合代码片段的示例,或者我是否朝着错误的方向前进,从图像到混合彩色图像?

我似乎无法使用现有的iPhone框架执行此操作,或者公共框架中是否有私有方法可以使这项工作更轻松?

1 个答案:

答案 0 :(得分: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;

高斯滤波器是中心加权滤波器,这意味着滤波窗口中心的像素比其他像素的权重更大。如果你想模糊图像,那么这是合适的,但是对于混合整个图像,同样地加权所有像素,如上面的伪代码,同样有效。