J'ai surfaces: z i ( x , y ) avec un attribut mesuré (variable) sur chaque surface: a i ( x , y ) . La plupart des surfaces auront une distribution aléatoire de l'attribut à travers la surface, mais certaines surfaces (les plus intéressantes) montreront un motif de rivière sinueuse:
J'ai besoin de votre aide pour trouver une mesure qui nous dira lesquelles des surfaces sont les plus susceptibles d'avoir un tel motif.
Il existe de nombreuses cartes possibles avec le même histogramme comme indiqué ci-dessous; la mesure doit donc "récompenser" la continuité spatiale. Pour illustrer cela, j'ai créé une image aléatoire avec presque le même histogramme que l'image de la rivière:
Ainsi, les statistiques d'image comme entropie ne peuvent être qu'une partie de la solution.
Voici un exemple d'image sans motif de rivière sinueuse:
Mes images sont synthétiques (made in Matlab). Dans la vie réelle, l'image sans le motif peut avoir une continuité spatiale un peu plus sous la forme de petites taches de valeur similaire.
Voici les images en niveaux de gris:
Réponses:
Une mesure très simple serait de comparer chaque ligne de l'image avec la ligne au-dessus, permettant un décalage horizontal.
J'ai piraté ensemble cet algorithme simple dans Mathematica:
Il prend simplement chaque paire de rangées adjacentes, fait pivoter l'une des rangées de -5..5 pixels et prend la plus petite distance euclidienne. Cela donne une distance euclidienne pour chaque paire de lignes. Je prends simplement la moyenne (mais selon vos données réelles, une moyenne ou une médiane tronquée pourrait être plus robuste).
Ce sont les résultats que j'obtiens pour les échantillons générés artificiellement (Formule: Normaliser (bruit aléatoire * (1 facteur) + signal * facteur))
Si je trace le résultat par rapport à la force du signal, l'algorithme semble mesurer assez bien la "force du signal de la rivière sinueuse":
EDIT : j'ai oublié de normaliser les échantillons d'entrée. Correction d'une nouvelle image de résultat téléchargée
la source
Vous semblez être sur la bonne voie avec cet histogramme. S'il s'agit d'une image représentative de votre échantillon, cet histogramme montre que les images où le motif de méandres est présent peuvent être détectées simplement en examinant si elles contiennent des valeurs supérieures à un certain seuil.
En dehors de cela, vous pouvez essayer d'obtenir l' entropie de chaque image. Cela vous donnera un numéro par image qui caractérise son caractère aléatoire. Après cela, vous pouvez obtenir un histogramme des entropies de vos images. Si vous êtes sûr que les images sont distinctement divisées en "totalement aléatoire" et "aléatoire avec un méandre" (c'est-à-dire moins aléatoire), alors l'histogramme des entropies sera bimodal. Le mode gauche correspondra à des images avec une entropie plus faible et donc moins aléatoire (plus susceptibles de contenir un motif sinueux) et vice versa pour le mode droit.
(BTW MATLAB comprend une fonction pertinente )
EDIT: En réponse aux commentaires du PO et au téléchargement ultérieur de plus d'informations sur le problème, voici un point supplémentaire à cette réponse:
L'entropie fonctionnerait toujours, mais pas le cas simple et sans mémoire décrit par la formule de Shannon (où chaque échantillon d'une série chronologique est supposé être indépendant des précédents).
Comme alternative plus simple, vous pouvez essayer d'examiner les caractéristiques de l' autocorrélation de l'image .
la source