# ImageJ-Wie kann ich die Abstände von 2 Kreisen bestimmen



## Murri1984 (11. Dez 2011)

Hallo,
ich würde gerne in mehreren Bildern, in denen etwa 2000 bis 3000 Kreise sind, verschiedene Parameter mit dem Programm Image J bestimmen. Durchmesser, Umfang u.s.w. ist ja alles ganz einfach, aber ich möchte auch die Abstände der Kreise untereinander bestimmen. So wie es unten in dem Bild zu sehen ist. Und zwar nur die Abstände der Kreise, die nebeneinander liegen, das heißt die Linie, die den Abstand misst, darf keinen Kreis überschneiden. Ich hoffe das war einigermaßen verständlich. Vielleicht kann mir ja jemand helfen. 
Vielen Dank schon mal.


----------



## theCoon (13. Dez 2011)

hi,

nun wenn du die kreis schon berechnen kannst, hast du sicher auch die koordinaten der mittelpunkte.
dann könntest du mal anfangen diese zu verbinden, gibt es nicht mehr als 2 schnittpunkte hast du einen direkten weg und kannst denn abstand berechenen indem du diese strecke mit den zwei radien der kreise subtrahierst. 
falls es doch mehr als 2 schnittpunkte gibt kannst du versuchen die verbindung zwischen den zwei punkten parallel zu verschieben.
dabei solltest du die schnittpunkte noch auswerten, ich denke tangenten würden dich nicht stören.

der ansatz ist noch recht allgemein und ausbaufähig.

gruß


----------



## Marco13 (13. Dez 2011)

Schnittpunkte zwischen mehreren Kreisen und einer Linie könnten aufwändig sein, aber das könnte man darauf reduzieren, das Lot vom Mittelpunkt jedes anderen Kreises auf die Verbindungslinie zu fällen, und schauen, wie groß der Abstand ist. Was aber allgemein kritisch ist, ist 2000-3000 Kreise: Alles, was da mit "paarweise für alle Kreise" zu tun hat, könnte schon recht aufwändig werden: 3000x3000 = 9 Millionen Linien, dann noch 3000 Lote auf diese 9 Millionen Linien fällen = 27 Millarden Lote - hui, da muss man sich was überlegen...


----------



## theCoon (13. Dez 2011)

ich hab noch eine frage zu dem bild, da sieht es nämlich so aus, das nur die abstände vom einem kreies mittelpunkt zu einem anderen mittelpunkt eingezeichnet werden. indem fall müsstest man nur die linien auf mehr als 4 schnittpunkte prüfen (und tangenten ausschließen)

eine andere frage wäre, was genau du mit kreise, die nebeneinander liegen gemeint ist? 
heißt das wenn der abstand eines kreises A zu einem anderem kreis C, den mittelpunkt von kreis B dazwischen hat, soll dieser nicht gemessen werden?
dann müsste man davor noch eine filterung machen das würde die anzahl an linien die du berechnest noch mal stark verringern.

naja ich würd eingetlich erst mal vorschlagen das du die image j doku durchsiehst.



> 3000x3000 = 9 Millionen Linien, dann noch 3000 Lote auf diese 9 Millionen Linien fällen = 27 Millarden



yep aber wenn man sich zwischen ergebnisse merkt und damit vermeidet bereits ausgerechnete linien nochmal zu berechen, dann sinds max nur um die 4,5 millionen Linien zu denen die gleiche anzahl an loten berechnet werden kann.


----------



## Marco13 (14. Dez 2011)

Eine spontane Idee: Es könnte sein, dass das Problem mit Voronoi-Diagramm ? Wikipedia verwandt ist, und das kann man ggf. sehr effizient berechnen... muss mal jemand (der Zeit hat) genauer überlegen.


----------



## Murri1984 (15. Dez 2011)

Hallo theCoon,
also es sollen nicht die Abstände von den Mittelpunkten der Kreise, sondern die Abstände von Rand zu Rand gemessen werden. Die Striche zwischen den Kreisen auf dem Bild sollen die Abstände darstellen. Und diese Linie darf keinen dazwischen liegenden Kreis schneiden. Das heißt es sollen nur die Abstände zwischen den Kreisen gemesssen werden, zwischen welchen man eine solche Linie einzeichnen kann ohne einen anderen Kreis dabei zu berühren. Es gibt eine Studie (aus der auch dieses Bild stammt), da hat der Autor diese Abstände gemessen und zwar mit Matlab (Mathworks 7.0). Aber ich glaube da muss man selber programmieren, wenn ich das richtig verstanden habe. Den user-guide von ImageJ hab ich schon durchwälzt, aber nix gefunden.  
Wenn ich das mit den Koordniaten der MIttelpunkte berechne, wie kann ich dann rausfinden, ob die Linie einen anderen Kreis schneidet?


----------



## Marco13 (19. Dez 2011)

Das Lot vom Mittelpunkt des anderen Kreises auf diese Linie fällen, und schauen, ob der Abstand des Mittelpunktes zur Linie kleiner ist, als der Radius (es geht ja zum Glück nur um die Frage, OB die Linie einen anderen Kreis schneidet... WO genau die Schnittpunkte liegen, ist ja egal...


----------

