- LiFePO4 Speicher Test         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: [Signalverarbeitung] 1 oder 0, das ist hier die Frage

  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

    [Signalverarbeitung] 1 oder 0, das ist hier die Frage

    Anzeige

    Praxistest und DIY Projekte
    Hallo Leute,
    ich habe ein Problem bei der Auswertung von Daten...

    hier mal ein Beispiel wie ein "guter" Datensatz aussieht:
    Bild hier  
    Das soll einfach nur in binäre Form umgewandelt werden.

    zuerst dachte ich mir ich verwende mal (max - min)/2 als Schwelle,
    was in diesem Fall auch völlig problemlos funktioniert und das korrekte Ergebnis 00001000111 liefert.


    Dummerweise sehen aber nicht alle Datensätze so schön aus.

    Dieser z.B. ist schon etwas schlechter, wird aber immernoch korrekt ausgewertet:
    (man beachte die Skalierung der Y-Achse)
    Bild hier  


    Leider geht es aber noch wesentlich schlechter, das sieht dann so aus:
    Bild hier  
    Ob ihr es glaubt oder nicht: was man hier sieht sollte eigentlich 00000000000 sein.
    Und genau hier versagt die einfache Variante, denn sie liefert 01111111111 (was natürlich völlig falsch ist).


    Hier noch ein paar Details die vielleicht relevant sein könnten:

    - Die mittleren 9 Bit sind Gray-codiert, und enthalten die eigentlichen Nutzdaten

    - Das erste Bit gehört nicht zum Datensatz sondern ist der Mittelwert der Minima aller Datensätze.
    (eingefügt habe ich es nur, um auch den Gray-Code 111111111 korrekt erkennen zu können)

    - Das letzte Bit ist bei allen gültigen Datensätzen 1 (auf dem 3. Bild ist also ein ungültiger Datensatz zu sehen)

    - Die Datensätze liegen in Form mehrerer Bilder vor (10 um genau zu sein, also ein Bild pro Bit bzw. ein Datensatz pro Pixel)



    Vielleicht hat ja Jemand eine kreative Idee wie sich das sinnvoll auswerten lässt.
    So viele Treppen und so wenig Zeit!

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Mein erster Versuch wäre, den Mittelwert zu nehmen, dann drüber = 1 und drunter = 0
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.12.2006
    Alter
    32
    Beiträge
    84

    Re: [Signalverarbeitung] 1 oder 0, das ist hier die Frage

    [quote="Felix G"](max - min)/2 als Schwelle[quote]

    Macht er ja Praktisch schon, nur dass das ein Plus ein muss....

  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
    PickNick
    Das habe ich schon ausprobiert, und leider sind die Ergebnisse damit sogar noch ein bischen schlechter

    @lpw
    ups
    ich probiers gleich mal mit einem +


    edit:
    was so ein kleiner Fehler alles bewirken kann...
    also mit (min+max)/2 ist das Ergebnis schonmal deutlich besser

    wirklich optimal ist es allerdings noch nicht
    So viele Treppen und so wenig Zeit!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    09.12.2006
    Alter
    32
    Beiträge
    84
    Nach welchen kriterien gibt es denn die Ausgangswerte, denn ich finde, das beim lezten Beispiel es nicht eindeutig ist was das sein soll.

  6. #6
    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 letzte Beispiel ist ein Schatten, also ein Pixel der auf allen 10 Bildern mehr oder weniger dunkel ist.
    Wenn man die Skalierung der Y-Achse betrachtet sieht man sehr gut daß alle 11 Werte in einem Bereich liegen,
    der bei den anderen beiden Beispielen ganz eindeutig als 0 eingestuft würde.

    Die Schwierigkeit liegt also in der Entscheidung ob es sich um einen Schatten handelt,
    oder doch um gültige Daten die einfach nur einen sehr niedrigen Kontrast haben.


    Ich will mal verraten worum es hier geht: 3D-Bilderfassung durch Streifenprojektion

    Dabei werden verschiedene Streifenmuster auf das Objekt projiziert und zwar derart,
    daß in der Hell-Dunkel-Abfolge jedes Pixels die Nummer des Streifens codiert ist zu dem dieser Pixel gehört.

    Da Kamera und Projektor prinzipbedingt gegeneinander verschoben sein müssen,
    sind natürlich auch Schatten auf den Bildern die keine Informationen enthalten können.
    Andererseits kann der Kontrast bestimmter Pixel aber auch deshalb niedrig sein,
    weil das Objekt selbst an dieser Stelle vielleicht eine dunkle Farbe hat.
    (und dann sind ja evtl. doch noch verwertbare Informationen enthalten)



    Ich bin inzwischen davon überzeugt daß man die Pixel nicht separat betrachten darf,
    sondern auch die nähere Umgebung in die Auswertung mit einbeziehen muss.

    die Frage ist nur: wie?
    So viele Treppen und so wenig Zeit!

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Wie werden dann die Eingangsdaten verarbeitet? Beseitigst Du im Bild vorher die lokalen Helligkeitsschwankungen, die durch Abschattung entstehen (z.B. durch einen großen (!) Tiefpass?

    Dann interessiert Dich ja der Übergang dunkel/hell bzw hell/dunkel zwischen zwei Pixeln. Bei einem derart gestörten Signal ist da ein globals Schwellenkriterium nicht besonders hilfreich. Du solltest in dem Fall lokale Kriterien anwenden (z.B. Sprung um mindestens n-Grauwerte). Auch hier gibt es noch potenzielle Probleme (z.B. Rauschen) aber auch das ist in den Griff zu bekommen.

  8. #8
    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, die Streifen auf dem 9. Bild (also dem letzten Bild das noch zum Gray-Code gehört)
    sind nur etwa 2-4 Pixel breit, deshalb bin ich da natürlich auch nicht mit irgendwelchen Filtern ran.


    Momentan läuft die Auswertung so:

    - (optional) vergrößern der 10 Bilder um einen frei wählbaren Faktor
    - erstellen eines (einfarbigen) Dunkelbildes (das optimalerweise etwa so hell sein sollte wie ein Schatten)
    - "Schwellenbild" erzeugen (Formel wie oben, also (max+min)/2)
    - die ersten 9 Bilder (das 10. gehört nicht zum eigentl. code) nach binär umwandeln (mit dem zuvor errechneten Schwellenbild)
    - für jeden Pixel: Hell-Dunkel-Abfolge decodieren, und als Dezimalzahl in die Ergebnismatrix schreiben
    - (Ergebnismatrix wieder auf Originalgröße der Bilder verkleinern)

    Das Ergebnis ist so schon ganz gut, aber es wäre halt schön wenn auch recht dunkle Streifen noch gut erkannt würden.
    (also solche die ich auf den Bildern sehen kann, die aber mit dieser einfachen Methode nicht mehr erfasst werden)

    Sehr praktisch wäre es auch, wenn ich zusätzlich zu den Ergebnissen jeweils noch ausrechnen könnte wie "zuverlässig" der Wert ist
    (also quasi "Pixel x gehört mit y%iger Wahrscheinlichkeit zu Streifen Nr. z")
    So viele Treppen und so wenig Zeit!

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    - Die Vergrößerung bringt m.E. nichts. Aber vielleicht hast Du ja gute Gründe das zu tun.
    - Statt des Dunkelbildes (wie wird das erstellt) kannst Du ein Originalbild nehmen und mit einem großen Tiefpass filtern. Das gefilterte Bild ziehst Du dann vom Original ab. Damit verschwinden globale (!) Kontrastunterschiede
    - jetzt kannst Du auf das Bild einen LoG-Filter (laplacian of gaussian) anwenden. Damit bekommst Du ein tiefpassgefiltertes Kantenbild (2. Ableitung) in dem Du nach lokalen Grauwertübergängen suchen kannst.

    Mit dem Verfahren solltest Du die Kanten schwellenwertunabhängig finden. Ich habe die Filterung meistens auf Floats durchgeführt, die Ergebnisse werden da besser, da der Filterkern genauer berechnet werden kann. Du solltest aber mindestens mit einem 5er, besser: 7er Kern arbeiten.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.07.2004
    Ort
    bei Stuttgart
    Alter
    41
    Beiträge
    760
    Hallo,
    wie wäre es mit einem Mindestwert und einem maximalwert für den Schwellenwert. Also du bildest den Schwellenwert weiterhin so wie jetzt, aber er muss mindestens 25 sein, ist er kleiner, wird er auf 25 gesetzt. genauso mit einem Maximalwert.
    Das Problem mit dem Mittelwert tritt genau dann auf, wenn nur 1 oder 0 im Ergebnis vorkommt, weil dann mit der alten Berechnung der kleinste wert auf jeden Fall unter dem Schwellenwert liegt und der größte auf jeden Fall darüber. Für die Zuverlässigkeit der Aussage kannst du deshlab die Differenz zwischen kleinstem und größtem wert heranziehen. Ist die groß, weißt du, dass mindestens eine 1 und eine 0 in deinem Ergebnis vorkommt, dein Mittelwert also dazwischen liegt. Ist sie klein, ist die Wahrscheinlichkeit groß, dass lauter 1 oder 0 im ergebnis sind. Es also leicht zu Fehler kommt, weil der Mittelwe´rt an der falschen Stelle liegt.
    MfG jeffrey

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

LiTime Speicher und Akkus