Semi-global matchning

Semi-global matchning ( SGM ) är en datorseende algoritm för uppskattning av en tät olikhetskarta från ett likriktat stereobildspar , introducerad 2005 av Heiko Hirschmüller när han arbetade på German Aerospace Center . Med tanke på dess förutsägbara körtid, dess gynnsamma avvägning mellan kvalitet på resultaten och beräkningstid, och dess lämplighet för snabb parallell implementering i ASIC eller FPGA , har den stött på bred användning i realtids stereovision-applikationer som robotik och avancerad drivrutin assistanssystem .

Problem

Pixelvis stereomatchning gör det möjligt att utföra realtidsberäkning av disparitetskartor genom att mäta likheten mellan varje pixel i en stereobild och varje pixel inom en delmängd i den andra stereobilden. Givet ett likriktat stereobildspar, för en pixel med koordinater väljs uppsättningen pixlar i den andra bilden vanligtvis som , där är en maximal tillåten disparitetsförskjutning.

En enkel sökning efter den bäst matchande pixeln ger många falska matchningar, och detta problem kan mildras med tillägget av en regleringsterm som straffar hopp i olikhet mellan intilliggande pixlar, med en kostnadsfunktion i formen

där är den pixelmässiga skillnadskostnaden vid pixel med disparitet , och är regulariseringskostnaden mellan pixlar och med dispariteter respektive , för alla par av närliggande pixlar . Sådana restriktioner kan effektivt upprätthållas på en per-scanline-basis genom att använda dynamisk programmering (t.ex. Viterbi-algoritmen ), men en sådan begränsning kan fortfarande introducera streckartefakter i djupkartan, eftersom liten eller ingen regularisering utförs över skanningslinjer.

En möjlig lösning är att utföra global optimering i 2D, vilket dock är ett NP-komplett problem i det allmänna fallet. För vissa familjer av kostnadsfunktioner (t.ex. submodulära funktioner ) kan en lösning med starka optimalitetsegenskaper hittas i polynomtid med användning av grafsnittsoptimering , men sådana globala metoder är i allmänhet för dyra för realtidsbearbetning.

Algoritm

Illustration av kostnadsackumuleringsmönstret vid beräkning av två-pass SGM med åtta riktningar.

Tanken bakom SGM är att utföra linjeoptimering längs flera riktningar och beräkna en aggregerad kostnad genom att summera kostnaderna för att nå pixel med disparitet från varje riktning. Antalet riktningar påverkar körtiden för algoritmen, och medan 16 riktningar vanligtvis säkerställer god kvalitet, kan ett lägre antal användas för att uppnå snabbare exekvering. En typisk 8-riktningsimplementering av algoritmen kan beräkna kostnaden i två omgångar, ett framåtpass som ackumulerar kostnaden från vänster, uppe-vänster, topp och uppe-höger, och ett bakåtpass som ackumulerar kostnaden från höger, botten- höger, botten och botten-vänster. En enkelpassagealgoritm kan implementeras med endast fem riktningar.

Kostnaden är sammansatt av en matchande term och en binär regulariseringsterm . Den förra kan i princip vara vilken lokal bildskillnad som helst, och vanliga funktioner är absolut eller kvadratisk intensitetsskillnad (vanligtvis summerad över ett fönster runt pixeln och efter att ha applicerat ett högpassfilter på bilderna för att få en viss belysningsinvarians ) . Birchfield–Tomasi olikhet , Hamming-avstånd för censustransformen , Pearson-korrelation ( normaliserad korskorrelation) . Även ömsesidig information kan approximeras som en summa över pixlarna och därmed användas som ett lokalt likhetsmått. Regleringstermen har formen

där och är två konstanta parametrar, med . Trevägsjämförelsen gör det möjligt att tilldela ett mindre straff för enhetliga förändringar i disparitet, vilket möjliggör mjuka övergångar motsvarande t.ex. lutande ytor, och straffar större hopp samtidigt som diskontinuiteter bevaras på grund av den konstanta strafftiden. För att ytterligare bevara diskontinuiteter kan gradienten av intensiteten användas för att anpassa strafftermen, eftersom diskontinuiteter i djupet vanligtvis motsvarar en diskontinuitet i bildintensitet I {\ , genom att ställa in

för varje pixelpar och .

Den ackumulerade kostnaden är summan av alla kostar för att nå pixel med disparitet längs riktningen . Varje term kan uttryckas rekursivt som

där minimikostnaden vid föregående pixel subtraheras för numerisk stabilitet, eftersom den är konstant för alla skillnader vid den aktuella pixeln och därför påverkar det inte optimeringen.

Värdet på skillnaden vid varje pixel ges av , och subpixelnoggrannhet kan uppnås genom att anpassa en kurva i och dess närliggande kostnader och ta minimum längs kurvan. Eftersom de två bilderna i stereoparet inte behandlas symmetriskt i beräkningarna, kan en konsistenskontroll utföras genom att beräkna dispariteten en andra gång i motsatt riktning, byta roll för vänster och höger bild och ogiltigförklara resultatet för pixlar där resultatet skiljer sig mellan de två beräkningarna. Ytterligare efterbehandlingstekniker för förfining av disparitetsbilden inkluderar morfologisk filtrering för att ta bort extremvärden, intensitetskonsistenskontroller för att förfina texturlösa regioner och interpolering för att fylla i pixlar som ogiltigförklarats av konsistenskontroller.

Kostnadsvolymen för alla värden på och kan vara förberäknad och i en implementering av den fullständiga algoritmen, med användning av möjliga disparitetsförskjutningar och -riktningar, besöks varje pixel därefter gånger, därför är algoritmens beräkningskomplexitet för en bild med storleken är .

Minneseffektiv variant

Den största nackdelen med SGM är dess minnesförbrukning. En implementering av två-pass 8-riktningar versionen av algoritmen kräver att lagra element, eftersom den ackumulerade kostnadsvolymen har storleken och för att beräkna kostnaden för en pixel under varje pass är det nödvändigt att hålla reda på -vägkostnader för dess vänstra eller högra granne längs en riktning och för -vägkostnaderna för pixlarna i raden ovanför eller under längs 3 riktningar. En lösning för att minska minnesförbrukningen är att beräkna SGM på delvis överlappande bildrutor och interpolera värdena över de överlappande regionerna. Denna metod gör det också möjligt att tillämpa SGM på mycket stora bilder, som inte skulle passa i minnet i första hand.

En minneseffektiv approximation av SGM lagrar för varje pixel endast kostnaderna för de disparitetsvärden som representerar ett minimum längs någon riktning, istället för alla möjliga disparitetsvärden. Det sanna minimumet kommer med stor sannolikhet att förutsägas av minima längs de åtta riktningarna, vilket ger liknande kvalitet på resultaten. Algoritmen använder åtta riktningar och tre pass, och under den första passagen lagrar den för varje pixel kostnaden för den optimala skillnaden längs de fyra top-down-riktningarna, plus de två närmaste lägre och högre värdena (för sub-pixel interpolation). Eftersom kostnadsvolymen lagras på ett sparsamt sätt måste de fyra värdena för optimal olikhet också lagras. I det andra passet beräknas de andra fyra nedifrån-och-upp-riktningarna, vilket slutför beräkningarna för de fyra disparitetsvärdena valda i det första passet, som nu har utvärderats längs alla åtta riktningarna. Ett mellanvärde av kostnad och disparitet beräknas från utsignalen från det första passet och lagras, och minnet för de fyra utsignalerna från det första passet ersätts med de fyra optimala disparitetsvärdena och deras kostnader från riktningarna i det andra passet. En tredje passage går igen längs samma riktningar som användes i den första passagen, och slutför beräkningarna för skillnadsvärdena från den andra passagen. Det slutliga resultatet väljs sedan bland de fyra minima från det tredje passet och det mellanliggande resultatet beräknas under det andra passet.

I varje pass lagras fyra disparitetsvärden, tillsammans med tre kostnadsvärden vardera (minsta och dess två närmaste angränsande kostnader), plus skillnaden och kostnadsvärdena för det mellanliggande resultatet, för totalt arton värden för varje pixel, vilket gör den totala minnesförbrukning lika med till kostnaden i tid för en extra pass över bild.

Se även

  1. ^ a b Hirschmüller (2005), s. 807-814
  2. ^ Hirschmüller (2011), s. 178–184
  3. ^ Spangenberg et al. (2013), s. 34–41
  4. ^ Hirschmüller (2005), sid. 809
  5. ^ Hirschmüller (2005), sid. 807
  6. ^ a b Hirschmüller (2007), sid. 331
  7. ^ a b c Hirschmüller et al. (2012), sid. 372
  8. ^ "OpenCV cv::StereoSGBM Class Reference" . Arkiverad från originalet 2019-10-05.
  9. ^ Kim et al. (2003), s. 1033–1040
  10. ^ Hirschmüller (2007), sid. 330
  11. ^ Hirschmüller (2007), sid. 332-334
  12. ^ Hirschmüller (2007), sid. 334-335
  13. ^ a b Hirschmüller et al. (2012), sid. 373
  • Hirschmüller, Heiko (2005). "Exakt och effektiv stereobehandling genom halvglobal matchning och ömsesidig information". IEEE-konferens om datorseende och mönsterigenkänning . s. 807–814.
  •   Hirschmuller, Heiko (2007). "Stereobehandling genom semiglobal matchning och ömsesidig information". IEEE-transaktioner på mönsteranalys och maskinintelligens . IEEE. 30 (2): 328–341. doi : 10.1109/TPAMI.2007.1166 . PMID 18084062 .
  • Hirschmüller, Heiko (2011). "Halvglobal matchning-motivation, utvecklingar och tillämpningar". Fotogrammetrisk vecka . Vol. 11. s. 173–184.
  • Hirschmüller, Heiko; Buder, Maximilian; Ernst, Ines (2012). "Minneseffektiv semi-global matchning" . ISPRS Annals of the Photogrammetry, Remote Sensing and Spatial Information Sciences . 3 : 371-376. Bibcode : 2012ISPAn..I3..371H . doi : 10.5194/isprsannals-I-3-371-2012 .
  • Kim, Junhwan; Kolmogorov, Vladimir; Zabih, Ramin (2003). "Visuell korrespondens med energiminimering och ömsesidig information". Proceedings of the Ninth IEEE International Conference on Computer Vision . s. 1033–1040.
  • Spangenberg, Robert; Langner, Tobias; Rojas, Raúl (2013). "Viktad semi-global matchning och centrumsymmetrisk folkräkningstransformering för robust förarassistans". Internationell konferens om datoranalys av bilder och mönster . s. 34–41.

externa länkar