Title: Stanford CS223B Computer Vision, Winter 2005 Lecture 4 Advanced Features
1Stanford CS223B Computer Vision, Winter
2005Lecture 4 Advanced Features
- Sebastian Thrun, Stanford
- Rick Szeliski, Microsoft
- Hendrik Dahlkamp, Stanford
- with slides by D Lowe, M. Polleyfeys
2Todays Goals
- Harris Corner Detector
- Hough Transform
- Templates, Image Pyramid, Transforms
- SIFT Features
3Finding Corners
Edge detectors perform poorly at corners. Corners
provide repeatable points for matching, so are
worth detecting.
- Idea
- Exactly at a corner, gradient is ill defined.
- However, in the region around a corner, gradient
has two or more different values.
4The Harris corner detector
Form the second-moment matrix
Gradient with respect to x, times gradient with
respect to y
Sum over a small region around the hypothetical
corner
Matrix is symmetric
Slide credit David Jacobs
5Simple Case
First, consider case where
This means dominant gradient directions align
with x or y axis If either ? is close to 0, then
this is not a corner, so look for locations where
both are large.
Slide credit David Jacobs
6General Case
It can be shown that since C is symmetric
So every case is like a rotated version of the
one on last slide.
Slide credit David Jacobs
7So, To Detect Corners
- Filter image with Gaussian to reduce noise
- Compute magnitude of the x and y gradients at
each pixel - Construct C in a window around each pixel (Harris
uses a Gaussian window just blur) - Solve for product of ls (determinant of C)
- If ls are both big (product reaches local maximum
and is above threshold), we have a corner (Harris
also checks that ratio of ls is not too high)
8Gradient Orientation
9Corner Detection
Corners are detected where the product of the
ellipse axis lengths reaches a local maximum.
10Harris Corners
- Originally developed as features for motion
tracking - Greatly reduces amount of computation compared to
tracking every pixel - Translation and rotation invariant (but not scale
invariant)
11Harris Corner in Matlab
- Harris Corner detector - by Kashif Shahzad
- sigma2 thresh0.1 sze11 disp0
- Derivative masks
- dy -1 0 1 -1 0 1 -1 0 1
- dx dy' dx is the transpose matrix of dy
-
- Ix and Iy are the horizontal and vertical edges
of image - Ix conv2(bw, dx, 'same')
- Iy conv2(bw, dy, 'same')
-
- Calculating the gradient of the image Ix and Iy
- g fspecial('gaussian',max(1,fix(6sigma)),
sigma) - Ix2 conv2(Ix.2, g, 'same') Smoothed squared
image derivatives - Iy2 conv2(Iy.2, g, 'same')
- Ixy conv2(Ix.Iy, g, 'same')
-
- My preferred measure according to research
paper - cornerness (Ix2.Iy2 - Ixy.2)./(Ix2 Iy2
eps)
12Todays Goals
- Harris Corner Detector
- Hough Transform
- Templates, Image Pyramid, Transforms
- SIFT Features
13Features?
Local versus global
14Vanishing Points
15Vanishing Points
A. Canaletto 1740, Arrival of the French
Ambassador in Venice
16From Edges to Lines
17Hough Transform
18Hough Transform Quantization
m
Detecting Lines by finding maxima / clustering in
parameter space
19Hough Transform Results
Hough Transform
Image
Edge detection
20Todays Goals
- Harris Corner Detector
- Hough Transform
- Templates, Image Pyramid, Transforms
- SIFT Features
21Problem Features for Recognition
in here
Want to find
22Convolution with Templates
- read image
- im imread('bridge.jpg')
- bw double(im(,,1)) ./ 256
- imshow(bw)
- apply FFT
- FFTim fft2(bw)
- bw2 real(ifft2(FFTim))
- imshow(bw2)
- define a kernel
- kernelzeros(size(bw))
- kernel(1, 1) 1
- kernel(1, 2) -1
- FFTkernel fft2(kernel)
- apply the kernel and check out the result
- FFTresult FFTim . FFTkernel
- result real(ifft2(FFTresult))
- select an image patch
- patch bw(221240,351370)
- imshow(patch)
- patch patch - (sum(sum(patch)) / size(patch,1)
/ size(patch, 2)) - kernelzeros(size(bw))
- kernel(1size(patch,1),1size(patch,2)) patch
- FFTkernel fft2(kernel)
- apply the kernel and check out the result
- FFTresult FFTim . FFTkernel
- result max(0, real(ifft2(FFTresult)))
- result result ./ max(max(result))
- result (result . 1 gt 0.5)
- imshow(result)
- alternative convolution
- imshow(conv2(bw, patch, 'same'))
23Convolution with Templates
- Invariances
- Scaling
- Rotation
- Illumination
- Deformation
- Provides
- Good localization
24Scale Invariance Image Pyramid
25Aliasing
26Aliasing Effects
27Convolution Theorem
Fourier Transform of g
F is invertible
28The Fourier Transform
- Represent function on a new basis
- Think of functions as vectors, with many
components - We now apply a linear transformation to transform
the basis - dot product with each basis element
- In the expression, u and v select the basis
element, so a function of x and y becomes a
function of u and v - basis elements have the form
29- Fourier basis element
- example, real part
- Fu,v(x,y)
- Fu,v(x,y)const. for (uxvy)const.
- Vector (u,v)
- Magnitude gives frequency
- Direction gives orientation.
30Here u and v are larger than in the previous
slide.
31And larger still...
32Phase and Magnitude
- Fourier transform of a real function is complex
- difficult to plot, visualize
- instead, we can think of the phase and magnitude
of the transform - Phase is the phase of the complex transform
- Magnitude is the magnitude of the complex
transform - Curious fact
- all natural images have about the same magnitude
transform - hence, phase seems to matter, but magnitude
largely doesnt - Demonstration
- Take two pictures, swap the phase transforms,
compute the inverse - what does the result look
like?
33(No Transcript)
34This is the magnitude transform of the cheetah
picture
35This is the phase transform of the cheetah picture
36(No Transcript)
37This is the magnitude transform of the zebra
picture
38This is the phase transform of the zebra picture
39Reconstruction with zebra phase, cheetah magnitude
40Reconstruction with cheetah phase, zebra magnitude
41Convolution with Templates
- Invariances
- Scaling
- Rotation
- Illumination
- Deformation
- Provides
- Good localization
42Todays Goals
- Harris Corner Detector
- Hough Transform
- Templates, Image Pyramid, Transforms
- SIFT Features
43Lets Return to this Problem
in here
Want to find
44SIFT
- Invariances
- Scaling
- Rotation
- Illumination
- Deformation
- Provides
- Good localization
45SIFT Reference
- Distinctive image features from scale-invariant
keypoints. David G. Lowe, International Journal
of Computer Vision, 60, 2 (2004), pp. 91-110. - SIFT Scale Invariant Feature Transform
-
46Invariant Local Features
- Image content is transformed into local feature
coordinates that are invariant to translation,
rotation, scale, and other imaging parameters
SIFT Features
47Advantages of invariant local features
- Locality features are local, so robust to
occlusion and clutter (no prior segmentation) - Distinctiveness individual features can be
matched to a large database of objects - Quantity many features can be generated for even
small objects - Efficiency close to real-time performance
- Extensibility can easily be extended to wide
range of differing feature types, with each
adding robustness
48SIFT On-A-Slide
- Enforce invariance to scale Compute Gaussian
difference max, for may different scales
non-maximum suppression, find local maxima
keypoint candidates - Localizable corner For each maximum fit
quadratic function. Compute center with sub-pixel
accuracy by setting first derivative to zero. - Eliminate edges Compute ratio of eigenvalues,
drop keypoints for which this ratio is larger
than a threshold. - Enforce invariance to orientation Compute
orientation, to achieve scale invariance, by
finding the strongest second derivative direction
in the smoothed image (possibly multiple
orientations). Rotate patch so that orientation
points up. - Compute feature signature Compute a "gradient
histogram" of the local image region in a 4x4
pixel region. Do this for 4x4 regions of that
size. Orient so that largest gradient points up
(possibly multiple solutions). Result feature
vector with 128 values (15 fields, 8 gradients). - Enforce invariance to illumination change and
camera saturation Normalize to unit length to
increase invariance to illumination. Then
threshold all gradients, to become invariant to
camera saturation.
49SIFT On-A-Slide
- Enforce invariance to scale Compute Gaussian
difference max, for may different scales
non-maximum suppression, find local maxima
keypoint candidates - Localizable corner For each maximum fit
quadratic function. Compute center with sub-pixel
accuracy by setting first derivative to zero. - Eliminate edges Compute ratio of eigenvalues,
drop keypoints for which this ratio is larger
than a threshold. - Enforce invariance to orientation Compute
orientation, to achieve scale invariance, by
finding the strongest second derivative direction
in the smoothed image (possibly multiple
orientations). Rotate patch so that orientation
points up. - Compute feature signature Compute a "gradient
histogram" of the local image region in a 4x4
pixel region. Do this for 4x4 regions of that
size. Orient so that largest gradient points up
(possibly multiple solutions). Result feature
vector with 128 values (15 fields, 8 gradients). - Enforce invariance to illumination change and
camera saturation Normalize to unit length to
increase invariance to illumination. Then
threshold all gradients, to become invariant to
camera saturation.
50Find Invariant Corners
- Enforce invariance to scale Compute Gaussian
difference max, for may different scales
non-maximum suppression, find local maxima
keypoint candidates
51Finding Keypoints (Corners)
- Idea Find Corners, but scale invariance
- Approach
- Run linear filter (diff of Gaussians)
- At different resolutions of image pyramid
52Difference of Gaussians
Minus
Equals
53Difference of Gaussians
- surf(fspecial('gaussian',40,4))
- surf(fspecial('gaussian',40,8))
- surf(fspecial('gaussian',40,8) -
fspecial('gaussian',40,4))
54Find Corners with DiffOfGauss
- im imread('bridge.jpg')
- bw double(im(,,1)) / 256
- for i 1 10
- gaussD fspecial('gaussian',40,2i) -
fspecial('gaussian',40,i) - mesh(gaussD) drawnow
- res abs(conv2(bw, gaussD, 'same'))
- res res / max(max(res))
- imshow(res) title('\bf i ' num2str(i))
drawnow - end
55Build Scale-Space Pyramid
- All scales must be examined to identify
scale-invariant features - An efficient function is to compute the
Difference of Gaussian (DOG) pyramid (Burt
Adelson, 1983)
56Key point localization
- Detect maxima and minima of difference-of-Gaussian
in scale space
57Example of keypoint detection
(a) 233x189 image (b) 832 DOG extrema
58SIFT On-A-Slide
- Enforce invariance to scale Compute Gaussian
difference max, for may different scales
non-maximum suppression, find local maxima
keypoint candidates - Localizable corner For each maximum fit
quadratic function. Compute center with sub-pixel
accuracy by setting first derivative to zero. - Eliminate edges Compute ratio of eigenvalues,
drop keypoints for which this ratio is larger
than a threshold. - Enforce invariance to orientation Compute
orientation, to achieve scale invariance, by
finding the strongest second derivative direction
in the smoothed image (possibly multiple
orientations). Rotate patch so that orientation
points up. - Compute feature signature Compute a "gradient
histogram" of the local image region in a 4x4
pixel region. Do this for 4x4 regions of that
size. Orient so that largest gradient points up
(possibly multiple solutions). Result feature
vector with 128 values (15 fields, 8 gradients). - Enforce invariance to illumination change and
camera saturation Normalize to unit length to
increase invariance to illumination. Then
threshold all gradients, to become invariant to
camera saturation.
59Example of keypoint detection
Threshold on value at DOG peak and on ratio of
principle curvatures (Harris approach)
- (c) 729 left after peak value threshold
- (d) 536 left after testing ratio of principle
curvatures
60SIFT On-A-Slide
- Enforce invariance to scale Compute Gaussian
difference max, for may different scales
non-maximum suppression, find local maxima
keypoint candidates - Localizable corner For each maximum fit
quadratic function. Compute center with sub-pixel
accuracy by setting first derivative to zero. - Eliminate edges Compute ratio of eigenvalues,
drop keypoints for which this ratio is larger
than a threshold. - Enforce invariance to orientation Compute
orientation, to achieve scale invariance, by
finding the strongest second derivative direction
in the smoothed image (possibly multiple
orientations). Rotate patch so that orientation
points up. - Compute feature signature Compute a "gradient
histogram" of the local image region in a 4x4
pixel region. Do this for 4x4 regions of that
size. Orient so that largest gradient points up
(possibly multiple solutions). Result feature
vector with 128 values (15 fields, 8 gradients). - Enforce invariance to illumination change and
camera saturation Normalize to unit length to
increase invariance to illumination. Then
threshold all gradients, to become invariant to
camera saturation.
61Select canonical orientation
- Create histogram of local gradient directions
computed at selected scale - Assign canonical orientation at peak of smoothed
histogram - Each key specifies stable 2D coordinates (x, y,
scale, orientation)
62SIFT On-A-Slide
- Enforce invariance to scale Compute Gaussian
difference max, for may different scales
non-maximum suppression, find local maxima
keypoint candidates - Localizable corner For each maximum fit
quadratic function. Compute center with sub-pixel
accuracy by setting first derivative to zero. - Eliminate edges Compute ratio of eigenvalues,
drop keypoints for which this ratio is larger
than a threshold. - Enforce invariance to orientation Compute
orientation, to achieve scale invariance, by
finding the strongest second derivative direction
in the smoothed image (possibly multiple
orientations). Rotate patch so that orientation
points up. - Compute feature signature Compute a "gradient
histogram" of the local image region in a 4x4
pixel region. Do this for 4x4 regions of that
size. Orient so that largest gradient points up
(possibly multiple solutions). Result feature
vector with 128 values (15 fields, 8 gradients). - Enforce invariance to illumination change and
camera saturation Normalize to unit length to
increase invariance to illumination. Then
threshold all gradients, to become invariant to
camera saturation.
63SIFT vector formation
- Thresholded image gradients are sampled over
16x16 array of locations in scale space - Create array of orientation histograms
- 8 orientations x 4x4 histogram array 128
dimensions
64Nearest-neighbor matching to feature database
- Hypotheses are generated by approximate nearest
neighbor matching of each feature to vectors in
the database - SIFT use best-bin-first (Beis Lowe, 97)
modification to k-d tree algorithm - Use heap data structure to identify bins in order
by their distance from query point - Result Can give speedup by factor of 1000 while
finding nearest neighbor (of interest) 95 of the
time
653D Object Recognition
- Extract outlines with background subtraction
663D Object Recognition
- Only 3 keys are needed for recognition, so extra
keys provide robustness - Affine model is no longer as accurate
67Recognition under occlusion
68Test of illumination invariance
- Same image under differing illumination
273 keys verified in final match
69 Examples of view interpolation
70Location recognition
71- Sony Aibo
- (Evolution Robotics)
- SIFT usage
- Recognize
- charging
- station
- Communicate
- with visual
- cards
72Todays Goals
- Harris Corner Detector
- Hough Transform
- Templates, Image Pyramid, Transforms
- SIFT Features
This is the end of features....