二维滤波算法

时间:2012-01-07 14:09:36

标签: image-processing filter convolution

反正这样做更快吗?我想将O(N ^ 2)复杂度降低到更低的值。注意:滤波器内核围绕N / 2旋转对称。

for(unsigned int k=N/2;k<source.getHeight()-N/2;k++)
    {
    for(unsigned int l=N/2;l<source.getWidth()-N/2;l++)
        {

        for(unsigned int m=0;m<N;m++)
            {
            for(unsigned int n=0;n<N;n++)
                {
                dest(l,k).red  +=p_kernel[m][n]*source(l+n-N/2,k+m-N/2).red;
                dest(l,k).green+=p_kernel[m][n]*source(l+n-N/2,k+m-N/2).green;
                dest(l,k).blue +=p_kernel[m][n]*source(l+n-N/2,k+m-N/2).blue;
                }
            }

        }
    }

1 个答案:

答案 0 :(得分:1)

你需要学习卷积定理。它基本上对你的图像和内核进行傅立叶变换,然后将结果反向变换。搜索它,有大量的网站带有示例代码。