Presentation is loading. Please wait.

Presentation is loading. Please wait.

Sebastian Thrun, Stanford Rick Szeliski, Microsoft

Similar presentations


Presentation on theme: "Sebastian Thrun, Stanford Rick Szeliski, Microsoft"— Presentation transcript:

1 Stanford CS223B Computer Vision, Winter 2005 Lecture 3 Filters and Features (with Matlab)
Sebastian Thrun, Stanford Rick Szeliski, Microsoft Hendrik Dahlkamp, Stanford [with slides by D Forsyth, D. Lowe, M. Polleyfeys, C. Rasmussen, G. Loy, D. Jacobs, J. Rehg, A, Hanson, G. Bradski,…]

2 Assignment 1 FAQ Compiling projects Taking the images
cxcored.dll is the debug version of cxcore.dll, can be compiled from cxcore.dsp Use template cvsample.dsp to get paths right Taking the images Assignment change: out-of-focus images no longer needed Don’t print a border around the chessboard

3 Assignment 1 FAQ Corner finding How to verify results
Supply correct parameters e.g. corner_count<>0 Visualize corner ordering How to verify results Backproject scene corners into image Use common sense: etc

4 Stanford CS223B Computer Vision, Winter 2005 Lecture 3 Filters and Features (with Matlab)
Sebastian Thrun, Stanford Rick Szeliski, Microsoft Hendrik Dahlkamp, Stanford [with slides by D Forsyth, D. Lowe, M. Polleyfeys, C. Rasmussen, G. Loy, D. Jacobs, J. Rehg, A, Hanson, G. Bradski,…]

5 Today’s Goals Features 101 Linear Filters and Edge Detection
Canny Edge Detector

6 Today’s Question What is a feature? What is an image filter?
How can we find corners? How can we find edges?

7 What is a Feature? Local, meaningful, detectable parts of the image

8 Features in Computer Vision
What is a feature? Location of sudden change Why use features? Information content high Invariant to change of view point, illumination Reduces computational burden

9 (One Type of) Computer Vision
Feature 1 Feature 2 : Feature N Image 2 Image 1 Feature 1 Feature 2 : Feature N Computer Vision Algorithm

10 Where Features Are Used
Calibration Image Segmentation Correspondence in multiple images (stereo, structure from motion) Object detection, classification

11 What Makes For Good Features?
Invariance View point (scale, orientation, translation) Lighting condition Object deformations Partial occlusion Other Characteristics Uniqueness Sufficiently many Tuned to the task

12 Today’s Goals Features 101 Linear Filters and Edge Detection
Canny Edge Detector

13 What Causes an Edge? Depth discontinuity
Surface orientation discontinuity Reflectance discontinuity (i.e., change in surface material properties) Illumination discontinuity (e.g., shadow) Slide credit: Christopher Rasmussen

14 Quiz: How Can We Find Edges?

15 Edge Finding 101 im = imread('bridge.jpg'); image(im); figure(2);
bw = double(rgb2gray(im)); image(bw); gradkernel = [-1 1]; dx = abs(conv2(bw, gradkernel, 'same')); image(dx); colorbar; colormap gray [dx,dy] = gradient(bw); gradmag = sqrt(dx.^2 + dy.^2); image(gradmag); matlab colorbar colormap(gray(255)) colormap(default)

16 Edge Finding 101 Example of a linear Filter

17 What is Image Filtering?
Modify the pixels in an image based on some function of a local neighborhood of the pixels 10 5 3 4 1 7 7 Some function

18 Linear Filtering Linear case is simplest and most useful
Replace each pixel with a linear combination of its neighbors. The prescription for the linear combination is called the convolution kernel. 10 5 3 4 1 7 0.5 1.0 7 kernel

19 Linear Filter = Convolution
g11 g11 I(i-1,j-1) I(.) g12 + g12 I(i-1,j) I(.) g13 + g13 I(i-1,j+1) + I(.) g21 g21 I(i,j-1) g22 + g22 I(i,j) I(.) I(.) g23 + g23 I(i,j+1) + I(.) g31 g31 I(i+1,j-1) I(.) g32 + g32 I(i+1,j) I(.) g33 + g33 I(i+1,j+1) f (i,j) =

20 Linear Filter = Convolution

21 Filtering Examples

22 Filtering Examples

23 Filtering Examples

24 Image Smoothing With Gaussian
figure(3); sigma = 3; width = 3 * sigma; support = -width : width; gauss2D = exp( - (support / sigma).^2 / 2); gauss2D = gauss2D / sum(gauss2D); smooth = conv2(conv2(bw, gauss2D, 'same'), gauss2D', 'same'); image(smooth); colormap(gray(255)); gauss3D = gauss2D' * gauss2D; tic ; smooth = conv2(bw,gauss3D, 'same'); toc

25 Smoothing With Gaussian
Averaging Gaussian Slide credit: Marc Pollefeys

26 Smoothing Reduces Noise
The effects of smoothing Each row shows smoothing with gaussians of different width; each column shows different realizations of an image of gaussian noise. Slide credit: Marc Pollefeys

27 Example of Blurring Image Blurred Image - =

28 Edge Detection With Smoothed Images
figure(4); [dx,dy] = gradient(smooth); gradmag = sqrt(dx.^2 + dy.^2); gmax = max(max(gradmag)); imshow(gradmag); colormap(gray(gmax));

29 Scale Increased smoothing: Eliminates noise edges.
Makes edges smoother and thicker. Removes fine detail.

30 The Edge Normal

31 Displaying the Edge Normal
figure(5); hold on; image(smooth); colormap(gray(255)); [m,n] = size(gradmag); edges = (gradmag > 0.3 * gmax); inds = find(edges); [posx,posy] = meshgrid(1:n,1:m); posx2=posx(inds); posy2=posy(inds); gm2= gradmag(inds); sintheta = dx(inds) ./ gm2; costheta = - dy(inds) ./ gm2; quiver(posx2,posy2, gm2 .* sintheta / 10, -gm2 .* costheta / 10,0); hold off;

32 Separable Kernels

33 Combining Kernels / Convolutions

34 Effect of Smoothing Radius
1 pixel 3 pixels 7 pixels

35 Robert’s Cross Operator
1 0 0 -1 0 1 -1 0 + S = [ I(x, y) - I(x+1, y+1) ]2 + [ I(x, y+1) - I(x+1, y) ]2 or S = | I(x, y) - I(x+1, y+1) | + | I(x, y+1) - I(x+1, y) |

36 Sobel Operator -1 -2 -1 0 0 0 1 2 1 -1 0 1 -2 0 2 S1= S2 =
S1= S2 = Edge Magnitude = Edge Direction = S1 + S1 2 tan-1 S1 S2

37 The Sobel Kernel, Explained
Sobel kernel is separable! Averaging done parallel to edge

38 Sobel Edge Detector figure(6) edge(bw, 'sobel')

39 Robinson Compass Masks

40 Claim Your Own Kernel! Frei & Chen

41 Comparison (by Allan Hanson)
Analysis based on a step edge inclined at an angle q (relative to y-axis) through center of window. Robinson/Sobel: true edge contrast less than 1.6% different from that computed by the operator. Error in edge direction Robinson/Sobel: less than 1.5 degrees error Prewitt: less than 7.5 degrees error Summary Typically, 3 x 3 gradient operators perform better than 2 x 2. Prewitt2 and Sobel perform better than any of the other 3x3 gradient estimation operators. In low signal to noise ratio situations, gradient estimation operators of size larger than 3 x 3 have improved performance. In large masks, weighting by distance from the central pixel is beneficial.

42 Today’s Goals Features 101 Linear Filters and Edge Detection
Canny Edge Detector

43 Canny Edge Detector figure(7) edge(bw, 'canny')

44 Canny Edge Detection Steps: Apply derivative of Gaussian
Non-maximum suppression Thin multi-pixel wide “ridges” down to single pixel width Linking and thresholding Low, high edge-strength thresholds Accept all edges over low threshold that are connected to edge over high threshold

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

46 Linking to the Next Edge Point
Assume the marked point is an edge point. Take the normal to the gradient at that point and use this to predict continuation points (either r or s).

47 Edge Hysteresis Hysteresis: A lag or momentum factor
Idea: Maintain two thresholds khigh and klow Use khigh to find strong edges to start edge chain Use klow to find weak edges which continue edge chain Typical ratio of thresholds is roughly khigh / klow = 2

48 Canny Edge Detection (Example)
gap is gone Strong + connected weak edges Original image Strong edges only Weak edges courtesy of G. Loy

49 Canny Edge Detection (Example)
Using Matlab with default thresholds

50 Application: Road Finding
(add roadrunner video here)

51 Corner Effects

52 Today’s Goals Features 101 Linear Filters and Edge Detection
Canny Edge Detector


Download ppt "Sebastian Thrun, Stanford Rick Szeliski, Microsoft"

Similar presentations


Ads by Google