|
|
Ermittlung des Phasenübergangs aus Videodatei |
|
eibyks |

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 08.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.06.2014, 12:14
Titel: Ermittlung des Phasenübergangs aus Videodatei
|
 |
|
 |
|
Hallo,
ich brauche etwas Hilfe bei der Optimierung meines Programms. Die Idee ist folgende, In einem Kanal befindet sich eine zweiphasige Flüssigkeit (Blau und Weiß) , die Trennlinie befindet sich in der Kanalmitte. Auf die Blaue Seite wird ein Sinusimpuls gegeben der das Fluid auslenkt. Bei kleinen Frequenzen kann man dann im Kanal sehr schön die Ausbreitung des Signals beobachten. Das ganze nehme ich dann als Video auf. Dazu kann ich die Aufnahme direkt auf den relevanten Bereich beschränken und je nach Wunsch mit bis zu 500fps aufnehmen. Als nächste möchte ich anhand des Videos aussagen über das Übertragungsverhalten treffen. Dazu habe ich mir nachfolgendes Programm gebastelt. Dazu ermittle ich für jedes Bild die Phasengrenze. An sich bin ich mit dem Ergebnis ganz zufrieden, jedoch denke ich, dass das ganze noch gewaltiges Optimierungspotential hat. Da dies aber mein erstes richtiges MatLab-Projekt ist würde ich gerne wissen was ich hier und da anders machen sollte.
Ich würde hier jetzt einfach Schritt für Schritt beschreiben was ich mache und das Programm als Datei anhängen.
1. lese ich die Videodatei aus und speichere die für mich relevanten Grauwerte
Die Kurve aus den Bilddaten (siehe Anhang Bilddaten 2) zeigt in der Kurvenmitte den für mich relevanten Bereich. Da die Kurve ziemlich verrauscht ist wende ich zum glätten zunächst einen Gaußfilter und anschließend die polyfit und polyval Funktion an.
Die Ergebnisse sind als g und pp im Anhang zu betrachten.
Da ich nun eine schöne Glatte Kurve habe möchte ich die Daten auf den für mich relevanten Bereich beschränken. Anhand der Kurvenform kann man erkennen, dass dieser Bereich zwischen dem Maxima und dem daurauffolgenden Minima liegt.
Die Nun erhaltenen Kurve leite ich 2 mal ab und erhalte durch Nullsetzen den Wendepunkt. Die Position des Wendepunktes Speicher ich dann in einem Array und führe das ganze für die restlichen Frames aus.
Aus der erhaltenen Kurve (Kurve, siehe Anhang) möchte ich im nächsten Schritt die Frequenz bestimmen.
Dazu glätte ich das ganze wieder mit einem Gaußfilter, bilde die erste Ableitung und bestimme die Extrempunkte:
Nun hatte ich teilweise das Problem, dass für mehrere nebeneinander liegende Werte die erste Abl. Null wurde. Daher habe ich für diesen Fall die benachbarten Werte Null gesetzt. Dies ist einer der Punkte mit denen ich unzufrieden bin.
Im nächsten Schritt schmeiße ich die Nullen aus meinem Array raus und bestimme anschließend die Periodenlänge.
Abschließend bestimme ich die Frequenz anhand der Periodenlänge und der fps:
als Ergebnis bekomme ich aus einem angelegten 1Hz-Signal eine Frequenz von 0,9631Hz heraus. Nur weiß ich leider nicht was mein Ergebnis wirklich wert ist. Als nächsten Schritt wollte ich noch eine Nullmessung machen (Nur Weiße Phase im Kanal) und diese jeweils am Anfang Abziehen, in der Hoffnung das das Signal dann weniger verrauscht ist.
Falls jemand noch eine Idee hat wie ich das ganze besser oder auch einfach nur elganter lösen kann dann wäre ich ihm sehr Dankbar.
Die Videodatei und das Programm hänge ich im Nächsten Post drann.
Beschreibung: |
|
 Download |
Dateiname: |
Erg.fig |
Dateigröße: |
2.36 KB |
Heruntergeladen: |
193 mal |
Beschreibung: |
|
 Download |
Dateiname: |
Kurve.fig |
Dateigröße: |
6.92 KB |
Heruntergeladen: |
209 mal |
Beschreibung: |
|
 Download |
Dateiname: |
pp.fig |
Dateigröße: |
14 KB |
Heruntergeladen: |
194 mal |
Beschreibung: |
|
 Download |
Dateiname: |
g.fig |
Dateigröße: |
2.18 KB |
Heruntergeladen: |
200 mal |
Beschreibung: |
|
 Download |
Dateiname: |
Bilddaten_2.fig |
Dateigröße: |
1.87 KB |
Heruntergeladen: |
197 mal |
Zuletzt bearbeitet von eibyks am 04.06.2014, 12:21, insgesamt einmal bearbeitet
|
|
|
|
|
eibyks |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 08.05.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 04.06.2014, 12:17
Titel:
|
 |
Hier noch das m.File da ich das Video hier irgendwie nicht anhängen kann nehme ich ein Beipielbild damit ihr eine Vorstellung habt wie das ganze aussieht
Beschreibung: |
|
 Download |
Dateiname: |
test__avi2jpeg-139.jpg |
Dateigröße: |
805 Bytes |
Heruntergeladen: |
203 mal |
Beschreibung: |
|
 Download |
Dateiname: |
Kurvenform.m |
Dateigröße: |
3.07 KB |
Heruntergeladen: |
202 mal |
|
|
|
Andy386 |

Forum-Guru
|
 |
Beiträge: 485
|
 |
|
 |
Anmeldedatum: 24.06.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.1/8
|
 |
|
|
 |
|
Verfasst am: 16.06.2014, 13:35
Titel:
|
 |
Öh, suchst du eine Geschwindigkeitsoptimierung? Oder direkt was am Algorithmus? Wenn schon ungefähr das rauskommt, was du erwartest, passt es doch...
Um zu schauen, wo die Rechenzeit drauf geht eignet sich
sehr gut.
_________________
Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|