Image processing 使用a修剪过滤器的图像处理出错
我有一个任务,我必须在一个3x3上使用一个a-trimmed滤波器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;
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]);
祝你好运 你能解释一下你想让你的过滤器做什么吗?此外,您能显示显示图像的代码吗?