Computational Vision Edge Detection Canny Detector Line Detection

  • Slides: 82
Download presentation
Computational Vision § Edge Detection § Canny Detector § Line Detection § Hough Transform

Computational Vision § Edge Detection § Canny Detector § Line Detection § Hough Transform § Trucco: Chapter 4, pp. 76 – 80 Chapter 5, pp. 95 - 100 Computational Vision / Ioannis Stamos

Finding Corners CSc 83020 3 -D Computer Vision – Ioannis Stamos

Finding Corners CSc 83020 3 -D Computer Vision – Ioannis Stamos

What Is a Corner? Large gradients in more than one direction. CSc 83020 3

What Is a Corner? Large gradients in more than one direction. CSc 83020 3 -D Computer Vision – Ioannis Stamos

Edges vs. Corners § Edges = maxima in intensity gradient

Edges vs. Corners § Edges = maxima in intensity gradient

Edges vs. Corners § Corners = lots of variation in direction of gradient in

Edges vs. Corners § Corners = lots of variation in direction of gradient in a small neighborhood

Detecting Corners § How to detect this variation?

Detecting Corners § How to detect this variation?

Detecting Corners § How to detect this variation? § Not enough to check average

Detecting Corners § How to detect this variation? § Not enough to check average and

Detecting Corners § Claim: the following covariance matrix summarizes the statistics of the gradient

Detecting Corners § Claim: the following covariance matrix summarizes the statistics of the gradient Summations over local neighborhoods

Detecting Corners § Examine behavior of C by testing its effect in simple cases

Detecting Corners § Examine behavior of C by testing its effect in simple cases § Case #1: Single edge in local neighborhood

Case#1: Single Edge § Let (a, b) be gradient along edge § Compute C

Case#1: Single Edge § Let (a, b) be gradient along edge § Compute C (a, b):

Case #1: Single Edge § However, in this simple case, the only nonzero terms

Case #1: Single Edge § However, in this simple case, the only nonzero terms are those where f = (a, b) § So, C (a, b) is just some multiple of (a, b)

Case #2: Corner § Assume there is a corner, with perpendicular gradients (a, b)

Case #2: Corner § Assume there is a corner, with perpendicular gradients (a, b) and (c, d)

Case #2: Corner § What is C (a, b)? § Since (a, b) (c,

Case #2: Corner § What is C (a, b)? § Since (a, b) (c, d) = 0, the only nonzero terms are those where f = (a, b) § So, C (a, b) is again just a multiple of (a, b) § What is C (c, d)? § Since (a, b) (c, d) = 0, the only nonzero terms are those where f = (c, d) § So, C (c, d) is a multiple of (c, d)

Corner Detection § Matrix times vector = multiple of vector § Eigenvectors and eigenvalues!

Corner Detection § Matrix times vector = multiple of vector § Eigenvectors and eigenvalues! § In particular, if C has one large eigenvalue, there’s an edge § If C has two large eigenvalues, have corner § Tomasi-Kanade corner detector

Corner Detection Implementation 1. Compute image gradient 2. For each m m neighborhood, compute

Corner Detection Implementation 1. Compute image gradient 2. For each m m neighborhood, compute matrix C 3. If smaller eigenvalue 2 is larger than threshold , record a corner 4. Nonmaximum suppression: only keep strongest corner in each m m window

Corner Detection Results § Checkerboard with noise Trucco & Verri

Corner Detection Results § Checkerboard with noise Trucco & Verri

Corner Detection Results

Corner Detection Results

Corner Detection Results Histogram of l 2 (smaller eigenvalue)

Corner Detection Results Histogram of l 2 (smaller eigenvalue)

A Simple Corner Detector Find eigenvalues of C If the smaller eigenvalue is above

A Simple Corner Detector Find eigenvalues of C If the smaller eigenvalue is above a threshold then we have a corner. CSc 83020 3 -D Computer Vision – Ioannis Stamos

A Simple Corner Detector Find eigenvalues of C If the smaller eigenvalue is above

A Simple Corner Detector Find eigenvalues of C If the smaller eigenvalue is above a threshold then we have a corner. CSc 83020 3 -D Computer Vision – Ioannis Stamos

A Simple Corner Detector CSc 83020 3 -D Computer Vision – Ioannis Stamos

A Simple Corner Detector CSc 83020 3 -D Computer Vision – Ioannis Stamos

Canny Edge Detection § § Can we derive an optimal detector? Good Detection: minimize

Canny Edge Detection § § Can we derive an optimal detector? Good Detection: minimize false positives and false negatives. Good Localization: close as possible to the true edges. Single Response Constraint: one edge should be detected for each true edge

Comparison Sobel CSc 83020 3 -D Computer Vision – Ioannis Stamos Canny

Comparison Sobel CSc 83020 3 -D Computer Vision – Ioannis Stamos Canny

Canny Edge Detection § 3 STEPS: § CANNY_ENHANCER § NONMAX_SUPPRESION § HYSTERESIS_THRESH

Canny Edge Detection § 3 STEPS: § CANNY_ENHANCER § NONMAX_SUPPRESION § HYSTERESIS_THRESH

Localization-Detection Tradeoff § Filter’s spatial scale § Location & § Detection criteria. § Good

Localization-Detection Tradeoff § Filter’s spatial scale § Location & § Detection criteria. § Good tradeoff 1 -D step edge detector: (optimal) § Approximated by the 1 st derivative of the Gaussian.

Optimal 1 -D step edge detectors… Pixel (i, j) Keep the one that gives

Optimal 1 -D step edge detectors… Pixel (i, j) Keep the one that gives you maximum response. Expensive.

Solution… y x Pixel (i, j) Compute derivatives with respect to x & y

Solution… y x Pixel (i, j) Compute derivatives with respect to x & y directions. Compute edge normal.

CANNY_ENHANCER § Compute Ix and Iy the gradient of the image using a derivative

CANNY_ENHANCER § Compute Ix and Iy the gradient of the image using a derivative of Gaussian filter. § Compute the edge strength from the magnitude of the gradient: Es § Compute the orientation of the edge from arctan(Iy / Ix ): Eo [Canny ’ 86] n

Problem with detector original image gradient magnitude (Es) • Compute image derivatives • if

Problem with detector original image gradient magnitude (Es) • Compute image derivatives • if gradient magnitude > and the value is a local max. along gradient direction – pixel is an edge candidate • how to detect one pixel thin edges ?

