KlassenKlassenKlassenKlassen | | | | Operatoren

run_bg_estirun_bg_estiRunBgEstirun_bg_estiRunBgEstiRunBgEsti (Operator)

Name

run_bg_estirun_bg_estiRunBgEstirun_bg_estiRunBgEstiRunBgEsti — Schätzt den Hintergrund und liefert Vordergrund-Region.

Signatur

run_bg_esti(PresentImage : ForegroundRegion : BgEstiHandle : )

Herror run_bg_esti(const Hobject PresentImage, Hobject* ForegroundRegion, const Hlong BgEstiHandle)

Herror T_run_bg_esti(const Hobject PresentImage, Hobject* ForegroundRegion, const Htuple BgEstiHandle)

Herror run_bg_esti(Hobject PresentImage, Hobject* ForegroundRegion, const HTuple& BgEstiHandle)

HRegion HImage::RunBgEsti(const HBgEsti& BgEstiHandle) const

HRegion HBgEsti::RunBgEsti(const HImage& PresentImage) const

void RunBgEsti(const HObject& PresentImage, HObject* ForegroundRegion, const HTuple& BgEstiHandle)

HRegion HImage::RunBgEsti(const HBgEsti& BgEstiHandle) const

HRegion HBgEsti::RunBgEsti(const HImage& PresentImage) const

void HOperatorSetX.RunBgEsti(
[in] IHUntypedObjectX* PresentImage, [out] IHUntypedObjectX*ForegroundRegion, [in] VARIANT BgEstiHandle)

IHRegionX* HImageX.RunBgEsti([in] IHBgEstiX* BgEstiHandle)

IHRegionX* HBgEstiX.RunBgEsti([in] IHImageX* PresentImage)

static void HOperatorSet.RunBgEsti(HObject presentImage, out HObject foregroundRegion, HTuple bgEstiHandle)

HRegion HImage.RunBgEsti(HBgEsti bgEstiHandle)

HRegion HBgEsti.RunBgEsti(HImage presentImage)

Beschreibung

run_bg_estirun_bg_estiRunBgEstirun_bg_estiRunBgEstiRunBgEsti adaptiert mit einem Kalman-Filter das im angegebenen Datensatz liegende Hintergrundbild und liefert eine Region des Vordergrundes (Bereich bewegter Objekte) zurück.

Es wird für jedes Pixel anhand der Daten im aktuellen Datensatz eine Vorhersage des Grauwertes bestimmt und diese dann mit dem Wert im aktuellen Bild (PresentImagePresentImagePresentImagePresentImagePresentImagepresentImage) verglichen. Mit dem Schwellenwert (fest oder adaptiv, siehe create_bg_esticreate_bg_estiCreateBgEsticreate_bg_estiCreateBgEstiCreateBgEsti) werden die Pixel in Vordergrund oder Hintergrund klassifiziert.

Es werden nur einkanalige Bilder verarbeitet, daher muss der Hintergrund für jeden Kanal einzeln adaptiert werden. Hierzu müssen mehrere Datensätze mit create_bg_esticreate_bg_estiCreateBgEsticreate_bg_estiCreateBgEstiCreateBgEsti aufgebaut werden.

Empfehlenswert ist es, den Hintergrundschätzer nur auf der Hälfte oder sogar nur auf einem Viertel der Originalbildgröße anzuwenden. Hierzu muss das Originalbild zunächst mit zoom_image_factorzoom_image_factorZoomImageFactorzoom_image_factorZoomImageFactorZoomImageFactor verkleinert werden (dies gilt auch für das Initialisierungsbild bei create_bg_esticreate_bg_estiCreateBgEsticreate_bg_estiCreateBgEstiCreateBgEsti). Der Vorteil ist auf der einen Seite die reduzierte Laufzeit und auf der anderen Seite ist das Bild durch die Verkleinerung Tiefpass-gefiltert. Dadurch sind hochfrequente Störungen, wie Kamerarauschen herausgefiltert und stören somit auch nicht bei der Adaption des Hintergrundbildes. Es ist somit möglich die Schwelle (siehe create_bg_esticreate_bg_estiCreateBgEsticreate_bg_estiCreateBgEstiCreateBgEsti) geringer zu wählen. Die von run_bg_estirun_bg_estiRunBgEstirun_bg_estiRunBgEstiRunBgEsti zurückgelieferte ForegroundRegionForegroundRegionForegroundRegionForegroundRegionForegroundRegionforegroundRegion muss dann natürlich für die Auswertung (Bereiche mit Bewegung) mit zoom_regionzoom_regionZoomRegionzoom_regionZoomRegionZoomRegion wieder um den gleichen Faktor vergrößert werden.

Achtung

Das übergebene Bild (PresentImagePresentImagePresentImagePresentImagePresentImagepresentImage) muss von gleichem Typ und gleicher Größe sein, wie das im aktuellen Datensatz abgelegte Hintergrundbild (festgelegt mit create_bg_esticreate_bg_estiCreateBgEsticreate_bg_estiCreateBgEstiCreateBgEsti).

Parallelisierung

Parameter

PresentImagePresentImagePresentImagePresentImagePresentImagepresentImage (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte / real)

Aktuelles Bild.

ForegroundRegionForegroundRegionForegroundRegionForegroundRegionForegroundRegionforegroundRegion (output_object)  region objectHRegionHRegionHRegionHRegionXHobject *

