笔记本cpu天梯-mysqlprepare
![handles](/uploads/image/0469.jpg)
2023年4月5日发(作者:思科交换机模拟器)
matlab图像处理-3-图像分割
图像分割可以分为三种⼤⽅向:阈值分割、边缘处理、形态学分割
阈值分割分为三种:全局阈值分割、otus分割、迭代法分割
边缘分割:sobel、roberts、prewitt、log、canny算⼦
阈值分割处理就是通过选择⼀个阈值,将灰度直⽅图中灰度过滤为只含有两个灰度,其⼀为⽬标灰度,其⼆为背景灰度,两种灰度图构成⼆
值图像。通过⼆值图像对⽬标分离和特征提取。
T是函数的门限,对门限T进⾏判断,将⼤于T的值全部转化为255,⼩于T或等于门限值T的全部转换为0。
全局阈值分割法
T32=0.5*(double(min(WF3(:)))+double(max(WF3(:))));
[m,n]=size(WF3);
fori=1:m
forj=1:n
if(WF3(i,j)>T32)
GT(i,j)=1;
else
GT(i,j)=0;
end
end
end
最⼤类间⽅差法
T2=graythresh(WF3);%采⽤Otsu⽅法计算最优阈值T对图像⼆值化;
otsuI=im2bw(WF3,T2);
迭代式阈值法
%%迭代式阈值分割()
%T31=im2double(WF3);
%T32=0.01;%设定参数T0
%T35=(min(T31(:))+max(T31(:)))/2;%初始阈值T1取图像最⼩值和最⼤值的均值
%r11=find(T31>T35);
%r22=find(T31<=T35);
%T36=(mean(T31(r11))+mean(T31(r22)))/2;
%whileabs(T36-T35)
%T35=T36;
%r11=find(T31>T35);
%r22=find(T31<=T35);
%T36=(mean(T31(r11))+mean(T31(r22)))/2;
%end
%J=im2bw(T31,T36);
%法⼆
B=WF3;
%初始化阈值
T=0.5*(double(min(B(:)))+double(max(B(:))));
d=false;
%通过迭代求最佳阈值
while~d
g=B>=T;
Tn=0.5*(mean(B(g))+mean(B(~g)));
d=abs(T-Tn)<0.5;
T=Tn;
end
%根据最佳阈值进⾏图像分割
level=Tn/255;
J=im2bw(B,level);
迭代法的原理和⼆分法相似,需要考虑图像的⼤⼩,法⼀对于⼩图算的快,对⼤图基本上⽆缘。
边缘检测
%sobelSobel算⼦检测⽅法对灰度渐变和噪声较多的图像处理效果较好,
%Sobel算⼦对边缘定位不是很准确,图像的边缘不⽌⼀个像素
BW1=edge(WF3,'sobel');
%[BW1,thresh]=edge(WF3,'sobel',[],'both');
sobelBW1=im2uint8(BW1)+MidGrayPic3;
1=BW1;
guidata(hObject,handles);
W1=sobelBW1;
guidata(hObject,handles);
%roberts
%Roberts算⼦检测⽅法对具有陡峭的低噪声的图像处理效果较好,
%但是利⽤roberts算⼦提取边缘的结果是边缘⽐较粗,因此边缘的定位不是很准确
BW2=edge(WF3,'roberts');
%[BW2,thresh]=edge(WF3,'roberts',[],'both');
%[BW2,thresh]=edge(WF3,'roberts',35/255);
robertBW2=im2uint8(BW2)+MidGrayPic3;
2=BW2;
guidata(hObject,handles);
BW2=robertBW2;
guidata(hObject,handles);
%prewitt
%Prewitt算⼦检测⽅法对灰度渐变和噪声较多的图像处理效果较好。但边缘较宽,⽽且间断点多。
%BW3=edge(I3,'prewitt');
[BW3,thresh]=edge(WF3,'prewitt',[],'both');
prewittBW3=im2uint8(BW3)+MidGrayPic3;
3=BW3;
guidata(hObject,handles);
tBW3=prewittBW3;
guidata(hObject,handles);
%log
%算⼦法对噪声⽐较敏感,所以很少⽤该算⼦检测边缘,⽽是⽤来判断边缘像素视为与图像的明区还是暗区
BW4=edge(WF3,'log');
%[BW4,thresh]=edge(WF3,'log');
logBW4=im2uint8(BW4)+MidGrayPic3;
4=BW4;
guidata(hObject,handles);
4=logBW4;
guidata(hObject,handles);
%canny
%Canny⽅法不容易受噪声⼲扰,能够检测到真正的弱边缘。
%优点在于,使⽤两种不同的阈值分别检测强边缘和弱边缘,并且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。
BW5=edge(WF3,'canny');
%[BW5,thresh]=edge(WF3,'canny');
cannyBW5=im2uint8(BW5)+MidGrayPic3;
5=BW5;
guidata(hObject,handles);
W5=cannyBW5;
guidata(hObject,handles);
区域分割
bw=BWfinal;
img=I;
gc=~bw;
D=bwdist(gc);%⼆值图像的距离变换是指从每个像素到最接近零值的像素的距离。
handles.D=D;
guidata(hObject,handles);
rm=imregionalmin(-D);%查看局部极⼩值区域
=rm;
guidata(hObject,handles);
im=imextendedmin(-D,2);%扩展最⼩值
i=tem1;fim=i;
fim(im)=-255;
=fim;
guidata(hObject,handles);
Lim=watershed(bwdist(im));
=Lim;
guidata(hObject,handles);
em=Lim==0;res=em|im;
=res;
guidata(hObject,handles);
g2=imimposemin(i,im|em);
handles.g2=g2;
guidata(hObject,handles);
L2=watershed(g2);f2=img;
f2(L2==0)=255;
handles.f2=f2;
guidata(hObject,handles);
%%⽔域分割
shui_img=bw;
D=-bwdist(~shui_img);
mask=imextendedmin(D,2);
D2=imimposemin(D,mask);
Ld=watershed(D2);
Water_splited=shui_img;
Water_splited(Ld==0)=0;
shui_img=Water_splited;
%setappdata(T3,'shui_img',shui_img);
_img=shui_img;
guidata(hObject,handles);
更多推荐
handles
发布评论