create_bg_estiT_create_bg_estiCreateBgEstiCreateBgEsticreate_bg_esti (Operator)

Name

create_bg_estiT_create_bg_estiCreateBgEstiCreateBgEsticreate_bg_esti — Erzeugt Datensatz für Hintergrundschätzer und belegt diesen mit Parametern.

Signatur

create_bg_esti(InitializeImage : : Syspar1, Syspar2, GainMode, Gain1, Gain2, AdaptMode, MinDiff, StatNum, ConfidenceC, TimeC : BgEstiHandle)

Herror T_create_bg_esti(const Hobject InitializeImage, const Htuple Syspar1, const Htuple Syspar2, const Htuple GainMode, const Htuple Gain1, const Htuple Gain2, const Htuple AdaptMode, const Htuple MinDiff, const Htuple StatNum, const Htuple ConfidenceC, const Htuple TimeC, Htuple* BgEstiHandle)

void CreateBgEsti(const HObject& InitializeImage, const HTuple& Syspar1, const HTuple& Syspar2, const HTuple& GainMode, const HTuple& Gain1, const HTuple& Gain2, const HTuple& AdaptMode, const HTuple& MinDiff, const HTuple& StatNum, const HTuple& ConfidenceC, const HTuple& TimeC, HTuple* BgEstiHandle)

HBgEsti HImage::CreateBgEsti(double Syspar1, double Syspar2, const HString& GainMode, double Gain1, double Gain2, const HString& AdaptMode, double MinDiff, Hlong StatNum, double ConfidenceC, double TimeC) const

HBgEsti HImage::CreateBgEsti(double Syspar1, double Syspar2, const char* GainMode, double Gain1, double Gain2, const char* AdaptMode, double MinDiff, Hlong StatNum, double ConfidenceC, double TimeC) const

HBgEsti HImage::CreateBgEsti(double Syspar1, double Syspar2, const wchar_t* GainMode, double Gain1, double Gain2, const wchar_t* AdaptMode, double MinDiff, Hlong StatNum, double ConfidenceC, double TimeC) const   (Nur Windows)

void HBgEsti::HBgEsti(const HImage& InitializeImage, double Syspar1, double Syspar2, const HString& GainMode, double Gain1, double Gain2, const HString& AdaptMode, double MinDiff, Hlong StatNum, double ConfidenceC, double TimeC)

void HBgEsti::HBgEsti(const HImage& InitializeImage, double Syspar1, double Syspar2, const char* GainMode, double Gain1, double Gain2, const char* AdaptMode, double MinDiff, Hlong StatNum, double ConfidenceC, double TimeC)

void HBgEsti::HBgEsti(const HImage& InitializeImage, double Syspar1, double Syspar2, const wchar_t* GainMode, double Gain1, double Gain2, const wchar_t* AdaptMode, double MinDiff, Hlong StatNum, double ConfidenceC, double TimeC)   (Nur Windows)

void HBgEsti::CreateBgEsti(const HImage& InitializeImage, double Syspar1, double Syspar2, const HString& GainMode, double Gain1, double Gain2, const HString& AdaptMode, double MinDiff, Hlong StatNum, double ConfidenceC, double TimeC)

void HBgEsti::CreateBgEsti(const HImage& InitializeImage, double Syspar1, double Syspar2, const char* GainMode, double Gain1, double Gain2, const char* AdaptMode, double MinDiff, Hlong StatNum, double ConfidenceC, double TimeC)

void HBgEsti::CreateBgEsti(const HImage& InitializeImage, double Syspar1, double Syspar2, const wchar_t* GainMode, double Gain1, double Gain2, const wchar_t* AdaptMode, double MinDiff, Hlong StatNum, double ConfidenceC, double TimeC)   (Nur Windows)

static void HOperatorSet.CreateBgEsti(HObject initializeImage, HTuple syspar1, HTuple syspar2, HTuple gainMode, HTuple gain1, HTuple gain2, HTuple adaptMode, HTuple minDiff, HTuple statNum, HTuple confidenceC, HTuple timeC, out HTuple bgEstiHandle)

HBgEsti HImage.CreateBgEsti(double syspar1, double syspar2, string gainMode, double gain1, double gain2, string adaptMode, double minDiff, int statNum, double confidenceC, double timeC)

public HBgEsti(HImage initializeImage, double syspar1, double syspar2, string gainMode, double gain1, double gain2, string adaptMode, double minDiff, int statNum, double confidenceC, double timeC)

void HBgEsti.CreateBgEsti(HImage initializeImage, double syspar1, double syspar2, string gainMode, double gain1, double gain2, string adaptMode, double minDiff, int statNum, double confidenceC, double timeC)

def create_bg_esti(initialize_image: HObject, syspar_1: float, syspar_2: float, gain_mode: str, gain_1: float, gain_2: float, adapt_mode: str, min_diff: float, stat_num: int, confidence_c: float, time_c: float) -> HHandle

Beschreibung

create_bg_esticreate_bg_estiCreateBgEstiCreateBgEstiCreateBgEsticreate_bg_esti legt einen neuen Datensatz für die Hintergrundschätzung an und belegt diesen mit den übergebenen Parametern. Zu diesem Datensatz gehört auch das geschätzte Hintergrundbild. Der erzeugte Datensatz wird automatisch der aktuelle Datensatz.

Mit InitializeImageInitializeImageInitializeImageInitializeImageinitializeImageinitialize_image wird eine Anfangsvorhersage für das Hintergrundbild festgelegt. Es ist sinnvoll eine Aufnahme der Szene ohne bewegte Objekte zu übergeben, so dass eine geringe Adaption für den Vordergrund gewählt werden kann. Falls keine Aufnahme der leeren Szene zur Verfügung steht, kann z.B. ein Grauwertbild übergeben werden. Es muss dann allerdings eine schnellere Adaption für den Vordergrund gewählt werden, da alle Bildbereiche zunächst als Vordergrund erkannt werden. Das Initialisierungsbild muss ein Bild vom Typ byte oder real sein. Ferner werden nur einkanalige Bilder verarbeitet, daher muss für jeden Kanal ein eigener Datensatz aufgebaut werden. Mit dem InitializeImageInitializeImageInitializeImageInitializeImageinitializeImageinitialize_image wird die Größe und der aktuelle Ausschnitt (Region) für alle Hintergrundschätzungen (run_bg_estirun_bg_estiRunBgEstiRunBgEstiRunBgEstirun_bg_esti), die mit diesem Datensatz durch geführt werden, festgelegt.

Syspar1Syspar1Syspar1Syspar1syspar1syspar_1 und Syspar2Syspar2Syspar2Syspar2syspar2syspar_2 sind die Parameter der Systemmatrix. Die Systemmatrix beschreibt das System der Grauwertveränderungen entsprechend der Kalmanfilter-Theorie. Im Hintergrundschätzer ist für jedes Pixel ein solches System realisiert.

Mit GainModeGainModeGainModeGainModegainModegain_mode wird bestimmt, ob ein festes Kalman-Gain für die Schätzung verwendet werden soll oder ob das Gain in Abhängigkeit der Grauwertdifferenz zwischen Vorhersage und Messwert verwendet werden soll. Wird GainModeGainModeGainModeGainModegainModegain_mode = 'fixed'"fixed""fixed""fixed""fixed""fixed" gewählt, so ist Gain1Gain1Gain1Gain1gain1gain_1 der Kalmangain, der bei der Schätzung für Pixel, die Vordergrund detektiert wurden, verwendet wird und Gain2Gain2Gain2Gain2gain2gain_2 ist der Kalmangain, der bei der Schätzung für Pixel, die als Hintergrund detektiert wurden, verwendet wird. Gain1Gain1Gain1Gain1gain1gain_1 ist sinnvollerweise kleiner als Gain2Gain2Gain2Gain2gain2gain_2, denn die vollständige Adaption des Vordergrundes sollte langsamer als die Adaption des Hintergrundes erreicht sein. Feste Gains sind sinnvoll, wenn mit dem Hintergrundschätzer Regionen mit Bewegung gefunden werden sollen und somit Gain1Gain1Gain1Gain1gain1gain_1 sehr klein oder 0.0 gewählt wurde. Gain1Gain1Gain1Gain1gain1gain_1 und Gain2Gain2Gain2Gain2gain2gain_2 sollten hier zwischen 0.0 und 1.0 gewählt werden.

Wird GainModeGainModeGainModeGainModegainModegain_mode = 'frame'"frame""frame""frame""frame""frame" gewählt, so wird für die Vordergrundschätzung, sowie für die Hintergrundschätzung eine Tabelle mit Kalmangains für alle 256 möglichen Grauwertdifferenzen bestimmt. Mit Gain1Gain1Gain1Gain1gain1gain_1 und Gain2Gain2Gain2Gain2gain2gain_2 wird dann die Anzahl der Frames angegeben, die benötigt werden, um eine Abweichung zwischen dem vorhergesagten und dem gemessenen Wert zu adaptieren. Es ist einleuchtend, dass bei gleicher Adaptionszeit (Anzahl der Frames) bei einer großen Differenz ein größeres Kalmangain benötigt wird als bei einer kleinen Differenz. Gain1Gain1Gain1Gain1gain1gain_1 ist hier sinnvollerweise größer als Gain2Gain2Gain2Gain2gain2gain_2, denn die Adaptionszeit für die Vordergrundadaption sollte länger sein, als die der Hintergrundadaption. Unterschiedliche Gains für verschiedene Grauwertdifferenzen sind sinnvoll, wenn der Hintergrundschätzer zur Aufnahme der 'leeren Szene' verwendet wird, d.h. wenn sich im Aufnahmebereich ständig Objekte bewegen und ein Bild des reinen Hintergrundes erstellt werden muss. Hierzu darf dann die Adaptionszeit für den Vordergrund (Gain1Gain1Gain1Gain1gain1gain_1) nicht zu groß gewählt werden. Gain1Gain1Gain1Gain1gain1gain_1 und Gain2Gain2Gain2Gain2gain2gain_2 sollten hier größer als 1.0 gewählt werden.

Mit AdaptModeAdaptModeAdaptModeAdaptModeadaptModeadapt_mode wird festgelegt, ob der Schwellenwert, der auf die Grauwertdifferenz zwischen Messwert und Schätzwert angewendet wird, fest ist oder entsprechend der Streuung der Grauwerte der als Hintergrund detektieten Pixel verändert wird.

Wenn AdaptModeAdaptModeAdaptModeAdaptModeadaptModeadapt_mode = 'off'"off""off""off""off""off" gewählt wird, wird mit MinDiffMinDiffMinDiffMinDiffminDiffmin_diff die absolute Schwelle angegeben.Die Parameter StatNumStatNumStatNumStatNumstatNumstat_num, ConfidenceCConfidenceCConfidenceCConfidenceCconfidenceCconfidence_c und TimeCTimeCTimeCTimeCtimeCtime_c sind hier ohne Bedeutung.

Wenn AdaptModeAdaptModeAdaptModeAdaptModeadaptModeadapt_mode = 'on'"on""on""on""on""on" gewählt wird, wird mit MinDiffMinDiffMinDiffMinDiffminDiffmin_diff eine Basisschwelle angegeben, auf die, entsprechend der statistischen Auswertung der Grauwertverteilung über die Zeit in jedem Bildpunkt, ein Offset hinzu addiert wird. Mit StatNumStatNumStatNumStatNumstatNumstat_num gibt man die Anzahl der statistischen Datensätze an, d.h. wie viele der vergangenen Frames zur Berechnung der Varianz verwendet werden sollen (FIR-Filter). Mit ConfidenceCConfidenceCConfidenceCConfidenceCconfidenceCconfidence_c gibt man die Konfidenzkonstante an, die zur Bestimmung des Konfidenzintervalls dient. Mit dem Konfidenzintervall werden die Werte für die Hintergrundstatistik nachgeführt, wenn der Bereich durch ein Objekt im Vordergrund verdeckt ist, d.h. das Pixel als Vordergrund detektiert ist. Entsprechend der Studentsche t-Verteilung ist die Konfidenzkonstante 4.30 (3.25, 2.82, 2.26) für ein 99,8% (99,0%, 98,0%, 95,0%) Konfidenzintervall. Mit TimeCTimeCTimeCTimeCtimeCtime_c gibt man eine Zeitkonstante für die e-Funktion an, mit der die Schwelle im Fall der Vordergrunddetektion angehoben werden soll. Dies bedeutet, dass die Schwelle in den Bereichen, in denen Bewegung im Vordergrund detektiert wurde, angehoben wird, damit bei anschließendem wieder freigegebenem Blick auf den Hintergrund die Toleranz (Schwelle) für Beleuchtungsänderungen gestiegen ist. Dies ist nötig, da man in der Zeit, in der der Hintergrund verdeckt ist keine Aussage über die Beleuchtungsänderungen im Hintergrund, machen kann und somit das geschätzte Hintergrundbild auch nicht adaptieren kann.

Achtung

Wenn für GainModeGainModeGainModeGainModegainModegain_mode = 'frame'"frame""frame""frame""frame""frame" gewählt wurde, kann bei der Wahl von großen Werten für Gain1Gain1Gain1Gain1gain1gain_1 oder Gain2Gain2Gain2Gain2gain2gain_2 die Laufzeit sehr groß werden, da die Werte für die Gaintabelle mit einem eindimensionalen Optimierer (binäre Suche) bestimmt werden.

Ausführungsinformationen

Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.

Parameter

InitializeImageInitializeImageInitializeImageInitializeImageinitializeImageinitialize_image (input_object)  singlechannelimage objectHImageHObjectHImageHobject (byte / real)

Initialisierungsbild.

