Bildderivat
Bildderivator kan beräknas genom att använda små faltningsfilter med storleken 2 × 2 eller 3 × 3, såsom Laplician , Sobel , Roberts och Prewitt - operatorerna . En större mask ger dock i allmänhet en bättre approximation av derivatan och exempel på sådana filter är Gaussiska derivator och Gabor-filter . Ibland behöver högfrekvent brus tas bort och detta kan införlivas i filtret så att den Gaussiska kärnan kommer att fungera som ett bandpassfilter. Användningen av Gabor-filter i bildbehandling har motiverats av några av dess likheter med uppfattningen i det mänskliga visuella systemet.
Pixelvärdet beräknas som en faltning
där är derivatans kärna och är pixelvärdena i ett område av bilden och är operatorn som utför faltningen .
Sobel-derivat
Derivatkärnorna, kända som Sobel-operatorn , definieras enligt följande, för riktningarna och
där här betecknar den 2-dimensionella faltningsoperationen .
Denna operator är separerbar och kan dekomponeras som produkterna av en interpolations- och en differentieringskärna, så att till exempel kan skrivas som
Farid och Simoncelli derivat
Farid och Simoncelli föreslår att använda ett par kärnor, en för interpolation och en annan för differentiering (jämför med Sobel ovan). Dessa kärnor, med fasta storlekar 5 x 5 och 7 x 7, är optimerade så att Fouriertransformen approximerar deras korrekta derivatförhållande.
I Matlab -koden är det så kallade 5-tappsfiltret
k = [ 0,030320 0,249724 0,439911 0,249724 0,030320 ]; d = [ 0,104550 0,292315 0,000000 - 0,292315 - 0,104550 ]; d2 = [ 0,232905 0,002668 - 0,471147 0,002668 0,232905 ];
Och 7-tappsfiltret är det
k = [ 0,004711 0,069321 0,245410 0,361117 0,245410 0,069321 0,004711 ]; d = [ 0,018708 0,125376 0,193091 0,000000 - 0,193091 - 0,125376 - 0,018708 ]; d2 = [ 0,055336 0,137778 - 0,056554 - 0,273118 - 0,056554 0,137778 0,055336 ];
Som ett exempel kan första ordningens derivator beräknas i det följande med Matlab för att utföra faltningen
Iu = conv2 ( d , k , im , 'samma' ); % derivata vertikalt (wrt Y) Iv = conv2 ( k , d , im , 'samma' ); % derivata horisontellt (wrt X)
Det noteras att Farid och Simoncelli har härlett första derivata koefficienter som är mer exakta jämfört med de som tillhandahålls ovan. De senare överensstämmer dock med andraderivatan interpolator och är därför bättre att använda om både första- och andraderivatan söks. I det motsatta fallet, när endast den första derivatan önskas, bör de optimala första derivatan koefficienter användas; mer information finns i deras tidning.
Har derivat
Derivatfilter baserade på godtyckliga kubiska splines presenterades av Hast. Han visade hur både första och andra ordningens derivator kan beräknas mer korrekt med kubiska eller trigonometriska splines. Effektiva derivatfilter måste ha en udda längd så att derivatan beräknas för den centrala pixeln. Alla kubiska filter är dock monterade över 4 provpunkter, vilket ger ett centrum som faller mellan pixlar. Detta löses genom en dubbelfiltreringsmetod som ger filter i storleken 7 x 7. Tanken är att först filtrera genom interpolation så att det interpolerade värdet mellan pixlar erhålls, varefter proceduren upprepas med hjälp av ett derivatfilter, där mittvärdet nu faller på pixelcentrum. Detta kan lätt bevisas av den associativa lagen för faltning
Därför faltningskärnan för att beräkna derivatan med en interpolerande kärna och en derivata kärna blir
Tänk också på att faltning är kommutativ, så att ordningen på de två kärnorna inte spelar någon roll och det är också möjligt att infoga en andra ordningens derivata såväl som en första ordningens derivata kärna. Dessa kärnor är härledda från det faktum att vilken splineyta som helst kan passas över en kvadratisk pixelregion, jämfört med Bezier-ytor . Hast bevisar att en sådan yta kan utföras som en separerbar veckning
där är splinebasmatrisen, och är vektorer som innehåller variablerna och , såsom
Konvolutionskärnorna kan nu ställas in på
Första ordningens derivator vid den centrala pixeln beräknas därför som
och
På samma sätt, med andra ordningens derivata kärnor är
och
Det kubiska splinefiltret utvärderas i dess mitt och därför
På samma sätt blir första ordningens derivator
Och på ett liknande sätt är andra ordningens derivator
Vilket kubiskt filter som helst kan tillämpas och användas för att beräkna bildderivaten med hjälp av ovanstående ekvationer, såsom Bézier , Hermite eller B-splines .
Exemplet nedan i Matlab använder Catmull-Rom spline för att beräkna derivatorna
00 000
0
M = [ 1 , -3 , 3 , -1 ; _ _ - 1 , 4 , - 5 , 2 ; , 1 , , - 1 ; , , 2 , ] * 0,5 ; u = [ 0,125 ; 0,25 ; 0,5 ; 1 ]; upp = [ 0,75 ; 1 ; 1 ; ]; d = upp '* M ; k = u '* M ; Iu = conv2 ( conv ( d , k ), conv ( k , k ), im , 'samma' ); % vertikal derivata (wrt Y) Iv = conv2 ( conv ( k , k ), conv ( d , k ), im , 'samma' ); % horisontell derivata (wrt X)
Andra tillvägagångssätt
Styrbara filter kan användas för att beräkna derivator. Dessutom föreslår Savitzky och Golay en minsta kvadraters polynomutjämningsmetod, som skulle kunna användas för att beräkna derivator och Luo et al diskuterar detta tillvägagångssätt mer i detalj. Scharr visar hur man skapar derivatfilter genom att minimera felet i Fourier-domänen och Jähne et al diskuterar mer i detalj principerna för filterdesign, inklusive derivatfilter.
externa länkar
- derivative5.m Farid och Simoncelli: 5-Tap 1:a och 2:a diskreta derivator.
- derivative7.m Farid och Simoncelli: 7-Tap 1:a och 2:a diskreta derivator
- kernel.m Hast: 1:a och 2:a diskreta derivator för Cubic splines, Catmull-Rom splines, Bezier splines, B-Splines och Trigonometric splines.