📄 gujia.m
字号:
%用3*3领域法对图像滤波
K1=imread('tiaowen1.jpg');
I=filter2(fspecial('average',3),K1)/255;
J=I;
%用5*5的模板去探测
[m,n]=size(I);
neighbor=zeros(5,5);
for i=3:1:m-2
for j=3:1:n-2
%取邻域灰度值赋给neighbor各点编号如下
%p-22 p-12 p02 p12 p22
%p-21 p-11 p01 p11 p21
%p-20 p-10 p00 p10 p20
%p-2-1 p-1-1 p0-1 p1-1 p2-1
%p-2-2 p-1-2 p0-2 p1-2 p2-2
neighbor(1,1)=J(i-2,j-2);neighbor(1,2)=J(i-2,j-1);neighbor(1,3)=J(i-2,j);neighbor(1,4)=J(i-2,j+1);neighbor(1,5)=J(i-2,j+2);
neighbor(2,1)=J(i-1,j-2);neighbor(2,2)=J(i-1,j-1);neighbor(2,3)=J(i-1,j);neighbor(2,4)=J(i-1,j+1);neighbor(2,5)=J(i-1,j+2);
neighbor(3,1)=J(i,j-2);neighbor(3,2)=J(i,j-1);neighbor(3,3)=J(i,j);neighbor(3,4)=J(i,j+1);neighbor(3,5)=J(i,j+2);
neighbor(4,1)=J(i+1,j-2);neighbor(4,2)=J(i+1,j-1);neighbor(4,3)=J(i+1,j);neighbor(4,4)=J(i+1,j+1);neighbor(4,5)=J(i+1,j+2);
neighbor(5,1)=J(i+2,j-2);neighbor(5,2)=J(i+2,j-1);neighbor(5,3)=J(i+2,j);neighbor(5,4)=J(i+2,j+1);neighbor(5,5)=J(i+2,j+2);
condition1=0;
condition2=0;
condition3=0;
condition4=0;
% x方向上满足p00+p0-1+p01>p-20+p-2-1+p-21且p00+p0-1+p01>p20+p2-1+p21
if(( neighbor(3,3)+neighbor(4,3)+neighbor(2,3))>(neighbor(3,1)+neighbor(4,1)+neighbor(2,1)))&&...
((neighbor(3,3)+neighbor(4,3)+neighbor(2,3))>(neighbor(3,5)+neighbor(4,5)+neighbor(2,5)))
condition1=1;
end
%y方向上满足p00+p-10+p10>p0-2+p-1-2+p1-2且p0-2+p-1-2+p1-2>p02+p-12+p12
if ((neighbor(3,3)+neighbor(3,2)+neighbor(3,4))>(neighbor(5,3)+neighbor(5,2)+neighbor(5,4)))&&...
((neighbor(3,3)+neighbor(3,2)+neighbor(3,4))>(neighbor(1,3)+neighbor(1,2)+neighbor(1,4)))
condition2=1;
end
%xy方向上满足p00+p-1-1+p11>p-22+p-21+p-12且p00+p-1-1+p11>p-2-2+p-2-1+p-1-2
if ((neighbor(3,3)+neighbor(4,2)+neighbor(2,4))>(neighbor(1,1)+neighbor(2,1)+neighbor(1,2)))&&...
((neighbor(3,3)+neighbor(4,2)+neighbor(2,4))>(neighbor(5,1)+neighbor(4,1)+neighbor(5,2)))
condition3=1;
end
%-xy方向上满足p00+p-11+p1-1>p-2-2+p-2-1+p-1-2且p00+p-11+p1-1>p22+p21+p12
if ((neighbor(3,3)+neighbor(2,2)+neighbor(4,4))>(neighbor(5,1)+neighbor(4,1)+neighbor(5,2)))&&...
((neighbor(3,3)+neighbor(2,2)+neighbor(4,4))>(neighbor(1,5)+neighbor(2,5)+neighbor(1,4)))
condition4=1;
end
if condition1+condition2+condition3+condition4<2
I(i,j)=255; % 删除该点
else
I(i,j)=J(i,j);
end
end
end
imshow(I);title('细化后');
imfinfo(I);
%对图像进行二值化处理
for i=0:m-1
for j=0:n-1;
if J(i,j)<255
J(i,j)=0;
else
J(i,j)=255;
end
end
end
figure;
imshow(I);title('二值化后');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -