Skip to content

Task01 Денис Сарахатунов СПбГУ#11

Open
DenisSarah wants to merge 1 commit intoPhotogrammetryCourse:task01from
DenisSarah:task01
Open

Task01 Денис Сарахатунов СПбГУ#11
DenisSarah wants to merge 1 commit intoPhotogrammetryCourse:task01from
DenisSarah:task01

Conversation

@DenisSarah
Copy link

@DenisSarah DenisSarah commented Mar 2, 2026

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

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

Потому что оценка угла квантуется по 36 бинам, сглаживается и взвешивается + шум дает смещение. Если ORIENTATION_VOTES_PEAK_RATIO поднять до 0.999, то вторичные пики почти не пройдут, такчто будет меньше дубликатов. В целом станет лучше, если правильное направление ярко выражено

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

Делаем несколько прогонов и сравниваем медианы времени (по несколько раз с ускорением и без него), при этом чтоб точно видет есть ли ускорение от OpenMP надо бы взять достаточно большую картинку (чтобыы убрать все лишние небольшие расходы OpenMP)

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

Да можно, и это будет одно и то же, просто дополнять будет быстрее, так как надо делать меньшее размытие

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

Ожидания: в пределах октавы слои становятся всё более размытыми, а детали исчезают. Слой i+1 должен быть похож на слой i после даунскейла в 2 раза. Надо апскейлить слой следующей октавы и сравнить с соответствующим слоем предыдущей

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

чтобы получить s+2 DoG слоёв и иметь у внутренних s DoG слоёв соседей для поиска экстремумов

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

В однородных местах отклик DoG почти нулевой, а на перепадах яркости будут видны четкие контуры

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

При росте числа слоёв шаг по сигме уменьшается, DoG‑амплитуда становится меньше,так что чтобы оставить сопоставимый порог по контрасту, его надо уменьшить

  1. Какая строка ответственна за определение сигмы (или что почти то же самое - радиуса) которая задает окрестность по которой определяется ориентация ключевой точки?
float sigma_win = 1.5f * kp_sigma_octave; // цитата из lowe: "Each sample added to the histogram is weighted by its gradient magnitude and by a Gaussian-weighted circular window with a σ that is 1.5 times that of the scale of the keypoint."
    int radius = (int)std::round(3.f * sigma_win);
  1. За какой строки вашего кода дескриптор инвариантен к повороту картинки?
