Skip to content

Task02 Екатерина Семчук ИТМО#55

Open
EkatherinaS wants to merge 3 commits intoPhotogrammetryCourse:task02from
EkatherinaS:task02
Open

Task02 Екатерина Семчук ИТМО#55
EkatherinaS wants to merge 3 commits intoPhotogrammetryCourse:task02from
EkatherinaS:task02

Conversation

@EkatherinaS
Copy link

@EkatherinaS EkatherinaS commented Mar 20, 2026

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

  1. Зачем фильтровать матчи, если потом мы запускаем устойчивый к выбросам RANSAC и отфильтровываем шумные сопоставления?

Думаю, так просто будет быстрее - чем раньше отфильтруем, тем меньше лишних действий сделаем.

  1. Cluster filtering довольно хорошо работает и без Ratio test. Однако, если оставить только Cluster filtering, некоторые тесты начнут падать. Почему так происходит? В каких случаях наоборот, не хватает Ratio test и необходима дополнительная фильтрация?

Возможно в случаях, когда у нас есть одинаковые большие объекты и количества точек в них достаточно для получения кластера, но сам объект может быть определен неправильно.

  1. С какой проблемой можно столкнуться при приравнивании единице элемента H33 матрицы гомографии? Как ее решить?

Не знаю.

  1. Какой подвох таится в попытке склеивать большие панорамы и ортофото методом, реализованным в данной домашке? (Для интуиции можно посмотреть на результат склейки, когда за корень взята какая-нибудь другая картинка)

Может накопиться ошибка и изображение перекроется в точке склейки самого первого и самого последнего изображения (или будет разрыв).

  1. Как можно автоматически построить граф для построения панорамы, чтобы на вход метод принимал только список картинок?

Не знаю.

  1. Если с вашей реализацией SIFT пройти тесты не получилось, напишите (если пробовали дебажить), где, как вам кажется, проблема и как вы пробовали ее решать.

К сожалению, до дебага дело не дошло...

  1. Если есть, фидбек по заданию: какая часть больше всего понравилась, где-то слишком сложно/просто (что именно), где-то слишком мало ссылок и тд.
Github Actions CI

$ ./build/test_sift

1s
0s
0s
43s
56s
Run ./build/test_matching
Running main() from /home/runner/work/PhotogrammetryTasks2026/PhotogrammetryTasks2026/libs/3rdparty/libgtest/googletest/src/gtest_main.cc
[==========] Running 20 tests from 2 test suites.
[----------] Global test environment set-up.
[----------] 18 tests from MATCHING
[ RUN      ] MATCHING.SimpleStitching
testing sift detector/descriptor...
Get total 996 matches.
keypoints RMSE: 4.72619, color RMSE: 5.6938
testing my detector/descriptor...
Get total 839 matches.
keypoints RMSE: 6.37622, color RMSE: 5.6938
[       OK ] MATCHING.SimpleStitching (1733 ms)
[ RUN      ] MATCHING.SimpleMatching
testing sift detector/descriptor...
flann matching...
cv flann matching...
brute force matching
BruteforceMatcher::knnMatch : n query desc : 3919, n train desc : 3522
Get total 996 matches.
estimating homography...
evaluating homography...
nn_score: 0.609594, nn2_score: 0.263332, nn_score_cv: 0.609594, nn2_score_cv: 0.263332, time_my: 0, time_cv: 0.089298, time_bruteforce: 5.77962, good_nn: 0.262312, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.991968
testing my detector/descriptor...
flann matching...
cv flann matching...
brute force matching
BruteforceMatcher::knnMatch : n query desc : 3492, n train desc : 3111
Get total 837 matches.
estimating homography...
evaluating homography...
nn_score: 0.612829, nn2_score: 0.274914, nn_score_cv: 0.612829, nn2_score_cv: 0.274914, time_my: 0, time_cv: 0.076503, time_bruteforce: 3.32411, good_nn: 0.246564, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.984468
[       OK ] MATCHING.SimpleMatching (10835 ms)
[ RUN      ] MATCHING.Rotate10
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 743 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.111067, time_bruteforce: 0, good_nn: 0.201837, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.994616
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 676 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.10676, time_bruteforce: 0, good_nn: 0.203608, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.983728
[       OK ] MATCHING.Rotate10 (2276 ms)
[ RUN      ] MATCHING.Rotate20
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 748 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.113396, time_bruteforce: 0, good_nn: 0.204134, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.985294
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 678 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.105732, time_bruteforce: 0, good_nn: 0.205899, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.986726
[       OK ] MATCHING.Rotate20 (2267 ms)
[ RUN      ] MATCHING.Rotate30
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 733 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.111511, time_bruteforce: 0, good_nn: 0.200561, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.982265
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 666 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.105556, time_bruteforce: 0, good_nn: 0.204181, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.989489
[       OK ] MATCHING.Rotate30 (2257 ms)
[ RUN      ] MATCHING.Rotate40
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 729 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.111487, time_bruteforce: 0, good_nn: 0.201072, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.984911
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 663 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.10571, time_bruteforce: 0, good_nn: 0.205326, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.987934
[       OK ] MATCHING.Rotate40 (2268 ms)
[ RUN      ] MATCHING.Rotate45
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 725 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.112216, time_bruteforce: 0, good_nn: 0.200306, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.986207
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 675 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.107204, time_bruteforce: 1e-06, good_nn: 0.206186, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.982222
[       OK ] MATCHING.Rotate45 (2291 ms)
[ RUN      ] MATCHING.Rotate90
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 837 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.099484, time_bruteforce: 0, good_nn: 0.218423, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.990442
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 768 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.093254, time_bruteforce: 0, good_nn: 0.223368, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.992188
[       OK ] MATCHING.Rotate90 (2103 ms)
[ RUN      ] MATCHING.Scale50
[       OK ] MATCHING.Scale50 (0 ms)
[ RUN      ] MATCHING.Scale70
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 345 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.067761, time_bruteforce: 0, good_nn: 0.102832, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.95942
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 303 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.061858, time_bruteforce: 0, good_nn: 0.103379, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.980198
[       OK ] MATCHING.Scale70 (1518 ms)
[ RUN      ] MATCHING.Scale90
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 662 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.088907, time_bruteforce: 1e-06, good_nn: 0.174024, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.97281
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 597 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.082892, time_bruteforce: 0, good_nn: 0.177549, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.98325
[       OK ] MATCHING.Scale90 (1959 ms)
[ RUN      ] MATCHING.Scale110
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 799 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.12411, time_bruteforce: 0, good_nn: 0.211023, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.986233
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 713 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.116973, time_bruteforce: 0, good_nn: 0.210481, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.987377
[       OK ] MATCHING.Scale110 (2447 ms)
[ RUN      ] MATCHING.Scale130
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 850 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.188837, time_bruteforce: 0, good_nn: 0.221995, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.989412
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 765 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.174247, time_bruteforce: 0, good_nn: 0.2248, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.989542
[       OK ] MATCHING.Scale130 (3267 ms)
[ RUN      ] MATCHING.Scale150
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 790 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.258685, time_bruteforce: 0, good_nn: 0.210258, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.987342
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 704 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.265564, time_bruteforce: 0, good_nn: 0.207904, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.982955
[       OK ] MATCHING.Scale150 (4337 ms)
[ RUN      ] MATCHING.Scale175
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 776 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.339105, time_bruteforce: 0, good_nn: 0.20643, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.989691
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 667 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.32812, time_bruteforce: 0, good_nn: 0.201317, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.983508
[       OK ] MATCHING.Scale175 (5722 ms)
[ RUN      ] MATCHING.Scale200
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 863 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.372414, time_bruteforce: 0, good_nn: 0.225057, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.986095
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 783 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.363887, time_bruteforce: 0, good_nn: 0.229095, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.988506
[       OK ] MATCHING.Scale200 (6699 ms)
[ RUN      ] MATCHING.Rotate10Scale90
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 639 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.097377, time_bruteforce: 0, good_nn: 0.177086, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.99061
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 581 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.093815, time_bruteforce: 0, good_nn: 0.177835, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.984509
[       OK ] MATCHING.Rotate10Scale90 (2077 ms)
[ RUN      ] MATCHING.Rotate30Scale75
testing sift detector/descriptor...
flann matching...
cv flann matching...
Get total 336 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.079698, time_bruteforce: 0, good_nn: 0.119929, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.964286
testing my detector/descriptor...
flann matching...
cv flann matching...
Get total 315 matches.
estimating homography...
evaluating homography...
nn_score: 0, nn2_score: 0, nn_score_cv: 0, nn2_score_cv: 0, time_my: 0, time_cv: 0.073088, time_bruteforce: 0, good_nn: 0.124284, good_ratio: 0, good_clusters: 0, good_ratio_and_clusters: 0.977778
[       OK ] MATCHING.Rotate30Scale75 (1635 ms)
[----------] 18 tests from MATCHING (55692 ms total)

[----------] 2 tests from STITCHING
[ RUN      ] STITCHING.SimplePanorama
[       OK ] STITCHING.SimplePanorama (0 ms)
[ RUN      ] STITCHING.Orthophoto
[       OK ] STITCHING.Orthophoto (0 ms)
[----------] 2 tests from STITCHING (0 ms total)

[----------] Global test environment tear-down
[==========] 20 tests from 2 test suites ran. (55692 ms total)
[  PASSED  ] 20 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