CS131( Panoramic(Image(S6tching( - Artificial Intelligencevision.stanford.edu/teaching/cs131_fall1617/lectures/lecture_panora… · Jiayuan Ma PA1 Session...

Post on 15-Jun-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

PA1 Session 16#Oct#15(Jiayuan Ma

CS131(Panoramic(Image(S6tching(

Ranjay(Krishna(16#Oct#15(

1(

Leonid Keselman10/21/2016

PA1 Session 16#Oct#15(Jiayuan Ma

Agenda(

•  Objec6ve(•  Main(flow(•  Skeleton(code(•  Results(

2(

PA1 Session 16#Oct#15(Jiayuan Ma

Objec6ve(

3(

Mul6ple(images(into(one(panorama!(

PA1 Session 16#Oct#15(Jiayuan Ma

Main(Flow(

•  Detect(key(points(

4(

PA1 Session 16#Oct#15(Jiayuan Ma

Detect(Key(Points(

5(

PA1 Session 16#Oct#15(Jiayuan Ma

Skeleton(Code(

•  Detect(key(points((Done(for(you!)(– Under(KeypointDetect(

6(

[feature,(DoG(pyr,(Gaussian(pyr](=(detect_features(input(image)(

PA1 Session 16#Oct#15(Jiayuan Ma

Main(Flow(

•  Detect(key(points(•  Build(the(SIFT(descriptors(

7(

PA1 Session 16#Oct#15(Jiayuan Ma

Build(the(SIFT(Descriptors(

8(

This(is(just(an(illustra6on!(

PA1 Session 16#Oct#15(Jiayuan Ma

Skeleton(Code(

•  Build(the(SIFT(descriptors(–  Read(this(paper(h[p://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf(first!((

•  Input(–  Gaussian(pyramid(–  key(point(loca6on(–  key(point(scale(index(

•  Output(–  A(set(of(128#dim(vectors(

9(

PA1 Session 16#Oct#15(Jiayuan Ma

Skeleton(Code(

•  Build(the(SIFT(descriptors((30(lines(of(code)(– Compute(gradient(magnitude(and(orienta6on(– For(each(key(point(

•  Find(a(patch((tricky(round#off)(•  Compute(orienta6on(of(the(patch(•  Build(the(histogram((edge(case)(

10(

PA1 Session 16#Oct#15(Jiayuan Ma

Main(Flow(

•  Detect(key(points(•  Build(the(SIFT(descriptors(•  Match(SIFT(descriptors(

11(

PA1 Session 16#Oct#15(Jiayuan Ma

Match(SIFT(Descriptors(

•  Euclidean(distance(between(descriptors(

12(

PA1 Session 16#Oct#15(Jiayuan Ma

Skeleton(Code(

•  Match(SIFT(descriptors((6(lines(of(code)(–  Input:(D1,(D2,(thresh((default(0.7)(– Output:(match([D1’s(index,(D2’s(index](– Try(to(use(one(for(loop(– Useful(command(

•  repmat(•  sort(

13(

PA1 Session 16#Oct#15(Jiayuan Ma

Main(Flow(

•  Detect(key(points(•  Build(the(SIFT(descriptors(•  Match(SIFT(descriptors(•  Figng(the(transforma6on(

14(

PA1 Session 16#Oct#15(Jiayuan Ma

Figng(the(transforma6on(

•  2D(transforma6ons(

15(

PA1 Session 16#Oct#15(Jiayuan Ma

Skeleton(Code(

•  Fit(the(transforma6on(matrix(

•  Six(variables(– each(point(give(two(equa6ons(– at(least(three(points(

•  Least(squares(

16(

PA1 Session 16#Oct#15(Jiayuan Ma

Main(Flow(

•  Detect(key(points(•  Build(the(SIFT(descriptors(•  Match(SIFT(descriptors(•  Figng(the(transforma6on(•  RANSAC(

17(

PA1 Session 16#Oct#15(Jiayuan Ma

RANSAC(

•  A(further(refinement(of(matches(

18(

PA1 Session 16#Oct#15(Jiayuan Ma

Skeleton(Code(

•  RANSAC(– ComputeError(

19(

PA1 Session 16#Oct#15(Jiayuan Ma

Main(Flow(

•  Detect(key(points(•  Build(the(SIFT(descriptors(•  Match(SIFT(descriptors(•  Figng(the(transforma6on(•  RANSAC(

20(

PA1 Session 16#Oct#15(Jiayuan Ma

Image(S6tching(

•  Almost(done(for(you(

21(

PA1 Session 16#Oct#15(Jiayuan Ma

Skeleton(Code(

•  Mul6ple(S6tch((2(lines(of(code)(– A(simplified(case(of(real#world(scenario(– Transforma6on(is(associa6ve(and(inver6ble(– Useful(command(•  pinv(

22(

PA1 Session 16#Oct#15(Jiayuan Ma

Skeleton(Code(

•  Tester.m(– Scripts(that(help(you(to(get(started(

•  Evaluate.m(– Scripts(that(tests(your(solu6on(

•  Load(fixed(input(from(checkpoint(•  Run(your(implementa6on(•  Compare(results(with(reference(solu6on(

23(

PA1 Session 16#Oct#15(Jiayuan Ma

Requirement(•  Due(Date:(5pm(Oct(30,(2015(•  Electronic(submission(only(–  cs131submissions@gmail.com(for(code(– Gradescope(for(report(

•  Code(+(Report(–  SIFT(invariance(and(why(it(helps(– DoG(v.s.(Dense(SIFT(– Why(RANSAC(–  Your(own(s6tches(–  Error(discussion(

24(

PA1 Session 16#Oct#15(Jiayuan Ma

Results(

25(

PA1 Session 16#Oct#15(Jiayuan Ma

Results(

26(

PA1 Session 16#Oct#15(Jiayuan Ma 27(

Ques6ons?(

top related