2015-05-15 9 views
6

Mit Blick auf die Histogram Documentation gibt es 4 (5) verschiedene Vergleichsmethoden:OpenCV Histogramm Vergleichsmethoden

  1. CV_COMP_CORRELCorrelation
  2. CV_COMP_CHISQRChi-Quadrat
  3. CV_COMP_INTERSECTKreuzung
  4. CV_COMP_BHATTACHARYYABhattacharyya Abstand
  5. CV_COMP_HELLINGERSynonym fürCV_COMP_BHATTACHARYYA

sie alle unterschiedlich Ausgänge geben, die anders gelesen werden, wie in der Compare Histogram Documentation gezeigt. Aber ich kann nichts finden, das angibt, wie effektiv jede Methode im Vergleich zueinander funktioniert. Sicherlich gibt es Vor- und Nachteile für jede Methode, sonst warum mehrere Methoden?

Auch die OpenCV 2 Computer Vision Application Programming Cookbook hat sehr wenig auf den differnces zu sagen:

Der Aufruf von cv :: compareHist einfach. Sie geben einfach die beiden Histogramme ein und die Funktion gibt die gemessene Entfernung zurück. Die spezifische Messmethode , die Sie verwenden möchten, wird mit einem Flag angegeben. In der ImageComparator-Klasse wird die Überschneidungsmethode (mit Flag CV_COMP_INTERSECT) verwendet. Diese Methode vergleicht einfach für jeden Behälter die beiden Werte in jedem Histogramm mit und behält das Minimum bei. Das Ähnlichkeitsmaß ist dann einfach die Summe dieser Minimalwerte. Folglich erhalten zwei Bilder mit Histogrammen ohne gemeinsame Farben einen Schnittpunktwert von 0, während zwei identische Histogramme einen Wert erhalten würden, der gleich der Gesamtzahl der Pixel ist.

über weitere Methoden sind die Chi-Quadrat-(Flag CV_COMP_CHISQR) die den normalisierten quadratischen Differenz zwischen den Bins summiert, die Korrelationsverfahren (Flag CV_COMP_CORREL), die auf der normalisierten Kreuzkorrelation basiert Operator in der Signalverarbeitung zu verwendet messen die Ähnlichkeit zwischen zwei Signalen, und die Bhattacharyya Maßnahme (Flag CV_COMP_BHATTACHARYYA) in der Statistik verwendet, um die Ähnlichkeit zwischen zwei probabilistischen Verteilungen zu schätzen.

Es muss Unterschiede zwischen den Methoden geben, also meine Frage ist, was sind sie? und unter welchen Umständen arbeiten sie am besten?

+1

ich wikipedia würde ein Versuch. Es ist so, als würde man fragen, ob es besser ist, eine Entfernung entlang der Straßen oder in der Luftlinie zu messen ... Sie müssen vielleicht verstehen, was Sie messen möchten. Aber vielleicht gibt es wirklich eine Art Kochbuch von "wann man welche Entfernungsmetrik verwenden soll", also viel Glück mit der Frage. – Micka

+0

Ich möchte nur einen Hinweis auf die Unterschiede in den verfügbaren Methoden geben. – MLMLTL

Antwort

1

CV_COMP_INTERSECT ist schnell zu berechnen, da Sie nur den minimalen Wert für jeden Fach benötigen. Aber es wird Ihnen nicht viel über die Verteilung der Unterschiede erzählen.Andere Methoden versuchen, unter verschiedenen Annahmen über die Pixelverteilung eine bessere und kontinuierlichere Punktzahl als eine Übereinstimmung zu erzielen.

können Sie die Formeln in verschiedenen Methoden finden, bei

http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_comparison/histogram_comparison.html

einige Verweise auf weitere Details zu den Matching-Algorithmen finden Sie unter:

http://siri.lmao.sk/fiit/DSO/Prednasky/7%20a%20Histogram%20based%20methods/7%20a%20Histogram%20based%20methods.pdf

+0

Ihre erste Verbindung war die gleiche wie meine erste Verbindung, aber die zweite war interessant. Allerdings sagt es immer noch nur so viel wie alle anderen Links, die ich gefunden habe: Die Bewertung für die verschiedenen Methoden ist anders. – MLMLTL

+0

Mathematisch gesprochen ist ein normalisiertes Histogramm eine Wahrscheinlichkeitsdichtefunktion (PDF). Wenn wir zwei Histogramme zusammenbringen, sehen wir im Grunde, wie zwei Verteilungen zueinander passen. Der beste Weg, um Ihre Frage zu beantworten, ist das Lesen von Lehrbüchern über statistische Mustererkennung (Duda und Hart ist ziemlich gut) oder Publikationen wie http://citeseerx.ist.psu.edu/viewdoc/download?rep=rep1&type=pdf&doi= 10.1.1.154.8446. Ich habe gelernt, aber habe die meisten dieser Sachen vergessen ;-(. – Totoro