Bonjour à tous,
Je dois déterminer l'algorithme Fuzzy C means à partir de l'algorithme K-means que j'ai le codé.
Ici vus trouverez ce code, mon problème, c'est que : Qu'est ce que je dois ajouter à ce code pour qu'il soit Fuzzy C means ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
% Lecture et affichage de l'image
clear all;
niveau=imread('index.jpg');subplot(1,2,1);imshow(niveau);
%Initialisation 
m=2; %degré de flou
nc=2  %Nombre de classes
[r,c]=size(niveau);
% matrice de partition qui comporte le degré de partition de chaque pixel
d=zeros(r*c,nc);
v=zeros(1,r*c);
x=zeros(1,r*c);
for t=1:c %Remplissage de r
    x(r.*(t-1)+1:r.*t)= niveau(:,t);
end;
randn('seed',0);
u=0.1*randn(r*c,nc);
u=u-mean2(u);
N=norm(u);
 
% Calcul des centres de classes
nil=0;
while N>0.0001
    for i=1:nc
        v(i)=x*(u(:,i).^m)./sum(u(:,i).^m);
    end;
 
%Mise à jour de la matrice de partition U 
 %Calcul des distances euclidiennes
for i=1:nc
   d(:,i)=abs(x'-v(i));
end;
%calcul de la matrice de partition
s=u;
u=zeros(r*c,nc);
for i=1:r*c
   if d(i,1)<d(i,2);
       u(i,1)=1;
   else
       u(i,2)=1;
   end;
end;
N=norm(s-u);
nil=0;
nil=nil+1;
end
nil;
%Construction de la matrice de l'image segmentée
b4=zeros(r,c);
 
for i=1:r
   for j=1:c
       for k=1:nc
           if u((j-1)*r+i,k)==1
               b4(i,j)=k;
           end;
       end;
    end;
end;
b4=2-b4;
subplot(1,2,2);
imshow(b4,[]);
title('Segmentation avec k-means');