📄 strcturelvbonew.m
字号:
function L=strcturelvbonew(I1)
%利用数学形态学对图像进行滤波;选用直线元素作为结构体,定义长度为3,5,角度分别为
%0,45,90,135的两种尺寸四种形状的结构体;
%将相同形状不同尺寸的结构体作为一类,共有四类结构体组,使用各类中的结构体对图像进行
%串联滤波,得到四幅滤波后的图像,将得到的四幅新图像分别乘以合适的权数后相加,这样
%得到的图像就是经过平滑后的新图像;权数分别定义为各类结构体插入图像中的次数除以总次
%数后得到的值;
%SE11,SE12,SE13,SE14 分别用来存储两种尺寸,四种形状的结构体组;
%w1,w2,w3,w4 分别定义为四个权数
%Fiend 经过平滑后的图像;
I11=I1;
I12=I1;
I13=I1;
I14=I1;
[x,y]=size(I1); %输入图像的尺寸定义为[x,y];
for j=3:2:5 %定义第一种结构体组,由相角为0,长度为3,5
SE11=strel('line',j,0); %的两个结构体组成;并用这两个结构体对输入
I11=imopen(I11,SE11); %图像进行串联滤波;滤波后的图像定义为Ifilter1
I11=imclose(I11,SE11);
end
Ifilter1=I11;
for j=3:2:5 %定义第二种结构体组,由相角为45,长度为3,5
SE12=strel('line',j,45); %的两个结构体组成;利用这两个结构体进行串联
I12=imopen(I12,SE12); %滤波后的图像定义为Ifilter2;
I12=imclose(I12,SE12);
end
Ifilter2=I12;
for j=3:2:5 %定义第三种结构体组,由相角为90,长度为3,5
SE13=strel('line',j,90); %的两个结构体组成;利用这两个结构体进行串联
I13=imopen(I13,SE13); %滤波后的图像定义为Ifilter3;
I13=imclose(I13,SE13);
end
Ifilter3=I13;
for j=3:2:5 %定义第四种结构体组,由相角为135,长度为3,5
SE14=strel('line',j,135); %的两个结构体组成;利用这两个结构体进行串联
I14=imopen(I14,SE14); %滤波后的图像定义为Ifilter4;
I14=imclose(I14,SE14);
end
Ifilter4=I14;
%计算权数;
%in1(1),in1(2),in1(3),in1(4)分别表示长度为3,相角为0,45,90,135的四种结构体插入图像
%的次数;
in1(1)=(y-3+1)*x;
in1(2)=(x-3+1)*(y-3+1);
in1(3)=y*(x-3+1);
in1(4)=in1(2);
%in2(1),in2(2),in2(3),in2(4)分别表示长度为5,相角为0,45,90,135的四种结构体插入图像
%的次数;
in2(1)=(y-5+1)*x;
in2(2)=(x-5+1)*(y-5+1);
in2(3)=y*(x-5+1);
in2(4)=in2(2);
sumin=sum(in1)+sum(in2); %所有结构体插入图像的总次数;
%w1,w2,w3,w4分别表示四类串联滤波器的权数;
w1=(in1(1)+in2(1))/sumin;
w2=(in1(2)+in2(2))/sumin;
w3=(in1(3)+in2(3))/sumin;
w4=(in1(4)+in2(4))/sumin;
Iend=Ifilter1*w1+Ifilter2*w2+Ifilter3*w3+Ifilter4*w4;
figure,imshow(Iend);
L=Iend;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -