Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 20 sur 20
  1. #1
    Invité de passage
    Inscrit en
    avril 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 14
    Points : 1
    Points
    1

    Par défaut Comment rendre les moments de Zernike invariants ?

    Bonjour;
    je voucrais avoir les formules mathématiques qui permettent de rendre les moments de Zernike invariables en translaion, rotation et changement d'echelle.
    Merci.

  2. #2
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 081
    Points
    15 081

    Par défaut

    Citation Envoyé par farah Voir le message
    Bonjour;
    je voucrais avoir les formules mathématiques qui permettent de rendre les moments de Zernike invariables en translaion, rotation et changement d'echelle.
    Merci.
    Les moments de Zernike sont par nature invariants aux rotations.

    Pour les rendre invariants aux translations et changement d'échelle il suffit de les normaliser, c'est à dire les diviser par Z00, le 1er moment de zernike.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Invité de passage
    Inscrit en
    avril 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 14
    Points : 1
    Points
    1

    Par défaut Réponse

    Merci pseudocode, c'est vrai que si je fais une rotation de mon image de 180° ou 90° les coefficients ne changnet pas, mais si je fais une rotation de 60° ou 30° ou n'importe quelle autre angle les coefficients changent!

  4. #4
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 081
    Points
    15 081

    Par défaut

    Citation Envoyé par farah Voir le message
    Merci pseudocode, c'est vrai que si je fais une rotation de mon image de 180° ou 90° les coefficients ne changnet pas, mais si je fais une rotation de 60° ou 30° ou n'importe quelle autre angle les coefficients changent!
    Faire une rotation de 30° ca modifie forcément les valeurs des pixels (a cause de la discrétisation), donc cela modifie la valeur du moment de Zernike. Mais normalement le changement ne doit pas être très important.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Invité de passage
    Inscrit en
    avril 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 14
    Points : 1
    Points
    1

    Par défaut Réponse

    Tu as raison pseudocode c'est la discrétisation des pixels lorsque je fais une rotation ou un changement d'echelle de mon objet qui modifie un peu les moments. Il faudrais peut etre essayer de modifier mes images avec un logiciel de vectorisation, et non pas avec des logiciels classiques comme Paint ou Matlab avec ses imrotate et imresize.
    Merci bcp.
    mais est-ce qu'ils sont réelement invariables en translation? si ma forme se trouve par exemple en haut à droite et que je la translate pour la rendre par exemple en bas à gauche est-ce que les moments de Zernike changeront?

  6. #6
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 081
    Points
    15 081

    Par défaut

    Citation Envoyé par farah Voir le message
    mais est-ce qu'ils sont réelement invariables en translation? si ma forme se trouve par exemple en haut à droite et que je la translate pour la rendre par exemple en bas à gauche est-ce que les moments de Zernike changeront?
    Heu... normalement oui. Si tu les normalises, les moments de Zernike sont invariants.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Invité de passage
    Inscrit en
    avril 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 14
    Points : 1
    Points
    1

    Par défaut

    D'abord merci beaucoup pour ces réponses qui m'ont étaient d'une grande aide dans mon travail.
    ensuite j'ai un petit problème lorsque je veux normaliser les moments de Zernike dans l'intervalle [0,1]: certains moments ont une magnitude supérieur à 1. j'ai utlisé une l'image du logo de Mercedes

    Voici mon programme principal en matlab:
    Code matlab :
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    im2= imread('mercedes.jpg');
    im2=rgb2gray(im2);
    im2= edge(im2,'canny');
    Z=zern(im2,[0 1 2 3 4 5 6 7 8]);%Calculer les moments de Zernike de l'ordre0  jusqu'à l'ordre8
    
    for k=1:size(Z,2)   % On va prendre la magnitude de chaque moment de Zernike pour l'invariance en 
        Z(k)=Z(k)*conj(Z(k));%rotation
    end;
    Z=Z/Z(1,1);%Normalistaion les moments de Zernike doivent appartenir à l'intervalle [0,1] en divisant par le moment Z(0,0)
    
    pour calculer les moments de Zernike j'utilise le code:
    
    function	[A_nm,zmlist,cidx,V_nm]	=zern(img,n,m)%Calcul des moment de Zernike de l'image img
    %A_nm:est le moment de Zernike qu'on recherche (Z_nm)
    d		= size(img);		
    img		= double(img); 
    xstep		= 2/(d(1)-1); %pas pour le balayage selon x de -1 à +1
    ystep		= 2/(d(2)-1); %pas pour le balayage selon y de -1 à +1
    [x,y]		= meshgrid(-1: xstep:1,-1: ystep:1); %découpage en grille sur les 2 axes de -1 à +1
    circle1		= x.^2 + y.^2; %pour ne prendre en consideration que les points se trouvant 
    inside		= find(circle1<=1); %à l'interieur du cercle unité
    mask		= zeros(d); %on masque tout les points qui
    mask(inside)	= ones(size(inside)); %ne se trouvent pas dans le cercle unité
    
    [cimg,cidx]	= clipimg(img,mask) ;
    z		= clipimg(x+i*y,mask) ;
    p=abs(z);
    theta		= angle(z) ;%en radians entre -pi et +pi
    c	= 1; 
    for order=1:length(n) 
    	n1	= n(order); 
    	if nargin<3 
    		m	= zpossible(n1);	%toutes les répetitions possibles pour l'ordre n1	 
        end 
    	for r=1:length(m) 
    		V_nmt		= zpoly(n1,m(r),p,theta);%zpoly(n1,m(r),p,theta) 						%%Vnm(x,y)=Vnm(rho,theta)=Rnm(rho)exp(j*m*tetha)
    		zprod		= cimg.*conj(V_nmt) ;
    		A_nm(c)		= (n1+1)*sum(sum(zprod))/pi; % Znm :Moment de Zernike d'ordre n et de repétition m
    		zmlist(c,1:2)	= [n1 m(r)]; 
    		if nargout==4 
    			V_nm(:,c)	= V_nmt; 
    		end 
    		c		= c+1; 
        end 
    end
    
    function [cimg,cindex,dim]	= clipimg(img,mask) 
     
    dim	= size(img); 
    cindex	= find(mask~=0); 
    cimg	= img(cindex); 
    return; 
     
    function	[m]	= zpossible(n) %Renvois les valeurs possibles de répétition pour chaque 					%ordre n
    if ~mod(n,2) %si n est pair
    	m	= 0:2:n ;
    else 
    	m	= 1:2:n;
    end 
    return; 
    
    function	[V_nm,mag,phase]	= zpoly(n,m,p,theta) %Calcul de Rnm(rho): polynome radial 								%de Zernike 
    R_nm	= zeros(size(p)); 
    a	= (n+abs(m))/2; 
    b	= (n-abs(m))/2; 
    total	= b; 
    for s=0:total 
    	num	= ((-1)^s)*factorial(n-s)*(p.^(n-2*s)); %numerateur
    	den	= factorial(s)*factorial(a-s)*factorial(b-s); %denominateur
    	R_nm	= R_nm + num/den; 
    end 
    mag	= R_nm; 
    phase	= m*theta; 
    V_nm	= mag.*exp(i*phase); % Vnm(x,y)=Vnm(rho,theta)=Rnm(rho)exp(j*m*tetha)
    return;

    Le résultat aprés normalisation est (l'affichage sous matlab):
    Columns 1 through 10

    1.0000 0.0040 0.5356 0.0088 0.0293 0.0485 2.5350 0.0034 0.0488 0.0263

    Columns 11 through 20

    0.1366 0.0021 0.0182 0.0044 0.0094 0.0125 0.0556 0.3053 0.0010 0.0022

    Columns 21 through 25

    0.0005 0.0331 0.0001 0.0979 0.0035
    comme vous voyez il y'a un moment dont la magnitude >1 (2.5350)

    j'ai aussi essayer avec l'image de Ford:

    Voici le résultat:
    Columns 1 through 10

    1.0000 0.0102 2.7196 0.2045 0.0441 0.0048 0.9192 0.5624 0.0684 0.0511

    Columns 11 through 20

    0.0111 0.0036 0.2221 0.0750 0.1721 0.0285 0.0327 0.0083 0.0059 0.0026

    Columns 21 through 25

    0.0255 0.0386 0.0133 0.0802 0.0130
    Encore un autre moment qui dépasse 1 (2.7196)
    SVP EST CE QUE QUELQU'UN POURRAIT M'AIDER???????

    comme je ne peux pas vous uploader les deux images que j'ai utilisée vous pouvez visualiser deux images asez proches de celles que j'ai utilisée:


  8. #8
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 081
    Points
    15 081

    Par défaut

    Je ne connais pas Matlab, donc je ne peux pas t'aider sur ton code. Pour la partie algorithmique, je te conseille la lecture de ce document : Improvement and Invariance Analysis of Zernike Moments
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2009
    Messages : 53
    Points : 46
    Points
    46

    Par défaut

    Je ne crois pas que les moments de Zernike soient invariants à la translation, d'autant qu'ils sont calculés dans une représentation polaire de l'image, et donc très liés au choix du centre. Le fait de normaliser par Z00 ne fait que les rendre invariants à l'échelle (en fait en faisant cela on ne normalise que par la surface de l'image).

    Il y a des travaux pour rendre ces moments invariants à la translation. Mais plus on normalise, plus on perd en précision. Voir par exemple ici.

  10. #10
    Modérateur
    Avatar de ToTo13
    Homme Profil pro Guillaume
    Ingénieur de Recherche
    Inscrit en
    janvier 2006
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume
    Âge : 35
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2006
    Messages : 5 188
    Points : 8 121
    Points
    8 121

    Par défaut

    Citation Envoyé par motton75 Voir le message
    Je ne crois pas que les moments de Zernike soient invariants à la translation, d'autant qu'ils sont calculés dans une représentation polaire de l'image, et donc très liés au choix du centre. Le fait de normaliser par Z00 ne fait que les rendre invariants à l'échelle (en fait en faisant cela on ne normalise que par la surface de l'image).
    C'est pour cela que l'on prend en général le barycentre de la forme.
    A ce moment là, les moments de Zernike sont invariants par translation.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  11. #11
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 081
    Points
    15 081

    Par défaut

    Citation Envoyé par motton75 Voir le message
    Je ne crois pas que les moments de Zernike soient invariants à la translation, d'autant qu'ils sont calculés dans une représentation polaire de l'image, et donc très liés au choix du centre. Le fait de normaliser par Z00 ne fait que les rendre invariants à l'échelle (en fait en faisant cela on ne normalise que par la surface de l'image).
    Ah, oui. Je n'avais pas compris le problème. Je pensais qu'on parlait de translater l'image ET le centre du repère simultanément.

    Il faut effectivement centrer l'image originale avant de calculer les moments.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #12
    Invité de passage
    Inscrit en
    avril 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 14
    Points : 1
    Points
    1

    Par défaut

    Merci pour les réponses, je voulais seulement savoir dans les études on dit qu'aprés avoir calculer les moments de Zernike, il faut les normaliser en;
    1) prenant la magnitude de chaque moment
    2) diviser par Z00.

    c'est justement quand on prend la magnitude des moments que la magnitude de certains moments vont devenir > à la magnitude de Z00 par exemple si Z00=13500 et Z40=-15000 alors en prenant la magnitude |Z40|=15000 va devenir plus grand que Z00, et donc aprés en divisant par Z00 ce moment sera plus grand que 1, mais dans les études que j'ai lu ils ne parlent pas de ce probléme!!!! ils disent que tout les moments appartiennent à [0,1].
    OU EST LE HIC??????

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2009
    Messages : 53
    Points : 46
    Points
    46

    Par défaut

    Le hic c'est que les moments de Zernike qu'ils soient normalisés ou non ne sont pas vraiment censés être bornés... Evidemment à partir des définitions on doit pouvoir établir une borne sup théorique et diviser par cette borne, mais je ne suis pas certain que ce soit très pertinent. Où as-tu lu qu'ils doivent être entre 0 et 1 ?

  14. #14
    Invité de passage
    Inscrit en
    avril 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 14
    Points : 1
    Points
    1

    Par défaut

    Dans beaucoup d'études par exemple ici:
    http://citeseerx.ist.psu.edu/viewdoc...=rep1&type=pdf

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    août 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : août 2009
    Messages : 53
    Points : 46
    Points
    46

    Par défaut

    Je ne vois pas où, peux-tu citer l'endroit précis ?

  16. #16
    Invité de passage
    Inscrit en
    avril 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : avril 2005
    Messages : 14
    Points : 1
    Points
    1

    Par défaut

    Dans la deuxiéme page, deuxième colonne où on peut lire:
    "The magnitudes are then normalized into [0, 1] by dividing them by the
    mass of the shape."

  17. #17
    Invité de passage
    Inscrit en
    mai 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : mai 2010
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    Je sais que le message date, mais je suis actuellement en train de travailler sur ces moments (pas supers pratiques à maniés ^^), et en fait, pour en revenir au problème, pour normaliser il ne faut non pas divisé par Z00, mais par la masse

    Get the order (0,0) geometric moment 00 m of the
    image.
    m00 = ∫∫f(x,y)dxdy (9)
    from physics viewpoint, 00 m is the expression of mass
    or area of an image.
    Source :
    http://sibgrapi.sid.inpe.br/col/sid....7.56/doc/2.pdf
    Page 3!

  18. #18
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 081
    Points
    15 081

    Par défaut

    Citation Envoyé par PouuleT Voir le message
    Je sais que le message date, mais je suis actuellement en train de travailler sur ces moments (pas supers pratiques à maniés ^^), et en fait, pour en revenir au problème, pour normaliser il ne faut non pas divisé par Z00, mais par la masse
    A un facteur près (1/PI), c'est pareil.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  19. #19
    Nouveau Membre du Club
    Inscrit en
    juin 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 157
    Points : 31
    Points
    31

    Par défaut

    en retour sur le même sujet, avec quel erreur ou distance peut on dire que les moments de Zernike sont invariants à la translation?

    en plus, lorsque on change l'origine de l'image au barycentre cela ne remet pas en question l'invariance à la rotation?

    Merci.

  20. #20
    Modérateur
    Avatar de ToTo13
    Homme Profil pro Guillaume
    Ingénieur de Recherche
    Inscrit en
    janvier 2006
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Nom : Homme Guillaume
    Âge : 35
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2006
    Messages : 5 188
    Points : 8 121
    Points
    8 121

    Par défaut

    PseudoCode l'explique dans sa première réponse.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •