Zuerst wird das Eingabebild vom RGB-Farbraum in den HSV-Farbraum umgerechnet, danach erstellt das Beispiel ein Histogramm des Hue-Werts, also der Farbkomponente. Von der Sättigung und der Helligkeit werden zudem Mittelwerte gebildet. Bei der Erstellung des 1D-Hue-Histogramm kann die zu betrachtende Region im Bild angegeben werden.
Dann wird der Peakwert im Histogramm gesucht, um den Faktor k = 255 / Peak zu berechnen. Mit diesem Wert sowie dem Histogramm kann nun das komplette Eingabebild gefiltert werden, und zwar wird jeder Pixel wieder ins HSV-System umgerechnet, danach wird der Histogramm-Wert für den Hue-Wert des Pixels mit dem Faktor k multipliziert. Dies ist dann die Wahrscheinlichkeit dass der Pixel zum Histogramm passt, hier mit Minimum = 0 und Maximum = 255.
Mit ein paar weiteren Rechnungen werden außerdem noch voreingestellte Werte für die Sättigung und die Helligkeit beachtet. Dabei wird der Abstand zwischen dem Vorgabewert und dem Pixelwert absolut berechnet. Die Wahrscheinlichkeit wird dann mit dem Kehrwert der Differenz multipliziert.
Es ist möglich, die "Bins" des Histogramms zu reduzieren. Im Prinzip ist jede Säule in der Darstellung des Histogramms ein sogenanntes "Bin". Dadurch wird der Histogrammfilter allgemeiner.
Probiert einfach mal ein bisschen rum. Btw. auf der Backprojection könnte man dann mit einem Trackingalgorithmus wie CAMShift das gefilterte Objekt lokalisieren.
History
15.05.2003 Hinzugefügt
Autor: Dominik Auras <Dominik_auf_vbinside.de>