Skip to content

Task04 Никон Парвицкий ITMO#146

Closed
NikonFlex wants to merge 1 commit into
PhotogrammetryCourse:task04from
NikonFlex:task04
Closed

Task04 Никон Парвицкий ITMO#146
NikonFlex wants to merge 1 commit into
PhotogrammetryCourse:task04from
NikonFlex:task04

Conversation

@NikonFlex
Copy link
Copy Markdown

  1. test_ceres_solver/FitLine: почему найденная прямая и эталонная - не совпадают? Как это исправить пост-обработкой? Как это исправить формулировкой задачи?
    Не совпадает из-за масштаба, при умножении на константу получим ту же прямую, но числа другие. Пост-обработкой: перед сравнением отнормируем найденные параметры. Формулировкой задачи: убрать степень свободы, вместо трех параметров сделаем два

  2. BA: представьте что вы написали преобразование phg::Calibration -> блок параметров и обратное блок параметров -> phg::Calibration. Как проверить простым образом что эти преобразования сделаны корректно? Что должно быть в логе про процент inliers до/после BA если runBA() вызывать всегда два раза пордяд? Иначе говоря - что следует из того что в идеале runBA() должна быть (мне очень нравится это слово) - идемпотентна?
    Если запустить runBA() дважды подряд, второй вызов должен почти ничего не изменить, inliers и MSE останутся теми же, потому что оптимизатор уже и так привел все в минимум. Это прикольный способ проверить корректность преобразований phg::Calibration -> блок параметров и обратное блок параметров -> phg::Calibration: если они реализованы правильно, повторный запуск не должен сломать уже выровненное облако.

  3. Какое максимальное число кадров у вас получилось хорошо выравнять для каждого из датасетов? (проверьте хотя бы saharov32 и herzjesu25) Не забудьте приложить скриншоты.
    13

  4. Если бы вычисления в double были абсолютно точны - можно ли было бы назвать вычисления в Calibration::project/unproject строго зеркальными?
    Нет, если включены дисторсии k1 k2. project применяет дисторсию к нормализованным координатам, unproject делает инверсию, но радиус считается от искажённой точки, а не от истинной, это первое приближение, а не точная инверсия, какую мы хотели.

  5. Почему фокальная длина меняется от того что мы уменьшаем картинку? Почему именно f/downscale?
    Фокусное расстояние в пикселях пропорционально разрешению. Когда мы уменьшаем картинку в 2 раза, пиксель становится в 2 раза больше, f в пикселях уменьшается в 2 раза.

  6. Имеет ли право BA двигать точку отсчета системы координат (т.е. добавить константу ко всем координатам)? Как это повлияет на суммарную Loss?
    Нет, потому что мы фиксируем первую камеру. Если б могла, то суммарная Loss не изменилась бы при сдвиге всех точек и камер, получили бы неопределенную систему

  7. Каким образом можно гарантировать чтобы при сравнении нескольких последовательно построенных облаков точек одного и того же датасета (созданных по мере добавления фотографии за фотографией) в MeshLab - облака не были хаотично смещены/отмасштабированы/повернуты друг от друга?
    Фиксировать масштаб и ориентацию. Тогда все облака в одной системе координат и можно открыть несколько PLY сразу.

Github Actions CI

$ ./build/test_sift
Running main() from /Users/runner/work/PhotogrammetryTasks2026/PhotogrammetryTasks2026/libs/3rdparty/libgtest/googletest/src/gtest_main.cc
[==========] Running 1 test from 1 test suite.
[----------] Global test environment set-up.
[----------] 1 test from SFM
[ RUN      ] SFM.ReconstructNViews
32 images
detecting points...
matching points...
1% - Cameras 4-0 (IMG_3027.JPG-IMG_3023.JPG): 77 matches
3% - Cameras 0-1 (IMG_3023.JPG-IMG_3024.JPG): 1154 matches
4% - Cameras 4-1 (IMG_3027.JPG-IMG_3024.JPG): 155 matches
7% - Cameras 0-2 (IMG_3023.JPG-IMG_3025.JPG): 495 matches
8% - Cameras 4-2 (IMG_3027.JPG-IMG_3025.JPG): 647 matches
9% - Cameras 7-2 (IMG_3030.JPG-IMG_3025.JPG): 7 matches
10% - Cameras 0-3 (IMG_3023.JPG-IMG_3026.JPG): 144 matches
11% - Cameras 0-4 (IMG_3023.JPG-IMG_3027.JPG): 40 matches
12% - Cameras 4-3 (IMG_3027.JPG-IMG_3026.JPG): 1651 matches
13% - Cameras 7-3 (IMG_3030.JPG-IMG_3026.JPG): 106 matches
16% - Cameras 7-4 (IMG_3030.JPG-IMG_3027.JPG): 319 matches
17% - Cameras 4-5 (IMG_3027.JPG-IMG_3028.JPG): 1399 matches
19% - Cameras 7-5 (IMG_3030.JPG-IMG_3028.JPG): 1001 matches
20% - Cameras 4-6 (IMG_3027.JPG-IMG_3029.JPG): 1041 matches
22% - Cameras 7-6 (IMG_3030.JPG-IMG_3029.JPG): 1566 matches
23% - Cameras 4-7 (IMG_3027.JPG-IMG_3030.JPG): 299 matches
26% - Cameras 7-8 (IMG_3030.JPG-IMG_3031.JPG): 1199 matches
27% - Cameras 4-8 (IMG_3027.JPG-IMG_3031.JPG): 137 matches
29% - Cameras 4-9 (IMG_3027.JPG-IMG_3032.JPG): 109 matches
30% - Cameras 7-9 (IMG_3030.JPG-IMG_3032.JPG): 775 matches
31% - Cameras 1-0 (IMG_3024.JPG-IMG_3023.JPG): 1018 matches
34% - Cameras 1-2 (IMG_3024.JPG-IMG_3025.JPG): 1172 matches
36% - Cameras 5-1 (IMG_3028.JPG-IMG_3024.JPG): 14 matches
38% - Cameras 1-3 (IMG_3024.JPG-IMG_3026.JPG): 418 matches
39% - Cameras 5-2 (IMG_3028.JPG-IMG_3025.JPG): 139 matches
41% - Cameras 1-4 (IMG_3024.JPG-IMG_3027.JPG): 149 matches
42% - Cameras 5-3 (IMG_3028.JPG-IMG_3026.JPG): 820 matches
43% - Cameras 8-3 (IMG_3031.JPG-IMG_3026.JPG): 6 matches
46% - Cameras 5-4 (IMG_3028.JPG-IMG_3027.JPG): 1398 matches
47% - Cameras 8-4 (IMG_3031.JPG-IMG_3027.JPG): 169 matches
48% - Cameras 1-6 (IMG_3024.JPG-IMG_3029.JPG): 22 matches
49% - Cameras 5-6 (IMG_3028.JPG-IMG_3029.JPG): 1726 matches
50% - Cameras 8-5 (IMG_3031.JPG-IMG_3028.JPG): 401 matches
52% - Cameras 5-7 (IMG_3028.JPG-IMG_3030.JPG): 1046 matches
53% - Cameras 8-6 (IMG_3031.JPG-IMG_3029.JPG): 882 matches
54% - Cameras 5-8 (IMG_3028.JPG-IMG_3031.JPG): 370 matches
57% - Cameras 8-7 (IMG_3031.JPG-IMG_3030.JPG): 1231 matches
58% - Cameras 5-9 (IMG_3028.JPG-IMG_3032.JPG): 299 matches
60% - Cameras 8-9 (IMG_3031.JPG-IMG_3032.JPG): 1593 matches
62% - Cameras 2-0 (IMG_3025.JPG-IMG_3023.JPG): 536 matches
64% - Cameras 6-1 (IMG_3029.JPG-IMG_3024.JPG): 35 matches
66% - Cameras 2-1 (IMG_3025.JPG-IMG_3024.JPG): 1123 matches
68% - Cameras 6-2 (IMG_3029.JPG-IMG_3025.JPG): 62 matches
69% - Cameras 2-3 (IMG_3025.JPG-IMG_3026.JPG): 1283 matches
71% - Cameras 6-3 (IMG_3029.JPG-IMG_3026.JPG): 304 matches
72% - Cameras 2-4 (IMG_3025.JPG-IMG_3027.JPG): 614 matches
74% - Cameras 6-4 (IMG_3029.JPG-IMG_3027.JPG): 911 matches
76% - Cameras 2-5 (IMG_3025.JPG-IMG_3028.JPG): 118 matches
77% - Cameras 9-4 (IMG_3032.JPG-IMG_3027.JPG): 85 matches
78% - Cameras 6-5 (IMG_3029.JPG-IMG_3028.JPG): 1699 matches
79% - Cameras 2-6 (IMG_3025.JPG-IMG_3029.JPG): 72 matches
80% - Cameras 9-5 (IMG_3032.JPG-IMG_3028.JPG): 299 matches
81% - Cameras 6-7 (IMG_3029.JPG-IMG_3030.JPG): 1565 matches
82% - Cameras 2-7 (IMG_3025.JPG-IMG_3030.JPG): 37 matches
83% - Cameras 9-6 (IMG_3032.JPG-IMG_3029.JPG): 457 matches
84% - Cameras 9-7 (IMG_3032.JPG-IMG_3030.JPG): 773 matches
86% - Cameras 6-8 (IMG_3029.JPG-IMG_3031.JPG): 814 matches
88% - Cameras 9-8 (IMG_3032.JPG-IMG_3031.JPG): 1570 matches
89% - Cameras 6-9 (IMG_3029.JPG-IMG_3032.JPG): 477 matches
91% - Cameras 3-0 (IMG_3026.JPG-IMG_3023.JPG): 174 matches
92% - Cameras 3-1 (IMG_3026.JPG-IMG_3024.JPG): 389 matches
93% - Cameras 3-2 (IMG_3026.JPG-IMG_3025.JPG): 1210 matches
94% - Cameras 3-4 (IMG_3026.JPG-IMG_3027.JPG): 1538 matches
96% - Cameras 3-5 (IMG_3026.JPG-IMG_3028.JPG): 715 matches
97% - Cameras 3-6 (IMG_3026.JPG-IMG_3029.JPG): 281 matches
98% - Cameras 3-7 (IMG_3026.JPG-IMG_3030.JPG): 82 matches
Initial alignment from cameras #0 and #1 (IMG_3023.JPG, IMG_3024.JPG)
Before BA camera: k1=0, k2=0, f=1585.5, cx=364, cy=546
Before BA projections: 84% inliers with MSE=2.30945
    Camera #0 projections: 84% inliers (975/1154) with MSE=2.30678
    Camera #1 projections: 84% inliers (964/1154) with MSE=2.31215
After BA camera: k1=0, k2=0, f=1585.5, cx=364, cy=546
Camera #0 center: [0, 0, 0] -> [0, 0, 0]
Camera #1 center: [-0.990546, 0.00788902, 0.136952] -> [-0.990546, 0.00788902, 0.136952]
After BA tie poits: 0% old + 8% new = 8% total outliers
After BA projections: 92% inliers with MSE=0.443555
    Camera #0 projections: 92% inliers (1059/1154) with MSE=0.450485
    Camera #1 projections: 92% inliers (1059/1154) with MSE=0.436625
Append camera #2 (IMG_3025.JPG) to alignment via 782 common points
Before BA camera: k1=0, k2=0, f=1585.5, cx=364, cy=546
Before BA projections: 86% inliers with MSE=0.777145
    Camera #0 projections: 92% inliers (1231/1340) with MSE=0.662777
    Camera #1 projections: 91% inliers (1646/1800) with MSE=0.502594
    Camera #2 projections: 74% inliers (1218/1640) with MSE=1.26376
After BA camera: k1=0, k2=0, f=1585.5, cx=364, cy=546
Camera #0 center: [0, 0, 0] -> [0, 0, 0]
Camera #1 center: [-0.990546, 0.00788902, 0.136952] -> [-0.990546, 0.00788902, 0.136952]
Camera #2 center: [-1.87355, 0.0452683, 0.459281] -> [-1.93616, 0.0283304, 0.453798]
After BA tie poits: 5% old + 4% new = 9% total outliers
After BA projections: 92% inliers with MSE=0.462181
    Camera #0 projections: 90% inliers (1209/1340) with MSE=0.692398
    Camera #1 projections: 92% inliers (1662/1800) with MSE=0.49036
    Camera #2 projections: 94% inliers (1538/1640) with MSE=0.250758
Append camera #3 (IMG_3026.JPG) to alignment via 988 common points
Before BA camera: k1=0, k2=0, f=1585.5, cx=364, cy=546
Before BA projections: 91% inliers with MSE=0.676715
    Camera #0 projections: 90% inliers (1219/1355) with MSE=0.690902
    Camera #1 projections: 92% inliers (1701/1852) with MSE=0.488776
    Camera #2 projections: 94% inliers (2160/2292) with MSE=0.440672
    Camera #3 projections: 86% inliers (1492/1735) with MSE=1.22111
After BA camera: k1=0, k2=0, f=1585.5, cx=364, cy=546
Camera #0 center: [0, 0, 0] -> [0, 0, 0]
Camera #1 center: [-0.990546, 0.00788902, 0.136952] -> [-0.990546, 0.00788902, 0.136952]
Camera #2 center: [-1.93616, 0.0283304, 0.453798] -> [-1.87647, 0.0256715, 0.444026]
Camera #3 center: [-2.77193, 0.0681073, 0.884203] -> [-2.68258, 0.0497257, 0.847088]
After BA tie poits: 7% old + 10% new = 16% total outliers
After BA projections: 91% inliers with MSE=0.347909
    Camera #0 projections: 89% inliers (1208/1355) with MSE=0.750258
    Camera #1 projections: 90% inliers (1667/1852) with MSE=0.430151
    Camera #2 projections: 93% inliers (2135/2292) with MSE=0.210121
    Camera #3 projections: 92% inliers (1600/1735) with MSE=0.142309
Append camera #4 (IMG_3027.JPG) to alignment via 1050 common points
Before BA camera: k1=0, k2=0, f=1585.5, cx=364, cy=546
Before BA projections: 81% inliers with MSE=0.620548
    Camera #0 projections: 89% inliers (1213/1360) with MSE=0.748227
    Camera #1 projections: 90% inliers (1671/1857) with MSE=0.430361
    Camera #2 projections: 90% inliers (2217/2473) with MSE=0.28933
    Camera #3 projections: 80% inliers (2068/2569) with MSE=0.2188
    Camera #4 projections: 62% inliers (1402/2274) with MSE=1.85311
After BA camera: k1=0, k2=0, f=1638.64, cx=380.602, cy=471.194
Camera #0 center: [0, 0, 0] -> [0, 0, 0]
Camera #1 center: [-0.990546, 0.00788902, 0.136952] -> [-0.990546, 0.00788902, 0.136952]
Camera #2 center: [-1.87647, 0.0256715, 0.444026] -> [-1.88139, 0.0340127, 0.43961]
Camera #3 center: [-2.68258, 0.0497257, 0.847088] -> [-2.70688, 0.0659443, 0.846688]
Camera #4 center: [-3.25645, 0.115523, 1.41134] -> [-3.29045, 0.128636, 1.40153]
After BA tie poits: 12% old + 13% new = 24% total outliers
After BA projections: 84% inliers with MSE=0.150282
    Camera #0 projections: 84% inliers (1149/1360) with MSE=0.163465
    Camera #1 projections: 87% inliers (1611/1857) with MSE=0.134057
    Camera #2 projections: 83% inliers (2062/2473) with MSE=0.125197
    Camera #3 projections: 84% inliers (2169/2569) with MSE=0.149536
    Camera #4 projections: 83% inliers (1878/2274) with MSE=0.18454
Append camera #5 (IMG_3028.JPG) to alignment via 984 common points
Before BA camera: k1=0, k2=0, f=1638.64, cx=380.602, cy=471.194
Before BA projections: 81% inliers with MSE=0.188926
    Camera #0 projections: 84% inliers (1149/1360) with MSE=0.163465
    Camera #1 projections: 87% inliers (1611/1857) with MSE=0.134057
    Camera #2 projections: 83% inliers (2071/2484) with MSE=0.124724
    Camera #3 projections: 80% inliers (2219/2771) with MSE=0.14825
    Camera #4 projections: 80% inliers (2333/2933) with MSE=0.180846
    Camera #5 projections: 76% inliers (1443/1905) with MSE=0.438213
After BA camera: k1=0, k2=0, f=1750.52, cx=388.182, cy=444.122
Camera #0 center: [0, 0, 0] -> [0, 0, 0]
Camera #1 center: [-0.990546, 0.00788902, 0.136952] -> [-0.990546, 0.00788902, 0.136952]
Camera #2 center: [-1.88139, 0.0340127, 0.43961] -> [-1.88308, 0.0325657, 0.441424]
Camera #3 center: [-2.70688, 0.0659443, 0.846688] -> [-2.71357, 0.0567055, 0.854997]
Camera #4 center: [-3.29045, 0.128636, 1.40153] -> [-3.2281, 0.113427, 1.32962]
Camera #5 center: [-3.82647, 0.185405, 2.0886] -> [-3.8423, 0.194835, 2.1542]
After BA tie poits: 20% old + 4% new = 24% total outliers
After BA projections: 80% inliers with MSE=0.277024
    Camera #0 projections: 83% inliers (1134/1360) with MSE=0.169696
    Camera #1 projections: 85% inliers (1582/1857) with MSE=0.120127
    Camera #2 projections: 82% inliers (2031/2484) with MSE=0.124032
    Camera #3 projections: 72% inliers (1992/2771) with MSE=0.327069
    Camera #4 projections: 74% inliers (2169/2933) with MSE=0.52045
    Camera #5 projections: 90% inliers (1721/1905) with MSE=0.307805
Append camera #6 (IMG_3029.JPG) to alignment via 1390 common points
Before BA camera: k1=0, k2=0, f=1750.52, cx=388.182, cy=444.122
Before BA projections: 80% inliers with MSE=0.41173
    Camera #0 projections: 83% inliers (1134/1360) with MSE=0.169696
    Camera #1 projections: 85% inliers (1590/1866) with MSE=0.119914
    Camera #2 projections: 82% inliers (2032/2485) with MSE=0.12401
    Camera #3 projections: 72% inliers (2006/2789) with MSE=0.326599
    Camera #4 projections: 75% inliers (2409/3197) with MSE=0.53906
    Camera #5 projections: 91% inliers (2561/2821) with MSE=0.303265
    Camera #6 projections: 76% inliers (2048/2711) with MSE=1.12702
After BA camera: k1=-0.170619, k2=0.324444, f=1617.76, cx=382.588, cy=474.714
Camera #0 center: [0, 0, 0] -> [0, 0, 0]
Camera #1 center: [-0.990546, 0.00788902, 0.136952] -> [-0.990546, 0.00788902, 0.136952]
Camera #2 center: [-1.88308, 0.0325657, 0.441424] -> [-1.89128, 0.0348394, 0.43271]
Camera #3 center: [-2.71357, 0.0567055, 0.854997] -> [-2.71606, 0.0708781, 0.823431]
Camera #4 center: [-3.2281, 0.113427, 1.32962] -> [-3.33313, 0.136663, 1.38421]
Camera #5 center: [-3.8423, 0.194835, 2.1542] -> [-3.8812, 0.217227, 2.06973]
Camera #6 center: [-4.0958, 0.333169, 3.19566] -> [-4.13133, 0.332128, 2.89114]
After BA tie poits: 19% old + 13% new = 32% total outliers
After BA projections: 79% inliers with MSE=0.112488
    Camera #0 projections: 82% inliers (1116/1360) with MSE=0.0848626
    Camera #1 projections: 84% inliers (1567/1866) with MSE=0.0824189
    Camera #2 projections: 80% inliers (1979/2485) with MSE=0.0721947
    Camera #3 projections: 68% inliers (1903/2789) with MSE=0.0900715
    Camera #4 projections: 72% inliers (2302/3197) with MSE=0.115575
    Camera #5 projections: 87% inliers (2467/2821) with MSE=0.147101
    Camera #6 projections: 87% inliers (2350/2711) with MSE=0.158381
Append camera #7 (IMG_3030.JPG) to alignment via 1446 common points
Before BA camera: k1=-0.170619, k2=0.324444, f=1617.76, cx=382.588, cy=474.714
Before BA projections: 81% inliers with MSE=0.428188
    Camera #0 projections: 82% inliers (1116/1360) with MSE=0.0848626
    Camera #1 projections: 84% inliers (1567/1866) with MSE=0.0824189
    Camera #2 projections: 80% inliers (1979/2485) with MSE=0.0721947
    Camera #3 projections: 68% inliers (1905/2792) with MSE=0.0901671
    Camera #4 projections: 72% inliers (2318/3220) with MSE=0.11579
    Camera #5 projections: 88% inliers (2666/3046) with MSE=0.29448
    Camera #6 projections: 88% inliers (2974/3386) with MSE=0.373069
    Camera #7 projections: 90% inliers (2190/2425) with MSE=2.03455
After BA camera: k1=-0.188057, k2=0.296785, f=1633.08, cx=383.301, cy=473.331
Camera #0 center: [0, 0, 0] -> [0, 0, 0]
Camera #1 center: [-0.990546, 0.00788902, 0.136952] -> [-0.990546, 0.00788902, 0.136952]
Camera #2 center: [-1.89128, 0.0348394, 0.43271] -> [-1.89297, 0.0356049, 0.434229]
Camera #3 center: [-2.71606, 0.0708781, 0.823431] -> [-2.72048, 0.0713739, 0.830188]
Camera #4 center: [-3.33313, 0.136663, 1.38421] -> [-3.32874, 0.139113, 1.38654]
Camera #5 center: [-3.8812, 0.217227, 2.06973] -> [-3.87581, 0.219995, 2.07603]
Camera #6 center: [-4.13133, 0.332128, 2.89114] -> [-4.11875, 0.333772, 2.87776]
Camera #7 center: [-4.30209, 0.467465, 3.77327] -> [-4.29807, 0.460663, 3.81101]
After BA tie poits: 27% old + 3% new = 31% total outliers
After BA projections: 77% inliers with MSE=0.190681
    Camera #0 projections: 82% inliers (1111/1360) with MSE=0.080894
    Camera #1 projections: 83% inliers (1554/1866) with MSE=0.0778946
    Camera #2 projections: 79% inliers (1958/2485) with MSE=0.0757329
    Camera #3 projections: 67% inliers (1861/2792) with MSE=0.0951815
    Camera #4 projections: 67% inliers (2164/3220) with MSE=0.21297
    Camera #5 projections: 67% inliers (2054/3046) with MSE=0.146171
    Camera #6 projections: 85% inliers (2881/3386) with MSE=0.468849
    Camera #7 projections: 91% inliers (2209/2425) with MSE=0.164348
Append camera #8 (IMG_3031.JPG) to alignment via 1594 common points
Before BA camera: k1=-0.188057, k2=0.296785, f=1633.08, cx=383.301, cy=473.331
Before BA projections: 78% inliers with MSE=0.495072
    Camera #0 projections: 82% inliers (1111/1360) with MSE=0.080894
    Camera #1 projections: 83% inliers (1554/1866) with MSE=0.0778946
    Camera #2 projections: 79% inliers (1958/2485) with MSE=0.0757329
    Camera #3 projections: 67% inliers (1862/2793) with MSE=0.0953304
    Camera #4 projections: 67% inliers (2172/3230) with MSE=0.213935
    Camera #5 projections: 68% inliers (2092/3088) with MSE=0.157921
    Camera #6 projections: 85% inliers (3051/3581) with MSE=0.536489
    Camera #7 projections: 91% inliers (2646/2897) with MSE=0.3239
    Camera #8 projections: 87% inliers (2053/2373) with MSE=2.59753
After BA camera: k1=-0.157576, k2=0.114681, f=1603.47, cx=381.066, cy=474.039
Camera #0 center: [0, 0, 0] -> [0, 0, 0]
Camera #1 center: [-0.990546, 0.00788902, 0.136952] -> [-0.990546, 0.00788902, 0.136952]
Camera #2 center: [-1.89297, 0.0356049, 0.434229] -> [-1.8944, 0.0363195, 0.433094]
Camera #3 center: [-2.72048, 0.0713739, 0.830188] -> [-2.72379, 0.0733808, 0.826089]
Camera #4 center: [-3.32874, 0.139113, 1.38654] -> [-3.33831, 0.142546, 1.38382]
Camera #5 center: [-3.87581, 0.219995, 2.07603] -> [-3.88813, 0.225559, 2.06931]
Camera #6 center: [-4.11875, 0.333772, 2.87776] -> [-4.14226, 0.344349, 2.89284]
Camera #7 center: [-4.29807, 0.460663, 3.81101] -> [-4.32272, 0.471487, 3.79954]
Camera #8 center: [-4.02901, 0.603873, 4.83648] -> [-4.06901, 0.600353, 4.82538]
After BA tie poits: 28% old + 5% new = 32% total outliers
After BA projections: 74% inliers with MSE=0.144133
    Camera #0 projections: 81% inliers (1106/1360) with MSE=0.0715901
    Camera #1 projections: 83% inliers (1545/1866) with MSE=0.0696002
    Camera #2 projections: 78% inliers (1946/2485) with MSE=0.0758755
    Camera #3 projections: 65% inliers (1829/2793) with MSE=0.0777178
    Camera #4 projections: 64% inliers (2081/3230) with MSE=0.192705
    Camera #5 projections: 67% inliers (2077/3088) with MSE=0.281211
    Camera #6 projections: 69% inliers (2462/3581) with MSE=0.145319
    Camera #7 projections: 85% inliers (2463/2897) with MSE=0.134245
    Camera #8 projections: 87% inliers (2067/2373) with MSE=0.185413
Append camera #9 (IMG_3032.JPG) to alignment via 1601 common points
Before BA camera: k1=-0.157576, k2=0.114681, f=1603.47, cx=381.066, cy=474.039
Before BA projections: 75% inliers with MSE=0.409904
    Camera #0 projections: 81% inliers (1106/1360) with MSE=0.0715901
    Camera #1 projections: 83% inliers (1545/1866) with MSE=0.0696002
    Camera #2 projections: 78% inliers (1946/2485) with MSE=0.0758755
    Camera #3 projections: 65% inliers (1829/2793) with MSE=0.0777178
    Camera #4 projections: 64% inliers (2087/3238) with MSE=0.195441
    Camera #5 projections: 67% inliers (2091/3105) with MSE=0.281993
    Camera #6 projections: 69% inliers (2483/3606) with MSE=0.148039
    Camera #7 projections: 85% inliers (2591/3046) with MSE=0.235588
    Camera #8 projections: 87% inliers (2815/3223) with MSE=0.633058
    Camera #9 projections: 80% inliers (2149/2700) with MSE=1.96703
After BA camera: k1=-0.159242, k2=0.129975, f=1602.09, cx=378.81, cy=469.606
Camera #0 center: [0, 0, 0] -> [0, 0, 0]
Camera #1 center: [-0.990546, 0.00788902, 0.136952] -> [-0.990546, 0.00788902, 0.136952]
Camera #2 center: [-1.8944, 0.0363195, 0.433094] -> [-1.89468, 0.0373032, 0.434595]
Camera #3 center: [-2.72379, 0.0733808, 0.826089] -> [-2.72488, 0.075527, 0.829103]
Camera #4 center: [-3.33831, 0.142546, 1.38382] -> [-3.33571, 0.145774, 1.38351]
Camera #5 center: [-3.88813, 0.225559, 2.06931] -> [-3.887, 0.231157, 2.07119]
Camera #6 center: [-4.14226, 0.344349, 2.89284] -> [-4.14073, 0.352299, 2.89571]
Camera #7 center: [-4.32272, 0.471487, 3.79954] -> [-4.32067, 0.481425, 3.79791]
Camera #8 center: [-4.06901, 0.600353, 4.82538] -> [-4.06882, 0.612978, 4.81892]
Camera #9 center: [-3.6881, 0.71602, 5.76253] -> [-3.73302, 0.715427, 5.76025]
After BA tie poits: 28% old + 7% new = 36% total outliers
After BA projections: 76% inliers with MSE=0.210993
    Camera #0 projections: 81% inliers (1106/1360) with MSE=0.0739151
    Camera #1 projections: 83% inliers (1542/1866) with MSE=0.0658587
    Camera #2 projections: 77% inliers (1923/2485) with MSE=0.0683856
    Camera #3 projections: 65% inliers (1806/2793) with MSE=0.0662817
    Camera #4 projections: 65% inliers (2108/3238) with MSE=0.323585
    Camera #5 projections: 72% inliers (2239/3105) with MSE=0.43745
    Camera #6 projections: 68% inliers (2459/3606) with MSE=0.35967
    Camera #7 projections: 79% inliers (2415/3046) with MSE=0.257882
    Camera #8 projections: 85% inliers (2734/3223) with MSE=0.123776
    Camera #9 projections: 92% inliers (2472/2700) with MSE=0.181151
