Name
create_bg_esticreate_bg_estiCreateBgEsticreate_bg_estiCreateBgEstiCreateBgEsti — Generate and initialize a data set for the background estimation.
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 creates a new data set for the background
estimation and initializes it with the appropriate parameters. The
estimated background image is part of this data set. The newly
created set automatically becomes the current set.
InitializeImageInitializeImageInitializeImageInitializeImageInitializeImageinitializeImage is used as an initial prediction for the
background image. For a good prediction an image of the
observed scene without moving objects should be passed in
InitializeImageInitializeImageInitializeImageInitializeImageInitializeImageinitializeImage. That way the foreground adaptation rate
can be held low. If there is no empty scene image available, a
homogeneous gray image can be used instead. In that case the
adaptation rate for the foreground image must be raised, because
initially most of the image will be detected as foreground. The
initialization image must to be of type 'byte'"byte""byte""byte""byte""byte" or
'real'"real""real""real""real""real".
Because of processing single-channel images, data sets must be created for
every channel. Size and region of InitializeImageInitializeImageInitializeImageInitializeImageInitializeImageinitializeImage
determines size and region for all background estimations
(run_bg_estirun_bg_estiRunBgEstirun_bg_estiRunBgEstiRunBgEsti) that are performed with this data set.
Syspar1Syspar1Syspar1Syspar1Syspar1syspar1 and Syspar2Syspar2Syspar2Syspar2Syspar2syspar2 are the parameters of the
Kalman system matrix. The system matrix describes the system of the
gray value changes according to Kalman filter theory. The background
estimator implements a different system for each pixel.
GainModeGainModeGainModeGainModeGainModegainMode defines whether a fixed Kalman gain should be
used for the estimation or whether the gain should adapt itself
depending on the difference between estimation and actual value. If
GainModeGainModeGainModeGainModeGainModegainMode is set to 'fixed'"fixed""fixed""fixed""fixed""fixed", then
Gain1Gain1Gain1Gain1Gain1gain1 is used as Kalman gain for pixels predicted as
foreground and Gain2Gain2Gain2Gain2Gain2gain2 as gain for pixels predicted as
background. Gain1Gain1Gain1Gain1Gain1gain1 should be smaller than
Gain2Gain2Gain2Gain2Gain2gain2, because adaptation of the foreground should be
slower than adaptation of the background. Both Gain1Gain1Gain1Gain1Gain1gain1 and
Gain2Gain2Gain2Gain2Gain2gain2 should be smaller than 1.0.
If GainModeGainModeGainModeGainModeGainModegainMode is set to 'frame'"frame""frame""frame""frame""frame", then tables for
foreground and background estimation are computed containing
Kalman gains for all the 256 possible grayvalue
changes. Gain1Gain1Gain1Gain1Gain1gain1 and Gain2Gain2Gain2Gain2Gain2gain2 then denote the
number of frames necessary to adapt the difference between estimated
value and actual value. So with a fixed time for adaptation (i.e. number
of frames) the needed Kalman gain grows with the grayvalue
difference. Gain1Gain1Gain1Gain1Gain1gain1 should therefore be larger than
Gain2Gain2Gain2Gain2Gain2gain2. Different gains for different grayvalue
differences are useful if the background estimator is used for
generating an 'empty' scene assuming that there are always moving
objects in the observated area. In that case the adaptation time for
foreground adaptation (Gain1Gain1Gain1Gain1Gain1gain1) must not be too
big. Gain1Gain1Gain1Gain1Gain1gain1 and Gain2Gain2Gain2Gain2Gain2gain2 should be bigger than
1.0.
AdaptModeAdaptModeAdaptModeAdaptModeAdaptModeadaptMode denotes, whether the foreground/background
decision threshold applied to the grayvalue difference between
estimation and actual value is fixed or whether it adapts itself
depending on the grayvalue deviation of the background pixels.
If AdaptModeAdaptModeAdaptModeAdaptModeAdaptModeadaptMode is set to 'off'"off""off""off""off""off", the parameter
MinDiffMinDiffMinDiffMinDiffMinDiffminDiff denotes a fixed threshold. The parameters
StatNumStatNumStatNumStatNumStatNumstatNum, ConfidenceCConfidenceCConfidenceCConfidenceCConfidenceCconfidenceC and TimeCTimeCTimeCTimeCTimeCtimeC are
meaningless in this case.
If AdaptModeAdaptModeAdaptModeAdaptModeAdaptModeadaptMode is set to 'on'"on""on""on""on""on", then
MinDiffMinDiffMinDiffMinDiffMinDiffminDiff is interpreted as a base threshold. For each
pixel an offset is added to this threshold depending on the
statistical evaluation of the pixel value over
time. StatNumStatNumStatNumStatNumStatNumstatNum holds the number of data sets (past frames)
that are used for computing the grayvalue variance
(FIR-Filter). ConfidenceCConfidenceCConfidenceCConfidenceCConfidenceCconfidenceC is used to determine the
confidence interval.
The confidence interval determines the values of the background
statistics if background pixels are hidden by a foreground object
and thus are detected as foreground. According to the student
t-distribution the confidence constant is 4.30
(3.25, 2.82, 2.26) for a confidence
interval of '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%"). TimeCTimeCTimeCTimeCTimeCtimeC holds a time constant for the
exp-function that raises the threshold in case of a foreground
estimation of the pixel. That means, the threshold is raised in
regions where movement is detected in the foreground. That way larger
changes in illumination are tolerated if the background becomes
visible again. The main reason for increasing this tolerance is the
impossibility for a prediction of illumination changes while the
background is hidden. Therefore no adaptation of the estimated
background image is possible.
If GainModeGainModeGainModeGainModeGainModegainMode was set to 'frame'"frame""frame""frame""frame""frame", the run-time
can be extremely long for large values of Gain1Gain1Gain1Gain1Gain1gain1 or
Gain2Gain2Gain2Gain2Gain2gain2, because the values for the gains' table are
determined by a simple binary search.
- Multithreading type: exclusive (runs in parallel only with independent operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
This operator returns a handle. Note that the state of an instance of this handle type may be changed by specific operators even though the handle is used as an input parameter by those operators.
1. system matrix parameter.
Default value: 0.7
Suggested values: 0.65, 0.7, 0.75
Typical range of values: 0.05
≤
Syspar1
Syspar1
Syspar1
Syspar1
Syspar1
syspar1
≤
1.0
Recommended increment: 0.05
2. system matrix parameter.
Default value: 0.7
Suggested values: 0.65, 0.7, 0.75
Typical range of values: 0.05
≤
Syspar2
Syspar2
Syspar2
Syspar2
Syspar2
syspar2
≤
1.0
Recommended increment: 0.05
Gain type.
Default value:
'fixed'
"fixed"
"fixed"
"fixed"
"fixed"
"fixed"
List of values: 'fixed'"fixed""fixed""fixed""fixed""fixed", 'frame'"frame""frame""frame""frame""frame"
Kalman gain / foreground adaptation time.
Default value: 0.002
Suggested values: 10.0, 20.0, 50.0, 0.1, 0.05, 0.01, 0.005, 0.001
Restriction: 0.0 <= Gain1
Kalman gain / background adaptation time.
Default value: 0.02
Suggested values: 2.0, 4.0, 8.0, 0.5, 0.1, 0.05, 0.01
Restriction: 0.0 <= Gain2
Threshold adaptation.
Default value:
'on'
"on"
"on"
"on"
"on"
"on"
List of values: 'off'"off""off""off""off""off", 'on'"on""on""on""on""on"
Foreground/background threshold.
Default value: 7.0
Suggested values: 3.0, 5.0, 7.0, 9.0, 11.0
Recommended increment: 0.2
Number of statistic data sets.
Default value: 10
Suggested values: 5, 10, 20, 30
Typical range of values: 1
≤
StatNum
StatNum
StatNum
StatNum
StatNum
statNum
Recommended increment: 5
Confidence constant.
Default value: 3.25
Suggested values: 4.30, 3.25, 2.82, 2.62
Recommended increment: 0.01
Restriction: 0.0 < ConfidenceC
Constant for decay time.
Default value: 15.0
Suggested values: 10.0, 15.0, 20.0
Recommended increment: 5.0
Restriction: 0.0 < TimeC
ID of the BgEsti data set.
* read Init-Image:
read_image(InitImage,'Init_Image')
* 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,"Init_Image") ;
/* 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,'Init_Image')
* 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,'Init_Image')
* 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,'Init_Image')
* 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,'Init_Image')
* 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 returns 2 (H_MSG_TRUE) if all parameters are
correct.
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