Salut,
jai vraiment besoin d'aide
Je dois faire un segmentation par region. na sachant pas comment m'y prendre et n'ayant partique pas de connaissance en Matlab j'ai chercher a droite a gauche de code et je l'ai rassembler pour ca:
C'est un code basé sur Matlab . le probleme de code code est qu'il segmente parfaitement les images ayant jusqu' 6 couleurs.Code PHP:
%Read an image
Im_in = imread('peppers.png');
figure(1),imshow(Im_in),title('original image peppers');
%Convert Image from RGB Color Space to L*a*b* Color Space
cform = makecform('srgb2lab');
lab = applycform(Im_in,cform);
nColors = 8;
ab = double(lab(:,:,2:3));
nrows = size(ab,1);
ncols = size(ab,2);
ab = reshape(ab,nrows*ncols,2);
% repeat the clustering 3 times to avoid local minima
[cluster_idx cluster_center] = kmeans(ab,nColors,'distance','sqEuclidean', ...
'Replicates',3)
%prefined regions
load regioncoordinates
regions = false([size(Im_in,1) size(Im_in,2) nColors]);
for count = 1:nColors % area extracted with roipoly
regions(:,:,count) = roipoly(Im_in,region_coordinates(:,1,count),...
region_coordinates(:,2,count));
end
% color markers (region average values of L*, a* and b*)
l=lab(:,:,1);a=lab(:,:,2); b=lab(:,:,3);
for i = 1:nColors
cMark(i,1) = mean2(l(regions(:,:,i)));
cMark(i,2) = mean2(a(regions(:,:,i)));
cMark(i,3) = mean2(b(regions(:,:,i)));
end
%Classify Each Pixel Using the Nearest Neighbor Rule
distance = zeros([size(Im_in,1) size(Im_in,2) nColors]);
for i=1:nColors
dx=double(a)-cMark(i,2);
dy=double(b)-cMark(i,3);
distance(:,:,i) = sqrt(dx.^2 + dy.^2);
end
cLabels=0:nColors-1;
[value,index]=min(distance,[],3);
label=cLabels(index);
% display segmented image
cMap=double(applycform(uint8(cMark),makecform('lab2srgb')))/255;
figure(3)
subplot(121), subimage(Im_in), title('Original Image'), axis off,
subplot(122), subimage(label+1,cMap), title('Segmented Image'), axis off
que faire pour que ce code segmente plus de 6 couleurs?
Moi j'ai utiliser la fonction "regioncoordinates" stockée dans un Mat file de matlab. C'est cette fonction a prédefini des regions de l'image "fabric" de matlab. du coup elle ne marche pas pour les autres images.
Proposer moi une solution
-----