图像作业-细胞个数matlab幻灯片.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
K均值聚类、分水岭算法计算图片中红白细胞个数 K均值聚类 1、任取[0,255]中K个值作为第一次分类中心 2、把图像(gray)中的每一个点与K个中心值进行比较,按差值分成K组,求出新的K个中心点 3、重复上一步骤直到前后两次算出的中心点值相同 4、按最后得到的中心点把图像依据点到中心点的距离分成K类。 程序 function [cen,copy]=Kmeans(I,k) % K均值聚类函数 mm=max(max(I)); % mm为I的最大灰度值 copy=I; cen=(1:k)*mm/k; % 求出首次中心值 cen1=zeros(1,k); d=ones(1,k)./255; [m,n]=size(I); J=zeros(m,n); while(1) for i=1:m for j=1:n c=abs(I(i,j)-cen); % c为I中元素与各中心点的差值数组 cc=find(min(c)==c); % cc为距中心值最近的元素下标 J(i,j)=cc; end end % 求新的中心点 for r=1:k h=0; [J1,J2]=find(J==r); p=length(J1); for s=1:p h=h+I(J1(s),J2(s)); copy(J1(s),J2(s))=cen(r); % 按中心值把原图像灰度分为K类 end cen1(r)=h/p; end if (abs(cen1-cen)=d) break; else cen=cen1; end end K均值聚类、分水岭算法总程序 I=imread(blood.jpg); % 读入处理图像 R=I(:,:,1); % 分离R分量 G=I(:,:,2); B=I(:,:,3); clc; % 清屏 close all; % 关闭图像窗口 figure, % 开辟图像显示窗口 subplot(2,3,1),imshow(R),title(R分量); subplot(2,3,2),imshow(G),title(G分量); subplot(2,3,3),imshow(B),title(B分量); K=rgb2hsv(I); % RGB图像转换成HSV图像 H=K(:,:,1); S=K(:,:,2); V=K(:,:,3); subplot(2,3,4),imshow(H),title(H分量); subplot(2,3,5),imshow(S),title(S分量); subplot(2,3,6),imshow(V),title(V分量); %****************************** 白细胞计数 ******************************% % 分割出只有白细胞的二值图像 [cenwhite,copywhite]=Kmeans(H,3); % K均值聚类函数调用 cenwhite; % 查看聚类后的中心值 figure, subplot(1,3,1),imshow(copywhite,[ ]),title(H分量K均值聚类结果); A=copywhite; [m,n]=size(A); % 把聚类后图像二值化 for i=1:m for j=1:n if A(i,j)==cenwhite(2) A(i,j)=1; else A(i,j)=0; end end end subplot(1,3,2),imshow(A,[ ]),title(白细胞二值化结果); C1=imdilate(A,ones(5)); % 对二值化图像腐蚀膨胀处理达到去噪效果 C2=i

您可能关注的文档

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档