Region der als Vordergrund detektierten Bereiche.

BgEstiHandleBgEstiHandleBgEstiHandleBgEstiHandleBgEstiHandlebgEstiHandle (input_control)  bg_estimation HBgEsti, HTupleHTupleHBgEsti, HTupleHBgEstiX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

ID des BgEsti-Datensatzes.

Beispiel (HDevelop)

* Read image for initialization:
read_image(InitImage,'xing/init')
* Initialize 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)
* Read the next image in sequence:
read_image(Image0,'xing/xing000')
* Estimate the background:
run_bg_esti(Image0,ForegroundRegion1,BgEstiHandle)
* Display the foreground region:
dev_display (ForegroundRegion1)
* Read the next image in sequence:
read_image(Image1,'xing/xing001')
* Estimate the background:
run_bg_esti(Image1,ForegroundRegion2,BgEstiHandle)
* Display the foreground region:
dev_display (ForegroundRegion2)
* etc.

Beispiel (C)

/* Read image for initialization: */
read_image(&InitImage,"xing/init") ;
/* Initialize BgEsti-Dataset with
   fixed gains and threshold adaption */
create_bg_esti(InitImage,0.7,0.7,"fixed",0.002,0.02,
               "on",7,10,3.25,15.0,&BgEstiHandle) ;
/* Read the next image in sequence: */
read_image(&Image0,"xing/xing000") ;
/* Estimate the Background: */
run_bg_esti(Image0,&Region1,BgEstiHandle) ;
/* Display the foreground region: */
disp_region(Region1,WindowHandle) ;
/* Read the next image in sequence: */
read_image(&Image1,"xing/xing001") ;
/* Estimate the Background: */
run_bg_esti(Image1,&Region2,BgEstiHandle) ;
/* Display the foreground region: */
disp_region(Region2,WindowHandle) ;
/* etc. */

Beispiel (HDevelop)

* Read image for initialization:
read_image(InitImage,'xing/init')
* Initialize 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)
* Read the next image in sequence:
read_image(Image0,'xing/xing000')
* Estimate the background:
run_bg_esti(Image0,ForegroundRegion1,BgEstiHandle)
* Display the foreground region:
dev_display (ForegroundRegion1)
* Read the next image in sequence:
read_image(Image1,'xing/xing001')
* Estimate the background:
run_bg_esti(Image1,ForegroundRegion2,BgEstiHandle)
* Display the foreground region:
dev_display (ForegroundRegion2)
* etc.

Beispiel (HDevelop)

* Read image for initialization:
read_image(InitImage,'xing/init')
* Initialize 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)
* Read the next image in sequence:
read_image(Image0,'xing/xing000')
* Estimate the background:
run_bg_esti(Image0,ForegroundRegion1,BgEstiHandle)
* Display the foreground region:
dev_display (ForegroundRegion1)
* Read the next image in sequence:
read_image(Image1,'xing/xing001')
* Estimate the background:
run_bg_esti(Image1,ForegroundRegion2,BgEstiHandle)
* Display the foreground region:
dev_display (ForegroundRegion2)
* etc.

Beispiel (HDevelop)

* Read image for initialization:
read_image(InitImage,'xing/init')
* Initialize 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)
* Read the next image in sequence:
read_image(Image0,'xing/xing000')
* Estimate the background:
run_bg_esti(Image0,ForegroundRegion1,BgEstiHandle)
* Display the foreground region:
dev_display (ForegroundRegion1)
* Read the next image in sequence:
read_image(Image1,'xing/xing001')
* Estimate the background:
run_bg_esti(Image1,ForegroundRegion2,BgEstiHandle)
* Display the foreground region:
dev_display (ForegroundRegion2)
* etc.

Beispiel (HDevelop)

* Read image for initialization:
read_image(InitImage,'xing/init')
* Initialize 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)
* Read the next image in sequence:
read_image(Image0,'xing/xing000')
* Estimate the background:
run_bg_esti(Image0,ForegroundRegion1,BgEstiHandle)
* Display the foreground region:
dev_display (ForegroundRegion1)
* Read the next image in sequence:
read_image(Image1,'xing/xing001')
* Estimate the background:
run_bg_esti(Image1,ForegroundRegion2,BgEstiHandle)
* Display the foreground region:
dev_display (ForegroundRegion2)
* etc.

Ergebnis

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

Vorgänger

create_bg_esticreate_bg_estiCreateBgEsticreate_bg_estiCreateBgEstiCreateBgEsti, update_bg_estiupdate_bg_estiUpdateBgEstiupdate_bg_estiUpdateBgEstiUpdateBgEsti

Nachfolger

give_bg_estigive_bg_estiGiveBgEstigive_bg_estiGiveBgEstiGiveBgEsti, update_bg_estiupdate_bg_estiUpdateBgEstiupdate_bg_estiUpdateBgEstiUpdateBgEsti

Siehe auch

set_bg_esti_paramsset_bg_esti_paramsSetBgEstiParamsset_bg_esti_paramsSetBgEstiParamsSetBgEstiParams, create_bg_esticreate_bg_estiCreateBgEsticreate_bg_estiCreateBgEstiCreateBgEsti, update_bg_estiupdate_bg_estiUpdateBgEstiupdate_bg_estiUpdateBgEstiUpdateBgEsti, give_bg_estigive_bg_estiGiveBgEstigive_bg_estiGiveBgEstiGiveBgEsti

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren