您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > MATLAB图像分割代码
--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)%定义前景和背景数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=backgroundsum+double(tmp);endendend%计算前景和背景的平均值z1=foregroundsum/iforeground;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)%转换成二值图像。所谓二值图像,一般意义上是指只有纯黑(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);--WORD格式--可编辑------disp(strcat('otsu阈值分割的阈值:',num2str(bw*255)));%在commandwindow里显示出:迭代的阈值:阈值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的二值阈值分割');
本文标题:MATLAB图像分割代码
链接地址:https://www.777doc.com/doc-5579050 .html