<< FilterBySize Image Processing Design GetVideoInfo >>

Image Processing Design >> Image Processing Design > FindBestMatches

FindBestMatches

sucht nach den Positionen, an denen ein Musterbild am besten mit einem Bild übereinstimmt

Aufruf

ListePositionen = FindBestMatches(Aehnlichkeit, GroesseMusterbild, Methode);

Parameter

Aehnlichkeit

2D-Matrix vom Typ double, ist das Ergebnis von MatchTemplate

GroesseMusterbild

Vektor mit zwei Elementen, gibt die Anzahl der Zeilen und Spalten des Musterbildes an

Methode

Konstante vom Typ uint8, folgende Werte sind möglich:

  • MATCH_LEAST_SQUARES: Summe der quadratischen Differenzen zwischen den Grauwerten der Pixel von Quell- und Musterbild

  • MATCH_CORRELATION: Korrelation zwischen Musterbild und Umgebung von Mittelpunkt des Musterbildes im Quellbild

  • MATCH_LEAST_SQUARES_NORM: normalisierte Summe der quadratischen Differenzen zwischen den Grauwerten der Pixel von Quell- und Musterbild

  • MATCH_CORRELATION_NORM: normalisierte Korrelation zwischen Musterbild und Umgebung von Mittelpunkt des Musterbildes im Quellbild

ListePositionen

Matrix mit zwei Spalten, enthält die Positionen aller Pixel, bei denen die Ähnlichkeit optimal ist. Die erste Spalte gibt die x-, die zweite Spalte die y-Koordinate an.

Beschreibung

Diese Funktion sucht nach den Positionen, an denen ein Musterbild am besten mit einem Bild übereinstimmt. Die Koordinaten der gefundenen Pixel werden dabei auf die Größe des ursprünglichen Bildes umgerechnet.

Beispiel

global MATCH_CORRELATION_NORM;

global IPD_PATH;

QuellbildFarbe = ReadImage(IPD_PATH + 'demos\teaset.png');

Quellbild = RGB2Gray(QuellbildFarbe);

MusterbildFarbe = ReadImage(IPD_PATH + 'demos\cropped_image.png');

Musterbild = RGB2Gray(MusterbildFarbe);

Aehnlichkeit = MatchTemplate(Quellbild, Musterbild, MATCH_CORRELATION_NORM);
                      
BesteUebereinstimmung = FindBestMatches(Aehnlichkeit, size(Musterbild), MATCH_CORRELATION_NORM);
                            
Markierung = list();
                            
for n = 1 : size(BesteUebereinstimmung, 1)
  
 Markierung($ + 1) = struct('BoundingBox', cat(2, BesteUebereinstimmung(n, :) - [1 1], [3 3])');
  
end;                            

QuellbildFenster = figure();
                            
ShowColorImage(QuellbildFarbe, 'Bild mit markierten Positionen der besten Übereinstimmung');

DrawBoundingBoxes(Markierung, [0 1 0], QuellbildFenster);

MusterbildFenster = figure();

ShowColorImage(MusterbildFarbe, 'Musterbild');

Siehe auch


Report an issue
<< FilterBySize Image Processing Design GetVideoInfo >>