Image processing 使用a修剪过滤器的图像处理出错

Image processing 使用a修剪过滤器的图像处理出错,image-processing,filter,octave,Image Processing,Filter,Octave,我有一个任务,我必须在一个3x3上使用一个a-trimmed滤波器a(p)=2,所以这是我在倍频程上的代码: for(i=2:511), for(j=2:511), D=NoiseImg(i-1:i+1,j-1:j+1);m=1; for k=1:3,for l=1:3,E(m)=D(k,l);m=m+1;end;end; El=sort(E);sum=0; for n=3:7, sum=sum+El(n); end;

我有一个任务,我必须在一个3x3上使用一个a-trimmed滤波器
a(p)=2
,所以这是我在倍频程上的代码:

for(i=2:511),
  for(j=2:511),
    D=NoiseImg(i-1:i+1,j-1:j+1);m=1;
      for k=1:3,for l=1:3,E(m)=D(k,l);m=m+1;end;end;
      El=sort(E);sum=0;
      for n=3:7,
        sum=sum+El(n);
      end;
      P2(i,j)=sum/5;
  end;
end;
这是我的盐和胡椒图片(含6%的盐和6%的胡椒)

这是我的过滤器的输出


我做错了什么,或者这样可以吗???提前发送Thx。

这里有一个代码,相当于您的意图,它是有效的:

mInputImage = imread('1.png');
mInputImage = double(mInputImage) / 255;
mInputImage = mean(mInputImage, 3);

numRows = size(mInputImage, 1);
numCols = size(mInputImage, 2);
numPixels = numRows * numCols;

vSaltPixelsIdx      = randi([1, (numPixels)], [round(0.05 * numPixels), 1]);
vPepperPixelsIdx    = randi([1, (numPixels)], [round(0.05 * numPixels), 1]);

mNoisyImage = mInputImage;

mNoisyImage(vSaltPixelsIdx)     = 1;
mNoisyImage(vPepperPixelsIdx)   = 0;

mOutputImage = zeros(numRows, numCols);


for ii = [2:(numRows - 1)]
    for jj = [2:(numCols - 1)]
        mCurrPatch = mNoisyImage((ii - 1):(ii + 1), (jj - 1):(jj + 1));
        vCurrPatch = mCurrPatch(:);
        vCurrPatch = sort(vCurrPatch);

        mOutputImage(ii, jj) = mean(vCurrPatch(3:7));
    end
end


figure();
imshow(mInputImage, [0, 1]);

figure();
imshow(mNoisyImage, [0, 1]);

figure();
imshow(mOutputImage, [0, 1]);

祝你好运

你能解释一下你想让你的过滤器做什么吗?此外,您能显示显示图像的代码吗?