Edge Detection

Download Report

Transcript Edge Detection

Edges and Contours– Chapter 7

Visual perception

• We don’t need to see all the color detail to recognize the scene content of an image • That is, some data provides critical information for recognition, other data provides information that just makes things look “good”

Visual perception

• Sometimes we see things that are not really there!!!

Kanizsa Triangle (and variants)

Edges

• Edges (single points) and contours (chains of edges) play a dominant role in (various) biological vision systems – Edges are spatial positions in the image where the intensity changes along some orientation (direction) – The larger the change in intensity, the stronger the edge – Basis of edge detection is the first derivative of the image intensity “function”

First derivative – continuous f(x)

• Slope of the line at a point tangent to the function

f

' (

x

) 

df dx

(

x

)

First derivative – discrete f(u)

• Slope of the line joining two adjacent (to the selected point) point

f

' (

u

) 

f

(

u

 1 ) 

f

(

u

 1 ) 2

u-1 u u+1

Discrete edge detection

• Formulated as two partial derivatives – Horizontal gradients yield vertical edges 

I

u

(

u

,

v

) – Vertical gradients yield horizontal edges 

I

v

(

u

,

v

) – Upon detection we can learn the magnitude (strength) and orientation of the edge • More in a minute…

NOTE

• In the following images, only the positive magnitude edges are shown • This is an artifact of ImageJ Process->Filters >Convolve… command • Implemented as an edge operator, the code would have to compensate for this

Detecting edges – sharp image

Image Vertical   0 .

5 Edges 0 .

0 0 .

5  Horizontal Edges     0 0 0 .

.

.

0 5 5    

Detecting edges – blurry image

Image Vertical   0 .

5 Edges 0 .

0 0 .

5  Horizontal Edges     0 0 0 .

.

.

0 5 5    

The problem…

• Localized (small neighborhood) detectors are susceptible to noise

The solution

• Extend the neighborhood covered by the filter – Make the filter 2 dimensional • Perform a smoothing step prior to the derivative – Since the operators are linear filters, we can combine the smoothing and derivative operations into a single convolution

Edge operator

• The following edge operators produce two results – A “magnitude” edge map (image)

E

(

u

,

v

)  

D x

(

u

,

v

)  2  

D y

(

u

,

v

)  2 – An “orientation” edge map (image)  (

u

,

v

)  tan  1

D y

(

u

,

v

)

D x

(

u

,

v

)

Prewitt operator

• 3x3 neighborhood

H P x

        1 1 1 0 0 0 1   1 1  

H P y

      0 1 1  1 0 1  0 1 1     • Equivalent to averaging followed by derivative – Note that these are convolutions, not matrix multiplications

H P y

     1 1    1     1 0 1 

H y P

  1 1 1       0 1 1    

Prewitt – sharp image

Prewitt – blurry image

Prewitt – noisy image

• Clearly this is not a good solution…what went wrong?

– The smoothing just smeared out the noise • How could you fix it?

– Perform non-linear noise removal first

Prewitt magnitude and direction

Prewitt magnitude and direction

Sobel operator

• 3x3 neighborhood

H P x

        1 2 1 0 0 0 1 2   1  

H P y

      0 1 1  0 2 2  0 1 1     • Equivalent to averaging followed by derivative – Note that these are convolutions, not matrix multiplications

H P y

     1 2 1        1 0 1 

H P y

  1 2 1        0 1 1      – Same as Prewitt but the center row/column is weighted heavier

Sobel – sharp image

Sobel – blurry image

Sobel – noisy image

• Clearly this is not a good solution…what went wrong?

– The smoothing just smeared out the noise • How could you fix it?

– Perform non-linear noise removal first

Sobel magnitude and direction

Sobel magnitude and direction

Sobel magnitude and direction

• Still not good…how could we fix this now? • Using the information of the direction (lots of randomly oriented, non-homogeneous directions) can help to eliminate edged due to noise – This is a “higher level” (intelligent) function

Roberts operator

• Looks for diagonal gradients rather than horizontal/vertical

H R

1     0 1 1 0  

H R

2    0 1 0 1   • Everything else is similar to Prewitt and Sobel operators

Roberts magnitude and direction

Roberts magnitude and direction

Roberts magnitude and direction

Compass operators

• An alternative to computing edge orientation as an estimate derived from two oriented filters (horizontal and vertical) • Compass operators employ multiple oriented filters • To most famous are – Kirsch – Nevatia-Babu

Kirsch Filter

• Eight 3x3 kernel – Theoretically must perform eight convolutions – Realistically, only compute four convolutions, the other four are merely sign changes • The kernel that produces the maximum response is deemed the winner – Choose its magnitude – Choose its direction

0 1 2 1 0  1  2  1  2  1

Kirsch filter kernels

0 0 1 2 0  1 1 0 1 2 1 0 0 0  1  2  1 Vertical edges 0 1 2 2 1 0 1 0  1 0  1  2 L-R diagonal edges  1 0  2 0 2  1 0 1 1 0  1 2 0  2 1 0  1 Horizontal edges  1 0 1  2  1 0 0  1  2 1 0  1 2 1 0 R-L diagonal edges

Kirsch filter

Nevatia-Babu Filter

• Twelve 5x5 kernel – Theoretically must perform twelve convolutions – Increments of approximately 30 ° – Realistically, only compute six convolutions, the other six are merely sign changes • The kernel that produces the maximum response is deemed the winner – Choose its magnitude – Choose its direction

Nevatia-Babu filter