Skip to content

Task01 Иван Осокин ИТМО#7

Open
ivan0sokin wants to merge 3 commits intoPhotogrammetryCourse:task01from
ivan0sokin:task01
Open

Task01 Иван Осокин ИТМО#7
ivan0sokin wants to merge 3 commits intoPhotogrammetryCourse:task01from
ivan0sokin:task01

Conversation

@ivan0sokin
Copy link

@ivan0sokin ivan0sokin commented Feb 26, 2026

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

Опытным путём (bruteforce) было получено значение orient_peak_ratio = 0.8482222, чтобы максимизировать Final score = 1020

  1. Отвечая на этот вопрос, можно сказать, что далеко не всегда получается ровно nfeatures точек. Чем менее контрастное изображение и меньше разного на нём, тем должно быть меньше точек, потому что блюренное изображение будет ещё более блюренное => меньше точек. А больше точек можно получить, если мы всегда будем раздваивать лучшие направления в бинах (или брать ещё больше направлений).

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

Потому что у нас дискретная сетка бинов (36 штук)
С таким параметром orient_peak_ratio=0.999 стало хуже, потому что генерится меньше точек, из которых мы можем выбирать.

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

Надёжно наверное не получится, но в тестах можно отключить вот эту прагму и с помощью утилиты time замерить немного испорченное время (из-за загрузок картинок, вывода и т.д.). У меня оказалось так, что операции ввода-вывода сильно перевесили вычисления и разницы не оказалось (WSL2, 8 cores, 12 threads)

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

Да, так можно, главное чтобы суммарная сигма у i-го слоя была $\sigma_0 \cdot 2^{\frac{i}{s}}$

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

Можно ожидать, что с увеличением октавы блюр увеличивается монотонно => уменьшение контрастности.
oct[o].layers[i] ~= oct[o - 1].layers[i], сделать cv::resize с какой-нибудь интерполяцией.

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

+1 картинка для DoG
+2 картинки для поиска максимума в scale space

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

С увеличением номера картинки начинаюют пропадать всё более крупные детали (сначала пропадает трава, потом камень). Также картинка - это разность слоёв в октаве, поэтому мы видим где могут находиться наши потенциальные точки

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

Потому что нужно, чтобы между соседними слоем были хоть какие-то различия, по которым мы ищем точки.

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

Вот эта строка.

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

Кажется, вот эти строки, которые применяют поворот.

Github Actions CI

Run ./build/test_sift
  ./build/test_sift
  shell: /usr/bin/bash -e {0}
  env:
    BUILD_TYPE: RelWithDebInfo
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.011853 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.099614 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: 414 -> 429 (in 0.183801 sec)
[SIFT_MY] 398/414 (recall=0.961353) with average error=0.0462862
[SIFT_MY] average size ratio between matched points: 0.997957
[SIFT_MY] average angle difference between matched points: -4.2734 degrees
[SIFT_MY] average descriptor distance between matched points: 0.140782 (random distance: 1.02802) => differentiability=0.136945
[       OK ] SIFT.MovedTheSameImage (384 ms)
[ RUN      ] SIFT.MovedImageRight
[ORB_OCV] Points detected: 500 -> 500 (in 0.010001 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.080503 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: 414 -> 417 (in 0.183145 sec)
[SIFT_MY] 389/412 (recall=0.944175) with average error=0.114768
[SIFT_MY] average size ratio between matched points: 1.00805
[SIFT_MY] average angle difference between matched points: -3.09284 degrees
[SIFT_MY] average descriptor distance between matched points: 0.148066 (random distance: 1.00461) => differentiability=0.147387
[       OK ] SIFT.MovedImageRight (346 ms)
[ RUN      ] SIFT.MovedImageLeft
[ORB_OCV] Points detected: 500 -> 500 (in 0.010115 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.07854 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: 414 -> 413 (in 0.180705 sec)
[SIFT_MY] 381/407 (recall=0.936118) with average error=0.0665172
[SIFT_MY] average size ratio between matched points: 0.998099
[SIFT_MY] average angle difference between matched points: -3.829 degrees
[SIFT_MY] average descriptor distance between matched points: 0.140002 (random distance: 1.02492) => differentiability=0.136598
[       OK ] SIFT.MovedImageLeft (340 ms)
[ RUN      ] SIFT.MovedImageUpHalfPixel
[ORB_OCV] Points detected: 500 -> 500 (in 0.009928 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.077389 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: 414 -> 475 (in 0.185899 sec)
[SIFT_MY] 349/410 (recall=0.85122) with average error=0.393303
[SIFT_MY] average size ratio between matched points: 1.04714
[SIFT_MY] average angle difference between matched points: -6.06288 degrees
[SIFT_MY] average descriptor distance between matched points: 0.266371 (random distance: 1.02345) => differentiability=0.260267
[       OK ] SIFT.MovedImageUpHalfPixel (345 ms)
[ RUN      ] SIFT.MovedImageDownHalfPixel
[ORB_OCV] Points detected: 500 -> 500 (in 0.010042 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.077709 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: 414 -> 462 (in 0.186076 sec)
[SIFT_MY] 345/408 (recall=0.845588) with average error=0.441777
[SIFT_MY] average size ratio between matched points: 1.04964
[SIFT_MY] average angle difference between matched points: -5.65292 degrees
[SIFT_MY] average descriptor distance between matched points: 0.28637 (random distance: 1.01925) => differentiability=0.280962
[       OK ] SIFT.MovedImageDownHalfPixel (346 ms)
[ RUN      ] SIFT.Rotate10
[ORB_OCV] Points detected: 500 -> 500 (in 0.010042 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.077965 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: 414 -> 485 (in 0.191754 sec)
[SIFT_MY] 340/414 (recall=0.821256) with average error=0.487985
[SIFT_MY] average size ratio between matched points: 1.04189
[SIFT_MY] average angle difference between matched points: -0.112847 degrees
[SIFT_MY] average descriptor distance between matched points: 0.307866 (random distance: 1.00846) => differentiability=0.305282
[       OK ] SIFT.Rotate10 (358 ms)
[ RUN      ] SIFT.Rotate20
[ORB_OCV] Points detected: 500 -> 500 (in 0.010381 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.07748 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: 414 -> 490 (in 0.184006 sec)
[SIFT_MY] 325/408 (recall=0.796569) with average error=0.526543
[SIFT_MY] average size ratio between matched points: 1.05759
[SIFT_MY] average angle difference between matched points: 5.51544 degrees
[SIFT_MY] average descriptor distance between matched points: 0.321762 (random distance: 1.02681) => differentiability=0.313361
[       OK ] SIFT.Rotate20 (347 ms)
[ RUN      ] SIFT.Rotate30
[ORB_OCV] Points detected: 500 -> 500 (in 0.010126 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.078147 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: 414 -> 466 (in 0.187647 sec)
[SIFT_MY] 327/407 (recall=0.80344) with average error=0.623681
[SIFT_MY] average size ratio between matched points: 1.0497
[SIFT_MY] average angle difference between matched points: 13.1996 degrees
[SIFT_MY] average descriptor distance between matched points: 0.324986 (random distance: 1.02482) => differentiability=0.317114
[       OK ] SIFT.Rotate30 (349 ms)
[ RUN      ] SIFT.Rotate40
[ORB_OCV] Points detected: 500 -> 500 (in 0.010028 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.078165 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: 414 -> 428 (in 0.178058 sec)
[SIFT_MY] 309/403 (recall=0.766749) with average error=0.725779
[SIFT_MY] average size ratio between matched points: 1.07466
[SIFT_MY] average angle difference between matched points: 17.8989 degrees
[SIFT_MY] average descriptor distance between matched points: 0.33069 (random distance: 1.01252) => differentiability=0.3266
[       OK ] SIFT.Rotate40 (338 ms)
[ RUN      ] SIFT.Rotate45
[ORB_OCV] Points detected: 500 -> 500 (in 0.01015 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.078554 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: 414 -> 488 (in 0.188341 sec)
[SIFT_MY] 324/399 (recall=0.81203) with average error=0.701618
[SIFT_MY] average size ratio between matched points: 1.05884
[SIFT_MY] average angle difference between matched points: 27.5601 degrees
[SIFT_MY] average descriptor distance between matched points: 0.333097 (random distance: 1.03038) => differentiability=0.323277
[       OK ] SIFT.Rotate45 (349 ms)
[ RUN      ] SIFT.Rotate90
[ORB_OCV] Points detected: 500 -> 500 (in 0.01002 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.077747 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: 414 -> 399 (in 0.174222 sec)
[SIFT_MY] 365/401 (recall=0.910224) with average error=0.602271
[SIFT_MY] average size ratio between matched points: 0.995224
[SIFT_MY] average angle difference between matched points: 73.411 degrees
[SIFT_MY] average descriptor distance between matched points: 0.168574 (random distance: 1.00071) => differentiability=0.168454
[       OK ] SIFT.Rotate90 (333 ms)
[ RUN      ] SIFT.Scale50
[ORB_OCV] Points detected: 500 -> 500 (in 0.009547 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.076937 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: 414 -> 180 (in 0.143417 sec)
[SIFT_MY] 212/414 (recall=0.512077) with average error=1.91222
[SIFT_MY] average size ratio between matched points: 0.957775
[SIFT_MY] average angle difference between matched points: 5.05713 degrees
[SIFT_MY] average descriptor distance between matched points: 0.70046 (random distance: 1.01825) => differentiability=0.687906
[       OK ] SIFT.Scale50 (301 ms)
[ RUN      ] SIFT.Scale70
[ORB_OCV] Points detected: 500 -> 500 (in 0.009753 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.076924 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: 414 -> 309 (in 0.158158 sec)
[SIFT_MY] 284/414 (recall=0.68599) with average error=1.20428
[SIFT_MY] average size ratio between matched points: 0.971642
[SIFT_MY] average angle difference between matched points: -5.16408 degrees
[SIFT_MY] average descriptor distance between matched points: 0.531173 (random distance: 1.02716) => differentiability=0.51713
[       OK ] SIFT.Scale70 (316 ms)
[ RUN      ] SIFT.Scale90
[ORB_OCV] Points detected: 500 -> 500 (in 0.009935 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.077114 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: 414 -> 419 (in 0.177076 sec)
[SIFT_MY] 329/414 (recall=0.794686) with average error=0.642924
[SIFT_MY] average size ratio between matched points: 1.00131
[SIFT_MY] average angle difference between matched points: -3.87488 degrees
[SIFT_MY] average descriptor distance between matched points: 0.388724 (random distance: 1.01024) => differentiability=0.384783
[       OK ] SIFT.Scale90 (334 ms)
[ RUN      ] SIFT.Scale110
[ORB_OCV] Points detected: 500 -> 500 (in 0.010033 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.077763 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.13854 degrees
[SIFTOCV] average descriptor distance between matched points: 182.143 (random distance: 530.492) => differentiability=0.343347
[SIFT_MY] Points detected: 414 -> 492 (in 0.182774 sec)
[SIFT_MY] 301/411 (recall=0.73236) with average error=0.592599
[SIFT_MY] average size ratio between matched points: 1.15391
[SIFT_MY] average angle difference between matched points: -1.77049 degrees
[SIFT_MY] average descriptor distance between matched points: 0.395074 (random distance: 1.02243) => differentiability=0.386408
[       OK ] SIFT.Scale110 (342 ms)
[ RUN      ] SIFT.Scale130
[ORB_OCV] Points detected: 500 -> 500 (in 0.010036 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.089778 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: 414 -> 478 (in 0.18686 sec)
[SIFT_MY] 237/393 (recall=0.603053) with average error=0.516909
[SIFT_MY] average size ratio between matched points: 1.37398
[SIFT_MY] average angle difference between matched points: -5.9517 degrees
[SIFT_MY] average descriptor distance between matched points: 0.342088 (random distance: 1.02355) => differentiability=0.334218
[       OK ] SIFT.Scale130 (361 ms)
[ RUN      ] SIFT.Scale150
[ORB_OCV] Points detected: 500 -> 500 (in 0.010093 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.079226 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: 414 -> 476 (in 0.186847 sec)
[SIFT_MY] 189/371 (recall=0.509434) with average error=0.493665
[SIFT_MY] average size ratio between matched points: 1.55206
[SIFT_MY] average angle difference between matched points: -2.26138 degrees
[SIFT_MY] average descriptor distance between matched points: 0.352809 (random distance: 1.02186) => differentiability=0.345262
[       OK ] SIFT.Scale150 (351 ms)
[ RUN      ] SIFT.Scale175
[ORB_OCV] Points detected: 500 -> 500 (in 0.009865 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.079795 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: 414 -> 461 (in 0.188728 sec)
[SIFT_MY] 158/342 (recall=0.461988) with average error=0.548336
[SIFT_MY] average size ratio between matched points: 1.79818
[SIFT_MY] average angle difference between matched points: 5.23744 degrees
[SIFT_MY] average descriptor distance between matched points: 0.400925 (random distance: 1.01897) => differentiability=0.39346
[       OK ] SIFT.Scale175 (352 ms)
[ RUN      ] SIFT.Scale200
[ORB_OCV] Points detected: 500 -> 500 (in 0.009962 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.080329 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: 414 -> 471 (in 0.191099 sec)
[SIFT_MY] 152/311 (recall=0.488746) with average error=0.552514
[SIFT_MY] average size ratio between matched points: 2.02534
[SIFT_MY] average angle difference between matched points: -11.8717 degrees
[SIFT_MY] average descriptor distance between matched points: 0.282793 (random distance: 1.02494) => differentiability=0.275913
[       OK ] SIFT.Scale200 (358 ms)
[ RUN      ] SIFT.Rotate10Scale90
[ORB_OCV] Points detected: 500 -> 500 (in 0.009683 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.080367 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: 414 -> 416 (in 0.177251 sec)
[SIFT_MY] 317/414 (recall=0.7657) with average error=0.623288
[SIFT_MY] average size ratio between matched points: 0.969524
[SIFT_MY] average angle difference between matched points: 3.96746 degrees
[SIFT_MY] average descriptor distance between matched points: 0.408741 (random distance: 1.01872) => differentiability=0.401232
[       OK ] SIFT.Rotate10Scale90 (339 ms)
[ RUN      ] SIFT.Rotate30Scale75
[ORB_OCV] Points detected: 500 -> 500 (in 0.009614 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.077896 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: 414 -> 339 (in 0.165898 sec)
[SIFT_MY] 290/414 (recall=0.700483) with average error=1.01315
[SIFT_MY] average size ratio between matched points: 1.01134
[SIFT_MY] average angle difference between matched points: 8.3761 degrees
[SIFT_MY] average descriptor distance between matched points: 0.465751 (random distance: 1.03646) => differentiability=0.449367
[       OK ] SIFT.Rotate30Scale75 (325 ms)
[ RUN      ] SIFT.HerzJesu19RotateM40
[ORB_OCV] Points detected: 500 -> 500 (in 0.088433 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.74447 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: 450 -> 476 (in 2.89098 sec)
[SIFT_MY] 368/425 (recall=0.865882) with average error=2.89477
[SIFT_MY] average size ratio between matched points: 1.04643
[SIFT_MY] average angle difference between matched points: -19.1191 degrees
[SIFT_MY] average descriptor distance between matched points: 0.391505 (random distance: 1.03374) => differentiability=0.378726
[       OK ] SIFT.HerzJesu19RotateM40 (7543 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 -> 4644 keypoints
descriptors: 4644 -> 4560 keypoints (some discarded due to border)
[       OK ] SIFT.DetectionSmokeTest (3223 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: 196/196 matched (100%), ref count=202
oriented n keypoints: 196
[  MATCH  ] selectTopKeypoints_2: 196/196 matched (100%), ref count=202
selected n keypoints: 196
[  MATCH  ] computeDescriptors: 177/177 matched (100%), ref count=182 [with descriptors]
described n keypoints: 177
[       OK ] SIFT.DetectionDescriptionSteps (905 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 6917, right 6005
Good matches:       1111
Inlier matches:     1020
Final score: 1020
[       OK ] SIFT.PairMatching (6429 ms)
[----------] 25 tests from SIFT (25314 ms total)

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