// инвариантность к повороту: повернем направление градиента на угол ключевой точки
               float angle_invariant = angle - kp_angle_rad;
               while (angle_invariant < 0.f)
                   angle_invariant += (float)CV_2PI;
               while (angle_invariant >= (float)CV_2PI)
                   angle_invariant -= (float)CV_2PI;
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.01074 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: 453 -> 465 (in 0.085811 sec)
[SIFTOCV] 436/453 (recall=0.962472) with average error=0.0435686
[SIFTOCV] average size ratio between matched points: 0.998252
[SIFTOCV] average angle difference between matched points: -4.7478 degrees
[SIFTOCV] average descriptor distance between matched points: 90.3355 (random distance: 523.008) => differentiability=0.172723
[SIFT_MY] Points detected: 424 -> 440 (in 0.178453 sec)
[SIFT_MY] 408/424 (recall=0.962264) with average error=0.0457224
[SIFT_MY] average size ratio between matched points: 0.997958
[SIFT_MY] average angle difference between matched points: -6.4175 degrees
[SIFT_MY] average descriptor distance between matched points: 0.159853 (random distance: 1.02994) => differentiability=0.155207
[       OK ] SIFT.MovedTheSameImage (346 ms)
[ RUN      ] SIFT.MovedImageRight
[ORB_OCV] Points detected: 500 -> 500 (in 0.009305 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: 453 -> 447 (in 0.088055 sec)
[SIFTOCV] 421/442 (recall=0.952489) with average error=0.107924
[SIFTOCV] average size ratio between matched points: 1.01134
[SIFTOCV] average angle difference between matched points: -3.58242 degrees
[SIFTOCV] average descriptor distance between matched points: 90.1555 (random distance: 527.86) => differentiability=0.170794
[SIFT_MY] Points detected: 424 -> 429 (in 0.170056 sec)
[SIFT_MY] 399/422 (recall=0.945498) with average error=0.11273
[SIFT_MY] average size ratio between matched points: 1.00791
[SIFT_MY] average angle difference between matched points: -6.20512 degrees
[SIFT_MY] average descriptor distance between matched points: 0.171172 (random distance: 1.00889) => differentiability=0.169664
[       OK ] SIFT.MovedImageRight (341 ms)
[ RUN      ] SIFT.MovedImageLeft
[ORB_OCV] Points detected: 500 -> 500 (in 0.009471 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: 453 -> 447 (in 0.077946 sec)
[SIFTOCV] 417/441 (recall=0.945578) with average error=0.0855277
[SIFTOCV] average size ratio between matched points: 0.997577
[SIFTOCV] average angle difference between matched points: -6.43682 degrees
[SIFTOCV] average descriptor distance between matched points: 97.5722 (random distance: 523.97) => differentiability=0.186217
[SIFT_MY] Points detected: 424 -> 422 (in 0.172654 sec)
[SIFT_MY] 391/417 (recall=0.93765) with average error=0.0654435
[SIFT_MY] average size ratio between matched points: 0.998206
[SIFT_MY] average angle difference between matched points: -6.39811 degrees
[SIFT_MY] average descriptor distance between matched points: 0.16641 (random distance: 1.02064) => differentiability=0.163045
[       OK ] SIFT.MovedImageLeft (330 ms)
[ RUN      ] SIFT.MovedImageUpHalfPixel
[ORB_OCV] Points detected: 500 -> 500 (in 0.009367 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: 453 -> 500 (in 0.082942 sec)
[SIFTOCV] 367/445 (recall=0.824719) with average error=0.398716
[SIFTOCV] average size ratio between matched points: 1.0449
[SIFTOCV] average angle difference between matched points: 0.114179 degrees
[SIFTOCV] average descriptor distance between matched points: 152.166 (random distance: 530.014) => differentiability=0.287097
[SIFT_MY] Points detected: 424 -> 488 (in 0.176474 sec)
[SIFT_MY] 356/420 (recall=0.847619) with average error=0.387394
[SIFT_MY] average size ratio between matched points: 1.04654
[SIFT_MY] average angle difference between matched points: -7.16037 degrees
[SIFT_MY] average descriptor distance between matched points: 0.283155 (random distance: 1.0065) => differentiability=0.281327
[       OK ] SIFT.MovedImageUpHalfPixel (339 ms)
[ RUN      ] SIFT.MovedImageDownHalfPixel
[ORB_OCV] Points detected: 500 -> 500 (in 0.008923 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: 453 -> 500 (in 0.078233 sec)
[SIFTOCV] 374/439 (recall=0.851936) with average error=0.445461
[SIFTOCV] average size ratio between matched points: 1.05024
[SIFTOCV] average angle difference between matched points: 0.589903 degrees
[SIFTOCV] average descriptor distance between matched points: 165.511 (random distance: 529.613) => differentiability=0.312513
[SIFT_MY] Points detected: 424 -> 471 (in 0.173935 sec)
[SIFT_MY] 351/417 (recall=0.841727) with average error=0.435946
[SIFT_MY] average size ratio between matched points: 1.04905
[SIFT_MY] average angle difference between matched points: -6.8173 degrees
[SIFT_MY] average descriptor distance between matched points: 0.302628 (random distance: 1.02429) => differentiability=0.295452
[       OK ] SIFT.MovedImageDownHalfPixel (331 ms)
[ RUN      ] SIFT.Rotate10
[ORB_OCV] Points detected: 500 -> 500 (in 0.008896 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: 453 -> 500 (in 0.079955 sec)
[SIFTOCV] 350/451 (recall=0.776053) with average error=0.501799
[SIFTOCV] average size ratio between matched points: 1.03657
[SIFTOCV] average angle difference between matched points: 6.5729 degrees
[SIFTOCV] average descriptor distance between matched points: 178.858 (random distance: 521.738) => differentiability=0.342812
[SIFT_MY] Points detected: 424 -> 485 (in 0.179021 sec)
[SIFT_MY] 343/424 (recall=0.808962) with average error=0.5098
[SIFT_MY] average size ratio between matched points: 1.04221
[SIFT_MY] average angle difference between matched points: -3.91352 degrees
[SIFT_MY] average descriptor distance between matched points: 0.335045 (random distance: 1.02509) => differentiability=0.326845
[       OK ] SIFT.Rotate10 (339 ms)
[ RUN      ] SIFT.Rotate20
[ORB_OCV] Points detected: 500 -> 500 (in 0.008818 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: 453 -> 500 (in 0.080829 sec)
[SIFTOCV] 337/443 (recall=0.760722) with average error=0.556804
[SIFTOCV] average size ratio between matched points: 1.04965
[SIFTOCV] average angle difference between matched points: 1.4678 degrees
[SIFTOCV] average descriptor distance between matched points: 186.303 (random distance: 531.487) => differentiability=0.350531
[SIFT_MY] Points detected: 424 -> 488 (in 0.182454 sec)
[SIFT_MY] 325/417 (recall=0.779376) with average error=0.560121
[SIFT_MY] average size ratio between matched points: 1.05133
[SIFT_MY] average angle difference between matched points: 1.28393 degrees
[SIFT_MY] average descriptor distance between matched points: 0.34562 (random distance: 1.01898) => differentiability=0.339182
[       OK ] SIFT.Rotate20 (343 ms)
[ RUN      ] SIFT.Rotate30
[ORB_OCV] Points detected: 500 -> 500 (in 0.008941 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: 453 -> 500 (in 0.080635 sec)
[SIFTOCV] 356/441 (recall=0.807256) with average error=0.635313
[SIFTOCV] average size ratio between matched points: 1.04861
[SIFTOCV] average angle difference between matched points: 9.58379 degrees
[SIFTOCV] average descriptor distance between matched points: 194.029 (random distance: 529.795) => differentiability=0.366233
[SIFT_MY] Points detected: 424 -> 476 (in 0.1793 sec)
[SIFT_MY] 335/416 (recall=0.805288) with average error=0.614676
[SIFT_MY] average size ratio between matched points: 1.04884
[SIFT_MY] average angle difference between matched points: 10.3163 degrees
[SIFT_MY] average descriptor distance between matched points: 0.339755 (random distance: 1.02273) => differentiability=0.332204
[       OK ] SIFT.Rotate30 (339 ms)
[ RUN      ] SIFT.Rotate40
[ORB_OCV] Points detected: 500 -> 500 (in 0.008751 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: 453 -> 470 (in 0.079507 sec)
[SIFTOCV] 335/436 (recall=0.768349) with average error=0.722947
[SIFTOCV] average size ratio between matched points: 1.07134
[SIFTOCV] average angle difference between matched points: 12.1292 degrees
[SIFTOCV] average descriptor distance between matched points: 189.937 (random distance: 524.78) => differentiability=0.361937
[SIFT_MY] Points detected: 424 -> 447 (in 0.177188 sec)
[SIFT_MY] 317/412 (recall=0.769417) with average error=0.716163
[SIFT_MY] average size ratio between matched points: 1.07368
[SIFT_MY] average angle difference between matched points: 17.7504 degrees
[SIFT_MY] average descriptor distance between matched points: 0.344266 (random distance: 1.03005) => differentiability=0.334222
[       OK ] SIFT.Rotate40 (337 ms)
[ RUN      ] SIFT.Rotate45
[ORB_OCV] Points detected: 500 -> 500 (in 0.008809 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: 453 -> 500 (in 0.098549 sec)
[SIFTOCV] 344/431 (recall=0.798144) with average error=0.735095
[SIFTOCV] average size ratio between matched points: 1.04736
[SIFTOCV] average angle difference between matched points: 25.7374 degrees
[SIFTOCV] average descriptor distance between matched points: 189.73 (random distance: 526.815) => differentiability=0.360145
[SIFT_MY] Points detected: 424 -> 491 (in 0.180646 sec)
[SIFT_MY] 327/408 (recall=0.801471) with average error=0.707951
[SIFT_MY] average size ratio between matched points: 1.05652
[SIFT_MY] average angle difference between matched points: 25.4261 degrees
[SIFT_MY] average descriptor distance between matched points: 0.344143 (random distance: 1.03203) => differentiability=0.333462
[       OK ] SIFT.Rotate45 (367 ms)
[ RUN      ] SIFT.Rotate90
[ORB_OCV] Points detected: 500 -> 500 (in 0.009519 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: 453 -> 429 (in 0.079731 sec)
[SIFTOCV] 397/428 (recall=0.92757) with average error=0.597669
[SIFTOCV] average size ratio between matched points: 0.994223
[SIFTOCV] average angle difference between matched points: 68.2509 degrees
[SIFTOCV] average descriptor distance between matched points: 109.39 (random distance: 522.253) => differentiability=0.209459
[SIFT_MY] Points detected: 424 -> 410 (in 0.171201 sec)
[SIFT_MY] 372/410 (recall=0.907317) with average error=0.60056
[SIFT_MY] average size ratio between matched points: 0.995118
[SIFT_MY] average angle difference between matched points: 71.3043 degrees
[SIFT_MY] average descriptor distance between matched points: 0.188306 (random distance: 1.00293) => differentiability=0.187756
[       OK ] SIFT.Rotate90 (332 ms)
[ RUN      ] SIFT.Scale50
[ORB_OCV] Points detected: 500 -> 500 (in 0.009042 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: 453 -> 191 (in 0.07664 sec)
[SIFTOCV] 235/453 (recall=0.518764) with average error=1.81213
[SIFTOCV] average size ratio between matched points: 0.90594
[SIFTOCV] average angle difference between matched points: -0.218442 degrees
[SIFTOCV] average descriptor distance between matched points: 362.817 (random distance: 526.31) => differentiability=0.68936
[SIFT_MY] Points detected: 424 -> 187 (in 0.14064 sec)
[SIFT_MY] 219/424 (recall=0.516509) with average error=1.91889
[SIFT_MY] average size ratio between matched points: 0.957992
[SIFT_MY] average angle difference between matched points: 2.96179 degrees
[SIFT_MY] average descriptor distance between matched points: 0.711257 (random distance: 1.03842) => differentiability=0.684942
[       OK ] SIFT.Scale50 (296 ms)
[ RUN      ] SIFT.Scale70
[ORB_OCV] Points detected: 500 -> 500 (in 0.009082 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: 453 -> 335 (in 0.076697 sec)
[SIFTOCV] 307/453 (recall=0.677704) with average error=1.1649
[SIFTOCV] average size ratio between matched points: 0.92551
[SIFTOCV] average angle difference between matched points: -8.88537 degrees
[SIFTOCV] average descriptor distance between matched points: 272.272 (random distance: 530.603) => differentiability=0.513138
[SIFT_MY] Points detected: 424 -> 318 (in 0.15199 sec)
[SIFT_MY] 291/424 (recall=0.686321) with average error=1.22699
[SIFT_MY] average size ratio between matched points: 0.967551
[SIFT_MY] average angle difference between matched points: -5.74811 degrees
[SIFT_MY] average descriptor distance between matched points: 0.540313 (random distance: 1.03738) => differentiability=0.520843
[       OK ] SIFT.Scale70 (308 ms)
[ RUN      ] SIFT.Scale90
[ORB_OCV] Points detected: 500 -> 500 (in 0.009002 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: 453 -> 469 (in 0.080004 sec)
[SIFTOCV] 354/453 (recall=0.781457) with average error=0.59984
[SIFTOCV] average size ratio between matched points: 1.00052
[SIFTOCV] average angle difference between matched points: -4.5203 degrees
[SIFTOCV] average descriptor distance between matched points: 193.204 (random distance: 523.29) => differentiability=0.369209
[SIFT_MY] Points detected: 424 -> 431 (in 0.17503 sec)
[SIFT_MY] 336/424 (recall=0.792453) with average error=0.643454
[SIFT_MY] average size ratio between matched points: 0.99799
[SIFT_MY] average angle difference between matched points: -4.59535 degrees
[SIFT_MY] average descriptor distance between matched points: 0.401302 (random distance: 1.00811) => differentiability=0.398073
[       OK ] SIFT.Scale90 (334 ms)
[ RUN      ] SIFT.Scale110
[ORB_OCV] Points detected: 500 -> 500 (in 0.00914 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: 453 -> 500 (in 0.078312 sec)
[SIFTOCV] 307/434 (recall=0.707373) with average error=0.561683
[SIFTOCV] average size ratio between matched points: 1.15716
[SIFTOCV] average angle difference between matched points: 1.13855 degrees
[SIFTOCV] average descriptor distance between matched points: 182.143 (random distance: 530.492) => differentiability=0.343347
[SIFT_MY] Points detected: 424 -> 493 (in 0.176142 sec)
[SIFT_MY] 304/421 (recall=0.72209) with average error=0.574339
[SIFT_MY] average size ratio between matched points: 1.15415
[SIFT_MY] average angle difference between matched points: -5.88926 degrees
[SIFT_MY] average descriptor distance between matched points: 0.406783 (random distance: 1.03578) => differentiability=0.392731
[       OK ] SIFT.Scale110 (334 ms)
[ RUN      ] SIFT.Scale130
[ORB_OCV] Points detected: 500 -> 500 (in 0.008776 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: 453 -> 500 (in 0.079712 sec)
[SIFTOCV] 253/409 (recall=0.618582) with average error=0.533529
[SIFTOCV] average size ratio between matched points: 1.37601
[SIFTOCV] average angle difference between matched points: -2.24977 degrees
[SIFTOCV] average descriptor distance between matched points: 175.173 (random distance: 529.43) => differentiability=0.33087
[SIFT_MY] Points detected: 424 -> 478 (in 0.176837 sec)
[SIFT_MY] 237/402 (recall=0.589552) with average error=0.514185
[SIFT_MY] average size ratio between matched points: 1.37362
[SIFT_MY] average angle difference between matched points: -3.26666 degrees
[SIFT_MY] average descriptor distance between matched points: 0.357848 (random distance: 1.02575) => differentiability=0.348866
[       OK ] SIFT.Scale130 (337 ms)
[ RUN      ] SIFT.Scale150
[ORB_OCV] Points detected: 500 -> 500 (in 0.009518 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: 453 -> 500 (in 0.080073 sec)
[SIFTOCV] 208/387 (recall=0.537468) with average error=0.519869
[SIFTOCV] average size ratio between matched points: 1.56537
[SIFTOCV] average angle difference between matched points: 2.7434 degrees
[SIFTOCV] average descriptor distance between matched points: 178.951 (random distance: 530.33) => differentiability=0.337433
[SIFT_MY] Points detected: 424 -> 475 (in 0.178759 sec)
[SIFT_MY] 191/380 (recall=0.502632) with average error=0.464552
[SIFT_MY] average size ratio between matched points: 1.54871
[SIFT_MY] average angle difference between matched points: -4.72397 degrees
[SIFT_MY] average descriptor distance between matched points: 0.369212 (random distance: 1.02985) => differentiability=0.358509
[       OK ] SIFT.Scale150 (341 ms)
[ RUN      ] SIFT.Scale175
[ORB_OCV] Points detected: 500 -> 500 (in 0.009003 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: 453 -> 501 (in 0.082147 sec)
[SIFTOCV] 189/354 (recall=0.533898) with average error=0.530545
[SIFTOCV] average size ratio between matched points: 1.79649
[SIFTOCV] average angle difference between matched points: -2.33097 degrees
[SIFTOCV] average descriptor distance between matched points: 182.373 (random distance: 522.122) => differentiability=0.349291
[SIFT_MY] Points detected: 424 -> 461 (in 0.182461 sec)
[SIFT_MY] 162/351 (recall=0.461538) with average error=0.555716
[SIFT_MY] average size ratio between matched points: 1.78824
[SIFT_MY] average angle difference between matched points: 0.536875 degrees
[SIFT_MY] average descriptor distance between matched points: 0.423642 (random distance: 1.03122) => differentiability=0.410814
[       OK ] SIFT.Scale175 (347 ms)
[ RUN      ] SIFT.Scale200
[ORB_OCV] Points detected: 500 -> 500 (in 0.008996 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: 453 -> 500 (in 0.079056 sec)
[SIFTOCV] 178/324 (recall=0.549383) with average error=0.536323
[SIFTOCV] average size ratio between matched points: 2.03968
[SIFTOCV] average angle difference between matched points: -1.02503 degrees
[SIFTOCV] average descriptor distance between matched points: 167.42 (random distance: 528.219) => differentiability=0.316952
[SIFT_MY] Points detected: 424 -> 471 (in 0.181905 sec)
[SIFT_MY] 153/320 (recall=0.478125) with average error=0.550671
[SIFT_MY] average size ratio between matched points: 2.02589
[SIFT_MY] average angle difference between matched points: -12.1815 degrees
[SIFT_MY] average descriptor distance between matched points: 0.316559 (random distance: 1.03178) => differentiability=0.306808
[       OK ] SIFT.Scale200 (343 ms)
[ RUN      ] SIFT.Rotate10Scale90
[ORB_OCV] Points detected: 500 -> 500 (in 0.00896 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: 453 -> 464 (in 0.081592 sec)
[SIFTOCV] 351/453 (recall=0.774834) with average error=0.660494
[SIFTOCV] average size ratio between matched points: 0.970697
[SIFTOCV] average angle difference between matched points: 0.36928 degrees
[SIFTOCV] average descriptor distance between matched points: 210.278 (random distance: 528.178) => differentiability=0.39812
[SIFT_MY] Points detected: 424 -> 428 (in 0.174218 sec)
[SIFT_MY] 325/424 (recall=0.766509) with average error=0.622443
[SIFT_MY] average size ratio between matched points: 0.966647
[SIFT_MY] average angle difference between matched points: -0.792507 degrees
[SIFT_MY] average descriptor distance between matched points: 0.427394 (random distance: 1.03031) => differentiability=0.414819
[       OK ] SIFT.Rotate10Scale90 (335 ms)
[ RUN      ] SIFT.Rotate30Scale75
[ORB_OCV] Points detected: 500 -> 500 (in 0.008686 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: 453 -> 373 (in 0.077242 sec)
[SIFTOCV] 318/453 (recall=0.701987) with average error=0.961622
[SIFTOCV] average size ratio between matched points: 0.958296
[SIFTOCV] average angle difference between matched points: 6.75176 degrees
[SIFTOCV] average descriptor distance between matched points: 241.741 (random distance: 528.552) => differentiability=0.457364
[SIFT_MY] Points detected: 424 -> 356 (in 0.15779 sec)
[SIFT_MY] 298/424 (recall=0.70283) with average error=1.02689
[SIFT_MY] average size ratio between matched points: 1.0085
[SIFT_MY] average angle difference between matched points: 4.32864 degrees
[SIFT_MY] average descriptor distance between matched points: 0.492526 (random distance: 1.02215) => differentiability=0.481852
[       OK ] SIFT.Rotate30Scale75 (314 ms)
[ RUN      ] SIFT.HerzJesu19RotateM40
[ORB_OCV] Points detected: 500 -> 500 (in 0.096424 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.52711 sec)
[SIFTOCV] 377/435 (recall=0.866667) with average error=2.85298
[SIFTOCV] average size ratio between matched points: 1.00886
[SIFTOCV] average angle difference between matched points: -16.179 degrees
[SIFTOCV] average descriptor distance between matched points: 212.589 (random distance: 537.412) => differentiability=0.395579
[SIFT_MY] Points detected: 449 -> 476 (in 2.34853 sec)
[SIFT_MY] 367/426 (recall=0.861502) with average error=3.05092
[SIFT_MY] average size ratio between matched points: 1.01553
[SIFT_MY] average angle difference between matched points: -18.4285 degrees
[SIFT_MY] average descriptor distance between matched points: 0.425653 (random distance: 1.03998) => differentiability=0.409291
[       OK ] SIFT.HerzJesu19RotateM40 (6878 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: 2979 keypoints so far
octave 1: 3842 keypoints so far
octave 2: 4001 keypoints so far
octave 3: 4032 keypoints so far
octave 4: 4056 keypoints so far
octave 5: 4063 keypoints so far
octave 6: 4065 keypoints so far
octave 7: 4065 keypoints so far
total keypoints: 4065
orientations: 4065 -> 4844 keypoints
descriptors: 4844 -> 4754 keypoints (some discarded due to border)
[       OK ] SIFT.DetectionSmokeTest (3379 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/191 matched (100%), ref count=191
detected n keypoints: 191
[  MATCH  ] selectTopKeypoints_1: 191/191 matched (100%), ref count=191
selected n keypoints: 191
[  MATCH  ] computeOrientations: 202/202 matched (100%), ref count=202
oriented n keypoints: 202
[  MATCH  ] selectTopKeypoints_2: 202/202 matched (100%), ref count=202
selected n keypoints: 202
[  MATCH  ] computeDescriptors: 182/182 matched (100%), ref count=182 [with descriptors]
described n keypoints: 182
[       OK ] SIFT.DetectionDescriptionSteps (891 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 7288, right 6398
Good matches:       1285
Inlier matches:     1172
matching using my sift...
N keypoints: left 7241, right 6277
Good matches:       1179
Inlier matches:     1014
Final score: 1014
[       OK ] SIFT.PairMatching (6484 ms)
[----------] 25 tests from SIFT (24666 ms total)

[----------] Global test environment tear-down
[==========] 25 tests from 1 test suite ran. (24667 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