中值滤波快速算法&菱形窗口matlab实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档