medi.m
来自「MATLAB中实现中值滤波的算法的M文件。经过验证可以实现滤波效果。」· M 代码 · 共 36 行
M
36 行
function [J]=medi(I,W)
[m,n]=size(I);%原来图像的高度和宽度
[mm,nn]=size(W);%模板的高度和宽度
J=zeros(m,n);%处理后的图像
%以下对图像中每个点进行处理
for i=1:m
for j=1:n
%如果是边缘点,则不处理,赋予原来图像的值
if i<=(mm-1)/2||i>=m-(mm-1)/2+1||j<=(nn-1)/2||j>=n-(nn-1)/2+1
J(i,j)=I(i,j);
else
%对于不是边缘点,则按模板的大小进行计算,把模板对应原图像上的点放到一个数组里
k=0;
temp=zeros(1,mm*nn);
for a=-(mm-1)/2:(mm-1)/2
for b=-(nn-1)/2:(nn-1)/2
temp(k+1)=I(i+a,j+b);
k=k+1;
end
end
%对于模板上对应原图像上的点进行排序,采用冒泡排序
for s=1:k-2
for l=s+1:k
if temp(s)>temp(l)
tem=temp(s);
temp(s)=temp(l);
temp(l)=tem;
end
end
end
J(i,j)=temp((k+1)/2);%把排序后的值赋给处理后的矩阵
end
end
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?