|
|
Finden von allen Pfaden aus Wertepaaren in Vektor |
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.12.2012, 17:06
Titel: Finden von allen Pfaden aus Wertepaaren in Vektor
|
 |
|
 |
|
Hallo liebes Matlab-Forum,
erstmal vielen Dank für die Hilfe, die dieses Forum schon oft geboten hat. Für mein aktuelles Problem habe ich leider noch keine Lösung gefunden.
Ich schreibe aktuell für meine Abschlussarbeit ein Programm das Objekte in einem Video erkennt und über mehrere Bilder "verfolgt". Dafür habe ich an dieser Stelle einen Vektor, der folgendermaßen besetzt ist:
Spalte 1: Bild(t)
Spalte 2: Objekt
Spalte 3: Bild(t+1)
Spalte 4: Objekt
Im folgenden Beispiel steht also ...
Objekt 1 in Bild 5 ist mit Objekt 1 in Bild 6 verbunden
Objekt 1 in Bild 6 ist mit Objekt 1 in Bild 7 verbunden
Objekt 2 in Bild 6 ist mit Objekt 2 in Bild 7 verbunden
...
Was ich nun gerne hätte, wäre, dass alle möglichen "Pfade" (also alle Wertepaare, die miteinander verbunden sind) ausgegeben werden, für das obige Beispiel wäre das dann:
Vielleicht könnte man die einzelnen Pfade dann auch in einem Array speichern, sodass in jeder Zelle ein Pfad abgelegt wäre.
Ich hoffe, ich habe mich verständlich ausgedrückt und danke schonmal für die Hilfe
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 19.12.2012, 18:11
Titel: Re: Finden von allen Pfaden aus Wertepaaren in Vektor
|
 |
Hallo Danybel,
Ich verstehe die Frage noch nicht. Wie kommt man von "testerg3" auf "erg_pfade"? Mir wird auch nicht klar, wieso testerg3 4 Spalten besitzt.
Ich rate mal, das man zunächst per RESHAPE und PERMUTE eine [Nx2]-Matrix erstellen kann und danach per "unique(X, 'rows')" die eindeutigen Zeilen findet und sortiert. Aber das ist nur eine vage Idee.
Die einzelnen Pfade sind doch bereits in einen Array, nämlich einer double-Matrix, gespeichert, allerdings nicht in eine "Zelle" sondern "Zeile". Ist das nicht ausreichend?
Gruß, Jan
|
|
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.12.2012, 19:00
Titel:
|
 |
|
 |
|
Hallo Jan,
vielen Dank für Deine Antwort. Letztendlich habe ich testerg3 schon berechnet und würde gerne erg_pfade erhalten.
Dann erläutere ich vielleicht erstmal kurz, was ich gemacht habe. Ich habe ein Video aufgenommen, in dem Objekte gezählt und durch die verschiedenen Bilder verfolgt werden. Die detektierten Objekte wurden dann in aufeinanderfolgenden Bildern (über die Schnittfläche der Objekte) zugeordnet. Dabei gibt es beliebig viele Objekte in jedem Bild, das heißt es gibt entsprechend viele mögliche Kombinationen. In testerg3 sind nun die Kombinationen gespeichert, die weiter betrachtet werden sollen.
Bedeutet also in diesem Fall, dass: Bild 5, Objekt 1 = Bild 6, Objekt 1 ist. Entsprechend die anderen Zeilen in der Matrix. So kann man dann schauen, welche Objekte über mehrere miteinander verbunden sind. Hier müsste man also schauen, ob " 6 1" irgendwo in den ersten beiden Spalten steht. Dann würde man die Zeile " 6 1 7 1" finden, also wäre das nächste Wertepaar die "7 1", da sucht man wieder weiter und in diesem Fall wäre die Suche vorbei für die erste Zeile und setzt die Schleife auch für alle anderen Zeilen durch.
Ich hoffe, das war ein bisschen verständlicher.
Vielen Dank
|
|
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.12.2012, 20:29
Titel:
|
 |
Also kurz gefragt, wie komme ich von testerg3 zu erg_pfade?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 20.12.2012, 09:53
Titel:
|
 |
Hallo Danybel,
Du suchst nach dem Vorkommen von Zeilen aus "testerg(:, 3:4)" in "testerg(:, 1:2)". Dabei kann "ismember(a,b,'rows')" hilfreich sein, vorallem wohl der 2. Output.
Wenn die Anzahl der Objekte begrenzt ist, z.B. auf 2^16 Stück, könntest Du per: "x = testerg(:, 1) * 2^16 + testerg(:, 2)" aus den Pärchen einzelne Zahlen produzieren, womit ISMEMBER schneller rechnen kann.
Gruß, Jan
|
|
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.12.2012, 18:11
Titel:
|
 |
Hallo,
ich habe mittlerweile einen Code geschrieben, der schon irgendwie das macht, was ich gerne hätte.
Als Ergebnis erhalte ich dann für folgendes testerg3:
Dort sind ja ungefähr die möglichen "Pfade" untereinander (von Zeilen, die doppelt nacheinander auftreten, könnte ja eine gelöscht werden). Allerdings (wie in testerg3) ersichtlich, geht die Reihe [8 1] [9 1] mit [10 1] [11 1] weiter. Also würde ich die auch alle direkt untereinander haben, wenn diese Kette dann mit [18 1] zuende ist. Kann mit [8 2] [9 2] [10 2] fortgesetzt werden.
Tut mir leid, dass ich das nicht besser beschreiben kann. Für mich scheint das alles ganz logisch
|
|
|
Danybel |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.12.2012, 18:15
Titel:
|
 |
Nachtrag (noch vor dem Code):
|
|
|
|
|
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.
|
|