Skip to content

Task01 Илья Власов ИТМО#12

Open
Malchicisinternetov wants to merge 2 commits intoPhotogrammetryCourse:task01from
Malchicisinternetov:task01
Open

Task01 Илья Власов ИТМО#12
Malchicisinternetov wants to merge 2 commits intoPhotogrammetryCourse:task01from
Malchicisinternetov:task01

Conversation

@Malchicisinternetov
Copy link

@Malchicisinternetov Malchicisinternetov commented Mar 2, 2026

Перечислите идеи и коротко обозначьте мысли которые у вас возникали по мере выполнения задания, в частности попробуйте ответить на вопросы:

  1. Почему SIFT менее точно угадывает средний угол отклонения? изменяется ли ситуация если выкрутить параметр ORIENTATION_VOTES_PEAK_RATIO=0.999? почему?

В методе computeOrientations SIFT раскладывает вещественные углы в два ближайших бина с интерполяцией. На этом этапе теряется часть информации, также в том же методе мы дополнительно сглаживаем гистограмму с помощью 6 проходов box-blur, чтобы, скорее всего, сделать алгоритм более устойчивым к шуму. Из-за этого тоже теряется точность угла. Если поменять параметр orient_peak_ratio на 0.999, то станет хуже, так как мы почти полностью теряем возможность дополнительных ориентаций.

  1. Как надежно замерить во сколько раз распараллеливание через OpenMP ускоряет ваш вариант SIFT? Попробуйте сделать это на вашем компьютере, какое ускорение относительно однопоточной версии оказалось? Сколько у вашего процессора ядер и сколько потоков?

Intel Core i5-10200H, 4 ядра, 8 потоков.
После отключения распараллеливания в тестах(в методе evaluateDetection), результаты замеров времени, незначительно ухудшились(в среднем на 26 процентов), подозреваю что накладные расходы на создание и управление потоками при относительно малом количестве точек, не дают сильно улучшить результаты.

  1. Правда ли можно строить каждый слой в Gaussian пирамиде из самого первого слоя этой октавы? Или нужно обязательно делать так как предложено в статье - дополняя размытие предыдущего слоя этой октавы? Совпадают ли пирамиды визуально?

Да, это будет давать тот же результат. Но для вычислительной эффективности я решил сделать как в оригинале.

  1. Какие ожидания от картинок в Gaussian пирамиде можно придумать? Как проверить что работает корректно? С какой другой картинкой предыдущей октавы должна визуально совпадать конкретная картинка конкретной октавы? Как их визуально сравнить, ведь они разного размера?

Каждая следующая картинка в октаве всё более заблюрена, так как при i == s(n_octaves) блюр становится двойным, то визуально картинка i текущей октавы совпадает с картинкой i + s предыдущей октавы. Можно сделать downscale первой картинки.

  1. Почему в октаве Gaussian пирамиды s+3 картинки а не s+2 например?

Потому что нам нужно вычитать соседние слои для построения DoG, чтобы ничего не ломалось на краю, нужно вводить ещё один слой. и ещё +2 для вычисления экстремумов.

  1. Какие ожидания от картинок в DoG пирамиде можно придумать?

Первые слои DoG состоят из мелких деталей изображения(утраченного на очередном блюре), приближаясь к последнему, пропадают всё более крупные и заметные.

  1. Почему порог контрастности должен уменьшаться при увеличении числа слоев в октаве?

Чем больше слоёв в октаве тем меньше разница между ними, поэтому логично делить порог контрастности на количество слоёв, чтобы это компенсировать.

  1. Какая строка ответственна за определение сигмы (или что почти то же самое - радиуса) которая задает окрестность по которой определяется ориентация ключевой точки?

Строка 398.

  1. За какой строки вашего кода дескриптор инвариантен к повороту картинки?

Из-за строки 599

Github Actions CI

