欢迎来到天天文库
浏览记录
ID:35968293
大小:12.66 KB
页数:3页
时间:2019-04-29
《matlab图像分割代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、[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)%定义前景和背景数iforeground=0;ibac
2、kground=0;%定义前景和背景灰度总和foregroundsum=0;backgroundsum=0;fori=1:mforj=1:ntmp=I(i,j);if(tmp>=tk)%前景灰度值iforeground=iforeground+1;foregroundsum=foregroundsum+double(tmp);elseibackground=ibackground+1;backgroundsum=backgroundsum+double(tmp);endendend%计算前景和背景的平均值z1=foregroundsum/ifo
3、reground;z2=foregroundsum/ibackground;tktmp=uint8((z1+z2)/2);if(tktmp==tk)bcal=0;elsetk=tktmp;end%当阈值不再变化时,说明迭代结束enddisp(strcat('迭代的阈值迭代的阈值:阈值:',num2str(tk)));%在commandwindow里显示出:newI=im2bw(I,double(tk)/255);%函数im2bw使用阈值(threshold)变换法把灰度图像(grayscaleimage)%转换成二值图像。所谓二值图像
4、,一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。%语法%BW=im2bw(I,level)%BW=im2bw(X,map,level)%BW=im2bw(RGB,level)%其中level就是设置阈值的。level取值范围[0,1]。subplot(2,2,2);imshow(newI);title('2rice的迭代法分割效果图');%otsu阈值分割bw=graythresh(I);disp(strcat('otsu阈值分割的阈值:',num2str(bw*255)));%在commandwindow里显
5、示出:迭代的阈值:阈值newII=im2bw(I,bw);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的二值阈值分割');
此文档下载收益归作者所有