0
Est-il possible de le faire plus rapidement? Je veux réduire la complexité de O (N^2) à quelque chose de plus bas. Note: Le noyau du filtre est symétrique en rotation autour de N/2.Algorithme de filtre 2D
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;
}
}
}
}
Donc fftw le ferait. Mais alors j'ai besoin de zéro-pad mon noyau pour lui faire la même dimension que mon image ou? – user877329
Il pourrait être nécessaire pour le calcul de FFT en fonction de la symétrie mais à la fin il s'auto-amortira. Vous ne pouvez pas vraiment dire sans mesurer. Pour les petites tailles de noyaux, il existe des implémentations qui tirent parti du matériel SIMD et reviennent à la FFT. – artificialidiot
Je vais essayer – user877329