WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Punkte verbinden und entschärfen

 

fTcUbM
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2009, 17:22     Titel: Punkte verbinden und entschärfen
  Antworten mit Zitat      
Hi, bin neu bei euch im Forum und hab gleich mal eine Frage. Da es recht schwer ist zu erkären hab ich mal drei Bilder angehängt.
Zur Erklärung: Ich habe ein Video und bestimme alle 5 Frames die Position einer Person (Punkte Bild 1). Nun möchte ich daraus den ungefähren Pfad der Person bestimmen (Bild 2) und diese dann abrunden bzw. entschärfen (wie in Bild 3). Ich weiß nicht genau wie ich anfangen soll das umzusetzen. Ich benötige Schritt 2 nicht unbedingt, Ziel ist es aus vorhandenen x/y Koordinaten einen Graphen plotten zu können wie er grün in Bild 3 zu sehen ist.
Jemand eine Idee?

1000 Dank!

3.jpg
 Beschreibung:
Bild 3

Download
 Dateiname:  3.jpg
 Dateigröße:  29.38 KB
 Heruntergeladen:  873 mal
2.jpg
 Beschreibung:
Bild 2

Download
 Dateiname:  2.jpg
 Dateigröße:  17.87 KB
 Heruntergeladen:  830 mal
1.jpg
 Beschreibung:
Bild 1

Download
 Dateiname:  1.jpg
 Dateigröße:  6.11 KB
 Heruntergeladen:  824 mal
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2009, 18:06     Titel:
  Antworten mit Zitat      
Hast Du die Punkte schon vorliegen oder brauchst Du tatsächlich noch einen Tracking-Algorithmus um eine Person in einem Video zu verfolgen?

Bild 2 und Bild 1 sind für die Bearbeitung mit Matlab das gleiche. Die "Entschärfung" kannst Du auf diverse Arten erreichen.

Zum Beispiel durch Filterung. (doc filter ist sehr hilfreich (Stichwort: running average)). Wenn die Ecken weniger Rund werden sollen bzw. die Abweichung zu groß ist, kannst Du einfach ein paar Zwischenpunkte auf den Verbindungsgeraden ausrechnen und in deinen Punktevektor einfügen.

Eine Alternative zur Filterung wäre, ein Spline durch die Punkte zu legen. Nur bedingt geeignet, wenn es echtzeitig laufen soll, da sich die geglättete Funktion von vergangenen Zeiten noch ändern kann.

Ähnlich dem Spline, aber weniger gut für (quasi-)unendlich lange Sequenzen: Annäherung durch ein Polynom. Dafür gibt es unter Matlab auch diverse Hilfsmittel. Hier das gleiche Problem wie bei Splines - nur bedingt sinnvoll für Echtzeit-Anwendung.

Meine bevorzugte Lösung wäre ein Filter.

Plotten geht dann letztendlich über plot(x, y) - ganz easy ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
fTcUbM
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2009, 12:58     Titel:
  Antworten mit Zitat      
Super, danke! Ja die Punkte hab ich vorliegen.
Das mit dem Filter hab ich nicht so richtig hinbekommen aber das mit dem Spline ging dann. Ist nicht Echtzeit, wäre also kein Problem.
Nun hab ich das Problem, dass die Kurve teilweise ein wenig über das Ziel hinausschießt. Gibts da noch eine Möglichkeit das ganze ein wenig zu "glätten" ohne weitere Zwischenpunkte zu berechnen?
Hab mal ein Bild angehängt wie es momentan aussieht...

spline.jpg
 Beschreibung:

Download
 Dateiname:  spline.jpg
 Dateigröße:  16.56 KB
 Heruntergeladen:  883 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Gninneh
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 29.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.09.2010, 11:31     Titel: pchip
  Antworten mit Zitat      
Versuch mal anstatt spline den Befehl pchip. Dieser verhindert ein überschwingen =)
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.09.2010, 14:34     Titel: Re: Punkte verbinden und entschärfen
  Antworten mit Zitat      
Hallo fTcUbM,

für das Tracking von Bewegung wird oft der Douglas-Peuker-Algorithmus verwendet. Google findet dazu einiges, z.B. auch in der FEX.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.