本文主要是介绍【图像分割】基于Kmean聚类实现乳腺肿瘤分割附matlab代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 简介
乳腺癌作为当今女性最普遍的癌症之一,已经成为严重危害女性健康的罪魁祸首.如何有效地提高乳腺癌的诊断,治疗,进而最大可能地减少损害,已经成为当今女性健康所面临的一个急需解决的问题.为此,乳腺肿瘤分割的准确与否,不仅为临床诊断及放射治疗方式的选择提供重要依据,而且直接关系到患者的治疗效果.故如何提高乳腺CT图像肿瘤的分割准确率一直是相关人员研究的重点.
2 部分代码
clc
clear
close all
%% dataset:
for image=1:33
image
Iref=dicomread(['RIDER dataset/ref/1 (',num2str(image),').dcm']);
Igt=dicomread(['RIDER dataset/GT/1 (',num2str(image),').dcm']);
fim=(double(Iref)/(max(max(double(Iref)))));
GT=logical(Igt);
maxwin=0;
for i=30:5:size(GT,1)-100
for j=30:5:size(GT,2)-100
window=GT(i:i+90,j:j+90);
if sum(sum(window))>maxwin
maxwin=sum(sum(window));
bestwin=window;
besti=i;
bestj=j;
end
end
end
GT=bestwin;
fim=fim(besti:besti+90,bestj:bestj+90);
subplot(1,4,1)
imshow(GT);
title('Ground Truth');
%% fcm
[bwfim,level]=threshold1(fim);
%% kmeans
[bwfim2,level2]=threshold2(fim);
%% Cuckoo + Kmeans
[bwfim3,level3]=threshold3(fim);
%%
result=(bwfim);
nResult=sum(sum(result==1));
nGT=sum(sum(GT==1));
nUNI=0;
for i=1:numel(GT)
if result(i)==1 && GT(i)==1
nUNI=nUNI+1;
end
end
Q_fcm= nUNI/nGT * nUNI/nResult;
subplot(1,4,2)
imshow(bwfim);
title(['FCM/ Q=',num2str(Q_fcm)]);
%%
result=(bwfim2);
nResult=sum(sum(result==1));
nGT=sum(sum(GT==1));
nUNI=0;
for i=1:numel(GT)
if result(i)==1 && GT(i)==1
nUNI=nUNI+1;
end
end
Q_km= nUNI/nGT * nUNI/nResult;
subplot(1,4,3)
imshow(bwfim2);
title(['Kmeans/ Q=',num2str(Q_km)]);
%%
result=bwfim3;
nResult=sum(sum(result==1));
nGT=sum(sum(GT==1));
nUNI=0;
for i=1:numel(GT)
if result(i)==1 && GT(i)==1
nUNI=nUNI+1;
end
end
Qc= nUNI/nGT * nUNI/nResult;
subplot(1,4,4)
imshow(bwfim3);
title(['Cuckoo/ Q=',num2str(Qc)]);
pause(0.1)
QQ=[Q_fcm,Q_km,Qc];
xlswrite('xl.xlsx',QQ,1,['A',num2str(image)])
end
3 仿真结果
4 参考文献
[1]范怀玉, 马军山. 基于MATLAB_GUI的超声乳腺肿瘤图像分割平台设计[J]. 软件, 2019, 40(6):4.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
这篇关于【图像分割】基于Kmean聚类实现乳腺肿瘤分割附matlab代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!