Hallo,
Ich bin auf der Suche nach einer Fit-Prozedur, die in ein 2-dimensionales Bild der Form "Intensität = f(x,y)" einen Kreis fitten kann. Vielleicht ist jemandem von euch so etwas schon mal über den Weg gelaufen? Oder zumindest etwas ähnliches, an dem ich mir anschauen könnte, wie man das selbst macht?
Ich habe ein 2-dimensionales Bild
Delphi-Quelltext
1:
| Pixelbild: array of array of Double |
mit einer Größe von ungefähr 1000 x 1000 Punkten, wobei jeder Punkt durch seine 3 Werte (x,y,Intensität) beschrieben ist. (x,y) ist die Lage des Punktes in dem 2-dimensionalen Rechteck. Schaut man sich die Intensitäten dieser Punkte an, so bilden sie einen schmalen Kreisring von ca. 30 Punkten Breite, der sich in seiner Intensität gut vom Untergrund innerhalb und außerhalb des Kreisrings abhebt. Das ganze ist ein bisschen verrauscht mit etwas unscharfen Rändern des Kreisringes.
In diesem Bild möchte ich den Mittelpunkt des Kreisringes (x-m,y-m) bestimmen. Also eine scharfe Kreislinie mit Mittelpunkt (x-m,y-m) und Radius R so hinein fitten, dass sie dem Verlauf der Intensität des Kreisringes möglicht nahe kommt.
1-dimensionale Fits für Kurven der Form "y=f(x)" habe ich gefunden, z.B. im Mathematik-Paket "DMath". Aber nichts 2-dimensionales.
Über Tipps würde ich mich sehr freuen!
Nachtrag 1: Ich habe vergessen mit aufzuschreiben, dass der Fit intensitäts-gewichtet erfolgen soll. Das heißt, ein Punkt mit höherer Intensität soll sich stärker auf die Position des gefitteten Kreises auswirken, als ein Punkt mit kleinerer Intensität. Trotzdem wäre eine Fitprozedur ohne einen solchen Gewichtsfaktor schon eine Hilfe, sofern der Quelltext dafür zugänglich ist, so dass ich versuchen könnte, den Gewichtsfaktor nachträglich dazu zu basteln. Was leider nicht hilft, wäre eine ungewichtete Fitprozedur aus einer vorgefertigten Grafik-Bibliothek, die nur in compilierter Form als Blackbox vorliegt.
Nachtrag 2: Ich habe ein Beispielbild angehängt. Der Kreis auf den es ankommt ist hier schon am Rand teilweise aus dem Bild herausgerutscht. Manchmal ist er auch kleiner und komplett drin. Das schwarze Streifenmuster sind tote Bereiche zwischen mehreren nebeneinander aufgebauten Einzeldetektoren. Durch diese Lücken und die manchmal fehlenden Kreisteile am Rand funktionieren einfache Schwerpunktrechnungen leider nicht, wie sie unten gerade mandras vorgeschlagen hat. Ich muss es irgendwie auf die Kreisform selbst beziehen.