?? spinfilter.m
字號:
clear all;
x=imread('020.bmp');%輸入文件
g=double(rgb2gray(x));
[grow,gcol]=size(g);
Dij(1,1:8)=0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%旋濾波部分的程序,分成8個方向,取方差最小為濾波方向。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=4:grow-4
for j=4:gcol-4
B(1:8,1:7)=[g(i-3,j), g(i-2,j), g(i-1,j),g(i,j), g(i+1,j), g(i+2,j), g(i+3,j);
g(i-3,j+2), g(i-2,j+1) ,g(i-1,j+1),g(i,j), g(i+1,j-1), g(i+2,j-1), g(i+3,j-2);
g(i-3,j+3), g(i-2,j+2), g(i-1,j+1),g(i,j), g(i+1,j-1), g(i+2,j-2), g(i+3,j-3);
g(i-1,j+3), g(i-1,j+2), g(i,j+1), g(i,j),g(i,j-1) ,g(i+1,j-2) ,g(i+1,j-3);
g(i,j-3) ,g(i,j-2), g(i,j-1), g(i,j),g(i,j+1), g(i,j+2), g(i,j+3);
g(i-1,j-3), g(i-1,j-2), g(i,j-1) ,g(i,j),g(i,j+1), g(i+1,j+2), g(i+1,j+3);
g(i-3,j-3), g(i-2,j-2), g(i-1,j-1), g(i,j),g(i+1,j+1), g(i+2,j+2) ,g(i+3,j+3);
g(i-3,j-2), g(i-2,j-1), g(i-1,j+1), g(i,j),g(i+1,j+1), g(i+2,j+1), g(i+3,j+2)];
B=double(B');
Dij=Dij+std(B);
%end
%end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%根據方向,確定濾波方向,進行中值濾波,輸入新的矩陣g1中。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[k,kk]=find(Dij==min(Dij));
Direction(i,j)=kk;
switch (kk(1))%根據方向確定入口
case 1
B1=[g(i,j-3) ,g(i,j-2), g(i,j-1), g(i,j),g(i,j+1), g(i,j+2), g(i,j+3)];
B1=double(B1);
g1(i,j)=median3(B1);%進行中值濾波
case 2
B1=[g(i,j-3) ,g(i,j-2), g(i,j-1), g(i,j),g(i,j+1), g(i,j+2), g(i,j+3)];
B1=double(B1);
g1(i,j)=median3(B1);
case 3
B1=[g(i-3,j+3), g(i-2,j+2), g(i-1,j+1),g(i,j), g(i+1,j-1), g(i+2,j-2), g(i+3,j-3)];
B1=double(B1);
g1(i,j)=median3(B1);
case 4
B1=[g(i-1,j+3), g(i-1,j+2), g(i,j+1), g(i,j),g(i,j-1) ,g(i+1,j-2) ,g(i+1,j-3)];
B1=double(B1);
g1(i,j)=median3(B1);
case 5
B1=[g(i,j-3) ,g(i,j-2), g(i,j-1), g(i,j),g(i,j+1), g(i,j+2), g(i,j+3)];
B1=double(B1);
g1(i,j)=median3(B1);
case 6
B1=[g(i,j-3) ,g(i,j-2), g(i,j-1), g(i,j),g(i,j+1), g(i,j+2), g(i,j+3)];
B1=double(B1);
g1(i,j)=median3(B1);
case 7
B1=[g(i,j-3) ,g(i,j-2), g(i,j-1), g(i,j),g(i,j+1), g(i,j+2), g(i,j+3)];
B1=double(B1);
g1(i,j)=median3(B1);
case 8
B1=[g(i,j-3) ,g(i,j-2), g(i,j-1), g(i,j),g(i,j+1), g(i,j+2), g(i,j+3)];
B1=double(B1);
g1(i,j)=median3(B1);
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%將文件重新存回原目錄
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
g3=mat2gray(g1);
imwrite(g3,'tt7.bmp','bmp');
function y=median3(x)
p=sort(x);
y=p(1,3);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -