ViBe
ViBe är en bakgrundssubtraktionsalgoritm som presenterades på IEEE ICASSP 2009-konferensen och förfinades i senare publikationer . Mer exakt är det en mjukvarumodul för att extrahera bakgrundsinformation från rörliga bilder. Den har utvecklats av Oliver Barnich och Marc Van Droogenbroeck från Montefiore Institute , University of Liège, Belgien.
ViBe är patenterat: patentet täcker olika aspekter som stokastisk ersättning, rumslig diffusion och icke-kronologisk hantering.
ViBe är skrivet i programmeringsspråket C och har implementerats på CPU , GPU och FPGA .
Teknisk beskrivning
Pixelmodell och klassificeringsprocess
Många avancerade tekniker används för att ge en uppskattning av den tidsmässiga sannolikhetstäthetsfunktionen ( pdf) för en pixel x. ViBes tillvägagångssätt är annorlunda, eftersom det tvingar inflytandet av ett värde i det polykromatiska rummet att begränsas till det lokala grannskapet. I praktiken uppskattar ViBe inte pdf:en, utan använder en uppsättning tidigare observerade exempelvärden som en pixelmodell. För att klassificera ett värde pt(x) jämförs det med dess närmaste värden bland uppsättningen av sampel.
Modelluppdatering: Exempelvärdens livslängdspolicy
ViBe säkerställer en jämn exponentiellt avtagande livslängd för provvärdena som utgör pixelmodellerna. Detta gör att ViBe framgångsrikt kan hantera samtidiga händelser med en enda modell av rimlig storlek för varje pixel. Detta uppnås genom att slumpmässigt välja vilket prov som ska ersättas vid uppdatering av en pixelmodell. När provet som ska kasseras har valts ersätter det nya värdet det kasserade provet. Pixelmodellen som skulle bli resultatet av uppdateringen av en given pixelmodell med ett givet pixelsampel kan inte förutsägas eftersom värdet som ska kasseras väljs slumpmässigt.
Modelluppdatering: Spatial Consistency
För att säkerställa den rumsliga konsistensen av hela bildmodellen och hantera praktiska situationer som små kamerarörelser eller långsamt utvecklande bakgrundsobjekt, använder ViBe en teknik som liknar den som utvecklats för uppdateringsprocessen där den väljer slumpmässigt och uppdaterar en pixelmodell i området för den aktuella pixeln. Genom att beteckna NG(x) respektive p(x) den rumsliga grannskapet för en pixel x och dess värde, och anta att det beslutades att uppdatera uppsättningen av sampel av x genom att infoga p(x), så använder ViBe också detta värde p(x) för att uppdatera uppsättningen av sampel av en av pixlarna i grannskapet NG(x), vald slumpmässigt. Som ett resultat kan ViBe producera rumsligt koherenta resultat direkt utan användning av någon efterbearbetningsmetod.
Modellinitiering
Även om modellen lätt kan återhämta sig från vilken typ av initiering som helst, till exempel genom att välja en uppsättning slumpmässiga värden, är det bekvämt att få en korrekt bakgrundsuppskattning så snart som möjligt. Helst skulle en segmenteringsalgoritm vilja kunna segmentera videosekvenserna med början från den andra bilden, varvid den första bilden används för att initiera modellen. Eftersom ingen tidsinformation är tillgänglig före den andra bildrutan, fyller ViBe pixelmodellerna med värden som finns i den rumsliga grannskapet för varje pixel; Närmare bestämt initialiserar den bakgrundsmodellen med värden tagna slumpmässigt i varje pixelområde i den första bildrutan. Bakgrundsuppskattningen är därför giltig från den andra bildrutan i en videosekvens.