4
我有一个分段肝脏。我需要在其中分割肿瘤。我使用FCM方法。这是一个3级FCM阈值。当我将它应用于图像时,我需要将肿瘤区域(比其余部分更暗的区域)单独分割。但是我们正好相反。肿瘤周围的所有区域都被分割。请帮助我。该方案有两个文件,testfcmthresh.m
和功能fcmthresh.m
使用Matlab进行肿瘤分割的模糊C手段
输入“分割的肝脏(使用区域生长)”和FCM输出图像:
我试图补充图像通过使用imcomplement()
获得但我得到的整个背景也是白色的,因为背景本来是黑暗的。请帮助我。
function [bw,level]=fcmthresh(IM,sw)
%FCMTHRESH Thresholding by 3-class fuzzy c-means clustering
% [bw,level]=fcmthresh(IM,sw) outputs the binary image bw and threshold level of
% image IM using a 3-class fuzzy c-means clustering. It often works better
% than Otsu's methold which outputs larger or smaller threshold on
% fluorescence images.
% sw is 0 or 1, a switch of cut-off position.
% sw=0, cut between the small and middle class
% sw=1, cut between the middle and large class
%
% Contributed by Guanglei Xiong ([email protected])
% at Tsinghua University, Beijing, China.
% check the parameters
if (nargin<1)
error('You must provide an image.');
elseif (nargin==1)
sw=0;
elseif (sw~=0 && sw~=1)
error('sw must be 0 or 1.');
end
data=reshape(IM,[],1);
[center,member]=fcm(data,3);
[center,cidx]=sort(center);
member=member';
member=member(:,cidx);
[maxmember,label]=max(member,[],2);
if sw==0
level=(max(data(label==1))+min(data(label==2)))/2;
else
level=(max(data(label==2))+min(data(label==3)))/2;
end
bw=im2bw(IM,level);
%testfcmthresh.m
clear;clc;
im=imread('mliver3.jpg');
fim=mat2gray(im);
level=graythresh(fim);
bwfim=im2bw(fim,0.1);
[bwfim0,level0]=fcmthresh(fim,0);
[bwfim1,level1]=fcmthresh(fim,1);
subplot(2,2,1);
imshow(fim);title('Original');
subplot(2,2,2);
imshow(bwfim);title(sprintf('Otsu,level=%f',level));
subplot(2,2,3);
imshow(bwfim0);title(sprintf('FCM0,level=%f',level0));
subplot(2,2,4);
imshow(bwfim1);title(sprintf('FCM1,level=%f',level1));
% imwrite(bwfim1,'fliver6.jpg');
我们可以有肿瘤和肝脏的照片吗? – Blender 2012-03-01 06:53:00
我是新用户。所以我不能在这里发布图片。如果你给我你的ID,我会把它发送给那个。提前致谢。附:我的项目正在使用Matlab – Gomathi 2012-03-01 08:00:05
将它们上传到某个地方并将链接放在问题中。我将编辑图像。 – Blender 2012-03-01 08:18:11