PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie kann ich schaun ob der Inhalt 2er Matrizen ähnlich ist?



Bastlwastl
11.03.2005, 10:40
Tag alle zusammen.

Ich habe 2 Matrizen die mit einem 0/1 Muster gefüllt sind.


Jetzt möchte ich schaun ob das enthaltene Muster ähnlich/gleich ist wobei das Muster in einer Matrix gestreckt/gestaucht und verdreht sein kann.

Wie stelle ich dass an?

Weis jemand wie ich das Mathematisch lösen kann?

Ich bin für jeden Tipp dankbar.


mfg Bastlwastl

Goblin
11.03.2005, 10:52
ich bin kein mathematiker, aber wenn es wie bei deinen skizzen nur schräger ist, bleiben doch die 0/1-kombinationen in deinen zeilen gleich, sie verschieben sich nur. da müsstest du dann halt die zeilen vergleichen und gucken, inwiefern die übereinstimmen.

beispiel:

matrix 1:

0100010000
0100010000
0111110000
0100010000
0100010000

matrix 2:

0000100010
0001000100
0011111000
0100010000
1000100000

übereinstimmende zeilenteile:



0100010000
0100010000
0111110000
0100010000
0100010000

0000100010
0001000100
0011111000
0100010000
1000100000

keine ahnung, ob das dir weiterhilft, aber das ist halt das, was mir dazu einfiel...

Bastlwastl
11.03.2005, 11:48
Leider ist dass nicht so einfach.

Die zu vergleichende Matrix ist nicht nur verschoben sondern auch gedreht und gestreckt/gestaucht.
Also ists nichts mit dem Vergleichen der Zeilen.
Meißtens liegt die Drehung nur im Bereich < 10° aber es reicht aus um mir Kopfzerbrechen zu bereiten.

Matrix1:
000000000000
000000000000
000100010000
000111110000
000100010000
000000000000
000000000000

Matrix2:
00000010000
00000100010
00001000100
00010101000
00100010000
01000100000
00001000000

Ich hab mir schon überlegt ob ichs über Vektoren oder Funktionen machen könnte.

Etwa so:
In der zu vergleichenden Matrix sind 2 Geraden die ungefähr parallel sind und eine 3. Gerade ist ungefähr im rechten Winken zwischen den beiden Geraden liegt.

Das Problem ist aber dass auch eine oder mehrere Radien vorkommen können und dass es zu Verzerrungen kommt und daher die Geraden nicht immer gerade sind.

Außerdem bin ich immer noch am Überlegen wie ich zu den Vektoren oder Funktionen kommen soll.

mfg Bastlwastl

11.03.2005, 13:43
Ich habe den Tipp bekommen es mit Kreuzkorrelation zu versuchen.

Doch leider kapiere ich nicht wie ich aus den Formeln die ich im Netz gefunden hab ein lauffähiges C++ Programm bekommen soll.

Kann mir da bitte jemand weiterhelfen?

Weis jemnd eventuell wo ich ein Beispiel herbekomme?

mfg Bastlwastl

Bastlwastl
11.03.2005, 13:44
Den letzten Beitrag habe ich geschrieben.
(Wiedermal vergessen einzuloggen.)