Syspar1Syspar1Syspar1Syspar1syspar1syspar_1 (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

1. Parameter der Systemmatrix.

Defaultwert: 0.7

Wertevorschläge: 0.65, 0.7, 0.75

Typischer Wertebereich: 0.05 ≤ Syspar1 Syspar1 Syspar1 Syspar1 syspar1 syspar_1 ≤ 1.0

Empfohlene Schrittweite: 0.05

Syspar2Syspar2Syspar2Syspar2syspar2syspar_2 (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

2. Parameter der Systemmatrix.

Defaultwert: 0.7

Wertevorschläge: 0.65, 0.7, 0.75

Typischer Wertebereich: 0.05 ≤ Syspar2 Syspar2 Syspar2 Syspar2 syspar2 syspar_2 ≤ 1.0

Empfohlene Schrittweite: 0.05

GainModeGainModeGainModeGainModegainModegain_mode (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Art der Gains.

Defaultwert: 'fixed' "fixed" "fixed" "fixed" "fixed" "fixed"

Werteliste: 'fixed'"fixed""fixed""fixed""fixed""fixed", 'frame'"frame""frame""frame""frame""frame"

Gain1Gain1Gain1Gain1gain1gain_1 (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Kalmangain / Adaptionszeit für Vordergrund.

Defaultwert: 0.002

Wertevorschläge: 10.0, 20.0, 50.0, 0.1, 0.05, 0.01, 0.005, 0.001

Restriktion: 0.0 <= Gain1

Gain2Gain2Gain2Gain2gain2gain_2 (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Kalmangain / Adaptionszeit für Hintergrund.

Defaultwert: 0.02

Wertevorschläge: 2.0, 4.0, 8.0, 0.5, 0.1, 0.05, 0.01

Restriktion: 0.0 <= Gain2

AdaptModeAdaptModeAdaptModeAdaptModeadaptModeadapt_mode (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Adaption der Schwelle.

Defaultwert: 'on' "on" "on" "on" "on" "on"

Werteliste: 'off'"off""off""off""off""off", 'on'"on""on""on""on""on"

MinDiffMinDiffMinDiffMinDiffminDiffmin_diff (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Schwelle, für Vordergrund / Hintergrund.

Defaultwert: 7.0

Wertevorschläge: 3.0, 5.0, 7.0, 9.0, 11.0

Empfohlene Schrittweite: 0.2

StatNumStatNumStatNumStatNumstatNumstat_num (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Anzahl statistischer Datensätze.

Defaultwert: 10

Wertevorschläge: 5, 10, 20, 30

Typischer Wertebereich: 1 ≤ StatNum StatNum StatNum StatNum statNum stat_num

Empfohlene Schrittweite: 5

ConfidenceCConfidenceCConfidenceCConfidenceCconfidenceCconfidence_c (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Konfidenzkonstante.

Defaultwert: 3.25

Wertevorschläge: 4.30, 3.25, 2.82, 2.62

Empfohlene Schrittweite: 0.01

Restriktion: 0.0 < ConfidenceC

TimeCTimeCTimeCTimeCtimeCtime_c (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Abklingkonstante.

Defaultwert: 15.0

Wertevorschläge: 10.0, 15.0, 20.0

Empfohlene Schrittweite: 5.0

Restriktion: 0.0 < TimeC

BgEstiHandleBgEstiHandleBgEstiHandleBgEstiHandlebgEstiHandlebg_esti_handle (output_control)  bg_estimation HBgEsti, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

ID des BgEsti-Datensatzes.

Beispiel (HDevelop)

* read Init-Image:
read_image (InitImage, 'xing/init')
* initialize 1. BgEsti-Dataset with
* fixed gains and threshold adaption:
create_bg_esti(InitImage,0.7,0.7,'fixed',0.002,0.02, \
               'on',7.0,10,3.25,15.0,BgEstiHandle1)
* initialize 2. BgEsti-Dataset with
* frame orientated gains and fixed threshold
create_bg_esti(InitImage,0.7,0.7,'frame',30.0,4.0, \
               'off',9.0,10,3.25,15.0,BgEstiHandle2)

Ergebnis

create_bg_esticreate_bg_estiCreateBgEstiCreateBgEstiCreateBgEsticreate_bg_esti liefert den Wert 2 (H_MSG_TRUE), falls die Parameter korrekt sind.

Nachfolger

run_bg_estirun_bg_estiRunBgEstiRunBgEstiRunBgEstirun_bg_esti

Siehe auch

set_bg_esti_paramsset_bg_esti_paramsSetBgEstiParamsSetBgEstiParamsSetBgEstiParamsset_bg_esti_params, close_bg_esticlose_bg_estiCloseBgEstiCloseBgEstiCloseBgEsticlose_bg_esti

Modul

Foundation