Kreiserkennung mit Hilfe des Hough Algorithmus

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Kreiserkennung mit Hilfe des Hough Algorithmus

    Hallo liebe Comunity,

    für ein Projekt möchte in VB eine Bilderkennung schreiben. Diese soll erstmal Kreise erkennen, später auch Halbkreise.Ich recherchiere schon seit ein 1-2 Wochen, bin aber nicht weiter gekommen. Ich habe bereits herausgefunden, dass für die Objekterkennung meistens der Hough Algroithmus benutzt wird. Allerdings sind die meisten Quellen Englisch sprachig und haben nur die "abstrakte" Theorie, auch finde ich keinen Code. Ich allerdings werde daraus nicht schlau, mir fehlt einfach total der Ansatz.
    Kann mir vielleicht jemand helfen? Ich habe leider noch keinen Code zum zeigen, mir fehlt wie gesagt der Ansatz. Bisher habe ich nur (mit ewig langer Laufzeit) ein Bild in Schwarz Weiß konvertiert (man braucht nach meinen Recherchen ja ein Schwarß Weiß Bild für den Hough Algorithmus)
    Spoiler anzeigen

    VB.NET-Quellcode

    1. 'Läuft im Thread, hier die leicht abgewandelte Version
    2. Dim b As Bitmap 'Wird aus PictureBox geladen
    3. For y = 0 To b.Height - 1
    4. For x = 0 To b.Width - 1
    5. If b.GetPixel(x, y).GetBrightness < 0.5 Then
    6. b.SetPixel(x, y, Color.White)
    7. Else
    8. b.SetPixel(x, y, Color.Black)
    9. End If
    10. Next
    11. End If
    12. Next
    13. Next



    Grüße und schonmal Danke im Vorraus

    Andreas
    Wikipedia sagt ja folgendes dazu:
    ..in den für jeden Punkt im Bild, der auf einer Kante liegt, alle möglichen Parameter der zu findenden Figur im Dualraum eingetragen werden..

    das bedeut ja, wenn ich das jetzt nicht falsch verstehe, das du für jeden Pixel die X,Y Koordinaten herausfinden musst.
    Was ja nicht mehr so schwer sein sollte, da dein Bild ja schon schwarz/weis ist.
    Und irgendwie musst du ja die Koordinaten vergleichen können ob sie "aneinander gereiht" in einem Mittelpunkt zusammen laufen.
    Wenn alle Koordinaten zusammen einen Mittelpunkt haben ist es ja ein Kreis.
    ich werde da novhmal weiter forschen, bim momentan auf dem handy unterwegs
    @DerAndy Willkommen im Forum. :thumbup:
    Da Du Dich hier bereits auf den Hough Algorithmus festgelegt hast, wirst Du auf weniger andere, möglicherweise bessere Algorithmen hingewiesen werden.
    Fang zunächst an mit etwas elementarer Bildverarbeitung:
    • Color => grau (Konturen finden sich in Mono-Bildern einfacher)
    • Medianfilter (Eliminierung von Ausreißer-Pixeln)
    • Histogramm-Erstellung (Finden der Dunkel-Hell-Schwelle)
    • Diskriminierung (grau => schwarz-weiß)
    • Laplace-Operator (Kantenfindung)
    • usw.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @DerAndy In jedem Falle:
    Lass den welchen-auch-immer-Algorithmus niemals auf die Rohbilder los!
    Bearbeite das Bild zunächst so, dass der Algorithmus überhaupt, gut oder besser funktioniert als ohne die Vorverarbeitung.
    Ein kleiner Medianfilter, ggf. mehrfach angewendet, wirkt da bereits Wunder!
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!