0

有没有办法更快地做到这一点?我想将 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;
                }
            }

        }
    }
4

1 回答 1

1

你需要了解卷积定理。它基本上是您的图像和内核的傅立叶变换相乘,然后结果反向变换。搜索它,有大量带有示例代码的网站。

于 2012-01-07T14:16:32.567 回答