📄 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 + -