资源描述:
《matlab图像分割代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、--WORD格式--可编辑---[matlab图像处理]阈值分割%迭代式阈值分割otsu阈值分割二值化closeall;%关闭所有窗口clear;%清除变量的状态数据clc;%清除命令行I=imread('rice.png');subplot(2,2,1);imshow(I);title('1rice的原图');%迭代式阈值分割zmax=max(max(I));%取出最大灰度值zmin=min(min(I));%取出最小灰度值tk=(zmax+zmin)/2;bcal=1;[m,n]=size(I);while(bcal)%定义前景和背景
2、数iforeground=0;ibackground=0;%定义前景和背景灰度总和foregroundsum=0;backgroundsum=0;fori=1:mforj=1:ntmp=I(i,j);if(tmp>=tk)%前景灰度值iforeground=iforeground+1;foregroundsum=foregroundsum+double(tmp);-----WORD格式--可编辑---elseibackground=ibackground+1;-----WORD格式--可编辑---backgroundsum=backgro
3、undsum+double(tmp);endendend%计算前景和背景的平均值z1=foregroundsum/iforeground;z2=foregroundsum/ibackground;tktmp=uint8((z1+z2)/2);if(tktmp==tk)bcal=0;elsetk=tktmp;end-----WORD格式--可编辑---%当阈值不再变化时,说明迭代结束-----WORD格式--可编辑---end-----WORD格式--可编辑---disp(strcat('迭代的阈值迭代的阈值:阈值:',num2str
4、(tk)));%在commandwindow里显示出:-----WORD格式--可编辑---newI=im2bw(I,double(tk)/255);%函数im2bw使用阈值(threshold)变换法把灰度图像(grayscaleimage)%转换成二值图像。所谓二值图像,一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。%语法%BW=im2bw(I,level)%BW=im2bw(X,map,level)%BW=im2bw(RGB,level)-----WORD格式--可编辑---%其中level就是设置阈值的。l
5、evel取值范围[0,1]。-----WORD格式--可编辑---subplot(2,2,2);imshow(newI);-----WORD格式--可编辑---title('2rice的迭代法分割效果图');-----WORD格式--可编辑---%otsu阈值分割bw=graythresh(I);-----WORD格式--可编辑--------WORD格式--可编辑---disp(strcat('otsu阈值分割的阈值:',num2str(bw*255)));%在commandwindow-----WORD格式--可编辑--
6、-里显示出:迭代的阈值:阈值newII=im2bw(I,bw);-----WORD格式--可编辑---subplot(2,2,3);imshow(newII);title('3rice的otsu阈值分割');%二值化阈值为135[width,height,bmsize]=size(I);fori=1:widthforj=1:heightifI(i,j)>135I(i,j)=255;elseI(i,j)=0;endendendsubplot(2,2,4);imshow(I);title('4rice的二值阈值分割');---