Matlab 3x3加权平均滤波器

Matlab 3x3加权平均滤波器,matlab,filter,average,weighted-average,Matlab,Filter,Average,Weighted Average,根据另一篇文章的建议,我创建了一个基本的3x3平均滤波器,如下所示: blurP = zeros(512, 512); for i = 1:510 for j = 1:510 sum = 0; for k = i:i+2 for l = j:j+2 sum = sum+P(k,l); end end blurP(i+1,j+1) = mean2(P(i:i+2,j:j+2)); end end imshow(

根据另一篇文章的建议,我创建了一个基本的3x3平均滤波器,如下所示:

blurP = zeros(512, 512);
for i = 1:510
for j = 1:510
    sum = 0;
    for k = i:i+2
        for l = j:j+2
            sum = sum+P(k,l);
        end
    end
    blurP(i+1,j+1) = mean2(P(i:i+2,j:j+2));
end
end
imshow(P), figure, imshow(blurP, []);

我需要创建一个带两个选项的加权过滤器:一个对(3x3网格的)中心元素进行两次计数,从而总共给我十个元素。另一个共有16个元素,中心元素计数四次,相邻元素计数两次,仅3x3网格的角元素计数一次

最简单的选择是只使用卷积(通过函数)。然后,设计内核是一个简单的过程,只需写出您所描述的内容:

kernel1 = [1 1 1
           1 2 1
           1 1 1]/10;
blurP1 = conv2(P, kernel1, 'same');


你忘了问问题了。此外,覆盖诸如
sum
之类的内置函数通常是一个坏主意。当您不使用它时,计算
sum
的目的是什么。
kernel2 = [1 2 1
           2 4 2
           1 2 1]/16;
blurP2 = conv2(P, kernel2, 'same');