• 大小: 1KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: C/C++
  • 标签:

资源简介

本程序为M文件,运行环境为matlab, 也可通过matlab转化为C++运行。实现功能:可实现医学图像的自动分割!

资源截图

代码片段和文件信息

%%%%%%%%%%% 基于聚类法的医学图像分割实验 %%%%%%%%%%%%%%%%
% 10.16.2015 AM-08:22
clcclear allclose all;
% tic
% Elapsed time is 0.520028 seconds.
%% 调入原始图像
data=imread(‘D:\123\888.jpg‘ ); 
data=double(data);
% 第1幅图像
figuresubplot(221)imshow(uint8(data))title(‘原图像‘);
% subplot(231)注解:2*3矩阵中的第1幅图像- 从左到右,由上至下
% 第2幅图像
subplot(222)imhist(uint8(data))title(‘原图像直方图‘);
%% 由随机数产生初始聚类中心
[M N]=size(data);
[countx]=imhist(uint8(data));
mima=find(count~=0);   %灰度等级 256*1的矩阵
V1=zeros(2);    %产生2个分组
V2=zeros(2);
U1=zeros(length(mima)2);       %产生一个n*c的矩阵
V1(1)=mima(round(rand(1)*(length(mima)/4))+1);    %产生随机数  产生初始聚类中心
V1(2)=mima(round(length(mima)/2+rand(1)*(length(mima)/4))+1); 
%% 黑白聚类中心的寻找与计算并进行图像分割
k=0;
while k==0
 for j=1:length(mima)
   if abs(mima(j)-V1(2))        U1(j1)=0.0;
        U1(j2)=1.0;
   else
        U1(j1)=1.0;
        U1(j2)=0.0;
   end
 end   
   tp1=0.0;
   tp2=0.0;
   tp3=0.0;
   tp4=0.0;
   for j=1:length(mima)
      tp1=tp1+count(mima(j))*(mima(j)-1)*U1(j1);
      tp2=tp2+count(mima(j))*U1(j1);
      tp3=tp3+count(mima(j))*(mima(j)-1)*U1(j2);
      tp4=tp4+count(mima(j))*U1(j2);
    end
    V2(1)=tp1/tp2;
    V2(2)=tp3/tp4;
    if  (abs(V2(1)-V1(1))+abs(V2(2)-V1(2)))>0.0001
               V1(1)=V2(1);
               V1(2)=V2(2);
    else
        k=1;
    end
 end
 subplot(223)
 img1=250.*ones(size(data));
 for i=1:M
    for j=1:N
        tp=data(ij);
        for l=1:length(mima)
            if tp==mima(l)
                k=l;
            end
        end
        if U1(k1)>=U1(k2)
            img1(ij)=0;
        end
    end
 end
% 第3幅图像
subplot(223)imshow(uint8(img1))title(‘聚类分割图像结果‘);
% 第4幅图像
subplot(224)imhist(uint8(img1))title(‘2D直方图‘)


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1933  2015-10-16 09:46  Juleishuiji.m

评论

共有 条评论

相关资源