Lokala binära mönster

Lokala binära mönster ( LBP ) är en typ av visuell deskriptor som används för klassificering i datorseende . LBP är det speciella fallet med Texture Spectrum-modellen som föreslogs 1990. LBP beskrevs första gången 1994. Det har sedan dess visat sig vara en kraftfull funktion för texturklassificering; det har vidare fastställts att när LBP kombineras med Histogram of oriented gradients (HOG)-deskriptorn, förbättrar det detekteringsprestandan avsevärt på vissa datamängder. En jämförelse av flera förbättringar av den ursprungliga LBP inom området bakgrundssubtraktion gjordes 2015 av Silva et al. En fullständig översikt över de olika versionerna av LBP finns i Bouwmans et al.

Begrepp

Tre grannskapsexempel som används för att definiera en textur och beräkna ett lokalt binärt mönster (LBP)

LBP-funktionsvektorn, i sin enklaste form, skapas på följande sätt:

  • Dela upp det undersökta fönstret i celler (t.ex. 16x16 pixlar för varje cell).
  • För varje pixel i en cell, jämför pixeln med var och en av dess 8 grannar (överst till vänster, i mitten till vänster, till vänster, längst upp till höger, etc.). Följ pixlarna längs en cirkel, dvs medurs eller moturs.
  • Om mittpixelns värde är större än grannens värde, skriv "0". Skriv annars "1". Detta ger ett 8-siffrigt binärt tal (som vanligtvis omvandlas till decimal för enkelhetens skull).
  • Beräkna histogrammet , över cellen, för frekvensen av varje "nummer" som förekommer (dvs varje kombination av vilka pixlar som är mindre och vilka som är större än mitten). Detta histogram kan ses som en 256-dimensionell funktionsvektor .
  • Alternativt normalisera histogrammet.
  • Sammanfoga (normaliserade) histogram av alla celler. Detta ger en funktionsvektor för hela fönstret.

Funktionsvektorn kan nu bearbetas med stödvektormaskinen , extrema inlärningsmaskiner eller någon annan maskininlärningsalgoritm för att klassificera bilder. Sådana klassificerare kan användas för ansiktsigenkänning eller texturanalys.

En användbar förlängning av den ursprungliga operatorn är det så kallade enhetliga mönstret, som kan användas för att minska längden på egenskapsvektorn och implementera en enkel rotationsinvariant deskriptor. Denna idé motiveras av det faktum att vissa binära mönster förekommer vanligare i texturbilder än andra. Ett lokalt binärt mönster kallas enhetligt om det binära mönstret innehåller högst två 0-1 eller 1-0 övergångar. Till exempel är 00010000 (2 övergångar) ett enhetligt mönster, men 01010100 (6 övergångar) är det inte. Vid beräkningen av LBP-histogrammet har histogrammet ett separat fack för varje enhetligt mönster, och alla olikformiga mönster tilldelas till ett enda fack. Med hjälp av enhetliga mönster minskar längden på egenskapsvektorn för en enskild cell från 256 till 59. De 58 enhetliga binära mönstren motsvarar heltalen 0, 1, 2, 3, 4, 6, 7, 8, 12, 14, 15 , 16, 24, 28, 30, 31, 32, 48, 56, 60, 62, 63, 64, 96, 112, 120, 124, 126, 127, 128, 129, 131, 131, 131, 131, 131, 131, 96 , 192, 193, 195, 199, 207, 223, 224, 225, 227, 231, 239, 240, 241, 243, 247, 248, 249.

Tillägg

  • Överfullständiga lokala binära mönster (OCLBP): OCLBP är en variant av LBP som har visat sig förbättra den övergripande prestandan vid ansiktsverifiering. Till skillnad från LBP, använder OCLBP överlappning till intilliggande block. Formellt betecknas konfigurationen av OCLBP som S: (a, b, v, h, p, r): en bild är uppdelad i a×b-block med vertikal överlappning av v och horisontell överlappning av h, och sedan enhetliga mönster LBP (u2,p,r) extraheras från alla block. Dessutom är OCLBP sammansatt av flera olika konfigurationer. Till exempel använde författarna tre konfigurationer i sin originaluppsats: S : (10,10,12,12,8,1),(14,14,12,12,8,2),(18,18,12) ,12,8,3). De tre konfigurationerna tar hänsyn till tre blockstorlekar: 10×10, 14×14, 18×18 och halva överlappningshastigheter längs vertikala och horisontella riktningar. Dessa konfigurationer är sammanlänkade för att bilda en 40877 dimensionell funktionsvektor för en bild med storleken 150x80.
  • Transition Local Binary Patterns(tLBP): binärt värde för övergångskodad LBP är sammansatt av grannpixeljämförelser medurs för alla pixlar utom den centrala.
  • Riktningskodade lokala binära mönster (dLBP): dLBP kodar intensitetsvariationen längs de fyra grundläggande riktningarna genom den centrala pixeln i två bitar.
  • Multi-block LBP: bilden är uppdelad i många block, ett LBP-histogram beräknas för varje block och sammanfogas som det slutliga histogrammet.
  • Volym lokalt binärt mönster (VLBP): VLBP ser på dynamisk textur som en uppsättning volymer i (X,Y,T) rymden där X och Y anger de rumsliga koordinaterna och T anger ramindexet. Närheten till en pixel definieras således i tredimensionellt rymd, och volymtextoner kan extraheras till histogram.
  • RGB-LBP: Denna operator erhålls genom att beräkna LBP över alla tre kanalerna i RGB-färgrymden oberoende och sedan sammanfoga resultaten.

Genomföranden

  • CMV , inkluderar den allmänna LBP- implementeringen och många ytterligare tillägg över LBP-histogrammet i MATLAB.
  • Python mahotas , ett datorvisionspaket med öppen källkod som inkluderar en implementering av LBP:er.
  • OpenCV :s Cascade Classifiers stöder LBP:er från och med version 2.
  • VLFeat , ett datorvisionsbibliotek med öppen källkod i C (med bindningar till flera språk inklusive MATLAB) har en implementering .
  • LBPLibrary är en samling av elva lokala binära mönster (LBP) algoritmer utvecklade för bakgrundssubtraktionsproblem. Algoritmerna implementerades i C++ baserat på OpenCV. En CMake-fil tillhandahålls och biblioteket är kompatibelt med Windows, Linux och Mac OS X. Biblioteket testades framgångsrikt med OpenCV 2.4.10.
  • BGSLibrary inkluderar den ursprungliga LBP-implementationen för rörelsedetektering samt en ny LBP-operatörsvariant kombinerat med Markov Random Fields med förbättrade igenkänningshastigheter och robusthet.
  • dlib , ett C++-bibliotek med öppen källkod: implementering .
  • scikit-image , ett Python-bibliotek med öppen källkod. Tillhandahåller en c-baserad python- implementering för LBP

Se även