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

normxcorr2 ohne im2bw

 

KeRo
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 28.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2014, 18:06     Titel: normxcorr2 ohne im2bw
  Antworten mit Zitat      
Hallo,

taste mich so langsam an Matlab heran, und habe nun folgendes Problem:
Ich will zwei Bilder miteinander vergleichen und überprüfen, ob diese übereinstimmen.

Mein Code soweit:

Code:

pic1 = im2bw(imread('pic1.jpg'));
pic2 = im2bw(imread('pic2.jpg'));

A1 = normxcorr2(pic1, pic2);
if (max(max(A1)) >= 0.9)
                disp('sind gleich')
            else
                disp('nicht gleich')
end
 


Das funktioniert auch super! Allerdings nur, wenn ich die Bilder mittel "im2bw" umwandle.
Da ich das später mit sehr vielen Bildern via Schleife machen will, und die Bilder anschließend auch im GUI ausgeben will, ist es unvorteilhaft, wenn sie alle mittel im2bw umgewandelt wurden.

Gibt es eine Möglichkeit diese nicht umzuwandeln und direkt zu vergleichen?

Vielen Dank Smile
Private Nachricht senden Benutzer-Profile anzeigen


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 30.01.2014, 18:34     Titel:
  Antworten mit Zitat      
Moin,

ich finde deinen Code recht fragwürdig. Du hast einen Schwellwert eingebaut Was ist, wenn sich 1 Bild im oberen Bereich unterscheidet? Richtig wäre es, wenn alle Werte in Bezug stehen!?

Gruß - Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
KeRo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 28.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2014, 18:53     Titel:
  Antworten mit Zitat      
Hubertus hat Folgendes geschrieben:
Moin,

ich finde deinen Code recht fragwürdig. Du hast einen Schwellwert eingebaut Was ist, wenn sich 1 Bild im oberen Bereich unterscheidet? Richtig wäre es, wenn alle Werte in Bezug stehen!?

Gruß - Hubertus


Ich versteh leider nicht ganz was du meinst. Ich habe mich an diesem Beispiel hier auf Youtube orientiert:
http://www.youtube.com/watch?v=HrxY0_gr4R8

Nur das meine Bilder nicht per Webcam geliefert werden.

Der Code der hier oben steht ist das Prinzip, welches ich schon mittels Schleife und vielen Bildern durchlaufe! Es wird alles prima erkannt. Das Resulat nach dem Vergleichen stimmt also.

Was mich stört ist das ich die *.jpgs vorher umwandeln muss um sie mit normxcorr2 vergleichen zu können. Danach sind sie für mich unbrauchbar, weil die Qualität nicht mehr reicht um sie im GUI darzustellen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 30.01.2014, 19:00     Titel:
  Antworten mit Zitat      
Trotzdem ist das Resultat fragwürdig. Du brauchst nur 1 Bild nehmen und in einer Kopie nur 1 Pixel oberhalb des Schwellwertes ändern. Dann erkennt dei Code beide Bilder als "gleich", obwohl sie das nicht sind. Normalerweise vergleicht man alle Pixel plus Vektor plus Matrix und findet dann auch das oben veränderte Bild mit dem 1 Pixel. Im2bw wird dann auch nicht benötigt.
Private Nachricht senden Benutzer-Profile anzeigen
 
KeRo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 28.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2014, 19:03     Titel:
  Antworten mit Zitat      
hast du ein beispiel für mich?

danke Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 30.01.2014, 19:10     Titel:
  Antworten mit Zitat      
Ja, gerne:

Code:
a=imread('');
b=imread('');
c=(a==b);
all(all(all(c==1)))

ans =

     1        %     0 = nicht gleich      /     1 = gleich
Private Nachricht senden Benutzer-Profile anzeigen
 
KeRo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 28.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2014, 22:51     Titel:
  Antworten mit Zitat      
Ich versteh zwar die drei "all" nicht, aber es funktioniert super Smile

Danke.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 31.01.2014, 06:25     Titel:
  Antworten mit Zitat      
Das habe ich oben beschrieben. Es muss jedes Pixel auf Übereinstimmung verglichen werden, dann jede Reihe und die gesamte Matrix.
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 31.01.2014, 11:57     Titel:
  Antworten mit Zitat      
Hallo Hubertus,

Ich klinke mich mal aus persönlichem Interesse ein. Die Idee die Bilder zu vergleichen Leuchtet mir ein, allerdings hänge ich auch gerade bei dem Verständnis des Codes...

Ich versuchs mal für mich zu erklären, wenn was falsch verstanden wurde würde ich mich über Korrektur freuen:

Du bildest dir eine Hilfsmatrix c, die "true" für gleiche Pixel ist und "false" für unterschiedliche. Dann überprüfst du c auf Einträge "true" mit
Code:

Rückgabewert ist ein Vektor, der wenn alles gleich ist nur "true" enthält? Im nächsten Schritt:
Code:
machst du das ganze für einen Vektor und erhälts entweder "true" oder "false" und iederholst das ganze für den letzten verbleibenden eintrag.

Hoffe ist einigermaßen verständlich...

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 31.01.2014, 12:50     Titel:
  Antworten mit Zitat      

normxcorr2 ohne im2bw
Klicke hier, um den Artikel bei Amazon.de anzuschauen.


normxcorr2 ohne im2bw
Klicke hier, um den Artikel bei Amazon.de anzuschauen.

Hallo Phate,

ja, so ist es.

Zitat:

Bei Matritzen gibt all einen Zeilenvektor zurück, der die Ergebnisse von all angewendet auf die Spaltenvektoren enthält. Also ist all eine Möglichkeit, um die beiden Matritzen A und B auf Gleichheit zu testen. Dazu Minimalbeispiel:

Code:
a=[1 2 3;4 5 6];
b=[0 2 3;4 5 7];
c=(a==b);
all(c==1);


Viele Grüße- Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.01.2014, 14:00     Titel:
  Antworten mit Zitat      
Hallo,

statt
Code:
geht auch
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 31.01.2014, 14:05     Titel:
  Antworten mit Zitat      
Danke Harald!

Wie kommt eigentlich die Amazon-Werbung in meinen Beitrag. Hab ich schon einmal gehabt und kann kann mir den Vorgang nicht erklären

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 31.01.2014, 14:15     Titel:
  Antworten mit Zitat      
Hubertus hat Folgendes geschrieben:
Danke Harald!

Wie kommt eigentlich die Amazon-Werbung in meinen Beitrag. Hab ich schon einmal gehabt und kann kann mir den Vorgang nicht erklären

Hubertus


wenn du da aus versehn reinkommst kommt son amazon zeug Smile
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 31.01.2014, 15:13     Titel:
  Antworten mit Zitat      
Hallo,

Danke Hubertus für den Code, sehr hilfreich hab das immer deutlich umständlicher gelöst.
Genauso wie die Vereinfachte Schreibweise, danke Harald!

Grüße
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.