segmentation par region
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

segmentation par region



  1. #1
    invite0e9d082c

    segmentation par region


    ------

    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:

    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*bColor 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,1size(Im_in,2nColors]);
    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 
    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,1size(Im_in,2nColors]);
    for 
    i=1:nColors
      dx
    =double(a)-cMark(i,2);  
      
    dy=double(b)-cMark(i,3);
      
    distance(:,:,i) = sqrt(dx.^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 
    C'est un code basé sur Matlab . le probleme de code code est qu'il segmente parfaitement les images ayant jusqu' 6 couleurs.

    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

    -----

  2. #2
    invite0e9d082c

    Re : segmentation par region

    desole ce n'etait pas le bon code

    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*bColor Space 
    cform 
    makecform('srgb2lab');
    lab applycform(Im_in,cform);

    nColors 6;


    %
    prefined regions
    load regioncoordinates

    regions 
    false([size(Im_in,1size(Im_in,2nColors]);
    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 
    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,1size(Im_in,2nColors]);
    for 
    i=1:nColors
      dx
    =double(a)-cMark(i,2);  
      
    dy=double(b)-cMark(i,3);
      
    distance(:,:,i) = sqrt(dx.^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 

Discussions similaires

  1. Segmentation d'image couleur sur matlab
    Par invite0e9d082c dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 28/10/2008, 20h22
  2. segmentation LPE floue (watershed)
    Par invitea341f4f7 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 11/04/2008, 13h43
  3. Erreur de segmentation sous fedora
    Par invite70eda27f dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 26/02/2008, 22h02
  4. J'ai un problème avec un segmentation fault
    Par invite93279690 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 30/01/2007, 09h08
  5. c++:erreur de segmentation!
    Par invitef666d0fa dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 06/12/2006, 19h36
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...