|
|
Matrizen untereinander vergleichen |
|
NiSe |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 04.02.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.02.2019, 09:12
Titel: Matrizen untereinander vergleichen
|
|
|
|
|
Hey Leute,
ich bin neu hier, bin auf der Suche nach einer Lösung für mein Problem. Google spuckt nichts brauchbares aus und meine Matlab-Kenntnisse reichen nicht aus, um das Vorhaben in Befehlen auszudrücken. Aber im Prinzip ist es einfach, scheitert eben nur an der Umsetzung.
Im Prinzip möchte ich binäre Bilder untereinander vergleichen. Die Bilder werden eingelesen und als binäre Matrizen ausgegeben, die alle gleich groß sind. Die einzelnen Pixel haben dann den Wert 1 oder 0.
Nun sollen die Matrizen untereinander abgeglichen werden.
1) Wenn in allen Matrizen ein Pixel den Wert 1 hat, dann soll die 1 übernommen werden.
2) Wenn ein Pixel-Wert in allen Matrizen unterschiedlich ist, dann soll die 0 übernommen werden
3) Wenn ein Pixel-Wert in allen Matrizen 0 ist, dann soll die 0 übernommen werden.
Es sollen also nur die 1-en gesucht und übernommen werden, die in allen Matrizen gleich sind, alles andere soll zu 0 gesetzt werden
Am Ende soll eine neue Matrix mit den neuen Pixelwerten erstellt werden.
Ich weiß wie man einen ganzen Ordner mit Bildern in Matlab öffnet und jedes einzelne Bild durch eine Schlaufe ansteuert, aber die Sache mit den Pixeln kriege ich nicht hin.
Die Matlab-Funktion isequal oder der Vergleich durch C=(A==B) gibt ja nur einen Wert true or false raus.
Ich hoffe, ihr könnt mir helfen. Vielen Dank schon mal
Grüße
NiSe
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 04.02.2019, 09:22
Titel:
|
|
Hallo,
ich würde sagen: C = A & B
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
NiSe |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 04.02.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.02.2019, 09:59
Titel:
|
|
Harald, vielen Dank, das hat ja echt funktioniert. Und war doch so einfach.
Ich versuche das jetzt in eine Schlaufe umzubauen, dass ich mehr als zwei Matrizen prüfen kann.
Vielen Dank noch mal, du hast mir sehr geholfen.
|
|
|
NiSe |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 04.02.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.02.2019, 14:56
Titel:
|
|
Hmm, brauche vielleicht doch noch eine kleine Hilfestellung für die Schleife. Weiß nicht so recht, wie ich den Operator & in die Schleife einbauen soll.
Bisher habe ich nur das da:
Und bin mir nicht ganz sicher, ob es der richtige Ansatz ist.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 06.02.2019, 16:43
Titel:
|
|
Hallo,
willst du denn wirklich addieren (1+1 = 2) oder ver-und-en (1&1 = 1)?
Wenn ich es richtig verstanden habe, dann letzteres, also
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
NiSe |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 04.02.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.02.2019, 14:01
Titel:
|
|
Hallo Harald,
im Prinzip möchte ich genau das tun, was ich im ersten Post beschrieben habe, aber jetzt mit einen ganzen Ordner mit z.B. 5 oder 8 Bildern. Also der ganze Ordner soll geladen werden und alle Bilder sollen untereinander verglichen werden. Am Ende soll ein "Bereinigtes"-Bild erzeugt werden. Wenn ich das manuell mache, also die Bilder einzeln lade und den Operator "&" verwende, dann funktioniert alles.
Ich habe den Skript nach meiner Logik und meinem Kenntnisstand aufgebaut. Als Beispiel hatte ich einen anderen Skript mit dem man ein Durchschnittsbild erzeugen kann. Ich vermute, dass mir hier einfach die Kenntnisse bzw. das Verständnis für die Befehle fehlen.
Ich habe das jetzt so umgesetzt:
Ist das richtig so? Oder habe ich es falsch verstanden?
Ich bekomme auf jeden Fall eine Fehlermeldung:
"Reference to non-existent field 'Name'."
"Error in Matrizenvergleich (line 13)
tiff_clean = logical(imread(fullfile(Folder, DirFiles(i).Name)));"
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.02.2019, 14:14
Titel:
|
|
Hallo,
du musst name statt Name verwenden. Wenn du auf DirFiles im Workspace doppelklickst, bekommst du die Variable angezeigt.
Diese Zeile ist meines Erachtens nicht sinnvoll und sollte weggelassen werden:
In den folgenden Zeilen dann mit result weiter arbeiten.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
NiSe |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 04.02.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.02.2019, 09:30
Titel:
|
|
ok, sorry, dass ich selber nicht drauf gekommen bin. Es hat alles super funktioniert, vielen, vielen Dank Harald!!!
Grüße
NiSe
|
|
|
|
|
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 - 2024
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.
|
|