Name
create_bg_esticreate_bg_estiCreateBgEsticreate_bg_estiCreateBgEstiCreateBgEsti — Erzeugt Datensatz für Hintergrundschätzer und belegt diesen mit
Parametern.
Herror create_bg_esti(const Hobject InitializeImage, double Syspar1, double Syspar2, const char* GainMode, double Gain1, double Gain2, const char* AdaptMode, double MinDiff, const Hlong StatNum, double ConfidenceC, double TimeC, Hlong* 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)
Herror create_bg_esti(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, Hlong* BgEstiHandle)
HBgEsti HImage::CreateBgEsti(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) const
void HBgEsti::CreateBgEsti(const HImage& 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)
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
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::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 HOperatorSetX.CreateBgEsti(
[in] IHUntypedObjectX* InitializeImage, [in] VARIANT Syspar1, [in] VARIANT Syspar2, [in] VARIANT GainMode, [in] VARIANT Gain1, [in] VARIANT Gain2, [in] VARIANT AdaptMode, [in] VARIANT MinDiff, [in] VARIANT StatNum, [in] VARIANT ConfidenceC, [in] VARIANT TimeC, [out] VARIANT* BgEstiHandle)
IHBgEstiX* HImageX.CreateBgEsti(
[in] double Syspar1, [in] double Syspar2, [in] BSTR GainMode, [in] double Gain1, [in] double Gain2, [in] BSTR AdaptMode, [in] double MinDiff, [in] Hlong StatNum, [in] double ConfidenceC, [in] double TimeC)
void HBgEstiX.CreateBgEsti(
[in] IHImageX* InitializeImage, [in] double Syspar1, [in] double Syspar2, [in] BSTR GainMode, [in] double Gain1, [in] double Gain2, [in] BSTR AdaptMode, [in] double MinDiff, [in] Hlong StatNum, [in] double ConfidenceC, [in] double TimeC)
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)
create_bg_esticreate_bg_estiCreateBgEsticreate_bg_estiCreateBgEstiCreateBgEsti 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 InitializeImageInitializeImageInitializeImageInitializeImageInitializeImageinitializeImage 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 Graubild ü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'"byte""byte""byte""byte""byte" oder
'real'"real""real""real""real""real" sein.
Ferner werden nur einkanalige Bilder verarbeitet, daher muss für jeden
Kanal ein eigener Datensatz aufgebaut werden.
Mit dem InitializeImageInitializeImageInitializeImageInitializeImageInitializeImageinitializeImage wird die Größe und der aktuelle
Ausschnitt (Region) für alle Hintergrundschätzungen
(run_bg_estirun_bg_estiRunBgEstirun_bg_estiRunBgEstiRunBgEsti), die mit diesem Datensatz durch geführt werden,
festgelegt.
Syspar1Syspar1Syspar1Syspar1Syspar1syspar1 und Syspar2Syspar2Syspar2Syspar2Syspar2syspar2 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 GainModeGainModeGainModeGainModeGainModegainMode 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 GainModeGainModeGainModeGainModeGainModegainMode = 'fixed'"fixed""fixed""fixed""fixed""fixed" gewählt, so ist
Gain1Gain1Gain1Gain1Gain1gain1 der Kalmangain, der bei der Schätzung für Pixel, die
Vordergrund detektiert wurden, verwendet wird und Gain2Gain2Gain2Gain2Gain2gain2 ist
der Kalmangain, der bei der Schätzung für Pixel, die als Hintergrund
detektiert wurden, verwendet wird. Gain1Gain1Gain1Gain1Gain1gain1 ist sinnvollerweise
kleiner als Gain2Gain2Gain2Gain2Gain2gain2, 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 Gain1Gain1Gain1Gain1Gain1gain1 sehr klein
oder 0.0 gewählt wurde. Gain1Gain1Gain1Gain1Gain1gain1 und Gain2Gain2Gain2Gain2Gain2gain2
sollten hier zwischen 0.0 und 1.0 gewählt werden.
Wird GainModeGainModeGainModeGainModeGainModegainMode = '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
Gain1Gain1Gain1Gain1Gain1gain1 und Gain2Gain2Gain2Gain2Gain2gain2 wird dann die Anzahl der Frames
angegeben, die benötigt werden, um eine Abweichung zwischen Vorhersagewert und
Messwert 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. Gain1Gain1Gain1Gain1Gain1gain1 ist hier
sinnvollerweise größer als Gain2Gain2Gain2Gain2Gain2gain2, 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 (Gain1Gain1Gain1Gain1Gain1gain1) nicht zu groß
gewählt werden. Gain1Gain1Gain1Gain1Gain1gain1 und Gain2Gain2Gain2Gain2Gain2gain2 sollten hier größer
als 1.0 gewählt werden.
Mit AdaptModeAdaptModeAdaptModeAdaptModeAdaptModeadaptMode 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 AdaptModeAdaptModeAdaptModeAdaptModeAdaptModeadaptMode = 'off'"off""off""off""off""off" gewählt wird, wird mit
MinDiffMinDiffMinDiffMinDiffMinDiffminDiff die absolute Schwelle angegeben.Die Parameter
StatNumStatNumStatNumStatNumStatNumstatNum, ConfidenceCConfidenceCConfidenceCConfidenceCConfidenceCconfidenceC und TimeCTimeCTimeCTimeCTimeCtimeC sind hier
ohne Bedeutung.
Wenn AdaptModeAdaptModeAdaptModeAdaptModeAdaptModeadaptMode = 'on'"on""on""on""on""on" gewählt wird, wird mit
MinDiffMinDiffMinDiffMinDiffMinDiffminDiff eine Basisschwelle angegeben, auf die, entsprechend der
statistischen Auswertung der Grauwertverteilung über die Zeit in jedem
Bildpunkt, ein Offset hinzu addiert wird. Mit StatNumStatNumStatNumStatNumStatNumstatNum
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 ConfidenceCConfidenceCConfidenceCConfidenceCConfidenceCconfidenceC gibt man die Konfidenzkonstante an,
die zur Bestimmung des Konfidenzintervalles 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
Students t-Verteilung ist die Konfidenzkonstante 4.30
(3.25, 2.82, 2.26) für ein
'99,8%'"99,8%""99,8%""99,8%""99,8%""99,8%" ('99,0%'"99,0%""99,0%""99,0%""99,0%""99,0%", '98,0%'"98,0%""98,0%""98,0%""98,0%""98,0%", '95,0%'"95,0%""95,0%""95,0%""95,0%""95,0%")
Konfidenzintervall. Mit TimeCTimeCTimeCTimeCTimeCtimeC 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.
Wenn für GainModeGainModeGainModeGainModeGainModegainMode = 'frame'"frame""frame""frame""frame""frame" gewählt wurde, kann bei
der Wahl von großen Werten für Gain1Gain1Gain1Gain1Gain1gain1 oder Gain2Gain2Gain2Gain2Gain2gain2 die
Laufzeit sehr groß werden, da die Werte für die Gaintabelle mit einem
eindimensionalen Optimierer (binäre Suche) bestimmt werden.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
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.
1. Parameter der Systemmatrix.
Defaultwert: 0.7
Wertevorschläge: 0.65, 0.7, 0.75
Typischer Wertebereich: 0.05
≤
Syspar1
Syspar1
Syspar1
Syspar1
Syspar1
syspar1
≤
1.0
Empfohlene Schrittweite: 0.05
2. Parameter der Systemmatrix.
Defaultwert: 0.7
Wertevorschläge: 0.65, 0.7, 0.75
Typischer Wertebereich: 0.05
≤
Syspar2
Syspar2
Syspar2
Syspar2
Syspar2
syspar2
≤
1.0
Empfohlene Schrittweite: 0.05
Art der Gains.
Defaultwert:
'fixed'
"fixed"
"fixed"
"fixed"
"fixed"
"fixed"
Werteliste: 'fixed'"fixed""fixed""fixed""fixed""fixed", 'frame'"frame""frame""frame""frame""frame"
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
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
Adaption der Schwelle.
Defaultwert:
'on'
"on"
"on"
"on"
"on"
"on"
Werteliste: 'off'"off""off""off""off""off", 'on'"on""on""on""on""on"
Schwelle, für Vordergrund / Hintergrund.
Defaultwert: 7.0
Wertevorschläge: 3.0, 5.0, 7.0, 9.0, 11.0
Empfohlene Schrittweite: 0.2
Anzahl statistischer Datensätze.
Defaultwert: 10
Wertevorschläge: 5, 10, 20, 30
Typischer Wertebereich: 1
≤
StatNum
StatNum
StatNum
StatNum
StatNum
statNum
Empfohlene Schrittweite: 5
Konfidenzkonstante.
Defaultwert: 3.25
Wertevorschläge: 4.30, 3.25, 2.82, 2.62
Empfohlene Schrittweite: 0.01
Restriktion: 0.0 < ConfidenceC
Abklingkonstante.
Defaultwert: 15.0
Wertevorschläge: 10.0, 15.0, 20.0
Empfohlene Schrittweite: 5.0
Restriktion: 0.0 < TimeC
ID des BgEsti-Datensatzes.
* 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)
Hlong Handle1, Handle2;
/* 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:&BgEstiHandle) ;
/* 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) ;
* 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)
* 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)
* 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)
* 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)
create_bg_esticreate_bg_estiCreateBgEsticreate_bg_estiCreateBgEstiCreateBgEsti liefert den Wert 2 (H_MSG_TRUE), falls die Parameter
korrekt sind.
run_bg_estirun_bg_estiRunBgEstirun_bg_estiRunBgEstiRunBgEsti
set_bg_esti_paramsset_bg_esti_paramsSetBgEstiParamsset_bg_esti_paramsSetBgEstiParamsSetBgEstiParams,
close_bg_esticlose_bg_estiCloseBgEsticlose_bg_estiCloseBgEstiCloseBgEsti
Foundation