Sobel operatör

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 26 augusti 2014; kontroller kräver 14 redigeringar .

Sobel-operatorn är en diskret differentialoperator som beräknar det ungefärliga värdet av bildens ljusstyrkegradient . Resultatet av att tillämpa Sobel-operatorn vid varje punkt i bilden är antingen vektorn för ljusstyrkegradienten vid den punkten eller dess norm . Används i synnerhet inom bildbehandlingsområdet och används ofta i kantdetekteringsalgoritmer .

Beskrivning

Sobel-operatorn är baserad på faltningen av en bild med små separerbara heltalsfilter i vertikala och horisontella riktningar, så det är relativt lätt att beräkna. Å andra sidan är den gradientapproximation som han använder ganska grov, speciellt för högfrekventa bildsvängningar.

Operatören beräknar ljushetsgradienten för bilden vid varje punkt. Så här hittas riktningen för den största ökningen av ljusstyrkan och storleken på dess förändring i denna riktning. Resultatet visar hur "skarpt" eller "jämnt" bildens ljusstyrka ändras vid varje punkt, och därav sannolikheten för att hitta en punkt på kanten, liksom kantens orientering. I praktiken är det mer tillförlitligt och lättare att tolka att beräkna storleken på förändringen i ljusstyrka (sannolikheten att tillhöra ett ansikte) än att beräkna riktningen.

Matematiskt är gradienten för funktionen av två variabler för varje punkt i bilden (vilket är ljusstyrkafunktionen) en tvådimensionell vektor vars komponenter är de horisontella och vertikala derivatorna av bildens ljusstyrka. Vid varje punkt i bilden är gradientvektorn orienterad i riktningen för den största ökningen i ljusstyrka, och dess längd motsvarar mängden förändring i ljusstyrka. Detta betyder att resultatet av Sobel-operatören vid en punkt som ligger i ett område med konstant ljusstyrka kommer att vara en nollvektor , och vid en punkt som ligger på gränsen till områden med olika ljusstyrka, en vektor som korsar gränsen i riktning mot ökande ljusstyrka .

Formalisering

Strängt taget använder operatören kärnor med vilka den ursprungliga bilden är konvolverad för att beräkna de ungefärliga värdena för de horisontella och vertikala derivatorna. Låt vara den ursprungliga bilden, och och  vara två bilder där varje punkt innehåller ungefärliga derivator med avseende på och med avseende på . De beräknas enligt följande:

där betecknar en tvådimensionell faltningsoperation.

Koordinaten ökar här "till höger" och  - "ner". Vid varje punkt i bilden kan det ungefärliga värdet av gradientvärdet beräknas genom att använda de erhållna ungefärliga värdena för derivatorna:

(betyder element för element).

Med hjälp av denna information kan vi också beräkna gradientens riktning:

,

där t.ex. vinkeln Θ är noll för en vertikal kant som har en mörk sida till vänster.

Förfining

Eftersom ljusstyrkafunktionen bara är känd vid diskreta punkter kan vi inte bestämma derivatorna förrän vi ställer in ljusstyrkan till en differentierbar funktion som passerar genom dessa punkter. Med denna ytterligare utgångspunkt kan derivatan av den differentierbara ljusstyrkan beräknas utifrån funktionen från vilken mätningarna tas - bildpunkterna. Det visar sig att derivatorna vid varje enskild punkt är funktioner av ljusstyrka från alla punkter i bilden. Emellertid kan approximationer av deras derivat bestämmas med en större eller mindre grad av noggrannhet.

Sobel-operatören är en mer oprecis approximation av bildgradienten, men den är av tillräcklig kvalitet för praktiska tillämpningar i många problem. Mer exakt använder operatören endast intensitetsvärdena i närheten av varje pixel för att få en approximation av motsvarande bildgradient, och använder endast heltals luminansviktvärden för att uppskatta gradienten.

Utökning till ytterligare ett antal dimensioner

Sobel-operatören består av två separata operationer [1] :

Sobel filterformler för bildderivator i olika utrymmen för :

Här är ett exempel på en tredimensionell Sobel-kärna för axeln :

.

Tekniska detaljer

Som följer av definitionen kan Sobel-operatören implementeras med enkla tekniska och mjukvaruverktyg: för att approximera gradientvektorn behövs endast åtta pixlar runt bildpunkten och heltalsaritmetik. Dessutom kan båda diskreta filtren som beskrivs ovan separeras:

och två derivator, och , kan nu beräknas som

Separationen av dessa beräkningar kan leda till en minskning av aritmetiska operationer med varje pixel.

Att tillämpa en faltning på en grupp av pixlar kan representeras av pseudokod :

N(x, y) = Summa { K(i, j).P(xi, yj)}, för i, j från −1 till 1.

N(x, y) är resultatet av att applicera faltningsmatrisen K på P.

Mjukvaruimplementeringen av Sobel-operatören kan effektivt använda SIMD - förlängningarna av instruktionsuppsättningen av moderna processorer (den så kallade kodvektoriseringen), medan vinsten i hastigheten för att beräkna operatören kan vara upp till fem gånger jämfört med en hög- nivåimplementering [2] . Manuell kodning i assemblerspråk gör att du kan överträffa kompilatorer som Microsoft Visual C++ och Intel C++ Compiler i hastighet .

Beräkningen av Sobel-operatören är helt enkelt parallelliserad till ett godtyckligt antal trådar (i gränsen kan varje punkt i den resulterande bilden beräknas oberoende av dess grannar). Till exempel, om det finns två processorer ( kärnor ), kan den övre halvbilden av bilden bearbetas av en av dem och den nedre av den andra.

Exempel

Resultatet av att använda Sobel-operatorn är en tvådimensionell gradientkarta för varje punkt. Den kan bearbetas och visas som en bild, där områden med ett stort gradientvärde (främst kanter) kommer att synas som vita linjer. Bilderna nedan illustrerar detta med en enkel bild som exempel:

Scharr-operatören

Sobel-operatorn jämnar ut falska effekter på bilden orsakade av en rent central differentialoperator , men har inte full rotationssymmetri . Scharr undersökte förbättringen av denna egenskap och kom till slutsatsen att följande kärna ger de bästa resultaten [3] [4] :

Se även

Anteckningar

  1. K. Engel (2006), Volymgrafik i realtid, , s. 112-114 
  2. Vatutin E.I., Miroshnichenko S.Yu., Titov V.S. Mjukvaruoptimering av Sobel-operatören med SIMD-förlängningar av x86-familjens processorer . Telekommunikation. 2006. Nr 6. S. 12-16. (2006). Hämtad 9 mars 2010. Arkiverad från originalet 13 april 2012.
  3. Scharr, Hanno, 2000, avhandling (i Tyskland), Optimal Operators in Digital Image Processing .
  4. B. Jähne, H. Scharr och S. Körkel. Principer för filterdesign. I Handbook of Computer Vision and Applications. Academic Press, 1999.

Litteratur

Länkar