- LiTime Speicher und Akkus         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Erkennung von Markierungen auf einem (Kamera-)Bild

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    40
    Beiträge
    1.780

    Erkennung von Markierungen auf einem (Kamera-)Bild

    Anzeige

    Powerstation Test
    Hallo Leute,

    ich wüsste gern wie ich bestimmte Markierungen auf einem Bild wiederfinden kann.


    Also angenommen ich klebe irgendwelche Markierungen z.B. einfach mal irgendwo an die Wand und mache ein Foto davon. Dann habe ich ja einige Probleme:

    1. Die Größe der Markierungen ist nicht bekannt (und natürlich auch nicht konstant)

    2. Die Markierungen können irgendwie verdreht sein, z.B. weil ich sie nicht alle in der gleichen Orientierung aufgeklebt habe.

    3. Die Markierungen sind mehr oder weniger stark verzerrt, da das Foto natürlich aus irgendeinem beliebigen Winkel aufgenommen wurde.


    Als Ergebnis brauche ich die Koordinaten aller auf dem Bild (vollständig) sichtbaren Markierungen, samt ihrer Orientierungen (also der Winkel um den eine Markierung gegenüber der X-Achse des Bildes verdreht ist).


    Vielleicht kann mir ja Jemand verraten wie sowas üblicherweise gemacht wird, denn im Internet wurde ich bisher nicht fündig (bzw. es war bei vergleichbaren Aufgaben immer zumindest die Größe der zu erkennenden Objekte bekannt).


    Gruß,
    Felix
    So viele Treppen und so wenig Zeit!

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    49
    Beiträge
    1.562
    Wenn du eine Ansatz hast bitte melde dich habe zwar schon einiges probiert aber nie zu ein gescheiten ergebnis gekommen.

    Mein weg nach Grau dann nach schwarz weiß kanten raus und jetzt ja wie weiter.

    Gruß
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Wenn Du die Markierungen im Bild findest (z.B. nach einer Binarisierung ist nur noch die Markierung im Bild zu sehen) könntest Du erst die Verschiebung kompensieren (z.B. mit Schwerpunktbestimmung und umschließendem, schwerpuntkzentrierten Rechteck).

    Danach kannst Du per Bestimmung des Flächenträgheitsmoments oder per Karhounen-Loéve-Transformation die Rotation bestimmen (da sollte eine Verzerrung in der z-Achse eigentlich keinen Einfluss haben, musst Du aber testen).

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    40
    Beiträge
    1.780
    Das klingt ja alles schön und gut, aber nach einer Binarisierung kann ja immernoch einiges auf dem Bild sein was keine Markierung ist. Die Markierungen überhaupt erstmal zu finden ist ja eigentlich das zentrale Problem.
    So viele Treppen und so wenig Zeit!

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Mit "finden" meinte ich: Die Markierung ist im Bild sichtbar.

    Sofern Du eine Farbkamera verwendest, könntest Du die Markierung in einer Farbe wählen, die in der Szene sonst nicht vorkommt (oder nur bei Objekten, die kleiner sind als die Markierung). Im binarisierten Bild, das durch Auswahl der entsprechenden Farbe aus dem Farbbild entsteht, kannst Du dann die anderen Objekte durch Erosion entfernen. Dieses Bild ist dann eine Maske mit der Du im ursprünglich binarisierten Bild Deine Markierung wieder findest.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2006
    Beiträge
    559
    ich hab grade auch sowas programmiert, allerdings war das bild nicht gedreht und die symbole immer gleich groß.

    ich hab einfach die symbole wie das bild von der kamera als rgb-array gespeichert und durchsuch dann das bild nach den arrays (natürlich mit nem bestimmten schwellwert, ganz über einstimmen wird das nie)

    bei mir funktioniert das wirklich gut, nur mit den unterschiedlichen lichtverhältnissen gibts manchmal probleme, aber da muss man dann halt den algortihmus anpassen.

    wie man das mit drehung und skalierung hinbekommen könnte würde mich auch interessieren, ist mir noch nix eingefallen

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    40
    Beiträge
    1.780
    Ok, also nehmen wir einfach mal an die Markierungen seien schwarz, und auf einem hellen Untergrund beliebiger Farbe angebracht. Und nehmen wir weiterhin an, sie könnten auf dem Bild in unterschiedlich hellen Bereichen liegen (eine könnte ja direkt vom Sonnenlicht beleuchtet sein, während andere im Halbschatten liegen).


    Die Lichtverhältnisse müssen dann bei der Binarisierung berücksichtigt werden, aber das sollte ja machbar sein. (vielleicht indem man erstmal einen extremen Weichzeichner über das Bild jagt oder so)

    Das Ergebnis wäre also ein S/W-Bild in dem die Markierungen zu sehen sind, und zusätzlich noch eine ganze Menge "Müll" (man würde ja auch jedes dunkle Objekt, und evtl. noch einige Schatten auf diesem Bild sehen).

    Wie die Fehler (die ja durchaus eine ähnliche Größe haben können wie die Markierungen) aus diesem Bild durch Erosion entfernt werden sollen sehe ich noch nicht so ganz. Mir ist aber aufgefallen, daß die Verarbeitung stark vereinfacht würde, wenn man auf diesem Bild einfach nur alle zusammenhängenden schwarzen Flächen sucht, und auf eine einheitliche Größe skaliert. Dann müsste nurnoch die Form erkannt werden, vielleicht mit einem Neuronalen NEtz oder irgendeinem anderen Verfahren
    So viele Treppen und so wenig Zeit!

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    22.11.2003
    Beiträge
    459
    Hi,
    das Problem mit den unterschiedlichen Lichtverhältnissen kann man leichter in den Griff bekommen, wenn man statt RGB das HSV-Farbformat verwendet (http://en.wikipedia.org/wiki/HSV_color_space). Der eine der drei Farbwerte gibt die Helligkeit an, während die anderen für Farbton und Sättigung stehen. Die letzteren sollten (zumindest theoretisch) bei verschiedenen Beleuchtungsstärken konstant sein, da sich nur der erste ändert. Funktioniert in Wirklichkeit natürlich nur bei perfekt weißem Licht.
    relaunched: http://www.mindrobots.de algorithms for intelligent robots

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    40
    Beiträge
    1.780
    Naja, wenn man von schwarzen Markierungen auf hellem Grund ausgeht, könnte man auch beim HSV-Farbraum nur den Kanal für die Helligkeit nutzen.


    Ich habe inzwischen jedenfalls mal ein bischen mit Matlab an einem simulierten Bild herumexperimentiert, und relativ vielversprechende Ergebnisse erhalten.

    Das Testbild war ein Würfel mit je 3x3 Markierungen (deren Form ich willkürlich gewählt habe) auf jeder Seite. Alle Markierungen sind irgendwie verdreht, und zusätzlich habe ich auf einer Seite die Größe der Markierungen variiert.

    Bild hier  

    Wie man sieht gibt es auf dem Testbild deutliche Helligkeitsschwankungen. Ich habe versucht sie auszugleichen indem ich das Originalbild durch eine extrem unscharfe Version (64x64er Weichzeichner) geteilt habe. Das resultierende Bild sah zwar nicht mehr besonders schön aus, ließ sich aber problemlos binarisieren.

    Zur weiteren Verarbeitung des Bildes hat Matlab zwei verdammt praktische Funktionen "bwlabel" und "regionprops", die einem eine Menge Arbeit ersparen.

    Mit bwlabel werden zusammenhängende Gebiete im Binärbild gesucht und durchnummeriert. Die Funktion regionprops kann dann eine ganze Menge Informationen zu diesen Gebieten ermitteln, wie z.B. die Position des Schwerpunkts (im oberen Bild rot markiert), und die boundingbox (also das kleinste das Gebiet umschließende Rechteck).

    Naja, und wenn man die von regionprops gelieferten Daten halbwegs sinnvoll einsetzt, schaut das Ergebnis so aus:

    Bild hier  

    32 Bilderchen gleicher Größe, wobei jedes eines der gefundenen Gebiete enthält.

    Jetzt stellt sich nurnoch die Frage wie man von hier aus weitermachen kann, denn die Bilder haben jetzt zwar alle die gleiche Größe, aber es muss noch für jedes Bild festgestellt werden ob es eine der gesuchten Markierungen ist oder nicht. (außerdem muss noch die Rotation bestimmt werden)


    Gruß,
    Felix
    So viele Treppen und so wenig Zeit!

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Rotationswinkel: KLT bzw. FLT => Winkel, dann in Hauptachse rotieren (z.B. auf 0°), Danach mit Suchmuster korrelieren (Kreuzkorrelation) und schwelle bilden.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus