IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement d'images Discussion :

comment calculer les axes d'un objet


Sujet :

Traitement d'images

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2007
    Messages : 65
    Points : 46
    Points
    46
    Par défaut comment calculer les axes d'un objet
    slt à tous;
    voila, j'ai un objet (une forme) convexe (image binaire) et j'aimerai caculer le grand axe et le petit axe de l'objet, si orientez moi vers un algorithme qui réalise ce calcul, et merci

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 134
    Points : 122
    Points
    122
    Par défaut
    ca dépend un peu comment est placé ton objet,
    S'il est placé tjs à l'horizontale, il te sufft de projetter horizontalement et verticalement ta forme sur les axe et tu trouveras la longueur de tes deux axes.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une réponse toute simple : il te suffit de calculer les moments à l'ordre 2 de ta forme.
    Les valeurs propres du tenseur d'inertie correspondent aux valeurs correspondent au grand axe et au petit axe de ta forme.
    Tu ne devrais pas avoir trop de mal pour trouver les formules.

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    L'analyse en composantes principales est aussi une possibilité.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    L'analyse en composantes principales est aussi une possibilité.
    +1, je fais cela depuis des années et c'est super efficace et stable.
    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.

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2007
    Messages : 65
    Points : 46
    Points
    46
    Par défaut
    slt; tout ce que vous me dites est correcte mais ce que je veux c'est les formules pour bien comprendre, et merci à tous

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    C'est ton jour de chance, je viens de remettre au propre un bout de code qui fait l'ACP d'une image binaire.

    Code java : 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
    public double[] binaryPCA(boolean[][] image, int width, int height) {
    	// compute sum of x,x2,y,y2,x*y of marked pixels
    	double sum_x=0, sum_x2=0, sum_y=0, sum_y2=0, sum_xy=0, count=0;
    	for(int y=0;y<height;y++) {
    		for(int x=0;x<width;x++) {
    			boolean value = image[x][y];
    			if (value==false) continue;
    			sum_x += x; sum_x2 += x*x;
    			sum_y += y; sum_y2 += y*y;
    			sum_xy += x*y;
    			count++;
    		}
    	}
     
    	// cov(X,Y) = E(X*Y) - E(X)*E(Y)
    	double Ex = sum_x/count, Ex2 =  sum_x2/count;
    	double Ey = sum_y/count, Ey2 =  sum_y2/count;
    	double Exy = sum_xy/count;
    	double COVxx = Ex2-Ex*Ex; 
    	double COVyy = Ey2-Ey*Ey; 
    	double COVxy = Exy-Ex*Ey; 
     
    	// covariance matrix is 
    	// | a b |   | COVxx COVxy |
    	// | c d | = | COVxy COVyy |
    	double a=COVxx, b=COVxy, c=COVxy, d=COVyy;
     
    	// characteristic polynomial : P(L) = L^2 - Trace.L + Determinant
    	double T = a+d;
    	double Det = a*d-b*c;
     
    	// eingenvalues L1,L1 = roots of characteristic polynomial
    	double sqrt =  Math.sqrt(T*T - 4*Det);
    	double L1 =  0.5 * ( T + sqrt ); 
    	double L2 =  0.5 * ( T - sqrt );
     
    	// eigenvectors => A.v = L.v, then: 
    	// (a-L).vx +     b.vy = 0
    	//     c.vx + (d-L).vy = 0
    	double V1x,V1y,V1n,V2x,V2y,V2n, EPSILON=1E-8;
    	if (Math.abs(b)<EPSILON && Math.abs(c)<EPSILON) {
    		V1x=1.0; V1y=0.0;
    		V2x=0.0; V2y=1.0;
    	} else if (Math.abs(c)>Math.abs(b)) {
    		V1x=L1-d; V1y=c;
    		V2x=L2-d; V2y=c;
    	} else {
    		V1x=b; V1y=L1-a;
    		V2x=b; V2y=L2-a;
    	}
     
    	// normalize eigenvectors
    	V1n=Math.sqrt(V1x*V1x+V1y*V1y);
    	if (V1n>EPSILON) {V1x/=V1n;V1y/=V1n;}
    	V2n=Math.sqrt(V2x*V2x+V2y*V2y);
    	if (V2n>EPSILON) {V2x/=V2n;V2y/=V2n;}
     
    	// return data
    	return new double[] {Ex, Ey, L1, L2, V1x, V1y, V2x, V2y};
    }

    L'axe principal est la droite définie par le point (Ex,Ey) et le vecteur (V1x,V1y).
    L'axe secondaire est la droite définie par le point (Ex,Ey) et le vecteur (V2x,V2y).
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2007
    Messages : 65
    Points : 46
    Points
    46
    Par défaut
    merci pour code.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/07/2007, 09h17
  2. Comment modifier les axes d'un graphique
    Par AC88mm dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/04/2007, 10h34
  3. Réponses: 6
    Dernier message: 24/08/2006, 12h17
  4. Réponses: 2
    Dernier message: 17/06/2006, 20h35
  5. [2.0] Comment mesurer les ressources allouées à un objet ?
    Par NeoMan dans le forum Framework .NET
    Réponses: 7
    Dernier message: 22/02/2006, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo