Fuzzy C Tumor Segmentation Agents Using Matlab

I have a segmented liver. I need to segment the tumor. I used the FCM method. This is a FCM level 3 threshold. When I apply it to images, I need a region of the tumor (an area that is darker than the rest) to get segmentation. But I get the opposite. The entire region surrounding the tumor undergoes segmentation. Please help me. The program has two files, testfcmthresh.m and the function fcmthresh.m

Entering "segmented liver (using growth area)" and FCM output image:

input segemented liveroutput FCM image from here

I tried to complement the image obtained with imcomplement() but I got the whole background as white, since the background was initially dark. Please help me.

after imclearborderafter fcm

 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 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 ( xgl99@mails.tsinghua.edu.cn ) % 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'); 
+4
source share
1 answer

The answer to my question was asked by Gaul in my previous question, 'Extraction of the image area within the border . If anyone needs to contact, kindly review Gaul's comments on this. Thanks.

+1
source

Source: https://habr.com/ru/post/1399129/


All Articles