[       OK ] SFM.ReconstructNViews (15320 ms)
[----------] 1 test from SFM (15320 ms total)

[----------] Global test environment tear-down
[==========] 1 test from 1 test suite ran. (15320 ms total)
[  PASSED  ] 1 test.
0s
0s
0s
0s
1s

@simiyutin
Copy link
Copy Markdown
Contributor

нет ответов на вопросы

@NikonFlex
Copy link
Copy Markdown
Author

у меня они отображаются, дублирую еще раз сюда, явно постарался выделить ответы

test_ceres_solver/FitLine: почему найденная прямая и эталонная - не совпадают? Как это исправить пост-обработкой? Как это исправить формулировкой задачи?

  • Не совпадает из-за масштаба, при умножении на константу получим ту же прямую, но числа другие. Пост-обработкой: перед сравнением отнормируем найденные параметры. Формулировкой задачи: убрать степень свободы, вместо трех параметров сделаем два

BA: представьте что вы написали преобразование phg::Calibration -> блок параметров и обратное блок параметров -> phg::Calibration. Как проверить простым образом что эти преобразования сделаны корректно? Что должно быть в логе про процент inliers до/после BA если runBA() вызывать всегда два раза пордяд? Иначе говоря - что следует из того что в идеале runBA() должна быть (мне очень нравится это слово) - идемпотентна?

  • Если запустить runBA() дважды подряд, второй вызов должен почти ничего не изменить, inliers и MSE останутся теми же, потому что оптимизатор уже и так привел все в минимум. Это прикольный способ проверить корректность преобразований phg::Calibration -> блок параметров и обратное блок параметров -> phg::Calibration: если они реализованы правильно, повторный запуск не должен сломать уже выровненное облако.

Какое максимальное число кадров у вас получилось хорошо выравнять для каждого из датасетов? (проверьте хотя бы saharov32 и herzjesu25) Не забудьте приложить скриншоты.

  • 13

Если бы вычисления в double были абсолютно точны - можно ли было бы назвать вычисления в Calibration::project/unproject строго зеркальными?

  • Нет, если включены дисторсии k1 k2. project применяет дисторсию к нормализованным координатам, unproject делает инверсию, но радиус считается от искажённой точки, а не от истинной, это первое приближение, а не точная инверсия, какую мы хотели.

Почему фокальная длина меняется от того что мы уменьшаем картинку? Почему именно f/downscale?

  • Фокусное расстояние в пикселях пропорционально разрешению. Когда мы уменьшаем картинку в 2 раза, пиксель становится в 2 раза больше, f в пикселях уменьшается в 2 раза.

Имеет ли право BA двигать точку отсчета системы координат (т.е. добавить константу ко всем координатам)? Как это повлияет на суммарную Loss?

  • Нет, потому что мы фиксируем первую камеру. Если б могла, то суммарная Loss не изменилась бы при сдвиге всех точек и камер, получили бы неопределенную систему

Каким образом можно гарантировать чтобы при сравнении нескольких последовательно построенных облаков точек одного и того же датасета (созданных по мере добавления фотографии за фотографией) в MeshLab - облака не были хаотично смещены/отмасштабированы/повернуты друг от друга?

  • Фиксировать масштаб и ориентацию. Тогда все облака в одной системе координат и можно открыть несколько PLY сразу.

@simiyutin
Copy link
Copy Markdown
Contributor

еще не хватает скриншотов, см. задание

Приложите скриншоты своих лучших результатов. Хотя бы по saharov и herzjesu. Примеры:

@NikonFlex
Copy link
Copy Markdown
Author

Сахаров не очень симпатичный, в мешлаб точки не меняют свой размер почему-то

image image

@simiyutin
Copy link
Copy Markdown
Contributor

задача зачтена, 8/10 баллов

@simiyutin simiyutin closed this Jun 2, 2026
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.

2 participants