- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: Bildverarbeitung: Segmentierung

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

    Powerstation Test
    Zitat Zitat von ogni42
    Sofern das Muster immer noch viereckig ist, sollte das aber klappen. Es wird eigentlich erst dann kompliziert, wenn die Verzerrung nicht über das Bild hinweg konstant ist.
    Leider wird aber genau das nahezu immer der Fall sein. Die Größe der Kästchen kann mehr oder weniger stark variieren, und die Verzerrungen können je nach Position auch unterschiedlich ausfallen.

    Wenn Du einfach ein Weisses oder Schwarzes Feld nimmst und über das Originalbild per Kreuzkorr laufen lässt sollten sich Minimal nud Maxima ergeben, die in den Zentren der jeweilgen Felder liegen. Durch angenommen die Felder sind rechteckig, kannst Du dann die Feldgrenzen Interpolieren.
    Wenn sie wirklich alle noch genau rechteckig wären ja, aber im allgemeinen Fall muss man eher von Trapezen oder Parallelogrammen ausgehen.

    kannst Du nochmal an einem Beispiel zeigen, wie das "durch die Summe der RGB-Kanäle dividierte" Bild und das Gradientenbild aussieht?
    natürlich...

    ich habe hier mal ein Beispielbild, das dazugehörige Summenbild (R+G+B), das durch die Division entstandene korrigierte Bild, und das aus diesem korrigierten Bild gewonnene Gradientenbild. Damit User ohne DSL nicht gar zu sehr gequält werden, gibt es diese Bilder (obwohl ich sie schon etwas verkleinert habe) diesmal nur als Links

    1. Original
    2. "Helligkeit"
    3. korrigiertes Bild
    4. Gradient

    Meines Wissens berechnet sich der Grauwert eines Bildpunktes aus den RGB-Werten nach

    Grauwert = 0,299R + 0,584G + 0,114B (siehe Wikipedia)
    Naja, ich denke die Frage ist einfach wie man Helligkeit definiert...
    ich habe das Bild in den HSI-Farbraum umgewandelt, und da war die Definition I=R+G+B. Letztendlich entspricht das auch am besten den Eigenschaften die das Muster ohnehin schon hat, denn die Summe aller 3 Kanäle ist überall 1 (bedingt durch den Beamer und die Kamera stimmt das natürlich nicht mehr 100%ig).

    wenn du einfach eine pixelersetzung drüberlaufen lässt erst in x dann in y richtung sollte so aussehen :
    [ 1 0 -1]
    und
    [1
    0
    -1]
    sollten die kanten doch hervorgehoben werden ?
    Klar, sowas ähnliches mache ich ja auch...

    dein Beispiel sieht mir nach einem Prewitt-Operator aus, ich verwende den sog. Sobel-Operator:
    Code:
    1 0 -1
    2 0 -2
    1 0 -1
    der funktioniert fast genauso, nur daß er das Ergebnis in Kantenrichtung nochmal ein bischen glättet.

    das mit dem gradient sollte allerdings auch gehen, .. was passiert denn wenn du ein RGB bild hast und jeweils den gradienten für jeden kanal bildest? dann sollt die summe der 3 ergebnisse das gesuchte gitter sein
    Das mache ich doch...
    mit dem Unterschied daß ich nicht die Summe der 3 Gradientenbilder verwende, sondern das Maximum.
    So viele Treppen und so wenig Zeit!

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    Felix,

    danke für die Bilder - die haben mir Dein Problem viel anschaulicher gemacht!

    Du projizierst ein räumlich periodisches Lichtmuster, nennen wir's mal ein Lichtraster, auf eine Oberfläche. Dann machst Du ene Abbildung der Projektion. Auf der Aufnahme verzerren Oberflächenrelief und Perspektive das Raster. Du willst aus Verzerrung des Lichtrasters, dessen originale Helligkeitsverteilung Du ja kennst, auf das Oberflächenrelief zurückschliessen. Stimmt's so?

    Angenommen Du projizierst das Lichtraster auf eine ebene Fläche und fotographierst das Ganze. Dann kannst Du mit einer einfachen Transformation des Rasters die Helligkeitsverteilung im Bild berechnen. - Dann projizierst Du das Raster auf eine Oberfläche mit Relief und machst wieder eine Aufnahme. Im Vergleich zur ersten Aufnahme haben sich hier die Mitten der Rasterpunkte verschoben und verformt. -

    Du hast eine bekanntes Helligkeitsmuster, das sich verformt... - Bei so einer Aufgabenstellung denke zuerst an den "optical flow"-Algorithmus. Kennst Du den?

    Es könnte aber auch so gehen: Stell Dir das Lichtraster als ein Bündel einzelner Strahlen vor (wie ein Bündel Salzstangen), die vom Objektiv des Beamers zum Objekt gehen. Aus dem Foto der ebenen Fläche weisst Du, wo auf dem Bild jeder einzelne Strahl auf die Ebene fällt. Du kannst sie direkt nummerieren. Dann guckst Du auf der zweiten Aufnahme (der mit dem Relief) wo Lichtstrahl Nr. X seinen Fleck erzeugt hat und berechnest daraus einen Verschiebungsvektor. Dieses Verschiebungsfeld sollte nur da Brüche (Unstetigkeiten) aufweisen, wo ein Oberflächenobjekt aufhört und ein neues anfängt. Das wäre dann die Segmentierung. - Du kannst aber das Verschiebungsfeld mit einer umgekhrten Perspektiven-Transformation auch direkt in ein Relief umrechnen.

    Was meinst Du?

    mare_crisium

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    Zitat Zitat von mare_crisium
    Du projizierst ein räumlich periodisches Lichtmuster, nennen wir's mal ein Lichtraster, auf eine Oberfläche. Dann machst Du ene Abbildung der Projektion. Auf der Aufnahme verzerren Oberflächenrelief und Perspektive das Raster. Du willst aus Verzerrung des Lichtrasters, dessen originale Helligkeitsverteilung Du ja kennst, auf das Oberflächenrelief zurückschliessen. Stimmt's so?
    So ähnlich, ja...
    also es geht hier um aktive Triangulation (3D-Bilderfassung), wobei mich nur die Verschiebung der einzelnen Kästchen in X-Richtung interessiert (identifiziert werden die Kästchen durch ihre Farbe).


    Angenommen Du projizierst das Lichtraster auf eine ebene Fläche und fotographierst das Ganze. Dann kannst Du mit einer einfachen Transformation des Rasters die Helligkeitsverteilung im Bild berechnen. - Dann projizierst Du das Raster auf eine Oberfläche mit Relief und machst wieder eine Aufnahme.
    Und genau da liegt das Problem...
    idealerweise sollten alle notwendigen Informationen aus einer einzigen Aufnahme gewonnen werden. Zusätzliche Aufnahmen sollen nur dann gemacht werden, wenn sich entweder die Position der Kamera relativ zum Beamer ändert, oder wenn eines der beiden Geräte durch ein anderes Modell ersetzt wird. In diesem Fall kann (bzw. muss) zu Justagezwecken ein Feld mit Passmarken aufgenommen werden, deren Abstände bekant sind. Solange sich am System selbst aber nichts ändert, soll für jedes Objekt eine einzige Aufnahme genügen (dadurch wird man nicht auf einen Beamer/Webcam-Aufbau beschränkt sein, sondern kann z.B. genausogut auch einen Diaprojektor in Kombination mit einer Spiegelreflexkamera verwenden).


    Mit Verfahren die mehr als eine Aufnahme benötigen kann ich daher leider nichts anfangen



    Ich muss also weiterhin versuchen entweder Bild 3 oder Bild 4 aus meinem letzten post zu segmentieren (wobei natürlich möglichst nicht allzu viele "falsche" Segmente entstehen sollten, also solche die nicht einem Kästchen entsprechen).
    So viele Treppen und so wenig Zeit!

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    im prinzip ist das problemdoch, dass das bild bei der transformation von 1 nach 3 "kaputt geht" .? oder sehe ich das fasch.
    mit dem sobel operator ist das ansosnten ja schon korrekt.
    wie sieht denn das ergebnis aus, wenn du die gradientenbildung gleich auf das erste bild anwendest ? (ohne helligkeitsausgleich )
    musst du dieses seltsame hippie-muster verwenden, oder darfst du auch andere projektionsmuster benutzen ?

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    Wieso kaputt?
    Die Division sorgt doch nur dafür daß keine störenden Helligkeitsunterschiede mehr vorhanden sind. Ich wage mal zu behaupten, daß die einzelnen Felder des Musters auf dem korrigierten Bild wesentlich besser zu erkennen sind als auf dem Originalbild.

    Auch den Gradient vom Originalbild würde ich jetzt mal rein subjektiv schlechter einschätzen als den Gradient vom korrigierten Bild.


    Das Muster selbst ist auf meinem Mist gewachsen, und ich könnte es natürlich ändern, sofern du einen Vorschlag dazu hast.

    In der Form wie es jetzt ist hat es halt einige vorteilhafte Eigenschaften...
    so ist z.B. die Summe der 3 Farbkanäle konstant, die Farbwinkel zweier benachbarter Felder unterscheiden sich grundsätzlich um 120°, und aus einem 4er Block kann man jeweils die Farbe des Objekts an dieser Stelle bestimmen (da die Felder in Kombination etwa wie eine weiße Beleuchtung wirken).
    So viele Treppen und so wenig Zeit!

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    kaput desswegen weil die vergrösserung bzw verkleinerung der kästchen bei diesem schritt passiert: siehe oben bei dem geben blatt.. der gradient tut dannach ja immer noch was er soll, nur sind eben die kästchen verzerrt...

    was wäre der nachteil, wenn du direkt ein gitter draufprojezierst.. ? bzw ein schwarz/weisses streifenmuster
    wird in der messtechnik zum vermessen von 3d objekten auch so geamcht...

  7. #17
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    Naja, die einfachste Variante zur 3D-Bilderfassung wäre tatsächlich die sog. Streifenprojektion

    Man muss die Streifen aber voneinander unterscheiden können, weshalb bei der Streifenprojektion eine mehr oder weniger lange Sequenz unterschiedlicher Streifenmuster benötigt wird.


    Mein Hauptziel ist aber ein Verfahren daß mit einem einzigen Bild auskommt, und da muss man die Streifen (oder in meinem Fall eben die Kästchen) auf irgendeine andere Art identifizieren (daher habe ich mich dazu entschieden, die Koordinaten der Kästchen in ihrer Farbe zu codieren).


    kaput desswegen weil die vergrösserung bzw verkleinerung der kästchen bei diesem schritt passiert: siehe oben bei dem geben blatt.. der gradient tut dannach ja immer noch was er soll, nur sind eben die kästchen verzerrt...
    bei meinem ersten Beispiel verwende ich diese Division doch garnicht...
    damit habe ich erst bei der Sonne angefangen
    So viele Treppen und so wenig Zeit!

  8. #18
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    wenn ich das richtig verstanden habe, willst Du die Verformung eines Kästchens berechnen?

    Wenn ja, dann kannst findest Du im Original grob die Position einer Kante über den Farbwechsel (von einem Kästchen zum nächsten), im Gradientenbild (aus dem I-Kanal gebildet) kannst Du dann die Kante genau bestimmen (die Start- und Endpunkte für die Suche sind dann ja bekannt). Da Du die Position der Kamera und die Größe eines unverzerrten Kästchens kennst, kannst Du die x-Verschiebung bestimmen.

    Soweit, so gut. Deine ursprüngliche Frage war ja, wie kommst Du zu der Kante, wenn Dein Objekt (ein)farbig ist? Im Bild des ersten Postings ist ja zu erkennen, dass die Position der Sobel-Kante verschwimmt. Daher mein Vorschlag mit LoG (Laplacian of Gaussian) zu Filtern und dann den Wendepunkt (Wechsel des Vorzeichens) zu bestimmen. Die Maske würde ich allerdings mindestens 5x5, besser 7x7 wählen und mit floats arbeiten. Dann wird die Position erheblich genauer (i.d.R. besser als ein Pixel)

  9. #19
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    wenn ich das richtig verstanden habe, willst Du die Verformung eines Kästchens berechnen?
    Die Verformung ist für mich eigentlich eher ein unangenehmer Nebeneffekt, mich interessieren hauptsächlich die Positionen der Kästchen.

    optimal wäre für mich wie gesagt ein Bild auf dem alle Kästchen weiß sind, getrennt durch 1px breite schwarze Linien.


    Wenn ja, dann kannst findest Du im Original grob die Position einer Kante über den Farbwechsel (von einem Kästchen zum nächsten), im Gradientenbild (aus dem I-Kanal gebildet) kannst Du dann die Kante genau bestimmen (die Start- und Endpunkte für die Suche sind dann ja bekannt).
    Also du meinst ich soll überall dort wo der Gradient des Originalbilds "hell" ist (=Kante) nochmal in einem kleineren Ausschnitt die genaue Position der Kante bestimmen?

    Versuchen könnte ich es ja mal, allerdings würde ich vermuten daß eine derartige Verarbeitung ziemlich zeitaufwendig ist...


    Deine ursprüngliche Frage war ja, wie kommst Du zu der Kante, wenn Dein Objekt (ein)farbig ist?
    stimmt, wobei ich dieses Problem durch meine Korrektur (also die Division durch den I-Kanal) schon relativ gut in den Griff bekommen habe. Den LoG werde ich aber auf jeden Fall mal ausprobieren, denn Subpixel-Genauigkeit ist immer gut.
    So viele Treppen und so wenig Zeit!

  10. #20
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    23.04.2007
    Ort
    stuttgart
    Beiträge
    1.127
    was haelts du von zwischen den einzelnen farbkaestcehn immer eine weisse linie einzufügen, dann kannst du den durchschnitt von der linie um das kästchen von der mitte abziehn um ungefähr die urspruengliche farbe der mitte zu finden... alternativ ein weisses 4eck in der mitte jedes farbkästchens..

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen