中值滤波快速算法&菱形窗口matlab实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
function g=QuiMedFil2(f)
g=f;
t=2;
[m,n]=size(f);
for i=2:m-1
for j=2:n-1
if(j==2)
A=f(i-1:i+1,j-1:j+1);
hist=imhist(A);
mdn=median(A(:));
%mdn=Med(f(i-1:i+1,j-1:j+1))+1;
L=find(f(i-1:i+1,j-1:j+1) Ltmdn=length(L); g(i,j)=mdn;%-1; else for k=t-1:t+1 hist(f(k,j-2)+1)=hist(f(k,j-2)+1)-1; if(f(k,j-2)) Ltmdn=Ltmdn-1; end end for k=t-1:t+1 hist(f(k,j+1)+1)=hist(f(k,j+1)+1)+1; if(f(k,j+1)) Ltmdn=Ltmdn+1; end end th=4; while Ltmdn>th mdn=mdn-1; Ltmdn = Ltmdn-hist(mdn+1); end while (Ltmdn+hist(mdn+1))<=th Ltmdn=Ltmdn+hist(mdn+1); mdn=mdn+1; end g(i,j)=mdn; end end t=t+1;%t-line; end ======================================= =========================实现过程如下 rgb=imread('Figure1.JPG'); %此处通过matlab读入任何一幅图像 >> I=rgb2gray(rgb); %将图像灰度化 >> I=imresize(I,0.1); %若图像过大可进行适当调整,或省略此步 >> g=QuiMedFil2(I) %调用所编程序执行中值滤波快速算法 figure,imshow(I),figure,imshow(g) %显示原图像和滤波后的图像 =============================================================================== =================================================== 与传统中值滤波算法的同窗口的计算时间对比 快速算法略高于一般算法 =============================================================================== =====================================================菱形5*5中值滤波程序function g=MedFilRho(f) g=f; g=[]; [m,n]=size(f); for i=3:(m-2) for j=3:(n-2) B=[f(i,j),f(i-2,j),f(i-1,j),f(i+1,j),f(i+2,j),f(i,j-1),f(i,j-2),f(i,j+1),f(i,j+2),f(i-1,j-1),f(i+1,j+1),f(i-1,j+1),f(i+1,j-1)]; g(i,j)=median(B); end end 备注:程序为原创,原文地址: /walqxlqxaw/blog/item/aabb517f877e6f190dd7daad.ht ml