Налаштування пучка
Маючи набір зображень тривимірних точок для різних положень камер(и), налаштування пучка (Шаблон:Lang-en) можна визначити як проблему одночасної оптимізації тривимірних координат точок сцени, параметрів відносного руху та оптичних характеристик камер(и) з метою визначення оптимальних координат точок сцени, які мінімізують загальну помилку репроєкції.
Використання
Налаштування пучків зазвичай використовується як останній крок методів об'ємної відбудови заснованих на пошуку відповідностей. Він являє собою задачу оптимізації тривимірної структури та параметрів камери (тобто положення камери і можливо, внутрішнього калібрування та радіального спотворення) з метою отримання реконструкції сцени яка є оптимальною за певних припущень щодо характеру шуму зображень[1]: якщо шум має нормальний розподіл із нульовим середнім, тоді налаштування пучків є пошуком максимальної вірогідності[2]Шаблон:Rp. Назва методу пов'язана із пучками світлових променів, що виходять із кожної тривимірної точки та сходяться в оптичному центрі кожної камери, які оптимально підлаштовуються як щодо структури сцени, так і параметрів камер. Метод налаштування пучків було розроблено для вирішення задач фотограмметрії в 1950-х роках та останнім часом все частіше застосовується дослідниками комп'ютерного зору[2]Шаблон:Rp.
Загальний підхід
Налаштування пучка зводиться до мінімізації помилки репроєкції між положеннями спостережуваних та передбачуваних точок зображення, яку можна виразити як суму квадратів великої кількості нелінійних, дійсних функцій. Таким чином, вирішення задаці мінімізації досягається за допомогою нелінійних алгоритмів найменших квадратів. З них метод Левенберга — Марквардта виявився одним з найуспішніших завдяки простоті реалізації та високої сходимості для широкого кола початкових оцінок. При вирішенні задач мінімізації, що виникають в рамках налаштування пучка, рівняння мають розріджену структуру блоків через відсутність зв'язку між параметрами різних 3D-точок і камер. Ця обставина може бути використана для отримання значних обчислювальних переваг, використовуючи розріджений варіант алгоритму Левенберга — Марквардта[2]Шаблон:Rp.
Математичне визначення
Налаштування пучка є задачею спільної оптимізації набору початкових оцінок параметрів камери та структури сцени для знаходження таких значень параметрів, які найбільш точно передбачають положення спостережуваних точок у наборі доступних зображень. Більш формально[3] припустимо, що тривимірних точок видно на зображеннях і нехай — проєкція -ї точки на зображенні . Вважатимемо що значення дорівнює 1, якщо точку видно на зображенні та 0 — інакше. Припустимо також, що параметри камери відповідного зображення задані вектором а параметри тривимірної точки задані вектором . Налаштування пучка мінімізує загальну помилку репроєкції щодо всіх параметрів тривимірної точки та камери
де — прогнозована проєкція точки на зображенні та позначає евклідову відстань між точками зображення, представленими векторами та . Очевидно, що налаштування пучка за визначенням стійке до відсутності проєкцій частини точок зображення та мінімізує фізично значущі параметри.
Див. також
Програмне забезпечення
- [1]: Apero / MicMac, вільне фотограмметричне програмне забезпечення з відкритим кодом. Ліцензія Cecill-B.
- sba: Універсальна реалізація налаштування пучка на базі алгоритма Левенберга — Марквардта написана на C / C++. GPL.
- cvsba: OpenCV обгортка для бібліотеки sba (C ++). GPL.
- ssba: Пакет для задач налаштування пучка, що базується на алгоритмі Левенберга — Маркварда (C ++). LGPL.
- OpenCV: бібліотека комп'ютерного зору. Ліцензія BSD.
- mcba: налаштування пучка для багатоядерних обчислювальних систем (CPU / GPU). GPL3.
- libdogleg: Загальний розріджений нелінійний вирішувач найменших квадратів, заснований на методі Dogleg Пауелла. LGPL.
- ceres-solver: Нелінійний мінімізатор найменших квадратів. Ліцензія BSD.
- DGAP: Програма DGAP реалізує фотограмметричний метод регулювання пучків, винайдений Гельмутом Шмідом та Дуейном Брауном. GPL.
- COLMAP: конвеєр загального призначення для Structure-from-Motion (SfM) та Multi-View Stereo (MVS) із графічним інтерфейсом та інтерфейсом командного рядка. Ліцензія BSD.
Примітки
Рекомендована література
- B. Triggs, P. McLauchlan, R. Hartley and A. Fitzgibbon, Bundle Adjustment — A Modern Synthesis, Vision Algorithms: Theory and Practice, 1999. Шаблон:Ref-en
- M.I.A. Lourakis and A.A. Argyros, SBA: A Software Package for Generic Sparse Bundle Adjustment, ACM Transactions on Mathematical Software, 2009. Шаблон:Ref-en
- A. Zisserman. Bundle adjustment. CV Online. Шаблон:Ref-en
Посилання
- [2]: Apero/MicMac, a free open source photogrammetric software. Cecill-B licence. Шаблон:Ref-en
- sba: A Generic Sparse Bundle Adjustment C/C++ Package Based on the Levenberg–Marquardt Algorithm (C, MATLAB). GPL. Шаблон:Ref-en
- cvsba: An OpenCV wrapper for sba library (C++). GPL. Шаблон:Ref-en
- ssba: Simple Sparse Bundle Adjustment package based on the Levenberg–Marquardt Algorithm (C++). LGPL. Шаблон:Ref-en
- OpenCV: Computer Vision library in the Images stitching module. BSD license. Шаблон:Ref-en
- mcba: Multi-Core Bundle Adjustment (CPU/GPU). GPL3. Шаблон:Ref-en
- libdogleg: General-purpose sparse non-linear least squares solver, based on Powell's dogleg method. LGPL. Шаблон:Ref-en
- ceres-solver: A Nonlinear Least Squares Minimizer. BSD license. Шаблон:Ref-en
- g2o: General Graph Optimization (C++) - framework with solvers for sparse graph-based non-linear error functions. LGPL. Шаблон:Ref-en
- DGAP: The program DGAP implement the photogrammetric method of bundle adjustment invented by Helmut Schmid and Duane Brown. GPL. Шаблон:Ref-en
- Bundler: A structure-from-motion (SfM) system for unordered image collections (for instance, images from the Internet) by Noah Snavely. GPL. Шаблон:Ref-en
- COLMAP: A general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline with a graphical and command-line interface. BSD license. Шаблон:Ref-en
- Theia: A computer vision library aimed at providing efficient and reliable algorithms for Structure from Motion (SfM). New BSD license. Шаблон:Ref-en