📄 bianyuanjiance.m
字号:
tissue = imread('tissue1.tif');
tissue=rgb2gray(tissue); %将原始图像转换为灰度图像
[x,y]=size(tissue); % 求出图像大小
T=double(tissue); % 由imread读出的图像文件采用uint8的类型,必须转换成double类型之后方可进行运算
for i=1:x % 实际图像的灰度为0~255
for j=1:y
if (T(i,j)>255)
T(i,j)=255;
end
if (T(i,j)<0)
T(i,j)=0;
end
end
end
z0=max(max(T)); % 求出图像最大灰度
z1=min(min(T)); % 最小灰度
Y=(z0+z1)/2; % 域值
YY=0;
S0=0; n0=0;
S1=0; n1=0;
allow=0.5; % 新旧阈值的允许接近程度
d=abs(Y-YY);
count=0; % 记录几次循环
while(d>=allow) % 迭代最佳阈值分割算法
count=count+1;
for i=1:x
for j=1:y
if (T(i,j)>=Y)
S0=S0+T(i,j);
n0=n0+1;
end
if (T(i,j)<Y)
S1=S1+T(i,j);
n1=n1+1;
end
end
end
Y0=S0/n0;
Y1=S1/n1;
YY=(Y0+Y1)/2;
d=abs(Y-YY);
Y=YY;
end
Seg=zeros(x,y);
for i=1:x
for j=1:y
if(T(i,j)>=Y)
Seg(i,j)=1; % 阈值分割的图像
end
end
end
SI=1-Seg; % 阈值分割后的图像求反,便于用腐蚀算法求边缘
se1=strel('square',3); % 定义腐蚀算法的结构
SI1=imerode(SI,se1); % 腐蚀算法
SI1=double(SI1);
BW=SI-SI1; % 边缘检测
%=====传统的边缘检测方法======%
T=uint8(T);
BW1=edge(T,'sobel', 0.11);
BW2=edge(T,'log', 0.015);
%===========图象显示==========%
figure(1);
imshow(T);title('Original') % 显示阈值分割的图像
figure(2);
imshow(BW2);title('Soble') % 显示新算法的边缘图像
figure(3)
imshow(BW1);title('Gauss-Laplace')
figure(4)
imshow(BW);title('New algorithm')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -