|
|
Vektor in Bild/Video plotten |
|
GtrAngus |

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 11.06.13
|
 |
|
 |
Wohnort: Bayreuth
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2013, 21:57
Titel: Vektor in Bild/Video plotten
|
 |
|
 |
|
Hallo Leute,
hoffe ihr könnt mir hier weiterhelfen.
Ich bekomme aus einem vorherigen Programm die Tracking-Koordinaten aller Partikel aus einem Video (*.avi).
Dabei erkennt das Programm, ob es sich um ein und dasselbe Teilchen handelt oder nicht (einfach durch eine maximale Distanz die sich das Teilchen theoretisch bewegen kann zwischen 2 Frames). Dabei kann das Teilchen duchaus einige Frames nicht erkannt werden, weil z.B. die Helligkeit abnimmt o.ä.
Dem entsprechend sieht die Ausgabe aus:
trk = [x-Koordinate y-Koordinate Frame #-Teilchen]
Ich speichere nun mein Video in der Variable I und möchte gerne einen Vektorpfeil vom Beginn des Partikels bis zum Ende in das Bild/Video zeichnen.
Um einfach zu starten:
a) Wie kann ich einen Vektorpfeil in das Bild I(:,:,1) (double) plotten ?
Mein Problem ist, entweder ich zeige mir das Bild an
oder ich plotte den Vektorpfeil:
vectarrow ist hierbei eine Funktion die ich heruntergeladen habe. Wie ihr hier auch sehen könnt, habe ich es mit dem "hold on/off" Befehl probiert, aber mein Problem ist das das double-Bild nicht korrekt anzeigt wird, wenn ich z.B. mit plot(image(I(:,:,1))) rumexperimentiere.
b) Wie kann ich den Vektor in ein Video plotten, auch wenn Koordinaten in einem Frame fehlen?
Das würde ich gerne selber ausprobieren. Aber dafür brauche ich Hilfe bei a) Evtl. komme ich aber nochmal darauf zurück.
Gruß GtrAngus
|
|
|
|
|
Hubertus |

Forum-Meister
|
 |
Beiträge: 1.034
|
 |
|
 |
Anmeldedatum: 08.01.09
|
 |
|
 |
Wohnort: Hamburg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.06.2013, 10:39
Titel:
|
 |
Moin,
du kannst doch ganz einfach einen Pfeil mit "line" und "ginput" Freihand erzeugen. Ist es weiterhin richtig, das du das 1. Bild mit (I(:,:,1)) lädst?
Normalerweise zeigt diese Funktion nur den Rotkanal an. Ich kenne mich kaum mit Video aus, aber um aus einem Stream ein Bild zu capturen, benötigt man: I(:,:,:,k).
Viele Grüße - Hubertus
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 27.06.2013, 10:43
Titel: Re: Vektor in Bild/Video plotten
|
 |
Hallo GtrAngus,
Zitat: |
trk = [x-Koordinate y-Koordinate Frame #-Teilchen] |
Was bedeutet das? Heißt "#" hier "Anzahl" oder "Index" und betrifft die Variable "trk" einen bestimmten Frame oder alle Frames? Welche Dimension hat "trk"?
Zitat: |
aber mein Problem ist das das double-Bild nicht korrekt anzeigt wird, wenn ich z.B. mit plot(image(I(:,:,1))) rumexperimentiere. |
Was genau bedeutet "nicht korrekt angezeigt"? Der IMAGE-Befehl scheint dazu geeignet zu sein, während PLOT nicht zum Darstellen von Pixel-Bilder geeigent ist.
Zitat: |
b) Wie kann ich den Vektor in ein Video plotten, auch wenn Koordinaten in einem Frame fehlen? |
Was bedeutet "fehlen" in Matlab? Sind dann NaN-Werte eingetragen? Oder fehlen die entsprechenden Zeilen in der Matrix (?) "trk"? Wenn die Zeilen fehlen, woher könnte man dann die Koordinaten bekommen?
Gruß, Jan
|
|
|
GtrAngus |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 11.06.13
|
 |
|
 |
Wohnort: Bayreuth
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.07.2013, 18:45
Titel:
|
 |
@ Hubertus
Genau, das ist das 1. Bild aus meinem Video. Unterm Strich wird am Anfang erstmal das Video in der Variable I gespeichert, aber die Bearbeitung des Videos erfolgt eben nur Bild für Bild.
@ Jan S
Erstmal zur Variable trk. Ja, das ist korrekt! Also z.B.
0 0 10 1
5 2 11 1
würde bedeuten, dass Teilchen 1 in den Bildern 10 und 11 erkannt wurde und sich von (0,0) nach (5,2) bewegte.
Dem entsprechend hat trk z.B. bei 10.000 Bewegungsschritten die Dimension <10000 x 4 double>.
Das mit dem Plot funktioniert ws. Allerdings sind die Linien einfach zu kurz.
Fehlen bedeutet das in "trk" in der 3. Spalte der nächste Wert nicht i+1 sondern i+2 oder i+3 ist. Also:
0 0 10 1
5 2 14 1
Naja, beschaffen könnte man sie eventuell über Interpolation.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.07.2013, 10:01
Titel:
|
 |
Hallo GtrAngus,
Zitat: |
Das mit dem Plot funktioniert ws. Allerdings sind die Linien einfach zu kurz. |
Was bedeutet das genau? "Einfach zu kurz" ist nicht klar genug für einen Verbesserungsvorschlag.
Zitat: |
Naja, beschaffen könnte man sie eventuell über Interpolation. |
Nur "eventuell" oder hast Du das bereits implementiert oder zumindest versucht? Je konkreter die Fragen sind, desto eher lassen sie sich von Fremden in einem Forum beantworten.
Gruß, Jan
|
|
|
GtrAngus |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 19
|
 |
|
 |
Anmeldedatum: 11.06.13
|
 |
|
 |
Wohnort: Bayreuth
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.07.2013, 10:29
Titel:
|
 |
Habs nach ein bissl rumprobieren doch noch hinbekommen. Unterm Strich lautet der Code in etwa so:
Wobei bei x und y noch die entsprechenden Koordinaten aus trk ausgelesen werden müssen.
Danke für eure Hilfe!
|
|
|
|
|
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.
|
|