笔记本cpu天梯-mysqlprepare

handles
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