mattik schrieb:
Für sowas muss man üblicherweise etwas experimentieren, mein erster Ansatz wäre dieser:beage schrieb:
genaunussratte schrieb:
was letztendlich ja aber beage Probleme sind, die Frage war ja eigentlich wie man generell die Löcher erkennt
Ich schaue mir erstmal nur den schwarzen Bereich der Scheibe an. Ich würde das Bild auf schwarzweiss thresholden, dann zu kleine Störungen rausfiltern und das ganze etwas glätten (müsstee man etwas probieren, wahrscheinlich würde ich dafür Erode- und Median-Filter probieren).
Dann segmentieren, also die einzelnen weißen Flächen erkennen (ein trivialer Weg ist es, den ersten weißen Pixel zu suchen und dann per Flood Fill schwarz (oder jeweils mit einer eigenen Farbe) zu füllen, dabei die Pixel merken - das ganze für jedes Segment wiederholen, bis kein weißer Pixel mehr da ist ist). Danach hast du die Einzelsegmente, für die man z.B. Mittelpunkt, Center of Gravity, Größe, Dichte, Bounding Box usw. berechnen kann. Segmente, die zu klein für ein Loch sind, raus.
Einzellöcher kann man dann wahrscheinlich recht gut an den Werten (Größe der Bounding Box, Abstand Mittelpunkt zu Center of Gravity u.ä.) erkennen.
Die größeren Flächen sind ein schwierigeres Problem. Da könnte man heuristisch versuchen, schwarze Kreise zu verteilen und zu sehen, wie viele man bei geschickter Platzierung braucht, um die ganze Fläche abzudecken (z.B. das Segment skeletieren und immer wieder an den Endpunkten versuchen). Wird aber wahrscheinlich bei großen Flächen nicht zuverlässig gehen (damit haben ja schon Menschen Probleme). Vielleicht kann man das besser semiautomatisch zusammen mit em Benutzer machen.
Die ganzen Algorithmen sind nicht sonderlich kompliziert, das kann man alles von Hand z.B. auf NSBitmapImageReps machen, reine Fleißarbeit. Gibt's aber schon alles fertig in OpenCV (wenn die Lizenz passt). Das größte Problem ist es, für die ganzen entstehenden Parameter robust funktionierende Werte zu finden.
Kann ich das mit den Standard-Bibliotheken machen oder brauche ich was externes?
nussratte schrieb:
kann man da nicht eventuell noch zusätzlich einen kleinen workaround ranbasteln, zB die Scheibe muss auf einem Lila hintergrund gescannt/fotografiert werden, dann kann man das Bild nach 3 Farben untersuchen, wenn das Bild dann genau zentriert ist, kann man ja die distanz von Lila zur Mitte berechnen?
Ich bin gegen Signaturen!!!