Run ./build/test_sift
Running main() from /home/runner/work/PhotogrammetryTasks2026/PhotogrammetryTasks2026/libs/3rdparty/libgtest/googletest/src/gtest_main.cc
[==========] Running 25 tests from 1 test suite.
[----------] Global test environment set-up.
[----------] 25 tests from SIFT
[ RUN      ] SIFT.MovedTheSameImage
[ORB_OCV] Points detected: 500 -> 500 (in 0.011818 sec)
[ORB_OCV] 493/500 (recall=0.986) with average error=0.0520289
[ORB_OCV] average size ratio between matched points: 1.00185
[ORB_OCV] average angle difference between matched points: 0.145135 degrees
[ORB_OCV] average descriptor distance between matched points: 8.8073 (random distance: 127.325) => differentiability=0.0691721
[SIFTOCV] Points detected: 492 -> 500 (in 0.091874 sec)
[SIFTOCV] 469/492 (recall=0.953252) with average error=0.0806221
[SIFTOCV] average size ratio between matched points: 1.00306
[SIFTOCV] average angle difference between matched points: -1.91113 degrees
[SIFTOCV] average descriptor distance between matched points: 89.4593 (random distance: 526.103) => differentiability=0.170041
[SIFT_MY] Points detected: 452 -> 467 (in 0.165783 sec)
[SIFT_MY] 430/452 (recall=0.951327) with average error=0.0725157
[SIFT_MY] average size ratio between matched points: 1.00084
[SIFT_MY] average angle difference between matched points: -3.69794 degrees
[SIFT_MY] average descriptor distance between matched points: 0.142117 (random distance: 1.01468) => differentiability=0.14006
[       OK ] SIFT.MovedTheSameImage (343 ms)
[ RUN      ] SIFT.MovedImageRight
[ORB_OCV] Points detected: 500 -> 500 (in 0.009978 sec)
[ORB_OCV] 471/500 (recall=0.942) with average error=0.502929
[ORB_OCV] average size ratio between matched points: 0.992385
[ORB_OCV] average angle difference between matched points: -0.67963 degrees
[ORB_OCV] average descriptor distance between matched points: 31.7219 (random distance: 127.724) => differentiability=0.248363
[SIFTOCV] Points detected: 492 -> 491 (in 0.107638 sec)
[SIFTOCV] 458/480 (recall=0.954167) with average error=0.100361
[SIFTOCV] average size ratio between matched points: 1.00768
[SIFTOCV] average angle difference between matched points: -2.48236 degrees
[SIFTOCV] average descriptor distance between matched points: 86.7022 (random distance: 520.176) => differentiability=0.166679
[SIFT_MY] Points detected: 452 -> 465 (in 0.167389 sec)
[SIFT_MY] 426/448 (recall=0.950893) with average error=0.0987232
[SIFT_MY] average size ratio between matched points: 1.00714
[SIFT_MY] average angle difference between matched points: -2.60258 degrees
[SIFT_MY] average descriptor distance between matched points: 0.139525 (random distance: 1.00919) => differentiability=0.138255
[       OK ] SIFT.MovedImageRight (361 ms)
[ RUN      ] SIFT.MovedImageLeft
[ORB_OCV] Points detected: 500 -> 500 (in 0.009987 sec)
[ORB_OCV] 466/498 (recall=0.935743) with average error=0.485198
[ORB_OCV] average size ratio between matched points: 1.0061
[ORB_OCV] average angle difference between matched points: -2.01597 degrees
[ORB_OCV] average descriptor distance between matched points: 30.279 (random distance: 126.457) => differentiability=0.239441
[SIFTOCV] Points detected: 492 -> 493 (in 0.082993 sec)
[SIFTOCV] 445/475 (recall=0.936842) with average error=0.0745864
[SIFTOCV] average size ratio between matched points: 0.994887
[SIFTOCV] average angle difference between matched points: -5.98897 degrees
[SIFTOCV] average descriptor distance between matched points: 93.3987 (random distance: 517.749) => differentiability=0.180394
[SIFT_MY] Points detected: 452 -> 454 (in 0.164275 sec)
[SIFT_MY] 406/443 (recall=0.916479) with average error=0.0430118
[SIFT_MY] average size ratio between matched points: 0.999116
[SIFT_MY] average angle difference between matched points: -3.76083 degrees
[SIFT_MY] average descriptor distance between matched points: 0.13153 (random distance: 1.02171) => differentiability=0.128735
[       OK ] SIFT.MovedImageLeft (328 ms)
[ RUN      ] SIFT.MovedImageUpHalfPixel
[ORB_OCV] Points detected: 500 -> 500 (in 0.010009 sec)
[ORB_OCV] 460/497 (recall=0.925553) with average error=0.710802
[ORB_OCV] average size ratio between matched points: 1.01167
[ORB_OCV] average angle difference between matched points: 0.857323 degrees
[ORB_OCV] average descriptor distance between matched points: 42.9087 (random distance: 123.602) => differentiability=0.347152
[SIFTOCV] Points detected: 492 -> 500 (in 0.084845 sec)
[SIFTOCV] 381/483 (recall=0.78882) with average error=0.444382
[SIFTOCV] average size ratio between matched points: 1.05766
[SIFTOCV] average angle difference between matched points: -0.0643858 degrees
[SIFTOCV] average descriptor distance between matched points: 142.947 (random distance: 520.437) => differentiability=0.274666
[SIFT_MY] Points detected: 452 -> 486 (in 0.166454 sec)
[SIFT_MY] 367/448 (recall=0.819196) with average error=0.462767
[SIFT_MY] average size ratio between matched points: 1.0576
[SIFT_MY] average angle difference between matched points: -4.04541 degrees
[SIFT_MY] average descriptor distance between matched points: 0.256758 (random distance: 1.01802) => differentiability=0.252212
[       OK ] SIFT.MovedImageUpHalfPixel (333 ms)
[ RUN      ] SIFT.MovedImageDownHalfPixel
[ORB_OCV] Points detected: 500 -> 500 (in 0.009999 sec)
[ORB_OCV] 442/478 (recall=0.924686) with average error=0.648609
[ORB_OCV] average size ratio between matched points: 0.971097
[ORB_OCV] average angle difference between matched points: -1.00358 degrees
[ORB_OCV] average descriptor distance between matched points: 42.586 (random distance: 125.477) => differentiability=0.339392
[SIFTOCV] Points detected: 492 -> 501 (in 0.078713 sec)
[SIFTOCV] 376/476 (recall=0.789916) with average error=0.461211
[SIFTOCV] average size ratio between matched points: 1.05398
[SIFTOCV] average angle difference between matched points: -0.697934 degrees
[SIFTOCV] average descriptor distance between matched points: 155.132 (random distance: 516.691) => differentiability=0.300242
[SIFT_MY] Points detected: 452 -> 467 (in 0.158945 sec)
[SIFT_MY] 348/445 (recall=0.782022) with average error=0.47412
[SIFT_MY] average size ratio between matched points: 1.05686
[SIFT_MY] average angle difference between matched points: -6.12525 degrees
[SIFT_MY] average descriptor distance between matched points: 0.279882 (random distance: 1.01434) => differentiability=0.275926
[       OK ] SIFT.MovedImageDownHalfPixel (320 ms)
[ RUN      ] SIFT.Rotate10
[ORB_OCV] Points detected: 500 -> 500 (in 0.009954 sec)
[ORB_OCV] 475/500 (recall=0.95) with average error=0.932881
[ORB_OCV] average size ratio between matched points: 1.00527
[ORB_OCV] average angle difference between matched points: 8.46336 degrees
[ORB_OCV] average descriptor distance between matched points: 56.6295 (random distance: 122.783) => differentiability=0.461215
[SIFTOCV] Points detected: 492 -> 500 (in 0.079766 sec)
[SIFTOCV] 364/490 (recall=0.742857) with average error=0.604762
[SIFTOCV] average size ratio between matched points: 1.03188
[SIFTOCV] average angle difference between matched points: 4.00382 degrees
[SIFTOCV] average descriptor distance between matched points: 176.009 (random distance: 526.231) => differentiability=0.33447
[SIFT_MY] Points detected: 452 -> 483 (in 0.160318 sec)
[SIFT_MY] 343/452 (recall=0.75885) with average error=0.599789
[SIFT_MY] average size ratio between matched points: 1.02831
[SIFT_MY] average angle difference between matched points: -0.158609 degrees
[SIFT_MY] average descriptor distance between matched points: 0.311242 (random distance: 1.01076) => differentiability=0.30793
[       OK ] SIFT.Rotate10 (322 ms)
[ RUN      ] SIFT.Rotate20
[ORB_OCV] Points detected: 500 -> 500 (in 0.010079 sec)
[ORB_OCV] 456/491 (recall=0.928717) with average error=0.860867
[ORB_OCV] average size ratio between matched points: 0.968872
[ORB_OCV] average angle difference between matched points: 19.4252 degrees
[ORB_OCV] average descriptor distance between matched points: 58.3224 (random distance: 125.59) => differentiability=0.464387
[SIFTOCV] Points detected: 492 -> 500 (in 0.078766 sec)
[SIFTOCV] 345/480 (recall=0.71875) with average error=0.651023
[SIFTOCV] average size ratio between matched points: 1.05684
[SIFTOCV] average angle difference between matched points: 2.38257 degrees
[SIFTOCV] average descriptor distance between matched points: 186.672 (random distance: 519.595) => differentiability=0.359265
[SIFT_MY] Points detected: 452 -> 487 (in 0.161222 sec)
[SIFT_MY] 337/446 (recall=0.755605) with average error=0.66327
[SIFT_MY] average size ratio between matched points: 1.05727
[SIFT_MY] average angle difference between matched points: 4.58439 degrees
[SIFT_MY] average descriptor distance between matched points: 0.334269 (random distance: 1.01813) => differentiability=0.328317
[       OK ] SIFT.Rotate20 (322 ms)
[ RUN      ] SIFT.Rotate30
[ORB_OCV] Points detected: 500 -> 500 (in 0.00995 sec)
[ORB_OCV] 446/479 (recall=0.931106) with average error=0.954674
[ORB_OCV] average size ratio between matched points: 0.971588
[ORB_OCV] average angle difference between matched points: 25.313 degrees
[ORB_OCV] average descriptor distance between matched points: 56.7668 (random distance: 125.177) => differentiability=0.453492
[SIFTOCV] Points detected: 492 -> 500 (in 0.078588 sec)
[SIFTOCV] 354/476 (recall=0.743697) with average error=0.645163
[SIFTOCV] average size ratio between matched points: 1.05278
[SIFTOCV] average angle difference between matched points: 8.87597 degrees
[SIFTOCV] average descriptor distance between matched points: 184.351 (random distance: 523.167) => differentiability=0.352376
[SIFT_MY] Points detected: 452 -> 481 (in 0.160441 sec)
[SIFT_MY] 340/443 (recall=0.767494) with average error=0.646576
[SIFT_MY] average size ratio between matched points: 1.04689
[SIFT_MY] average angle difference between matched points: 11.7821 degrees
[SIFT_MY] average descriptor distance between matched points: 0.3222 (random distance: 1.02709) => differentiability=0.313703
[       OK ] SIFT.Rotate30 (322 ms)
[ RUN      ] SIFT.Rotate40
[ORB_OCV] Points detected: 500 -> 500 (in 0.009945 sec)
[ORB_OCV] 445/475 (recall=0.936842) with average error=0.927974
[ORB_OCV] average size ratio between matched points: 0.992927
[ORB_OCV] average angle difference between matched points: 35.1473 degrees
[ORB_OCV] average descriptor distance between matched points: 57.0315 (random distance: 125.292) => differentiability=0.455188
[SIFTOCV] Points detected: 492 -> 500 (in 0.082707 sec)
[SIFTOCV] 360/471 (recall=0.764331) with average error=0.806949
[SIFTOCV] average size ratio between matched points: 1.06564
[SIFTOCV] average angle difference between matched points: 15.8654 degrees
[SIFTOCV] average descriptor distance between matched points: 189.594 (random distance: 523.411) => differentiability=0.362227
[SIFT_MY] Points detected: 452 -> 486 (in 0.168806 sec)
[SIFT_MY] 348/439 (recall=0.792711) with average error=0.817188
[SIFT_MY] average size ratio between matched points: 1.06782
[SIFT_MY] average angle difference between matched points: 15.5062 degrees
[SIFT_MY] average descriptor distance between matched points: 0.338306 (random distance: 1.0206) => differentiability=0.331479
[       OK ] SIFT.Rotate40 (333 ms)
[ RUN      ] SIFT.Rotate45
[ORB_OCV] Points detected: 500 -> 500 (in 0.009969 sec)
[ORB_OCV] 427/475 (recall=0.898947) with average error=0.913293
[ORB_OCV] average size ratio between matched points: 0.999695
[ORB_OCV] average angle difference between matched points: 40.7936 degrees
[ORB_OCV] average descriptor distance between matched points: 57.0351 (random distance: 126.834) => differentiability=0.449684
[SIFTOCV] Points detected: 492 -> 500 (in 0.078559 sec)
[SIFTOCV] 356/466 (recall=0.763948) with average error=0.812517
[SIFTOCV] average size ratio between matched points: 1.05912
[SIFTOCV] average angle difference between matched points: 17.6883 degrees
[SIFTOCV] average descriptor distance between matched points: 189.81 (random distance: 525.085) => differentiability=0.361484
[SIFT_MY] Points detected: 452 -> 490 (in 0.162226 sec)
[SIFT_MY] 340/435 (recall=0.781609) with average error=0.793765
[SIFT_MY] average size ratio between matched points: 1.06756
[SIFT_MY] average angle difference between matched points: 22.6713 degrees
[SIFT_MY] average descriptor distance between matched points: 0.340225 (random distance: 1.01922) => differentiability=0.333811
[       OK ] SIFT.Rotate45 (323 ms)
[ RUN      ] SIFT.Rotate90
[ORB_OCV] Points detected: 500 -> 500 (in 0.009897 sec)
[ORB_OCV] 406/475 (recall=0.854737) with average error=0.794018
[ORB_OCV] average size ratio between matched points: 0.926186
[ORB_OCV] average angle difference between matched points: 81.2045 degrees
[ORB_OCV] average descriptor distance between matched points: 52.2069 (random distance: 126.239) => differentiability=0.413556
[SIFTOCV] Points detected: 492 -> 486 (in 0.082649 sec)
[SIFTOCV] 435/463 (recall=0.939525) with average error=0.591848
[SIFTOCV] average size ratio between matched points: 0.999446
[SIFTOCV] average angle difference between matched points: 67.7507 degrees
[SIFTOCV] average descriptor distance between matched points: 107.008 (random distance: 519.319) => differentiability=0.206054
[SIFT_MY] Points detected: 452 -> 453 (in 0.163607 sec)
[SIFT_MY] 397/437 (recall=0.908467) with average error=0.594852
[SIFT_MY] average size ratio between matched points: 1.00104
[SIFT_MY] average angle difference between matched points: 71.8056 degrees
[SIFT_MY] average descriptor distance between matched points: 0.168375 (random distance: 1.00908) => differentiability=0.166859
[       OK ] SIFT.Rotate90 (328 ms)
[ RUN      ] SIFT.Scale50
[ORB_OCV] Points detected: 500 -> 500 (in 0.009616 sec)
[ORB_OCV] 463/500 (recall=0.926) with average error=0.927987
[ORB_OCV] average size ratio between matched points: 0.829127
[ORB_OCV] average angle difference between matched points: 2.9143 degrees
[ORB_OCV] average descriptor distance between matched points: 89.7322 (random distance: 124.84) => differentiability=0.718776
[SIFTOCV] Points detected: 492 -> 219 (in 0.080634 sec)
[SIFTOCV] 261/492 (recall=0.530488) with average error=1.78259
[SIFTOCV] average size ratio between matched points: 0.893952
[SIFTOCV] average angle difference between matched points: -1.67004 degrees
[SIFTOCV] average descriptor distance between matched points: 354.196 (random distance: 530.707) => differentiability=0.667403
[SIFT_MY] Points detected: 452 -> 212 (in 0.134589 sec)
[SIFT_MY] 235/452 (recall=0.519912) with average error=1.90161
[SIFT_MY] average size ratio between matched points: 0.958237
[SIFT_MY] average angle difference between matched points: 4.61087 degrees
[SIFT_MY] average descriptor distance between matched points: 0.68831 (random distance: 1.02118) => differentiability=0.674035
[       OK ] SIFT.Scale50 (297 ms)
[ RUN      ] SIFT.Scale70
[ORB_OCV] Points detected: 500 -> 500 (in 0.009738 sec)
[ORB_OCV] 488/500 (recall=0.976) with average error=0.902066
[ORB_OCV] average size ratio between matched points: 0.884398
[ORB_OCV] average angle difference between matched points: 1.14689 degrees
[ORB_OCV] average descriptor distance between matched points: 70.2889 (random distance: 124.695) => differentiability=0.563688
[SIFTOCV] Points detected: 492 -> 377 (in 0.090516 sec)
[SIFTOCV] 349/492 (recall=0.70935) with average error=1.1298
[SIFTOCV] average size ratio between matched points: 0.938346
[SIFTOCV] average angle difference between matched points: -5.35032 degrees
[SIFTOCV] average descriptor distance between matched points: 258.807 (random distance: 523.786) => differentiability=0.494109
[SIFT_MY] Points detected: 452 -> 356 (in 0.151582 sec)
[SIFT_MY] 324/452 (recall=0.716814) with average error=1.18019
[SIFT_MY] average size ratio between matched points: 0.980111
[SIFT_MY] average angle difference between matched points: -2.83112 degrees
[SIFT_MY] average descriptor distance between matched points: 0.503296 (random distance: 1.0242) => differentiability=0.491404
[       OK ] SIFT.Scale70 (323 ms)
[ RUN      ] SIFT.Scale90
[ORB_OCV] Points detected: 500 -> 500 (in 0.009575 sec)
[ORB_OCV] 489/500 (recall=0.978) with average error=0.823308
[ORB_OCV] average size ratio between matched points: 0.970324
[ORB_OCV] average angle difference between matched points: -0.183516 degrees
[ORB_OCV] average descriptor distance between matched points: 60.3333 (random distance: 125.059) => differentiability=0.482438
[SIFTOCV] Points detected: 492 -> 500 (in 0.080394 sec)
[SIFTOCV] 366/492 (recall=0.743902) with average error=0.641739
[SIFTOCV] average size ratio between matched points: 1.00086
[SIFTOCV] average angle difference between matched points: -4.77681 degrees
[SIFTOCV] average descriptor distance between matched points: 195.485 (random distance: 519.106) => differentiability=0.37658
[SIFT_MY] Points detected: 452 -> 480 (in 0.162024 sec)
[SIFT_MY] 358/452 (recall=0.792035) with average error=0.631407
[SIFT_MY] average size ratio between matched points: 1.00576
[SIFT_MY] average angle difference between matched points: -2.66943 degrees
[SIFT_MY] average descriptor distance between matched points: 0.376946 (random distance: 1.01238) => differentiability=0.372336
[       OK ] SIFT.Scale90 (326 ms)
[ RUN      ] SIFT.Scale110
[ORB_OCV] Points detected: 500 -> 500 (in 0.011007 sec)
[ORB_OCV] 462/500 (recall=0.924) with average error=0.912118
[ORB_OCV] average size ratio between matched points: 1.02967
[ORB_OCV] average angle difference between matched points: -0.905967 degrees
[ORB_OCV] average descriptor distance between matched points: 59.7468 (random distance: 125.225) => differentiability=0.477115
[SIFTOCV] Points detected: 492 -> 500 (in 0.080176 sec)
[SIFTOCV] 313/472 (recall=0.663136) with average error=0.563023
[SIFTOCV] average size ratio between matched points: 1.17433
[SIFTOCV] average angle difference between matched points: 0.295793 degrees
[SIFTOCV] average descriptor distance between matched points: 179.34 (random distance: 524.86) => differentiability=0.34169
[SIFT_MY] Points detected: 452 -> 491 (in 0.163677 sec)
[SIFT_MY] 308/448 (recall=0.6875) with average error=0.559683
[SIFT_MY] average size ratio between matched points: 1.17959
[SIFT_MY] average angle difference between matched points: 0.27809 degrees
[SIFT_MY] average descriptor distance between matched points: 0.380428 (random distance: 1.00793) => differentiability=0.377436
[       OK ] SIFT.Scale110 (329 ms)
[ RUN      ] SIFT.Scale130
[ORB_OCV] Points detected: 500 -> 500 (in 0.010055 sec)
[ORB_OCV] 400/475 (recall=0.842105) with average error=1.02537
[ORB_OCV] average size ratio between matched points: 1.10237
[ORB_OCV] average angle difference between matched points: -4.78444 degrees
[ORB_OCV] average descriptor distance between matched points: 67.4875 (random distance: 126.4) => differentiability=0.53392
[SIFTOCV] Points detected: 492 -> 501 (in 0.082969 sec)
[SIFTOCV] 264/439 (recall=0.601367) with average error=0.589092
[SIFTOCV] average size ratio between matched points: 1.39969
[SIFTOCV] average angle difference between matched points: -1.15625 degrees
[SIFTOCV] average descriptor distance between matched points: 175.189 (random distance: 532.208) => differentiability=0.329174
[SIFT_MY] Points detected: 452 -> 476 (in 0.161817 sec)
[SIFT_MY] 238/425 (recall=0.56) with average error=0.571641
[SIFT_MY] average size ratio between matched points: 1.39654
[SIFT_MY] average angle difference between matched points: -4.12735 degrees
[SIFT_MY] average descriptor distance between matched points: 0.345718 (random distance: 1.03478) => differentiability=0.334098
[       OK ] SIFT.Scale130 (328 ms)
[ RUN      ] SIFT.Scale150
[ORB_OCV] Points detected: 500 -> 500 (in 0.009769 sec)
[ORB_OCV] 325/445 (recall=0.730337) with average error=1.18695
[ORB_OCV] average size ratio between matched points: 1.16446
[ORB_OCV] average angle difference between matched points: -1.92861 degrees
[ORB_OCV] average descriptor distance between matched points: 75.4954 (random distance: 125.905) => differentiability=0.599624
[SIFTOCV] Points detected: 492 -> 500 (in 0.081414 sec)
[SIFTOCV] 219/413 (recall=0.530266) with average error=0.550188
[SIFTOCV] average size ratio between matched points: 1.5817
[SIFTOCV] average angle difference between matched points: -1.5253 degrees
[SIFTOCV] average descriptor distance between matched points: 173.421 (random distance: 535.945) => differentiability=0.32358
[SIFT_MY] Points detected: 452 -> 475 (in 0.16452 sec)
[SIFT_MY] 204/399 (recall=0.511278) with average error=0.495344
[SIFT_MY] average size ratio between matched points: 1.5543
[SIFT_MY] average angle difference between matched points: 1.84104 degrees
[SIFT_MY] average descriptor distance between matched points: 0.342536 (random distance: 1.01737) => differentiability=0.336688
[       OK ] SIFT.Scale150 (330 ms)
[ RUN      ] SIFT.Scale175
[ORB_OCV] Points detected: 500 -> 500 (in 0.010956 sec)
[ORB_OCV] 235/380 (recall=0.618421) with average error=1.3217
[ORB_OCV] average size ratio between matched points: 1.25586
[ORB_OCV] average angle difference between matched points: 4.13008 degrees
[ORB_OCV] average descriptor distance between matched points: 84.1617 (random distance: 124.894) => differentiability=0.673867
[SIFTOCV] Points detected: 492 -> 500 (in 0.085173 sec)
[SIFTOCV] 195/379 (recall=0.514512) with average error=0.554437
[SIFTOCV] average size ratio between matched points: 1.78807
[SIFTOCV] average angle difference between matched points: 3.74282 degrees
[SIFTOCV] average descriptor distance between matched points: 182.838 (random distance: 527.399) => differentiability=0.346679
[SIFT_MY] Points detected: 452 -> 457 (in 0.170233 sec)
[SIFT_MY] 162/369 (recall=0.439024) with average error=0.564534
[SIFT_MY] average size ratio between matched points: 1.79406
[SIFT_MY] average angle difference between matched points: 5.9382 degrees
[SIFT_MY] average descriptor distance between matched points: 0.402485 (random distance: 1.01705) => differentiability=0.395739
[       OK ] SIFT.Scale175 (342 ms)
[ RUN      ] SIFT.Scale200
[ORB_OCV] Points detected: 500 -> 500 (in 0.009914 sec)
[ORB_OCV] 174/333 (recall=0.522523) with average error=1.36043
[ORB_OCV] average size ratio between matched points: 1.34374
[ORB_OCV] average angle difference between matched points: -3.78969 degrees
[ORB_OCV] average descriptor distance between matched points: 86.1954 (random distance: 126.011) => differentiability=0.684028
[SIFTOCV] Points detected: 492 -> 501 (in 0.086183 sec)
[SIFTOCV] 183/343 (recall=0.533528) with average error=0.550652
[SIFTOCV] average size ratio between matched points: 2.06598
[SIFTOCV] average angle difference between matched points: 5.51233 degrees
[SIFTOCV] average descriptor distance between matched points: 158.601 (random distance: 522.625) => differentiability=0.303471
[SIFT_MY] Points detected: 452 -> 464 (in 0.173308 sec)
[SIFT_MY] 146/332 (recall=0.439759) with average error=0.567032
[SIFT_MY] average size ratio between matched points: 2.02578
[SIFT_MY] average angle difference between matched points: -11.2566 degrees
[SIFT_MY] average descriptor distance between matched points: 0.286936 (random distance: 1.03446) => differentiability=0.277377
[       OK ] SIFT.Scale200 (345 ms)
[ RUN      ] SIFT.Rotate10Scale90
[ORB_OCV] Points detected: 500 -> 500 (in 0.009618 sec)
[ORB_OCV] 486/500 (recall=0.972) with average error=0.862656
[ORB_OCV] average size ratio between matched points: 1.00909
[ORB_OCV] average angle difference between matched points: 12.1602 degrees
[ORB_OCV] average descriptor distance between matched points: 61.9033 (random distance: 126.477) => differentiability=0.489442
[SIFTOCV] Points detected: 492 -> 500 (in 0.080429 sec)
[SIFTOCV] 368/492 (recall=0.747967) with average error=0.682212
[SIFTOCV] average size ratio between matched points: 0.983556
[SIFTOCV] average angle difference between matched points: 5.8469 degrees
[SIFTOCV] average descriptor distance between matched points: 200.435 (random distance: 527.324) => differentiability=0.380098
[SIFT_MY] Points detected: 452 -> 474 (in 0.159457 sec)
[SIFT_MY] 350/452 (recall=0.774336) with average error=0.638187
[SIFT_MY] average size ratio between matched points: 0.974844
[SIFT_MY] average angle difference between matched points: 4.19462 degrees
[SIFT_MY] average descriptor distance between matched points: 0.393381 (random distance: 1.01481) => differentiability=0.38764
[       OK ] SIFT.Rotate10Scale90 (321 ms)
[ RUN      ] SIFT.Rotate30Scale75
[ORB_OCV] Points detected: 500 -> 500 (in 0.009517 sec)
[ORB_OCV] 471/500 (recall=0.942) with average error=0.873322
[ORB_OCV] average size ratio between matched points: 0.882831
[ORB_OCV] average angle difference between matched points: 32.7295 degrees
[ORB_OCV] average descriptor distance between matched points: 68.9915 (random distance: 123.987) => differentiability=0.55644
[SIFTOCV] Points detected: 492 -> 416 (in 0.077269 sec)
[SIFTOCV] 349/492 (recall=0.70935) with average error=0.97019
[SIFTOCV] average size ratio between matched points: 0.958506
[SIFTOCV] average angle difference between matched points: 5.48133 degrees
[SIFTOCV] average descriptor distance between matched points: 235.033 (random distance: 535.689) => differentiability=0.438749
[SIFT_MY] Points detected: 452 -> 384 (in 0.1463 sec)
[SIFT_MY] 321/452 (recall=0.710177) with average error=1.01835
[SIFT_MY] average size ratio between matched points: 1.00651
[SIFT_MY] average angle difference between matched points: 7.79115 degrees
[SIFT_MY] average descriptor distance between matched points: 0.451117 (random distance: 1.01951) => differentiability=0.442485
[       OK ] SIFT.Rotate30Scale75 (306 ms)
[ RUN      ] SIFT.HerzJesu19RotateM40
[ORB_OCV] Points detected: 500 -> 500 (in 0.08902 sec)
[ORB_OCV] 494/500 (recall=0.988) with average error=1.25431
[ORB_OCV] average size ratio between matched points: 1.00708
[ORB_OCV] average angle difference between matched points: -36.7101 degrees
[ORB_OCV] average descriptor distance between matched points: 48.3603 (random distance: 121.69) => differentiability=0.397405
[SIFTOCV] Points detected: 500 -> 500 (in 2.78931 sec)
[SIFTOCV] 340/432 (recall=0.787037) with average error=4.35561
[SIFTOCV] average size ratio between matched points: 1.04839
[SIFTOCV] average angle difference between matched points: -10.1517 degrees
[SIFTOCV] average descriptor distance between matched points: 253.964 (random distance: 541.732) => differentiability=0.468799
[SIFT_MY] Points detected: 444 -> 477 (in 1.98015 sec)
[SIFT_MY] 327/421 (recall=0.776722) with average error=4.62415
[SIFT_MY] average size ratio between matched points: 1.05701
[SIFT_MY] average angle difference between matched points: -19.2055 degrees
[SIFT_MY] average descriptor distance between matched points: 0.465412 (random distance: 1.04636) => differentiability=0.44479
[       OK ] SIFT.HerzJesu19RotateM40 (6670 ms)
[ RUN      ] SIFT.DetectionSmokeTest
upscaled image from 768x1024 to 1536x2048
new octave base size: 768
new octave base size: 384
new octave base size: 192
new octave base size: 96
new octave base size: 48
new octave base size: 24
new octave base size: 12
saving octave 0
saving octave 1
saving octave 2
saving octave 3
saving octave 4
saving octave 5
saving octave 6
saving octave 7
saving octave 0
saving octave 1
saving octave 2
saving octave 3
saving octave 4
saving octave 5
saving octave 6
saving octave 7
octave 0: 3120 keypoints so far
octave 1: 4041 keypoints so far
octave 2: 4212 keypoints so far
octave 3: 4247 keypoints so far
octave 4: 4271 keypoints so far
octave 5: 4279 keypoints so far
octave 6: 4281 keypoints so far
octave 7: 4281 keypoints so far
total keypoints: 4281
orientations: 4281 -> 4928 keypoints
descriptors: 4928 -> 4828 keypoints (some discarded due to border)
[       OK ] SIFT.DetectionSmokeTest (3190 ms)
[ RUN      ] SIFT.DetectionDescriptionSteps
loaded image of size: [384 x 512]
[  CHECK  ] buildOctaves: matched reference step1_octaves.yml.gz
[  CHECK  ] buildDoG: matched reference step2_dog.yml.gz
[  MATCH  ] findScaleSpaceExtrema: 191/204 matched (93.6275%), ref count=191
detected n keypoints: 204
[  MATCH  ] selectTopKeypoints_1: 191/204 matched (93.6275%), ref count=191
selected n keypoints: 204
[  MATCH  ] computeOrientations: 196/207 matched (94.686%), ref count=202
oriented n keypoints: 207
[  MATCH  ] selectTopKeypoints_2: 196/207 matched (94.686%), ref count=202
selected n keypoints: 207
[  MATCH  ] computeDescriptors: 177/188 matched (94.1489%), ref count=182 [with descriptors]
described n keypoints: 188
[       OK ] SIFT.DetectionDescriptionSteps (910 ms)
[ RUN      ] SIFT.PairMatching
image sizes: [1536 x 2048], [1536 x 2048]
matching using opencv orb...
N keypoints: left 10000, right 10000
Good matches:       352
Inlier matches:     242
matching using opencv sift...
N keypoints: left 8107, right 7181
Good matches:       1409
Inlier matches:     1297
matching using my sift...
N keypoints: left 7813, right 6865
Good matches:       1241
Inlier matches:     1076
Final score: 1076
[       OK ] SIFT.PairMatching (6388 ms)
[----------] 25 tests from SIFT (24041 ms total)

[----------] Global test environment tear-down
[==========] 25 tests from 1 test suite ran. (24041 ms total)
[  PASSED  ] 25 tests.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant