matlab求最小均方根误差MSE,等于0,该怎么求function f =test(g,Smax,A0)% ADPMEDIAN Perform adaptive median filtering% 首先判断Smax是否符合要求:Smax应该是大于1的奇数% 如果算法中窗内噪声的像素数超过有用像
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 15:46:03
matlab求最小均方根误差MSE,等于0,该怎么求function f =test(g,Smax,A0)% ADPMEDIAN Perform adaptive median filtering% 首先判断Smax是否符合要求:Smax应该是大于1的奇数% 如果算法中窗内噪声的像素数超过有用像
matlab求最小均方根误差MSE,等于0,该怎么求
function f =test(g,Smax,A0)
% ADPMEDIAN Perform adaptive median filtering
% 首先判断Smax是否符合要求:Smax应该是大于1的奇数
% 如果算法中窗内噪声的像素数超过有用像素之半,则需要增加滤窗Sxy的尺寸
A=A0(:,:,1);
A1=double(A);
if (Smax zmin) & (zmax>zmed) & alreadyProcessed;
% 如果zmed>zmin并且zmax>zmed,转到levelB,否则增加滤窗Sxy的尺寸
%判断Z,x,y是否为一脉冲
% level B
zB=(g>zmin) & (zmax>g);
outputZxy=processUsingLevelB & zB; % Zxy是坐标(x,y)处的灰度值
outputZmed=processUsingLevelB & zB;
%输出一个不变的像素值Zx,y来代替邻域中值作为输出
% 如果Zxy>Zmin 并且zmax>Zxy,把Zxy作为输出值,否则把Zmed作为输出值
f(outputZxy)=g(outputZxy);
%输出中值滤波的值作为输出
f(outputZmed)=zmed(outputZmed);
alreadyProcessed=alreadyProcessed|processUsingLevelB;
if all(alreadyProcessed(:))
break;
end
end
sum=0;
for i=1:M
for j=1:N
sum=sum+(A1(i,j)-f(i,j))^2;
end
end
decibels=sum/(M*N);
disp(sprintf('MSE=+%5.2f',decibels));
% toc
matlab求最小均方根误差MSE,等于0,该怎么求function f =test(g,Smax,A0)% ADPMEDIAN Perform adaptive median filtering% 首先判断Smax是否符合要求:Smax应该是大于1的奇数% 如果算法中窗内噪声的像素数超过有用像
我的思路是这样:
% 读入图像I.注意I应是double类型,不要用uint8
J = adaptive_median_filtering(I); % 做滤波
mse = mean((I(:)-J(:)).^2); % 求mse
请把adaptive_median_filtering这里单独封装成一个函数,然后按我的代码就可以求mse了.