【图像分割】基于KFCMC和FMC两种聚类算法实现MRI图像的分割matlab代码

227 阅读3分钟

1 简介

目的:磁共振成像( magnetic resonance imaging , MRI)对脑组织有较好的成像效果,但噪声,偏移场和部分容积效应( partial volume effect , PVE)的存在,使得全自动分割MRI图像面临一定的困难.模糊C均值(fuzzy C-means, FCM)聚类算法在脑组织分割中得到较广泛研究.本文以存在噪声和偏移场影响的脑MRI图像分割为应用背景,研究了大量相关方法,探讨FCM算法分割脑部 图像的改进思想.方法本文主要研究了9种FCM算法的理论基础,并通过脑组织分割实验对各种算法进行了分析.结果比较了不同算法的优劣,给出各类算法直观 及定量评价结果.结论偏移场和噪声对脑磁共振图像组织分类质量有明显影响.其中几种方法可以减弱这些不利影响,但由于难以选择合适的参数,其分类效果并不 理想.如何合理利用空间信息在未来仍有较大研究价值.

2 部分代码

function [center, U, obj_fcn]FCMClust(data, cluster_n, options)
% FCMClust.m   采用模糊C均值对数据集data聚为cluster_n类 
%
% 用法:
%   1. [center,U,obj_fcn] = FCMClust(Data,N_cluster,options);
%   2. [center,U,obj_fcn] = FCMClust(Data,N_cluster);
%   
% 输入:
%   data       ---- nxm矩阵,表示n个样本,每个样本具有m的维特征值
%   N_cluster   ---- 标量,表示聚合中心数目,即类别数
%   options     ---- 4x1矩阵,其中
%       options(1): 隶属度矩阵U的指数,>1                 (缺省值: 2.0)
%       options(2): 最大迭代次数                           (缺省值: 100)
%       options(3): 隶属度最小变化量,迭代终止条件           (缺省值: 1e-5)
%       options(4): 每次迭代是否输出信息标志               (缺省值: 1)
% 输出:
%   center     ---- 聚类中心
%   U           ---- 隶属度矩阵
%   obj_fcn     ---- 目标函数值
%   Example:
%       data = rand(100,2);
%       [center,U,obj_fcn] = FCMClust(data,2);
%       plot(data(:,1), data(:,2),'o');
%       hold on;
%       maxU = max(U);
%       index1 = find(U(1,:) == maxU);
%       index2 = find(U(2,:) == maxU);
%       line(data(index1,1),data(index1,2),'marker','*','color','g');
%       line(data(index2,1),data(index2,2),'marker','*','color','r');
%       plot([center([1 2],1)],[center([1 2],2)],'*','color','k')
%       hold off;


if nargin ~= 2 & nargin ~= 3,    %判断输入参数个数只能是2个或3error('Too many or too few input arguments!');
end

data_n = size(data, 1); % 求出data的第一维(rows)数,即样本个数
in_n = size(data, 2);   % 求出data的第二维(columns)数,即特征值长度
% 默认操作参数
default_options = [2;% 隶属度矩阵U的指数   100;                % 最大迭代次数    1e-5;               % 隶属度最小变化量,迭代终止条件   1];                 % 每次迭代是否输出信息标志 

if nargin == 2,
options = default_options;
else       %分析有options做参数时候的情况
% 如果输入参数个数是二那么就调用默认的option;
if length(options) < 4, %如果用户给的opition数少于4个那么其他用默认值;
tmp = default_options;
tmp(1:length(options)) = options;
options = tmp;
   end

3 仿真结果

4 参考文献

[1]王新宁, 林相波, and 袁珍. "基于FCM聚类算法的MRI脑组织图像分割方法比较研究." 北京生物医学工程 000.003(2015):221-228.

部分理论引用网络文献,若有侵权联系博主删除。

5 MATLAB代码与数据下载地址

见博客主页