-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
730 lines (642 loc) · 74.2 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>10 - Histogram, SIFT </title><style>
/* cspell:disable-file */
/* webkit printing magic: print all background colors */
html {
-webkit-print-color-adjust: exact;
}
* {
box-sizing: border-box;
-webkit-print-color-adjust: exact;
}
html,
body {
margin: 0;
padding: 0;
}
@media only screen {
body {
margin: 2em auto;
max-width: 900px;
color: rgb(55, 53, 47);
}
}
body {
line-height: 1.5;
white-space: pre-wrap;
}
a,
a.visited {
color: inherit;
text-decoration: underline;
}
.pdf-relative-link-path {
font-size: 80%;
color: #444;
}
h1,
h2,
h3 {
letter-spacing: -0.01em;
line-height: 1.2;
font-weight: 600;
margin-bottom: 0;
}
.page-title {
font-size: 2.5rem;
font-weight: 700;
margin-top: 0;
margin-bottom: 0.75em;
}
h1 {
font-size: 1.875rem;
margin-top: 1.875rem;
}
h2 {
font-size: 1.5rem;
margin-top: 1.5rem;
}
h3 {
font-size: 1.25rem;
margin-top: 1.25rem;
}
.source {
border: 1px solid #ddd;
border-radius: 3px;
padding: 1.5em;
word-break: break-all;
}
.callout {
border-radius: 3px;
padding: 1rem;
}
figure {
margin: 1.25em 0;
page-break-inside: avoid;
}
figcaption {
opacity: 0.5;
font-size: 85%;
margin-top: 0.5em;
}
mark {
background-color: transparent;
}
.indented {
padding-left: 1.5em;
}
hr {
background: transparent;
display: block;
width: 100%;
height: 1px;
visibility: visible;
border: none;
border-bottom: 1px solid rgba(55, 53, 47, 0.09);
}
img {
max-width: 100%;
}
@media only print {
img {
max-height: 100vh;
object-fit: contain;
}
}
@page {
margin: 1in;
}
.collection-content {
font-size: 0.875rem;
}
.column-list {
display: flex;
justify-content: space-between;
}
.column {
padding: 0 1em;
}
.column:first-child {
padding-left: 0;
}
.column:last-child {
padding-right: 0;
}
.table_of_contents-item {
display: block;
font-size: 0.875rem;
line-height: 1.3;
padding: 0.125rem;
}
.table_of_contents-indent-1 {
margin-left: 1.5rem;
}
.table_of_contents-indent-2 {
margin-left: 3rem;
}
.table_of_contents-indent-3 {
margin-left: 4.5rem;
}
.table_of_contents-link {
text-decoration: none;
opacity: 0.7;
border-bottom: 1px solid rgba(55, 53, 47, 0.18);
}
table,
th,
td {
border: 1px solid rgba(55, 53, 47, 0.09);
border-collapse: collapse;
}
table {
border-left: none;
border-right: none;
}
th,
td {
font-weight: normal;
padding: 0.25em 0.5em;
line-height: 1.5;
min-height: 1.5em;
text-align: left;
}
th {
color: rgba(55, 53, 47, 0.6);
}
ol,
ul {
margin: 0;
margin-block-start: 0.6em;
margin-block-end: 0.6em;
}
li > ol:first-child,
li > ul:first-child {
margin-block-start: 0.6em;
}
ul > li {
list-style: disc;
}
ul.to-do-list {
text-indent: -1.7em;
}
ul.to-do-list > li {
list-style: none;
}
.to-do-children-checked {
text-decoration: line-through;
opacity: 0.375;
}
ul.toggle > li {
list-style: none;
}
ul {
padding-inline-start: 1.7em;
}
ul > li {
padding-left: 0.1em;
}
ol {
padding-inline-start: 1.6em;
}
ol > li {
padding-left: 0.2em;
}
.mono ol {
padding-inline-start: 2em;
}
.mono ol > li {
text-indent: -0.4em;
}
.toggle {
padding-inline-start: 0em;
list-style-type: none;
}
/* Indent toggle children */
.toggle > li > details {
padding-left: 1.7em;
}
.toggle > li > details > summary {
margin-left: -1.1em;
}
.selected-value {
display: inline-block;
padding: 0 0.5em;
background: rgba(206, 205, 202, 0.5);
border-radius: 3px;
margin-right: 0.5em;
margin-top: 0.3em;
margin-bottom: 0.3em;
white-space: nowrap;
}
.collection-title {
display: inline-block;
margin-right: 1em;
}
.simple-table {
margin-top: 1em;
font-size: 0.875rem;
empty-cells: show;
}
.simple-table td {
height: 29px;
min-width: 120px;
}
.simple-table th {
height: 29px;
min-width: 120px;
}
.simple-table-header-color {
background: rgb(247, 246, 243);
color: black;
}
.simple-table-header {
font-weight: 500;
}
time {
opacity: 0.5;
}
.icon {
display: inline-block;
max-width: 1.2em;
max-height: 1.2em;
text-decoration: none;
vertical-align: text-bottom;
margin-right: 0.5em;
}
img.icon {
border-radius: 3px;
}
.user-icon {
width: 1.5em;
height: 1.5em;
border-radius: 100%;
margin-right: 0.5rem;
}
.user-icon-inner {
font-size: 0.8em;
}
.text-icon {
border: 1px solid #000;
text-align: center;
}
.page-cover-image {
display: block;
object-fit: cover;
width: 100%;
max-height: 30vh;
}
.page-header-icon {
font-size: 3rem;
margin-bottom: 1rem;
}
.page-header-icon-with-cover {
margin-top: -0.72em;
margin-left: 0.07em;
}
.page-header-icon img {
border-radius: 3px;
}
.link-to-page {
margin: 1em 0;
padding: 0;
border: none;
font-weight: 500;
}
p > .user {
opacity: 0.5;
}
td > .user,
td > time {
white-space: nowrap;
}
input[type="checkbox"] {
transform: scale(1.5);
margin-right: 0.6em;
vertical-align: middle;
}
p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.image {
border: none;
margin: 1.5em 0;
padding: 0;
border-radius: 0;
text-align: center;
}
.code,
code {
background: rgba(135, 131, 120, 0.15);
border-radius: 3px;
padding: 0.2em 0.4em;
border-radius: 3px;
font-size: 85%;
tab-size: 2;
}
code {
color: #eb5757;
}
.code {
padding: 1.5em 1em;
}
.code-wrap {
white-space: pre-wrap;
word-break: break-all;
}
.code > code {
background: none;
padding: 0;
font-size: 100%;
color: inherit;
}
blockquote {
font-size: 1.25em;
margin: 1em 0;
padding-left: 1em;
border-left: 3px solid rgb(55, 53, 47);
}
.bookmark {
text-decoration: none;
max-height: 8em;
padding: 0;
display: flex;
width: 100%;
align-items: stretch;
}
.bookmark-title {
font-size: 0.85em;
overflow: hidden;
text-overflow: ellipsis;
height: 1.75em;
white-space: nowrap;
}
.bookmark-text {
display: flex;
flex-direction: column;
}
.bookmark-info {
flex: 4 1 180px;
padding: 12px 14px 14px;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.bookmark-image {
width: 33%;
flex: 1 1 180px;
display: block;
position: relative;
object-fit: cover;
border-radius: 1px;
}
.bookmark-description {
color: rgba(55, 53, 47, 0.6);
font-size: 0.75em;
overflow: hidden;
max-height: 4.5em;
word-break: break-word;
}
.bookmark-href {
font-size: 0.75em;
margin-top: 0.25em;
}
.sans { font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol"; }
.code { font-family: "SFMono-Regular", Menlo, Consolas, "PT Mono", "Liberation Mono", Courier, monospace; }
.serif { font-family: Lyon-Text, Georgia, ui-serif, serif; }
.mono { font-family: iawriter-mono, Nitti, Menlo, Courier, monospace; }
.pdf .sans { font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol", 'Twemoji', 'Noto Color Emoji', 'Noto Sans CJK JP'; }
.pdf:lang(zh-CN) .sans { font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol", 'Twemoji', 'Noto Color Emoji', 'Noto Sans CJK SC'; }
.pdf:lang(zh-TW) .sans { font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol", 'Twemoji', 'Noto Color Emoji', 'Noto Sans CJK TC'; }
.pdf:lang(ko-KR) .sans { font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol", 'Twemoji', 'Noto Color Emoji', 'Noto Sans CJK KR'; }
.pdf .code { font-family: Source Code Pro, "SFMono-Regular", Menlo, Consolas, "PT Mono", "Liberation Mono", Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK JP'; }
.pdf:lang(zh-CN) .code { font-family: Source Code Pro, "SFMono-Regular", Menlo, Consolas, "PT Mono", "Liberation Mono", Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK SC'; }
.pdf:lang(zh-TW) .code { font-family: Source Code Pro, "SFMono-Regular", Menlo, Consolas, "PT Mono", "Liberation Mono", Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK TC'; }
.pdf:lang(ko-KR) .code { font-family: Source Code Pro, "SFMono-Regular", Menlo, Consolas, "PT Mono", "Liberation Mono", Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK KR'; }
.pdf .serif { font-family: PT Serif, Lyon-Text, Georgia, ui-serif, serif, 'Twemoji', 'Noto Color Emoji', 'Noto Serif CJK JP'; }
.pdf:lang(zh-CN) .serif { font-family: PT Serif, Lyon-Text, Georgia, ui-serif, serif, 'Twemoji', 'Noto Color Emoji', 'Noto Serif CJK SC'; }
.pdf:lang(zh-TW) .serif { font-family: PT Serif, Lyon-Text, Georgia, ui-serif, serif, 'Twemoji', 'Noto Color Emoji', 'Noto Serif CJK TC'; }
.pdf:lang(ko-KR) .serif { font-family: PT Serif, Lyon-Text, Georgia, ui-serif, serif, 'Twemoji', 'Noto Color Emoji', 'Noto Serif CJK KR'; }
.pdf .mono { font-family: PT Mono, iawriter-mono, Nitti, Menlo, Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK JP'; }
.pdf:lang(zh-CN) .mono { font-family: PT Mono, iawriter-mono, Nitti, Menlo, Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK SC'; }
.pdf:lang(zh-TW) .mono { font-family: PT Mono, iawriter-mono, Nitti, Menlo, Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK TC'; }
.pdf:lang(ko-KR) .mono { font-family: PT Mono, iawriter-mono, Nitti, Menlo, Courier, monospace, 'Twemoji', 'Noto Color Emoji', 'Noto Sans Mono CJK KR'; }
.highlight-default {
color: rgba(55, 53, 47, 1);
}
.highlight-gray {
color: rgba(120, 119, 116, 1);
fill: rgba(120, 119, 116, 1);
}
.highlight-brown {
color: rgba(159, 107, 83, 1);
fill: rgba(159, 107, 83, 1);
}
.highlight-orange {
color: rgba(217, 115, 13, 1);
fill: rgba(217, 115, 13, 1);
}
.highlight-yellow {
color: rgba(203, 145, 47, 1);
fill: rgba(203, 145, 47, 1);
}
.highlight-teal {
color: rgba(68, 131, 97, 1);
fill: rgba(68, 131, 97, 1);
}
.highlight-blue {
color: rgba(51, 126, 169, 1);
fill: rgba(51, 126, 169, 1);
}
.highlight-purple {
color: rgba(144, 101, 176, 1);
fill: rgba(144, 101, 176, 1);
}
.highlight-pink {
color: rgba(193, 76, 138, 1);
fill: rgba(193, 76, 138, 1);
}
.highlight-red {
color: rgba(212, 76, 71, 1);
fill: rgba(212, 76, 71, 1);
}
.highlight-gray_background {
background: rgba(241, 241, 239, 1);
}
.highlight-brown_background {
background: rgba(244, 238, 238, 1);
}
.highlight-orange_background {
background: rgba(251, 236, 221, 1);
}
.highlight-yellow_background {
background: rgba(251, 243, 219, 1);
}
.highlight-teal_background {
background: rgba(237, 243, 236, 1);
}
.highlight-blue_background {
background: rgba(231, 243, 248, 1);
}
.highlight-purple_background {
background: rgba(244, 240, 247, 0.8);
}
.highlight-pink_background {
background: rgba(249, 238, 243, 0.8);
}
.highlight-red_background {
background: rgba(253, 235, 236, 1);
}
.block-color-default {
color: inherit;
fill: inherit;
}
.block-color-gray {
color: rgba(120, 119, 116, 1);
fill: rgba(120, 119, 116, 1);
}
.block-color-brown {
color: rgba(159, 107, 83, 1);
fill: rgba(159, 107, 83, 1);
}
.block-color-orange {
color: rgba(217, 115, 13, 1);
fill: rgba(217, 115, 13, 1);
}
.block-color-yellow {
color: rgba(203, 145, 47, 1);
fill: rgba(203, 145, 47, 1);
}
.block-color-teal {
color: rgba(68, 131, 97, 1);
fill: rgba(68, 131, 97, 1);
}
.block-color-blue {
color: rgba(51, 126, 169, 1);
fill: rgba(51, 126, 169, 1);
}
.block-color-purple {
color: rgba(144, 101, 176, 1);
fill: rgba(144, 101, 176, 1);
}
.block-color-pink {
color: rgba(193, 76, 138, 1);
fill: rgba(193, 76, 138, 1);
}
.block-color-red {
color: rgba(212, 76, 71, 1);
fill: rgba(212, 76, 71, 1);
}
.block-color-gray_background {
background: rgba(241, 241, 239, 1);
}
.block-color-brown_background {
background: rgba(244, 238, 238, 1);
}
.block-color-orange_background {
background: rgba(251, 236, 221, 1);
}
.block-color-yellow_background {
background: rgba(251, 243, 219, 1);
}
.block-color-teal_background {
background: rgba(237, 243, 236, 1);
}
.block-color-blue_background {
background: rgba(231, 243, 248, 1);
}
.block-color-purple_background {
background: rgba(244, 240, 247, 0.8);
}
.block-color-pink_background {
background: rgba(249, 238, 243, 0.8);
}
.block-color-red_background {
background: rgba(253, 235, 236, 1);
}
.select-value-color-pink { background-color: rgba(245, 224, 233, 1); }
.select-value-color-purple { background-color: rgba(232, 222, 238, 1); }
.select-value-color-green { background-color: rgba(219, 237, 219, 1); }
.select-value-color-gray { background-color: rgba(227, 226, 224, 1); }
.select-value-color-opaquegray { background-color: rgba(255, 255, 255, 0.0375); }
.select-value-color-orange { background-color: rgba(250, 222, 201, 1); }
.select-value-color-brown { background-color: rgba(238, 224, 218, 1); }
.select-value-color-red { background-color: rgba(255, 226, 221, 1); }
.select-value-color-yellow { background-color: rgba(253, 236, 200, 1); }
.select-value-color-blue { background-color: rgba(211, 229, 239, 1); }
.checkbox {
display: inline-flex;
vertical-align: text-bottom;
width: 16;
height: 16;
background-size: 16px;
margin-left: 2px;
margin-right: 5px;
}
.checkbox-on {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%2358A9D7%22%2F%3E%0A%3Cpath%20d%3D%22M6.71429%2012.2852L14%204.9995L12.7143%203.71436L6.71429%209.71378L3.28571%206.2831L2%207.57092L6.71429%2012.2852Z%22%20fill%3D%22white%22%2F%3E%0A%3C%2Fsvg%3E");
}
.checkbox-off {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%3Crect%20x%3D%220.75%22%20y%3D%220.75%22%20width%3D%2214.5%22%20height%3D%2214.5%22%20fill%3D%22white%22%20stroke%3D%22%2336352F%22%20stroke-width%3D%221.5%22%2F%3E%0A%3C%2Fsvg%3E");
}
</style></head><body><article id="d529efd2-de78-4cd3-8072-171129fdef56" class="page sans"><header><div class="page-header-icon undefined"><span class="icon">📸</span></div><h1 class="page-title">10 - Histogram, SIFT </h1></header><div class="page-body"><p id="95ebcc11-f2a5-4819-955b-789084e4d4ec" class=""><time>@October 4, 2022</time> </p><nav id="d863b3fd-fd9b-4ce4-88c7-9ef5b4c12ea4" class="block-color-gray table_of_contents"><div class="table_of_contents-item table_of_contents-indent-0"><a class="table_of_contents-link" href="#7d7e7de3-a5b2-4ce4-b97f-27e715fa4d96"><mark class="highlight-gray">Recall: HoG descriptors</mark></a></div><div class="table_of_contents-item table_of_contents-indent-0"><a class="table_of_contents-link" href="#2a652b4d-8b95-4bbb-b3f4-f5f569fe3ea5">SIFT [Lowe 1999, 2004]</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#f986a48f-d28e-4373-b478-22bcd42dcf66">SIFT Keypoints</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#994aaf38-2aa1-49d2-9443-409056203cd8">SIFT Keypoints Issues</a></div><div class="table_of_contents-item table_of_contents-indent-2"><a class="table_of_contents-link" href="#c6b362a2-7dd3-481d-8baf-a1653f51b5b8">1. Translation, easy</a></div><div class="table_of_contents-item table_of_contents-indent-2"><a class="table_of_contents-link" href="#98264df4-b8a5-4249-a926-2618d5b12ed3">2. Rotation, hard</a></div><div class="table_of_contents-item table_of_contents-indent-2"><a class="table_of_contents-link" href="#18fce46d-0295-422a-b5a6-fd193f9d50d8">3. Scaling, harder</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#f8a81e4b-2d83-4cd3-85ab-cf6f55c8370a"><mark class="highlight-teal">SIFT Steps</mark></a></div><div class="table_of_contents-item table_of_contents-indent-2"><a class="table_of_contents-link" href="#86bf99a7-cfe9-4e44-8705-2a5aaebbf62f">SIFT Steps, details</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#b7dbc78a-1fc4-4be2-9b5e-e3977ad8cca3"><mark class="highlight-gray">Recall: Difference in gaussian</mark></a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#c0e16bb7-88c9-4adc-a15e-9444a7ffcd3f">STEP 1: Scale Space maxima</a></div><div class="table_of_contents-item table_of_contents-indent-2"><a class="table_of_contents-link" href="#b20c474e-5d97-4e44-ab84-f78cad65e70e">Finding Local Extrema in Space & Scale ⭐️</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#179bbb8e-eee5-49b1-bd49-ab3c60c4e319">STEP 2: Assign Orientation to a SIFT Keypoint</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#ce537051-6a34-47c3-9c83-62da819d3aa1">⭐️<mark class="highlight-teal">EXAMPLE</mark></a></div><div class="table_of_contents-item table_of_contents-indent-2"><a class="table_of_contents-link" href="#4e620d2d-40a9-4748-af37-727d48a0d47d"><em>Example of Keypoint Detection</em></a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#aee6a549-aec1-472e-a9c9-a382318b95b5">STEP 3: SIFT Vector</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#e5ed135b-9fa4-49a3-8f1f-8dcd7eb16c0a"><em>SIFT Application: Panoramas</em></a></div><div class="table_of_contents-item table_of_contents-indent-0"><a class="table_of_contents-link" href="#615df34c-77ad-457f-90ae-9bcd11f0d0c0">SUMMARY of lecture 9</a></div><div class="table_of_contents-item table_of_contents-indent-0"><a class="table_of_contents-link" href="#38c3aa2a-dba6-4cf4-bc4f-98673f27f0b6"><mark class="highlight-gray">SIFT (notes rewrite)</mark></a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#8eedb030-3acd-472a-9c0a-929294d85151">STEP 1: get position & scale of EXTREMA from DoG</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#0433e4e6-17cb-4d8c-af70-7ed750da2de0">STEP 2: orientation</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#822ab4dc-556d-41a2-8a9f-68eb32b486ca">STEP 3a: Image gradient descriptor</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#88c374bf-64d8-48fa-ba03-44690b3db147">STEP 3b: Image gradient descriptor</a></div><div class="table_of_contents-item table_of_contents-indent-0"><a class="table_of_contents-link" href="#82af82f8-ad63-4954-a923-b47df2eefef3">Motivation: image matching</a></div><div class="table_of_contents-item table_of_contents-indent-0"><a class="table_of_contents-link" href="#e1682812-0e19-49f6-8095-0b8a73181be0"><strong>SIFT [Lowe 1999, 2004]</strong></a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#330e9772-bad3-4e59-82ab-3e47c172f946">SIFT STEP 1: position & scale</a></div><div class="table_of_contents-item table_of_contents-indent-0"><a class="table_of_contents-link" href="#260898a8-28b7-46fa-b7bb-5def1c242f17">Recall lecture7: Gaussian Scale Space</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#13918f50-4bb2-4fa8-bf28-e904715d081e"> Recall lec 9: gaussian pyramid</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#9dd57095-6f36-41c2-bccc-0a8c878ae98d">EXAMPLE 2. SIFT with red circle</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#51ec7bb4-af72-4921-a750-49b98b7ee3ca">SIFT STEP 2: orientaion</a></div><div class="table_of_contents-item table_of_contents-indent-1"><a class="table_of_contents-link" href="#f2bc76b4-c6a5-4253-b0db-74053ecede3a">SIFT STEP 3: IMAGE GRADIENT DESCRIPTOR</a></div><div class="table_of_contents-item table_of_contents-indent-2"><a class="table_of_contents-link" href="#c9708e3f-c564-4bb3-b8f6-9065385c4e13">3a:</a></div><div class="table_of_contents-item table_of_contents-indent-2"><a class="table_of_contents-link" href="#3ae8abaa-85cb-4f37-bb2e-01e65b04cfab">3b:</a></div></nav><p id="f70be47c-5b28-4c7f-abf4-2f791b7a6adf" class="">
</p><h1 id="7d7e7de3-a5b2-4ce4-b97f-27e715fa4d96" class=""><mark class="highlight-gray">Recall: HoG descriptors</mark></h1><p id="592a3e8f-39fb-4879-a3a0-ff86062a3da0" class="">
</p><figure id="eb5971d5-54a6-4b6e-b5c4-4d992d98b054" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_2.49.56_PM.png"><img style="width:432px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_2.49.56_PM.png"/></a></figure><h1 id="2a652b4d-8b95-4bbb-b3f4-f5f569fe3ea5" class="">SIFT [Lowe 1999, 2004]</h1><hr id="2daf5b2f-ce6b-4348-89f9-b6b98e92f517"/><blockquote id="5f5cda0f-ac18-41a9-a4e3-e24a4c54663d" class=""><em><strong>scale invariant feature transform,</strong></em><span style="border-bottom:0.05em solid"><em><strong> based on Gaussian scale space</strong></em></span></blockquote><figure id="6c4262c6-a7fe-41f0-9eef-3fb746bda914" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_11.43.40_AM.png"><img style="width:480px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_11.43.40_AM.png"/></a></figure><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="b68ff566-f77c-4faa-9368-87f69c526e8d"><div style="font-size:1.5em"><span class="icon">💡</span></div><div style="width:100%">popular use: panorama, object detection, stereo matching</div></figure><p id="1a32d626-e5d1-42c9-a29b-d63f8b0db42b" class="">
</p><h2 id="f986a48f-d28e-4373-b478-22bcd42dcf66" class="">SIFT Keypoints</h2><hr id="cd478114-a341-4f77-903f-c3bc894092d9"/><ul id="033a8c01-e405-4fd3-a434-53d82de8d131" class="block-color-blue bulleted-list"><li style="list-style-type:disc"><strong>SAME IMAGE POINTS regardless of magnification & rotation</strong></li></ul><ul id="f48d6d78-06b5-4e67-966f-008709ef3079" class="block-color-blue bulleted-list"><li style="list-style-type:disc"><strong><em>match feature vectors using correlation</em></strong></li></ul><p id="e094476f-8152-4746-a4e9-5c7cfab679df" class="">
</p><h2 id="994aaf38-2aa1-49d2-9443-409056203cd8" class="">SIFT Keypoints Issues</h2><hr id="20dcbdad-eb6b-429f-990f-3db64fd2623a"/><p id="7134fff7-7374-4774-a374-97892a168dce" class="">Given 2 images,</p><h3 id="c6b362a2-7dd3-481d-8baf-a1653f51b5b8" class="block-color-yellow_background">1. Translation, easy</h3><p id="1bd6ecf4-82cb-4151-829c-c85880bf5fe9" class="block-color-yellow_background"><div class="indented"><ul id="6eb2868d-05d0-4234-ba1d-a5e375d0b386" class="bulleted-list"><li style="list-style-type:disc">most feature extraction & matching methods are INVARIANT to translation</li></ul></div></p><h3 id="98264df4-b8a5-4249-a926-2618d5b12ed3" class="block-color-yellow_background">2. Rotation, hard</h3><p id="e4ce660b-a7d5-4510-acad-efb3bda24aae" class="block-color-yellow_background"><div class="indented"><ul id="f3ad8b37-0e65-46ef-9ae6-af40b74151ed" class="bulleted-list"><li style="list-style-type:disc">needs a canonical<strong> </strong>orientation for each feature</li></ul><ul id="2bfdd94a-fdd7-4705-903f-0e5bca75d3ff" class="bulleted-list"><li style="list-style-type:disc">compare rotated versions of pics</li></ul></div></p><h3 id="18fce46d-0295-422a-b5a6-fd193f9d50d8" class="block-color-yellow_background">3. Scaling, harder</h3><ul id="5fc194ae-37e3-46c9-906f-285f86267e77" class="block-color-yellow_background bulleted-list"><li style="list-style-type:disc">scale-space theory</li></ul><p id="8d532733-4871-4e07-bd03-6794947b8d12" class="">
</p><p id="0faa7c96-0080-44c7-b064-800320d5eb55" class="">
</p><h2 id="f8a81e4b-2d83-4cd3-85ab-cf6f55c8370a" class=""><mark class="highlight-teal">SIFT Steps</mark></h2><hr id="180c818d-8a83-489d-b1e5-fd7c6f89a5cc"/><ol type="1" id="a96775e3-4fde-451c-b9af-584b00c9813c" class="block-color-teal_background numbered-list" start="1"><li><strong>FIND EXTREMA</strong><ol type="a" id="deb24df1-11ba-49c9-b1df-8b3c71ade5ca" class="block-color-teal_background numbered-list" start="1"><li>LAPLAPLAN</li></ol><ol type="a" id="a7b923e7-6e20-4c38-acc2-17f99ed9a806" class="block-color-teal_background numbered-list" start="2"><li>UP-SAMPLE TO GET EXTREMA</li></ol></li></ol><ol type="1" id="fa46b908-47ab-46cf-8640-e4920437ddb2" class="block-color-teal_background numbered-list" start="2"><li><strong>FIND HOG FOR EACH EXTREMA</strong><ol type="a" id="2cf58132-1f4d-4a38-8dbb-93a075e01304" class="numbered-list" start="1"><li>AT THAT SCALE IN PYRAMID</li></ol></li></ol><ol type="1" id="92f2cb33-a5cc-48b7-a6c2-ac04e9708af3" class="block-color-teal_background numbered-list" start="3"><li><strong>ASSIGN DOMINANT ORIENTATION</strong></li></ol><ol type="1" id="c95f0d64-06f7-4a1b-bc26-896fa6a88670" class="block-color-teal_background numbered-list" start="4"><li><strong>COLLECT HOG, GET SIFT</strong></li></ol><p id="a1005c05-8025-4f58-88e6-302d5d08074d" class="">
</p><h3 id="86bf99a7-cfe9-4e44-8705-2a5aaebbf62f" class="block-color-teal_background">SIFT Steps, details</h3><ul id="f7f5f812-e0c9-4d51-9c20-ecc43403775d" class="bulleted-list"><li style="list-style-type:disc">STEP 1: find intensity extrema simultaneously across space(position) & scale (levels in pyramid)</li></ul><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="27cb8807-4627-4166-b874-0cc093969c7c"><div style="font-size:1.5em"><span class="icon">⭐</span></div><div style="width:100%">use <strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>laplacian pyramid</strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>, notice it’s difference of Gaussian pyramid</div></figure><ul id="aec8550d-2d5b-4656-a312-5dd72df61e72" class="bulleted-list"><li style="list-style-type:disc">STEP 2: downsampling OR upsampling, when comparing across adjacent levels</li></ul><ul id="59a73b87-b6f6-4f0b-9b72-d32142d2f197" class="bulleted-list"><li style="list-style-type:disc">STEP 3: once getting extrema, compute <mark class="highlight-teal"><strong><mark class="highlight-teal"><strong><mark class="highlight-teal"><strong><mark class="highlight-teal"><strong><mark class="highlight-teal"><strong><mark class="highlight-teal"><strong><mark class="highlight-teal"><strong><mark class="highlight-teal"><strong>local HoG</strong></mark></strong></mark></strong></mark></strong></mark></strong></mark></strong></mark></strong></mark></strong></mark><strong><strong><strong><strong><strong><strong><strong><strong> type feature at the level in the pyramid (THAT scale!!)</strong></strong></strong></strong></strong></strong></strong></strong><ul id="a85221f5-e1cd-4867-9ed5-32949856d204" class="bulleted-list"><li style="list-style-type:circle">then assign a <span style="border-bottom:0.05em solid"><strong><span style="border-bottom:0.05em solid"><strong><span style="border-bottom:0.05em solid"><strong><span style="border-bottom:0.05em solid"><strong>dominant orentation</strong></span></strong></span></strong></span></strong></span></li></ul></li></ul><ul id="93e84486-312d-4748-864b-98fb5672a2c8" class="bulleted-list"><li style="list-style-type:disc">STEP 4: collect together HoG type features in a SIFT vector</li></ul><p id="67b6103f-b95e-4a66-852c-0fdb8e1ade58" class="block-color-teal_background">
</p><p id="6923a93b-f8b9-4a80-afe0-f17f1f85228c" class="">
</p><p id="61947ca5-2c0a-49e5-92f4-9f1beb991b6f" class="">
</p><p id="eac81eef-d655-4f3d-8e8c-1eb35dafe881" class="">
</p><h2 id="b7dbc78a-1fc4-4be2-9b5e-e3977ad8cca3" class=""><mark class="highlight-gray">Recall: Difference in gaussian</mark></h2><ul id="a5990caf-85a9-4c7a-a4d9-092cf082209b" class="bulleted-list"><li style="list-style-type:disc">this is acc similar to <strong>lapacian of Gaussian </strong><strong><style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext>▵</mtext><mi>G</mi><mo stretchy="false">(</mo><mi>x</mi><mo separator="true">,</mo><mi>y</mi><mo separator="true">,</mo><mi>σ</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">▵G(x,y,σ)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">▵</span><span class="mord mathnormal">G</span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">σ</span><span class="mclose">)</span></span></span></span></span><span></span></span></strong><strong><style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext>▵</mtext><mo stretchy="false">(</mo><mi>x</mi><mo separator="true">,</mo><mi>y</mi><mo separator="true">,</mo><mi>σ</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">▵(x,y,σ)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">▵</span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">σ</span><span class="mclose">)</span></span></span></span></span><span></span></span></strong></li></ul><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="99917442-8f6c-4e8b-aaae-476b3ea87cc4"><div style="font-size:1.5em"><span class="icon">💡</span></div><div style="width:100%"><strong><mark class="highlight-teal_background">so we replace laplacian of gaussian with difference in gaussian</mark></strong></div></figure><blockquote id="dba4c32e-7718-478c-857f-722467d29f77" class="">Qualitatively , very similar!!! even tho conceptually different…</blockquote><div id="1900a646-cf8c-413c-b792-87484b15e49e" class="column-list"><div id="041f0981-ccc8-4fc5-8a30-da93c6271910" style="width:50%" class="column"><figure id="e5897257-e94e-4321-808e-95da5ca84664" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_11.53.19_AM.png"><img style="width:288px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_11.53.19_AM.png"/></a></figure></div><div id="41f42578-03ea-4ac1-8555-453a883e8030" style="width:50%" class="column"><figure id="5596e2fd-567b-49e2-8178-48591195d947" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_11.53.25_AM.png"><img style="width:1278px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_11.53.25_AM.png"/></a></figure></div></div><p id="c80d9445-b4c5-4b1d-9ca5-f1bc813e6191" class="">
</p><p id="1bd0a721-9502-4d56-b3e6-bdbe1dc48255" class="">
</p><p id="b9459547-c55c-4b7c-bfea-2fbeefc12025" class="">
</p><div id="d46d61fa-066a-4e95-9108-5629aee72b41" class="column-list"><div id="4389306e-3192-4470-a7bb-72e25bde03df" style="width:50%" class="column"><h2 id="c0e16bb7-88c9-4adc-a15e-9444a7ffcd3f" class="">STEP 1: Scale Space maxima</h2><ul id="fe2b6618-4f0f-465b-b503-b8ff27ee7bb1" class="bulleted-list"><li style="list-style-type:disc">find extrema in both position & scale</li></ul><p id="17a08cec-f1f0-42ed-8f1c-c267998a42ec" class="">
</p></div><div id="b37f2f2b-8744-4aed-8b99-e123c8b56b94" style="width:49.99999999999999%" class="column"><figure id="317d45e2-83be-481d-bf6d-6d54be7a8ccf" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.11.28_PM.png"><img style="width:480px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.11.28_PM.png"/></a></figure></div></div><hr id="aadc4e18-d545-4566-9ce6-e6e76ba142c1"/><h3 id="b20c474e-5d97-4e44-ab84-f78cad65e70e" class="">Finding Local Extrema in Space & Scale ⭐️</h3><hr id="3075a430-1172-419a-a807-d845a7cf8c9b"/><ul id="398825c8-668e-4014-8519-3268b64d2b19" class="bulleted-list"><li style="list-style-type:disc">search for entries that are local maxima OR minimum in <mark class="highlight-blue"><strong>BOTH NEIGHBOURHOOD & UP & DOWN SCALES!!!</strong></mark></li></ul><figure id="b62b35c9-27a1-457d-8ebc-85a6fac32a6e" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.17.51_PM.png"><img style="width:576px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.17.51_PM.png"/></a></figure><p id="0c917791-3fa9-4216-b873-46077b6f25ca" class=""><strong><mark class="highlight-teal">when finding maxima or minima at level L, use</mark></strong><span style="border-bottom:0.05em solid"><strong><mark class="highlight-teal"> DownSample or UpSample </mark></strong></span><strong><mark class="highlight-teal">as necessary to make DOG images at level L-1 and L+1 the same size as L</mark></strong></p><p id="b5f90800-e9f3-439f-83eb-7ea7c6835c89" class="">
</p><p id="d2121539-ce24-4a50-9378-8c9c2134079f" class="">
</p><div id="cabb5484-0804-4c3f-ab93-36670f57dd2c" class="column-list"><div id="46907f5f-d1df-40e3-8cc2-02895f093d87" style="width:37.5%" class="column"><figure id="27db1c50-aef4-4e9c-9c94-484f91551d72" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.21.37_PM.png"><img style="width:240px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.21.37_PM.png"/></a></figure></div><div id="8344e582-c2bc-436b-92f6-e320c69484c7" style="width:62.5%" class="column"><h2 id="179bbb8e-eee5-49b1-bd49-ab3c60c4e319" class="">STEP 2: Assign Orientation to a SIFT Keypoint</h2><ul id="04121976-cd81-4f84-81b2-312a4e5d69d5" class="bulleted-list"><li style="list-style-type:disc">pick dominant orientation & assign as orientation</li></ul><p id="14f7d49f-283c-46f3-bf98-1e0cd26771a3" class=""><strong><strong><strong><strong><strong><strong><strong><strong>How to find the max orientaiton:</strong></strong></strong></strong></strong></strong></strong></strong></p><ul id="c9fe0708-0f99-4509-bd88-5452d9730f92" class="bulleted-list"><li style="list-style-type:disc">create histogram of local gradient directions at selected scale</li></ul><ul id="b75ddb0d-78ce-4fa0-b3f5-c50192872f7e" class="bulleted-list"><li style="list-style-type:disc">assign canonical orientaion<span style="border-bottom:0.05em solid"><mark class="highlight-yellow"> at</mark></span><span style="border-bottom:0.05em solid"><mark class="highlight-yellow"><strong><strong><strong><strong><strong><strong><strong> peak of smoothed histogram </strong></strong></strong></strong></strong></strong></strong></mark></span></li></ul></div></div><figure id="073a248c-589f-4d26-a82c-48153400327f" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.21.43_PM.png"><img style="width:480px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.21.43_PM.png"/></a></figure><h2 id="ce537051-6a34-47c3-9c83-62da819d3aa1" class="">⭐️<mark class="highlight-teal">EXAMPLE</mark></h2><hr id="24211a84-49d9-482b-953c-51355d8a81d9"/><p id="447c96d3-201f-49dd-a3a0-dbd99d325b3d" class="">
</p><figure id="90a0c077-b053-497f-b035-fbc0c8f6e10b" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_11.57.07_AM.png"><img style="width:528px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_11.57.07_AM.png"/></a><figcaption>locally distinctive; surrounded by *** orientation</figcaption></figure><figure id="fed09b14-0c3f-4d15-b8b5-953b62df9315" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_11.59.03_AM.png"><img style="width:528px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_11.59.03_AM.png"/></a><figcaption>gradient magnitude ✅</figcaption></figure><figure id="75fec78c-26df-47e2-8cbd-16bd0e3f98aa" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.00.53_PM.png"><img style="width:624px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.00.53_PM.png"/></a><figcaption><strong><mark class="highlight-orange">gradient magnitude & the weighted gaussian kernel = weighted gradient magnitude </mark></strong></figcaption></figure><p id="ba1a2415-5f5d-498e-9063-accab58a15ab" class="">
</p><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="7c8780df-f83b-4e2e-894d-b2a3f86e29ef"><div style="font-size:1.5em"><span class="icon">⭐</span></div><div style="width:100%">SIFT has 2 parts:<ul id="ddb1b036-22d1-467d-afc9-7d552eba638c" class="bulleted-list"><li style="list-style-type:disc">find weighted gradient magnitude</li></ul><ul id="e7798fc7-1dbb-4f78-a6b8-7912998b4db2" class="bulleted-list"><li style="list-style-type:disc">find gradient orientation (not related to scales)<ul id="1910d8b6-0656-4223-9e3c-ffe6b35657ec" class="bulleted-list"><li style="list-style-type:circle">gradient orientation</li></ul></li></ul><p id="da533c10-72a6-4faa-a442-bb519dffba2f" class="">FINALLY, histogram</p></div></figure><p id="a1514ae4-1362-47d9-b808-11563aaec580" class="">
</p><p id="d07a25ea-ab6c-4910-b0ef-5a6053183999" class=""><strong>at different scale & ROTATIONS, orientation should be </strong><span style="border-bottom:0.05em solid"><strong><strong>consistent!!!</strong></strong></span></p><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="96c2879a-0b6c-4b34-9c6c-30a8b7dd0532"><div style="font-size:1.5em"><span class="icon">💡</span></div><div style="width:100%">kinda brute force but pretty smart tho still</div></figure><p id="2242c97a-b8d2-4b1e-aca6-14a130fe2954" class="">
</p><p id="9d66454e-cb8f-47a8-af02-ff1eab949310" class=""><strong>then plot the weighted gradient magnitude → HISTOGRAM</strong></p><figure id="03dd091e-55e1-4843-b7e3-7ce2b4d9d1b7" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.03.06_PM.png"><img style="width:1250px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.03.06_PM.png"/></a><figcaption><strong><mark class="highlight-orange">contains sum of weighted gradient magnitudes, corresponding to angles that fall within that bucket.</mark></strong></figcaption></figure><p id="06429180-6d9b-48eb-aa4c-0f743d49360e" class="">⬇️in this example, max at 25 degrees</p><figure id="6373b6b9-b8e4-4948-b892-68ec4b40a85c" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.03.17_PM.png"><img style="width:624px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.03.17_PM.png"/></a></figure><p id="60404e6a-07c7-410e-95ac-cf512ca3b1eb" class="">
</p><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="f8153654-1d1b-4494-958c-e2389ba07ac5"><div style="font-size:1.5em"><span class="icon">💡</span></div><div style="width:100%">may be multiple orientations</div></figure><figure id="9e0e4899-4fc2-461b-b350-1e7d056df7de" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.03.24_PM.png"><img style="width:528px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.03.24_PM.png"/></a></figure><figure class="block-color-red_background callout" style="white-space:pre-wrap;display:flex" id="f28bb5d2-0d01-47bc-997a-95d792021ad8"><div style="font-size:1.5em"><span class="icon">🫒</span></div><div style="width:100%">Design decision: you may want to limit number of possible multiple peaks to two.</div></figure><p id="946e29d2-6a5d-4664-ae14-699a3c80c505" class="">
</p><h3 id="4e620d2d-40a9-4748-af37-727d48a0d47d" class=""><em>Example of Keypoint Detection</em></h3><hr id="5dae57d3-4057-472f-9447-0ee5b84a99d3"/><figure id="70d6ba28-151d-4b5b-b29a-e6abcca78984" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.31.07_PM.png"><img style="width:672px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.31.07_PM.png"/></a></figure><hr id="d6f7d52e-36d6-4f9e-87c6-79103e5e66f6"/><p id="da4b2f08-afe6-4e15-b8ba-22d19ffeb248" class="">
</p><h2 id="aee6a549-aec1-472e-a9c9-a382318b95b5" class="">STEP 3: SIFT Vector</h2><hr id="46fd30ff-359a-43f4-b1b3-4bd20723a24a"/><ul id="7101b4f7-3774-4ccb-88b6-b24a40748a5b" class="bulleted-list"><li style="list-style-type:disc">keypoint descriptor</li></ul><figure class="block-color-blue_background callout" style="white-space:pre-wrap;display:flex" id="a39cd32d-fd86-4361-8b0e-44be1387d233"><div style="font-size:1.5em"><span class="icon">💡</span></div><div style="width:100%">each have <style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>s</mi><mi>i</mi><mi>g</mi><mi>m</mi><mi>a</mi><mo separator="true">,</mo><mi>x</mi><mo separator="true">,</mo><mi>y</mi><mo separator="true">,</mo><mi>t</mi><mi>h</mi><mi>e</mi><mi>t</mi><mi>a</mi><mo stretchy="false">(</mo><mi>o</mi><mi>r</mi><mi>i</mi><mi>e</mi><mi>n</mi><mi>t</mi><mi>a</mi><mi>t</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(sigma, x, y, theta( orientation))</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal">s</span><span class="mord mathnormal">i</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mord mathnormal">ma</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal">x</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal">t</span><span class="mord mathnormal">h</span><span class="mord mathnormal">e</span><span class="mord mathnormal">t</span><span class="mord mathnormal">a</span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.02778em;">or</span><span class="mord mathnormal">i</span><span class="mord mathnormal">e</span><span class="mord mathnormal">n</span><span class="mord mathnormal">t</span><span class="mord mathnormal">a</span><span class="mord mathnormal">t</span><span class="mord mathnormal">i</span><span class="mord mathnormal">o</span><span class="mord mathnormal">n</span><span class="mclose">))</span></span></span></span></span><span></span></span></div></figure><figure id="84213fcb-fb09-4b11-9f53-ec1d40b29a7d" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.34.19_PM.png"><img style="width:576px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.34.19_PM.png"/></a></figure><ul id="e3e80757-edd5-471e-8fd0-2be20df49545" class="bulleted-list"><li style="list-style-type:disc">corner of a box: expect to see 2 peaks</li></ul><ul id="4d37a945-758b-4bdc-81ec-73c44a6b0d92" class="bulleted-list"><li style="list-style-type:disc">use local gradients to get local summary of intensity stas</li></ul><p id="b98ee196-1ca2-407e-a12b-3c08c8d95569" class="">
</p><ul id="b9b8283f-97a7-4bd8-bbc7-c83ee6e16660" class="bulleted-list"><li style="list-style-type:disc">128 dimensional vector, we create to tile</li></ul><ul id="06801b9e-cb8f-4cf4-b875-b77d0f9925d9" class="bulleted-list"><li style="list-style-type:disc">4 by 4 ctyle created<ul id="6e83186f-3e84-4672-b248-620d98db04f8" class="bulleted-list"><li style="list-style-type:circle">16 squares within each</li></ul><ul id="c15dc799-3060-4c9e-90de-793666b7885e" class="bulleted-list"><li style="list-style-type:circle">within each square, represent data orientaions(8 orientation, vector direction)</li></ul></li></ul><figure class="block-color-blue_background callout" style="white-space:pre-wrap;display:flex" id="7614b6a8-3cd3-497b-9cba-2b43166bf3a6"><div style="font-size:1.5em"><span class="icon">🫒</span></div><div style="width:100%">we have position<style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>x</mi><mo separator="true">,</mo><mi>y</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(x,y)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mclose">)</span></span></span></span></span><span></span></span> , scale(<style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi></mrow><annotation encoding="application/x-tex">\sigma</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">σ</span></span></span></span></span><span></span></span>) & orientation(<style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">\theta</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.02778em;">θ</span></span></span></span></span><span></span></span>) of keypoint,<ul id="bdde05cf-2775-4e0f-b9ec-cb1a72c48261" class="bulleted-list"><li style="list-style-type:disc">now adding with another 128 diemensional vectors</li></ul><ul id="5a3a5f8f-9369-4175-9090-a81de15f36ed" class="bulleted-list"><li style="list-style-type:disc">use for feature matching</li></ul></div></figure><h2 id="e5ed135b-9fa4-49a3-8f1f-8dcd7eb16c0a" class=""><em>SIFT Application: Panoramas</em></h2><hr id="f107dfc7-98ed-4057-a0ad-3f9f7d353f0b"/><figure id="a249a89d-d7f9-47b6-abc2-61f53ca7bca1" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.06.02_PM.png"><img style="width:720px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.06.02_PM.png"/></a></figure><p id="1137119e-cf77-4e01-b4a7-c1d42344d80f" class="">type of RANSAC</p><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="064ffefd-c015-4dba-ab47-b4e75f89aeeb"><div style="font-size:1.5em"><span class="icon">💡</span></div><div style="width:100%">The set of corresponding features is used to estimate a homography, which can then be used to render a panorama. To understand this we need to model image formation.
We’ll see more on this topic later in the course.</div></figure><p id="e8a05ecd-4dfa-4ae0-b709-4b57ba415256" class="">
</p><p id="7ec77337-2320-4150-b797-753193895fa9" class="">
</p><p id="a1f08ea7-6e3d-4fdc-98ec-95b3071e60d9" class="">
</p><h1 id="615df34c-77ad-457f-90ae-9bcd11f0d0c0" class="">SUMMARY of lecture 9</h1><blockquote id="5597ae1c-af10-428b-87a1-6bf05617261d" class="">Hog and SIFT</blockquote><p id="e9804900-d7a5-4171-9e0f-e295fd117666" class=""><strong><strong><strong><strong><strong>SIFT:</strong></strong></strong></strong></strong></p><ul id="fa86ed6f-41e0-468d-815c-963a6fde0d6e" class="bulleted-list"><li style="list-style-type:disc">first scale space extrema</li></ul><ul id="ea7bb6f8-1d79-4a43-a915-aaed4aa862f5" class="bulleted-list"><li style="list-style-type:disc">then get feature vector based on chosen level</li></ul><p id="35fc5739-8177-4a3f-8971-1f8bc2a15b8a" class="block-color-orange_background"><strong>SIFT → invariant to translation, rotation and scale changes
</strong></p><p id="6d6fb9fd-06f1-4e78-8563-11ef944b05f4" class=""><strong><strong><strong><strong>HoG:</strong></strong></strong></strong></p><ul id="9c72853e-95cf-40f1-983a-e29ac5fb2416" class="bulleted-list"><li style="list-style-type:disc">wiht a chosen ceell size & block size</li></ul><ul id="697c7452-de94-4df3-a360-5c4a1a3681fa" class="bulleted-list"><li style="list-style-type:disc">ex. human detection, dense array of HoG to train s upoort vector machine (SVM) classifier</li></ul><hr id="608896ee-de40-4a3f-9fb3-998b4a70ebb4"/><hr id="31e62e53-1a1b-4f0a-9db5-f9ca0daf5b10"/><p id="1700888c-3657-4a32-8dee-432d59a89427" class="">
</p><p id="15df0628-4aff-4961-88aa-86029949f9ed" class="">
</p><p id="aa6bd37d-354f-4f1d-ae36-928f39c9c1a1" class="">
</p><h1 id="38c3aa2a-dba6-4cf4-bc4f-98673f27f0b6" class=""><mark class="highlight-gray">SIFT (notes rewrite)</mark></h1><p id="ddcf5be1-50b1-47cc-be42-7b39338bb9a6" class="">
</p><ul id="aa4203af-bdf3-4c33-beb0-568bb254780d" class="bulleted-list"><li style="list-style-type:disc">SIFT:<ul id="4e70e23f-1e8b-4002-b367-9e763a74c3dc" class="bulleted-list"><li style="list-style-type:circle">suppose scale space using normalized laplacian of gaussian filter</li></ul><ul id="23db1be2-6b39-4036-8b9f-937d237465f7" class="bulleted-list"><li style="list-style-type:circle">then local extremas → <strong><strong><strong><strong><strong><strong><strong><strong><strong>are blobs</strong></strong></strong></strong></strong></strong></strong></strong></strong>, either brighter(minima) or darker(maxima)</li></ul><ul id="a3d7cb83-5371-45e3-ac6a-5d874e44217a" class="bulleted-list"><li style="list-style-type:circle">they occure at specific scales</li></ul></li></ul><p id="e5472d3f-c44a-49c6-a5e3-267c7e6d7361" class=""><div class="indented"><ul id="a83a9b4e-36c0-4f64-aa4f-c0fb63fffd6b" class="bulleted-list"><li style="list-style-type:disc">extrama in 3D scale space -. define postin <style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>x</mi><mo separator="true">,</mo><mi>y</mi><mo separator="true">,</mo><mi>σ</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(x,y, \sigma) </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">y</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">σ</span><span class="mclose">)</span></span></span></span></span><span></span></span> of SIFT keypoints</li></ul></div></p><p id="e449d3b6-7192-4b1d-acd7-74c3706a1b49" class="">
</p><ul id="c49266ba-f929-4402-83bf-b81012ce3a2d" class="bulleted-list"><li style="list-style-type:disc">Difference of Gaussians scale space (DoG scale space) = Laplacian pyramid<figure id="2cf7055b-1c13-41b9-bd57-4670579d1b84" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.59.25_PM.png"><img style="width:528px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_3.59.25_PM.png"/></a></figure></li></ul><ul id="99073df4-6931-4368-861f-4d5e4ef09998" class="bulleted-list"><li style="list-style-type:disc">the previous 1, 2, 4, 8, 16…. are not enough, this time we use this sigma’s<figure id="7d8c0910-d034-48e6-a4dc-43bfd3fc469d" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.02.01_PM.png"><img style="width:1438px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.02.01_PM.png"/></a></figure></li></ul><p id="9f368ea8-853c-46d0-bdf8-d5ce6c02a7cb" class="">
</p><p id="8912f167-3209-44e8-b480-7716ff22b815" class="">
</p><h2 id="8eedb030-3acd-472a-9c0a-929294d85151" class="">STEP 1: get position & scale of EXTREMA from DoG</h2><figure id="40a2cac7-de0e-4544-8f10-e23a626161f5" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.40.55_PM.png"><img style="width:624px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.40.55_PM.png"/></a></figure><figure id="2f514901-d013-46c4-92b0-b95f93b32ba3" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.44.46_PM.png"><img style="width:288px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.44.46_PM.png"/></a><figcaption><strong><mark class="highlight-yellow">Result from step 1: x, y ,sigma</mark></strong></figcaption></figure><h2 id="0433e4e6-17cb-4d8c-af70-7ed750da2de0" class="">STEP 2: orientation</h2><ul id="2d447784-ec36-4b43-88bf-6b36b4f598df" class="bulleted-list"><li style="list-style-type:disc">by orientaiton histogram out of intensity gradient vectors<mark class="highlight-yellow"><span style="border-bottom:0.05em solid"><em> in (x,y) rom STEP 1 at scale </em></span></mark><mark class="highlight-yellow"><span style="border-bottom:0.05em solid"><em><style>@import url('https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.2/katex.min.css')</style><span data-token-index="0" contenteditable="false" class="notion-text-equation-token" style="user-select:all;-webkit-user-select:all;-moz-user-select:all"><span></span><span><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>σ</mi></mrow><annotation encoding="application/x-tex">\sigma</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathnormal" style="margin-right:0.03588em;">σ</span></span></span></span></span><span></span></span></em></span></mark><mark class="highlight-yellow"><span style="border-bottom:0.05em solid"><em> from STEP 1 ⬆️</em></span></mark></li></ul><ul id="62bc7fe2-8373-43d1-94b9-36becbda65f7" class="bulleted-list"><li style="list-style-type:disc">The peak of the histogram defines the <em>orientation </em>of a SIFT keypoint.<ul id="8d82af51-2cf0-4578-9690-2886207852b8" class="bulleted-list"><li style="list-style-type:circle">if multiple peaks → then multiple SIFT keypoints <figure class="block-color-blue_background callout" style="white-space:pre-wrap;display:flex" id="2f08db2a-763a-4c43-b17f-d3ee3176b912"><div style="font-size:1.5em"><span class="icon">🫒</span></div><div style="width:100%"><em><mark class="highlight-gray">ASIDE: Lowe suggested using all peaks within 80% of max</mark></em></div></figure></li></ul><figure id="a3c4da55-db86-4a61-849a-83bb21f39658" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.46.36_PM.png"><img style="width:1018px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.46.36_PM.png"/></a><figcaption><mark class="highlight-yellow">result: here peak @ 10 degrees</mark></figcaption></figure><p id="110f92be-2de9-4400-805a-a30ca32c9330" class="">
</p><h3 id="89f96a9a-623b-4282-8a67-e45786868f6c" class="">example. corner of box</h3><figure class="block-color-blue_background callout" style="white-space:pre-wrap;display:flex" id="3c1c88d0-6a6d-4813-9006-a478bb386c6b"><div style="font-size:1.5em"><span class="icon">🫒</span></div><div style="width:100%">NOTE: y is pointing down!!!!</div></figure><p id="e5d8bc82-1db7-4b5d-a6c2-8e50e349ef1c" class="">
</p></li></ul><h2 id="822ab4dc-556d-41a2-8a9f-68eb32b486ca" class="">STEP 3a: Image gradient descriptor</h2><ul id="731f7d6b-d85a-4f2e-ad25-b8b28c9a731b" class="bulleted-list"><li style="list-style-type:disc"><strong><mark class="highlight-yellow">now we have x, y, sigma & theta from STEP 1 & STEP 2</mark></strong></li></ul><div id="4cfc7083-5dc2-43bb-8419-826c02e7fe81" class="column-list"><div id="6a0d74f8-d9b5-46cb-be2a-00db64166bf9" style="width:50%" class="column"><figure id="df4ac4e6-2bdc-42fb-9484-4e576badbe0b" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.56.34_PM.png"><img style="width:840px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.56.34_PM.png"/></a></figure><p id="522409cb-0c86-4cda-8d01-7cc4fd7803f5" class="">
</p></div><div id="ec1df21f-f6eb-426e-b15d-ee01ee890ff4" style="width:50%" class="column"><figure id="65384675-4bfc-4b54-b382-b50f511fe322" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.53.46_PM.png"><img style="width:948px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_4.53.46_PM.png"/></a></figure></div></div><h2 id="88c374bf-64d8-48fa-ba03-44690b3db147" class="">STEP 3b: Image gradient descriptor</h2><p id="e45f2091-2cef-4f11-8ef9-af47426aa327" class="">
</p><div id="2033eb23-bb59-460f-a7e1-5d016f1c3edd" class="column-list"><div id="8a845262-70f3-4d1f-b083-5a967a5b48df" style="width:50%" class="column"><figure id="6886815c-e9d1-4069-9e7e-cbc10ed27a40" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_5.03.36_PM.png"><img style="width:524px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_5.03.36_PM.png"/></a></figure><p id="4eb8e0dd-ee0d-44fc-81e6-60618b8b6740" class="">
</p><p id="e0d1a664-d1cc-4077-b558-2ff27aadf2b3" class="">
</p><p id="2522305d-3884-4ca2-894e-d90c01b1b900" class="">
</p><figure id="472cba91-0161-45e2-8ce8-c776a85f73d0" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_5.04.35_PM.png"><img style="width:568px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_5.04.35_PM.png"/></a></figure></div><div id="6c3e5afd-fa00-48c4-957a-2c740659b7cb" style="width:50%" class="column"><figure id="c790fdc4-d820-440d-93cd-9470531f6822" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_5.03.47_PM.png"><img style="width:620px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_5.03.47_PM.png"/></a></figure><figure id="2b8e04c0-1705-43be-b560-a0fe45aa967c" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_5.03.56_PM.png"><img style="width:964px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-24_at_5.03.56_PM.png"/></a></figure></div></div><hr id="7a8dfc23-1a50-4ac2-8234-587929521767"/><hr id="2e28e53b-7fce-417d-a61f-84a84cf2c60e"/><p id="11f8fccc-9ded-4880-8eec-4e0de95f5815" class="">
</p><h1 id="82af82f8-ad63-4954-a923-b47df2eefef3" class="">Motivation: image matching</h1><figure id="76a6a29e-74f4-4e3c-aae7-65f18e270dad" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.13.38_PM.png"><img style="width:528px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.13.38_PM.png"/></a></figure><figure id="2957905b-c694-4568-b486-053c92fb68f4" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.13.50_PM.png"><img style="width:576px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.13.50_PM.png"/></a></figure><p id="60132493-f048-498a-8306-2af44ddd50ba" class="">
</p><h1 id="e1682812-0e19-49f6-8095-0b8a73181be0" class=""><strong>SIFT [Lowe 1999, 2004]</strong></h1><hr id="87c27e45-0786-45cf-9b7b-02c3d32222fa"/><blockquote id="7d74d486-7882-475d-b3f8-943a07708bfe" class=""><strong>“</strong><em><strong>scale invariant feature transform</strong></em><strong>”</strong></blockquote><ul id="9890e46f-ac07-4041-be6f-2a71dcc11157" class="block-color-orange_background bulleted-list"><li style="list-style-type:disc">position (𝑥, 𝑦)</li></ul><ul id="e9f34984-1d56-4aed-a615-4f901184566d" class="block-color-orange_background bulleted-list"><li style="list-style-type:disc">scale 𝜎</li></ul><ul id="7f4d461b-4a29-439b-9c45-7319fcdd2290" class="block-color-orange_background bulleted-list"><li style="list-style-type:disc">orientation θ</li></ul><ul id="6595b32e-fccb-4c57-9ab2-55c78f5e2089" class="block-color-orange_background bulleted-list"><li style="list-style-type:disc">image gradient descriptor</li></ul><p id="4cd163d4-71bc-4576-8630-b236bd77e86c" class="">
</p><h2 id="330e9772-bad3-4e59-82ab-3e47c172f946" class="">SIFT STEP 1: position & scale</h2><hr id="fdfec20c-14ff-4121-af13-98d02ef9882a"/><ul id="b1fbf537-3a0e-47cb-bc98-b091e07cc332" class="bulleted-list"><li style="list-style-type:disc"><strong>lecture 7: a “box” will produce a local minimum (bright box) or a local maximum (dark box) in a Laplacian of a Gaussian scale space.</strong></li></ul><ul id="eac900ef-f63a-408b-9736-f5f9f0f43aaa" class="block-color-blue bulleted-list"><li style="list-style-type:disc"><strong>These local maxima or minima will define the position and scale of SIFT ‘keypoints’.
</strong></li></ul><ul id="f0cfb1c5-1264-4b3d-a0de-5c4b832be3df" class="bulleted-list"><li style="list-style-type:disc"><strong>BUT Most maxima and minima detected in a Laplacian of a Gaussian real images are not boxes. </strong><ul id="89df9467-e9b9-4db0-ad39-a9ebfcea4dc4" class="bulleted-list"><li style="list-style-type:circle"><mark class="highlight-gray"><em><strong> analogous to “corner detection”, where the actual goal was to find locally
distinctive points.</strong></em></mark></li></ul><p id="f7fd9922-f1fc-4e26-93eb-caf92535c3da" class="">
</p></li></ul><pre id="339a0544-0fdf-4a1f-9ba9-d86939bb80bc" class="code"><code>With SIFT, the goal is to find points
that produce minima or maxima in scale space (“scale invariant feature transform”).</code></pre><div id="aed21163-d7a4-49fd-a61f-d533c660695a" class="column-list"><div id="f54aab1f-0184-4d73-8cc5-d0054f36a646" style="width:50%" class="column"><figure id="59bc26b4-5fad-4a95-9378-becfc3c0b69d" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.16.01_PM.png"><img style="width:870px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.16.01_PM.png"/></a></figure></div><div id="dd63640a-af56-4e22-8312-22c73ac27795" style="width:50%" class="column"><figure id="1951a35d-ba06-4efc-9e82-fb0c4d79accb" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.16.07_PM.png"><img style="width:944px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.16.07_PM.png"/></a></figure></div></div><p id="3124d745-9d72-4539-88ad-fb341290dffa" class="">
</p><h1 id="260898a8-28b7-46fa-b7bb-5def1c242f17" class="">Recall lecture7: Gaussian Scale Space</h1><figure id="be8beb99-7456-4fb6-95f2-ae05000b9125" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.16.58_PM.png"><img style="width:384px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.16.58_PM.png"/></a></figure><figure id="110b8a9e-c538-45fa-a2c6-aadf00b0c7cb" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.17.08_PM.png"><img style="width:528px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.17.08_PM.png"/></a></figure><p id="eec2995e-10d2-4512-a821-9b3483a84218" class="">
</p><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="1235763e-9fa7-45d3-a28a-55b59b7efd50"><div style="font-size:1.5em"><span class="icon">💡</span></div><div style="width:100%">in SIFT, we don’t use laplacian of gaussian scale space → it uses something almost equivalent → <strong>DOG!!!!!!!!!!!!!!!!!!!</strong></div></figure><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="3412bbef-68d8-411c-bfe3-bfe38ece0ace"><div style="font-size:1.5em"><span class="icon">💡</span></div><div style="width:100%"><strong><mark class="highlight-teal_background">so we replace laplacian of gaussian with difference in gaussian</mark></strong></div></figure><blockquote id="3e7652a0-564e-4996-91fa-d0d04e6570d9" class="">Qualitatively , very similar!!! even tho conceptually different…</blockquote><p id="2cf5e5cc-4d18-4263-bb3e-eacae2b53c54" class="">
</p><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="1b34fd89-4807-4268-a3fb-c59a08a21b5a"><div style="font-size:1.5em"><span class="icon">💡</span></div><div style="width:100%"><strong>To find the position (𝑥, 𝑦) and scale 𝜎 of a keypoint,
SIFT uses a Gaussian pyramid.</strong></div></figure><h3 id="13918f50-4bb2-4fa8-bf28-e904715d081e" class=""> Recall lec 9: gaussian pyramid</h3><hr id="f03bf3c1-6a98-4136-a3b0-ab2bf76960e6"/><div id="153c9967-7356-492e-846f-0f45a51b2376" class="column-list"><div id="d26d9ec9-ae31-41c7-8757-eb3b972793ac" style="width:50%" class="column"><figure id="bd37430f-5c27-4d47-abf5-904018064e88" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.19.36_PM.png"><img style="width:336px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.19.36_PM.png"/></a></figure></div><div id="05dafd49-1b95-4689-af4f-4ab076ee2866" style="width:50%" class="column"><figure id="c1228315-8e7b-4c5e-84eb-62422b129967" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.19.43_PM.png"><img style="width:1222px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.19.43_PM.png"/></a></figure></div></div><ul id="4433682f-65ed-416d-96af-ac7df7711443" class="bulleted-list"><li style="list-style-type:disc">looking explicitly for extrema, for every image in eery level of every optics,<ul id="0ab446b8-f391-45fc-bfc0-6b6fa5aea006" class="bulleted-list"><li style="list-style-type:circle">look for extrema in POSITION & BETWEEN SCALE LEVELS</li></ul></li></ul><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="117db5ae-f4b4-474b-b92c-4deb81890f6e"><div style="font-size:1.5em"><span class="icon">💡</span></div><div style="width:100%">sigma:<figure id="df404357-f640-4478-8759-ab569f1a220d" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.23.44_PM.png"><img style="width:1090px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.23.44_PM.png"/></a></figure><p id="bfb6f1d0-c4f6-48f5-af4b-970c253624d3" class="">
</p></div></figure><p id="09fa3ef1-17af-4311-806c-1226d7a23967" class="">
</p><h2 id="9dd57095-6f36-41c2-bccc-0a8c878ae98d" class="">EXAMPLE 2. SIFT with red circle</h2><hr id="e9214d0d-bb45-4f03-bb44-26f9afb188ed"/><blockquote id="4040c881-18de-4c0e-8c75-799fdaeaa2e9" class="">STRENGTH OF EXTREMA is also a variant <strong><mark class="highlight-blue">we decide threshold</mark></strong></blockquote><figure id="9ce6cb07-4f0b-4c18-bebb-34a496322cf4" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.27.39_PM.png"><img style="width:624px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.27.39_PM.png"/></a></figure><p id="95a87625-d8ba-4ee4-bcdf-35e70353d270" class="">
</p><p id="a81d36d7-45ea-4f4c-9ad7-ab538dba2788" class="">
</p><h2 id="51ec7bb4-af72-4921-a750-49b98b7ee3ca" class="">SIFT STEP 2: orientaion</h2><hr id="afd3c162-bafd-4463-9196-955efa166d1a"/><blockquote id="225d1c6f-65d6-4f1e-a4f1-85677db92e34" class="">Make a <strong>“orientation histogram</strong>” out of the intensity gradient vectors in the (𝑥, 𝑦) neighborhood and at the scale 𝜎 of the keypoint.</blockquote><ul id="54afdf5b-fa2a-409e-8a90-10a2e74b5600" class="bulleted-list"><li style="list-style-type:disc">take gradient, compute by local gaussian → histogram</li></ul><figure id="0b578303-12f8-45eb-8a14-5dfc250453fe" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.29.23_PM.png"><img style="width:480px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.29.23_PM.png"/></a></figure><figure id="bbf38014-d2fc-4d6f-bdda-2a582e4ef2e9" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.29.35_PM.png"><img style="width:576px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.29.35_PM.png"/></a><figcaption>???????</figcaption></figure><h2 id="f2bc76b4-c6a5-4253-b0db-74053ecede3a" class="">SIFT STEP 3: IMAGE GRADIENT DESCRIPTOR</h2><hr id="80189102-d6d2-47e9-bb5c-3d86bcbcc9c1"/><h3 id="c9708e3f-c564-4bb3-b8f6-9065385c4e13" class="">3a:</h3><figure id="d0302fe7-958d-4540-82ca-19e2e7adda9c" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.31.37_PM.png"><img style="width:576px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.31.37_PM.png"/></a></figure><h3 id="3ae8abaa-85cb-4f37-bb2e-01e65b04cfab" class="">3b:</h3><figure id="b137679e-6c6d-48ed-a3d3-8b62c605464a" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.32.11_PM.png"><img style="width:576px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.32.11_PM.png"/></a></figure><p id="ff4b5135-b6f1-4f54-b584-406b6bd353a4" class="">
</p><p id="70719c68-0e4c-42e8-9782-200628c1db5c" class="">
</p><p id="054e7e32-b32a-490c-9a05-4fafbd12bca1" class="">no learning, just building richer features</p><figure id="e9ca4ea9-e8f7-48b6-815b-fe6a171fa764" class="image"><a href="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.32.58_PM.png"><img style="width:624px" src="10%20-%20Histogram,%20SIFT%20d529efd2de784cd38072171129fdef56/Screen_Shot_2022-10-04_at_12.32.58_PM.png"/></a></figure><figure class="block-color-purple_background callout" style="white-space:pre-wrap;display:flex" id="22ec20f3-c73e-412d-9c14-1d69977c5f80"><div style="font-size:1.5em"><span class="icon">💡</span></div><div style="width:100%">UNsolved: many times don’t have dataset, input insupervised… human can quickly find instances of object, but machine learning apporach needs TONS OF TIME</div></figure></div></article></body></html>