direction principale dans la carte 2D des données

8

Ce peut être une question très simple. Nous apprécierions tout commentaire, guide ou solution complète. Nous préférons cependant des solutions incomplètes mais de nouvelles idées pratiques.
- Comment trouver la direction principale de variation, c'est-à-dire la diagonale principale dans l'exemple ci-dessous (nord-est, sud-ouest)?
Tout algorithme et idée de codage ou d'extrait est le bienvenu.

entrez la description de l'image ici

Mises à jour:
Nous avons constaté que la procédure mentionnée dans la réponse acceptée est presque PCA (analyse en composantes principales) dans sa mise en œuvre la plus simple. PCA a très bien fonctionné. La direction résultante correspond parfaitement à ce à quoi nous pouvons nous attendre, visuellement.

Développeur
la source
3
Avez-vous uniquement l'image raster de carte de contour disponible, ou avez-vous les données d'élévation brutes à partir desquelles les contours sont générés?
Jason R
1
Les deux types de données sont disponibles. Les données d'origine sont une matrice. Les contours sont générés ultérieurement sur la base de la matrice. C'est-à-dire que le nombre de niveaux de contournage est felxible.
Développeur

Réponses:

7

Vous pouvez calculer la matrice de covariance à partir de vos données d'élévation. Le vecteur propre qui appartient à la plus grande valeur propre vous donnera le principal sens de variation:

http://en.wikipedia.org/wiki/Covariance_matrix

bjoernz
la source
2
+1 L'idée que vous avez mentionnée est presque PCA (analyse des composants principaux) dans le cas le plus simple. Nous pourrions le mettre en œuvre ainsi et le résultat est tout à fait satisfaisant.
Développeur
4

Voici quelques idées:

  1. Si les contours ne sont pas déjà dans des structures de données distinctes, utilisez un algorithme de suivi de bord (aka "contour tracing") pour suivre chacun. Une fois que vous avez le contour, trouvez les deux points les plus éloignés. Une fois que vous avez les deux points les plus éloignés (diamètre de Feret), prenez le milieu de ces points, projetez une ligne perpendiculaire et vérifiez ce que vous pourriez être quelque chose comme un petit axe d'une forme elliptique grossière. Vérifiez la paire de 2e points les plus éloignés et leur "petit axe", le 3e plus éloigné, etc.
  2. À partir du centre de masse du contour le plus intérieur, balayez vers l'extérieur dans des directions radiales. Gardez une trace des points de croisement à chaque contour. La direction radiale (ou groupe de directions radiales) avec la plus grande distance moyenne de contour à contour aura la pente la plus douce et la distance la plus longue.
  3. Effectuez un test de "goutte d'eau". Cela nécessite un peu de physique. Imaginez que vous avez une goutte d'eau ou une boule à votre apogée (quelque part à l'intérieur du contour le plus intérieur). Poussez-le dans une direction radiale thêta. Compte tenu de la gravité et d'une surface nominalement sans frottement, calculez la vitesse de votre goutte / balle lorsqu'elle atteint le plan horizontal inférieur.

Pour l'une des techniques ci-dessus, envisagez des angles de 0 à 179, même si vous pouvez utiliser une technique radiale (0 à 359 degrés). S'il y a plus d'une réponse de crête, trouvez le rayon le plus long (ou autre) qui a plus de voisins avec de grandes réponses.

Repenser
la source