NONMAX_SUPPRESSION Locate local maxima from Es. • Find direction d that best approximates Eo(i,

NONMAX_SUPPRESSION Locate local maxima from Es. • Find direction d that best approximates Eo(i, j) • If Es(i, j) is smaller than at least one neighbor along d In(i, j)=0 else In(i, j)=Es(i, j). 135 90 45 0

Non-Maximum Supression Non-maximum suppression: Select the single maximum point across the width of an

Non-Maximum Supression Non-maximum suppression: Select the single maximum point across the width of an edge. CSc 83020 3 -D Computer Vision – Ioannis Stamos

Linking to the Next Edge Point Assume the marked point q is an edge

Linking to the Next Edge Point Assume the marked point q is an edge point. Take the normal to the gradient at that point and use this to predict continuation points (either r or p). CSc 83020 3 -D Computer Vision – Ioannis Stamos

Thresholding § Edges are found by thresholding the output of NONMAX_SUPRESSION § If the

Thresholding § Edges are found by thresholding the output of NONMAX_SUPRESSION § If the threshold is too high: § Very few (none) edges § High MISDETECTIONS, many gaps § If the threshold is too low: § Too many (all pixels) edges § High FALSE POSITIVES, many extra edges

Edge Detection With Hysteresis Low threshold Hysteresis (high and low threshold) High threshold

Edge Detection With Hysteresis Low threshold Hysteresis (high and low threshold) High threshold

Edge Hysteresis n n n Hysteresis: A lag or momentum factor Idea: Maintain two

Edge Hysteresis n n n Hysteresis: A lag or momentum factor Idea: Maintain two thresholds khigh and klow n Use khigh to find strong edges to start edge chain n Use klow to find weak edges which continue edge chain Typical ratio of thresholds is roughly khigh / klow = 2 CSc 83020 3 -D Computer Vision – Ioannis Stamos

Edge Tracking Hysteresis thresholding [Canny ’ 86] Weak edges Strong edges reinforce weak edges

Edge Tracking Hysteresis thresholding [Canny ’ 86] Weak edges Strong edges reinforce weak edges Weak edge removed We call a pixel an edge if it is strong. We also call a pixel an edge if it is weak but is connected to an edge. A pixel is connected to an edge if it is in a direction perpendicular to the edge normal

Canny Edge Detection (Example) gap is gone Strong + connected weak edges Original image

Canny Edge Detection (Example) gap is gone Strong + connected weak edges Original image Strong edges only Weak edges courtesy of G. Loy CSc 83020 3 -D Computer Vision – Ioannis Stamos

HYSTERESIS_THRESH § Input: In, Eo, high threshold, low threshold. § Output: Lists of connected

HYSTERESIS_THRESH § Input: In, Eo, high threshold, low threshold. § Output: Lists of connected edges (contours).

Edge Relaxation Parallel – iterative method to adjust edge values on the basis of

Edge Relaxation Parallel – iterative method to adjust edge values on the basis of neighboring edges Crack edges:

Edge Relaxation Parallel – iterative method to adjust edge values on the basis of

Edge Relaxation Parallel – iterative method to adjust edge values on the basis of neighboring edges Crack edges: Notation: Edge to be updated Edge No edge Vertex types: (0) (1) (2) (3)

Edge Relaxation Parallel – iterative method to adjust edge values on the basis of

Edge Relaxation Parallel – iterative method to adjust edge values on the basis of neighboring edges Crack edges: Notation: Edge to be updated Edge No edge Vertex types: (0) (1) (2) (3) Action table for edge type: Decrease Increase Unchanged 0 -0 1 -1 0 -2 1 -2 2 -2 0 -3 1 -3 2 -3 3 -3

Edge Relaxation Parallel – iterative method to adjust edge values on the basis of

Edge Relaxation Parallel – iterative method to adjust edge values on the basis of neighboring edges Crack edges: Notation: Algorithm: Edge to be updated Edge No edge 0. Compute initial confidence C 0(e) of each edge e C 0(e) = Vertex types: (0) (1) (2) (3) Action table for edge type: Decrease Increase Unchanged 0 -0 1 -1 0 -2 1 -2 2 -2 0 -3 1 -3 2 -3 3 -3 1. k=1 2. Compute edge type for all e 3. Modify Ck(e) based on Ck-1(e) and edge type. 4. If all Ck(e) have converged to 1 or 0 else go to step 1

Canny Edge Detector Original: Lena Computational Vision / Ioannis Stamos Edges

Canny Edge Detector Original: Lena Computational Vision / Ioannis Stamos Edges

Towards Global Features Local versus global CSc 83020 3 -D Computer Vision – Ioannis

Towards Global Features Local versus global CSc 83020 3 -D Computer Vision – Ioannis Stamos

From Edges to Lines CSc 83020 3 -D Computer Vision – Ioannis Stamos

From Edges to Lines CSc 83020 3 -D Computer Vision – Ioannis Stamos

Detecting Lines § What is the difference between line detection and edge detection? §

Detecting Lines § What is the difference between line detection and edge detection? § Edges = local § Lines = nonlocal § Line detection usually performed on the output of an edge detector From Szymon Rusinkiewicz, Princeton

Detecting Lines § Possible approaches ? From Szymon Rusinkiewicz, Princeton

Detecting Lines § Possible approaches ? From Szymon Rusinkiewicz, Princeton

Detecting Lines § Possible approaches: § Brute force: enumerate all lines, check if present

Detecting Lines § Possible approaches: § Brute force: enumerate all lines, check if present § Hough transform: vote for lines to which detected edges might belong § Fitting: given guess for approximate location, refine it § Second method efficient for finding unknown lines, but not always accurate From Szymon Rusinkiewicz, Princeton

Hough Transform § General idea: transform from image coordinates to parameter space of feature

Hough Transform § General idea: transform from image coordinates to parameter space of feature § Need parameterized model of features § For each pixel, determine all parameter values that might have given rise to that pixel; vote § At end, look for peaks in parameter space From Szymon Rusinkiewicz, Princeton

Hough Transform for Lines § Generic line: y = ax+b § Parameters: a and

Hough Transform for Lines § Generic line: y = ax+b § Parameters: a and b From Szymon Rusinkiewicz, Princeton

Hough Transform for Lines 1. Initialize table of buckets, indexed by a and b,

Hough Transform for Lines 1. Initialize table of buckets, indexed by a and b, to zero 2. For each detected edge pixel (x, y): a. Determine all (a, b) such that y = ax+b b. Increment bucket (a, b) 3. Buckets with many votes indicate probable lines From Szymon Rusinkiewicz, Princeton

Hough Transform for Lines a b From Szymon Rusinkiewicz, Princeton

Hough Transform for Lines a b From Szymon Rusinkiewicz, Princeton

Hough Transform for Lines a b From Szymon Rusinkiewicz, Princeton

Hough Transform for Lines a b From Szymon Rusinkiewicz, Princeton

Difficulties with Hough Transform for Lines § Slope / intercept parameterization not ideal §

Difficulties with Hough Transform for Lines § Slope / intercept parameterization not ideal § Non-uniform sampling of directions § Can’t represent vertical lines § Angle / distance parameterization § Line represented as (r, q) where x cos q + y sin q = r r q From Szymon Rusinkiewicz, Princeton

Finding Lines Using the Hough Transform CSc 83020 3 -D Computer Vision – Ioannis

Finding Lines Using the Hough Transform CSc 83020 3 -D Computer Vision – Ioannis Stamos

Algorithm § Discretize the parameter spaces ρ and θ. § Create Accumulator array A(1.

Algorithm § Discretize the parameter spaces ρ and θ. § Create Accumulator array A(1. . R, 1. . T). § Set A(k, h)=0 for all k and h. § For each image edge E(i, j)=1 § For h=1…T § ρ =i cosθd(h)+j sinθd (h) § Find index k: ρd is closest to ρ § Increment A(h, k) by one. § Find all local maxima (kp, hp) such that A (kp, hp)>τ CSc 83020 3 -D Computer Vision – Ioannis Stamos

Hough Transform Results Forsyth & Ponce

Hough Transform Results Forsyth & Ponce

Hough Transform Results Forsyth & Ponce

Hough Transform Results Forsyth & Ponce

Finding Lines Using the Hough Transform Strong local peaks correspond to lines. CSc 83020

Finding Lines Using the Hough Transform Strong local peaks correspond to lines. CSc 83020 3 -D Computer Vision – Ioannis Stamos

Finding Lines Using the Hough Transform Resolution Issues … CSc 83020 3 -D Computer

Finding Lines Using the Hough Transform Resolution Issues … CSc 83020 3 -D Computer Vision – Ioannis Stamos

Bucket Selection § How to select bucket size? From Szymon Rusinkiewicz, Princeton

Bucket Selection § How to select bucket size? From Szymon Rusinkiewicz, Princeton

Bucket Selection § How to select bucket size? § Too small: poor performance on

Bucket Selection § How to select bucket size? § Too small: poor performance on noisy data, long running times § Too large: poor accuracy, possibility of false positives § Large buckets + verification and refinement § Problems distinguishing nearby lines § Be smarter at selecting buckets § Use gradient information to select subset of buckets § More sensitive to noise From Szymon Rusinkiewicz, Princeton

Hough Transform: Results Image Edge detection CSc 83020 3 -D Computer Vision – Ioannis

Hough Transform: Results Image Edge detection CSc 83020 3 -D Computer Vision – Ioannis Stamos Hough Transform

Summary Hough Transform § Smart counting § Local evidence for global features § Organized

Summary Hough Transform § Smart counting § Local evidence for global features § Organized in a table § Careful with parameterization! § Problem: Curse of dimensionality § Works great for simple features with 3 unknowns § Will fail for complex objects § Problem: Not a local algorithm CSc 83020 3 -D Computer Vision – Ioannis Stamos

Hough Transform § What else can be detected using Hough transform?

Hough Transform § What else can be detected using Hough transform?

Hough Transform § What else can be detected using Hough transform? § Anything, but

Hough Transform § What else can be detected using Hough transform? § Anything, but dimensionality is key

Finding Circles by Hough Transform y b 0 r a 0 (xi, yi) x

Finding Circles by Hough Transform y b 0 r a 0 (xi, yi) x Equation of Circle: CSc 83020 3 -D Computer Vision – Ioannis Stamos

Finding Circles by Hough Transform y b 0 r a 0 Equation of Circle:

Finding Circles by Hough Transform y b 0 r a 0 Equation of Circle: If radius r is known: (xi, yi) x Circles! b y (xi, yi) x Accumulator array A(a, b) a

Finding Circles by Hough Transform y b 0 r a 0 (xi, yi) x

Finding Circles by Hough Transform y b 0 r a 0 (xi, yi) x If r is not known Use accumulator array A(a, b, r) For each (xi, yi) increment A(a, b, r) such that CSc 83020 3 -D Computer Vision – Ioannis Stamos

Using Gradient Information Can save lot of computations! Given: location (xi, yi) y Edge

Using Gradient Information Can save lot of computations! Given: location (xi, yi) y Edge direction φi x CSc 83020 3 -D Computer Vision – Ioannis Stamos

Using Gradient Information Can save lot of computations! Given: location (xi, yi) y Edge

Using Gradient Information Can save lot of computations! Given: location (xi, yi) y Edge direction φi x Assume r is known: (xi, yi) y φi (a, b) a=x-rcosφ b=y-rsinφ Need to increment only one point x in Accumulator Array.

Hough Transform for Curves § Curve y=f(x, a) § a=[a 1, … , ap]

Hough Transform for Curves § Curve y=f(x, a) § a=[a 1, … , ap] the parameters of the curve. § Limitation: size of parameter space wrt # of parameters. § Solution: variable-resolution parameter space. CSc 83020 3 -D Computer Vision – Ioannis Stamos

Hough Transform § Pattern Matching. § More efficient than template matching. § Handles occlusion.

Hough Transform § Pattern Matching. § More efficient than template matching. § Handles occlusion. § Finds all instances of pattern. § Handling inaccurate edge locations? § Drawbacks?

Fitting § Output of Hough transform often not accurate enough § Use as initial

Fitting § Output of Hough transform often not accurate enough § Use as initial guess for fitting

Fitting Lines Initial guess

Fitting Lines Initial guess

Fitting Lines Least-squares minimization

Fitting Lines Least-squares minimization

Fitting Lines

Fitting Lines

Finding Lines § § § Assume edge detection Each pixel is either edge or

Finding Lines § § § Assume edge detection Each pixel is either edge or not How do we find the line? CSc 83020 3 -D Computer Vision – Ioannis Stamos

Finding Lines § § § Assume edge detection Each pixel is either edge or

Finding Lines § § § Assume edge detection Each pixel is either edge or not How do we find the line? CSc 83020 3 -D Computer Vision – Ioannis Stamos

Least Squares Fitting of Lines Minimize E CSc 83020 3 -D Computer Vision –

Least Squares Fitting of Lines Minimize E CSc 83020 3 -D Computer Vision – Ioannis Stamos

Least Squares Fitting of Lines Minimize E Problem: E must be formulated carefully!

Least Squares Fitting of Lines Minimize E Problem: E must be formulated carefully!

Least Squares Fitting of Lines Minimize E

Least Squares Fitting of Lines Minimize E