Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
f7ea57d
Fixes for Windows build (#45)
ahojnnes Aug 7, 2024
f8ea056
Abort early in case of database with no matches (#41)
S-o-T Aug 7, 2024
5fe42fc
f (#47)
lpanaf Aug 8, 2024
5a42cd1
Compute reprojection errors during conversion to colmap (#40)
S-o-T Aug 8, 2024
55e3abd
Add CI build for Windows (#46)
ahojnnes Aug 8, 2024
0b9b595
Update version to 1.0.0 (#50)
ahojnnes Aug 9, 2024
fa8662c
More content for documentation about visualization and settings (#51)
ahojnnes Aug 9, 2024
d1fcdb8
Document pre-compiled Windows binary source (#52)
ahojnnes Aug 9, 2024
dae16bf
Update PoseLib to support OPENCV_FISHEYE camera model (#54)
ahojnnes Aug 12, 2024
d2d463f
Fix invalid reference to scales auxiliary variable in global position…
ahojnnes Aug 12, 2024
6d48836
Robustly handle undistortion failures (#58)
ahojnnes Aug 12, 2024
27f9a08
Add complete installation guide for COLMAP and GLOMAP on macOS (#63)
Asadali242 Aug 14, 2024
a0e8082
Enable verbose logging options through command-line flags (#77)
ahojnnes Aug 25, 2024
3d053c2
fix bug caused by negative weight when calculating mst (#90)
cre185 Sep 3, 2024
733795f
fix: arg type for std::ceil and typo in glomap::EstimateRelativePoses…
lnexenl Sep 9, 2024
65a4d40
fix: vector out of bounds in ViewGraph::KeepLargestConnectedComponent…
lnexenl Sep 14, 2024
d46b1d8
Use colmap thread pool to simplify mac installation (#107)
ahojnnes Sep 19, 2024
0c0431d
fix calculation for fundmental_matrix (#125)
zhan994 Oct 18, 2024
323d2cf
Update to COLMAP HEAD (#132)
sarlinpe Nov 15, 2024
03d4818
Add reconstruction normalization after each step (#136)
lpanaf Nov 19, 2024
c2260dd
Moved glog version export out of MSVC scope. (#140)
JonasKonrad Nov 27, 2024
2efb13a
update colmap version (#143)
lpanaf Nov 28, 2024
e7f37ac
fix the bug for threshold update (#148)
lpanaf Dec 13, 2024
9a8361b
fix (#149)
h1063135843 Dec 13, 2024
af514ac
fix colmap convention for the pair id calculation (#150)
lpanaf Dec 13, 2024
606db2d
avoid the inconsistency between the exported 3d point and 3d point in…
lpanaf Dec 17, 2024
b464ef5
add more options in CLI and add support to optimize principal point (…
lpanaf Mar 13, 2025
6486b17
Relpose estimation bug fix (#171)
lpanaf Mar 20, 2025
f3b3db9
Use CMAKE_CURRENT_SOURCE_DIR in FindDependencies.cmake (#175)
gareth-cross Mar 20, 2025
8246cf5
added gpu support (#174)
min-hieu-netropy Mar 20, 2025
58eaeaf
Add the rotation averager to GLOMAP (#113)
lpanaf Mar 20, 2025
164f43b
loose threshold for the test (#177)
lpanaf Mar 20, 2025
bd0db55
Check if value is set to avoid out-of-bound indexing (#178)
jhacsonmeza May 7, 2025
5f40c00
Update vcpkg and CI pipeline with latest changes in colmap (#193)
ahojnnes May 12, 2025
0a87b96
improved readme (#194)
lpanaf May 12, 2025
032a40c
Fix compilation issues on MacOS (#196)
GustavoStahl Jun 22, 2025
233540b
Delete broken pybind11 submodules? (#203)
yeicor Jul 26, 2025
a62ba80
Add rig support and upgrade colmap to version 3.12 (#201)
lpanaf Oct 30, 2025
ca27e0e
Update to latest colmap and use L1 solver + union-find from colmap (#…
ahojnnes Nov 22, 2025
ce08ebe
View graph simplification (#225)
ahojnnes Nov 22, 2025
60b0657
fix the rotation averaging bug (#227)
lpanaf Dec 11, 2025
4b17e68
Extract frames writes frames as it goes
Jan 1, 2026
290932e
Merge upstream glomap changes while preserving rerun logging
Jan 1, 2026
9d5a15b
Update rerun, downgrade Ubuntu to LTS
Jan 1, 2026
4c91246
ENV[RERUN_CONNECT] to connect to a remote viewer
Jan 1, 2026
cd5b264
extract_frames.py output progress messages
Jan 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ Checks: >
performance-*,
concurrency-*,
bugprone-*,
-clang-analyzer-security.ArrayBound,
-bugprone-easily-swappable-parameters,
-bugprone-exception-escape,
-bugprone-implicit-widening-of-multiplication-result,
-bugprone-narrowing-conversions,
-bugprone-reserved-identifier,
-bugprone-unchecked-optional-access,
-performance-enum-size,
cppcoreguidelines-virtual-class-destructor,
google-explicit-constructor,
google-build-using-namespace,
Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/install-ccache.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)]
[string] $Destination
)

$version = "4.10.2"
$folder="ccache-$version-windows-x86_64"
$url = "https://github.com/ccache/ccache/releases/download/v$version/$folder.zip"
$expectedSha256 = "6252F081876A9A9F700FAE13A5AEC5D0D486B28261D7F1F72AC11C7AD9DF4DA9"

$ErrorActionPreference = "Stop"

try {
New-Item -Path "$Destination" -ItemType Container -ErrorAction SilentlyContinue

Write-Host "Download CCache"
$zipFilePath = Join-Path "$env:TEMP" "$folder.zip"
Invoke-WebRequest -Uri $url -UseBasicParsing -OutFile "$zipFilePath" -MaximumRetryCount 3

$hash = Get-FileHash $zipFilePath -Algorithm "sha256"
if ($hash.Hash -ne $expectedSha256) {
throw "File $Path hash $hash.Hash did not match expected hash $expectedHash"
}

Write-Host "Unzip CCache"
Expand-Archive -Path "$zipFilePath" -DestinationPath "$env:TEMP"

Write-Host "Move CCache"
Move-Item -Force "$env:TEMP/$folder/ccache.exe" "$Destination"
Remove-Item "$zipFilePath"
Remove-Item -Recurse "$env:TEMP/$folder"
}
catch {
Write-Host "Installation failed with an error"
$_.Exception | Format-List
exit -1
}
84 changes: 84 additions & 0 deletions .github/workflows/mac.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Mac

on:
push:
branches:
- main
pull_request:
types: [ assigned, opened, synchronize, reopened ]
release:
types: [ published, edited ]

jobs:
build:
name: ${{ matrix.config.os }} ${{ matrix.config.arch }} ${{ matrix.config.cmakeBuildType }}
runs-on: ${{ matrix.config.os }}
strategy:
matrix:
config: [
{
os: macos-15,
arch: arm64,
cmakeBuildType: Release,
},
]

env:
COMPILER_CACHE_VERSION: 1
COMPILER_CACHE_DIR: ${{ github.workspace }}/compiler-cache
CCACHE_DIR: ${{ github.workspace }}/compiler-cache/ccache
CCACHE_BASEDIR: ${{ github.workspace }}

steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
id: cache-builds
with:
key: v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.arch }}-${{ matrix.config.cmakeBuildType }}-${{ github.run_id }}-${{ github.run_number }}
restore-keys: v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.arch }}-${{ matrix.config.cmakeBuildType }}
path: ${{ env.COMPILER_CACHE_DIR }}

- name: Setup Mac
run: |
brew upgrade cmake || brew install cmake
brew install \
ninja \
boost \
eigen \
flann \
freeimage \
metis \
glog \
googletest \
ceres-solver \
qt5 \
glew \
cgal \
sqlite3 \
ccache
brew link --force libomp

- name: Configure and build
run: |
cmake --version
mkdir build
cd build
cmake .. \
-GNinja \
-DCMAKE_BUILD_TYPE=${{ matrix.config.cmakeBuildType }} \
-DTESTS_ENABLED=ON \
-DCMAKE_PREFIX_PATH="$(brew --prefix qt@5)"
ninja

- name: Run tests
run: |
cd build
set +e
ctest --output-on-failure -E .+colmap_.*

- name: Cleanup compiler cache
run: |
set -x
ccache --show-stats --verbose
ccache --evict-older-than 1d
ccache --show-stats --verbose
69 changes: 49 additions & 20 deletions .github/workflows/ci.yml → .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,35 +11,46 @@ on:

jobs:
build:
name: ${{ matrix.config.os }} ${{ matrix.config.cmakeBuildType }} ${{ matrix.config.cudaEnabled && 'CUDA' || '' }} ${{ matrix.config.asanEnabled && 'ASan' || '' }}
name: ${{ matrix.config.os }} ${{ matrix.config.cmakeBuildType }} ${{ matrix.config.cudaEnabled && 'CUDA' || '' }} ${{ matrix.config.asanEnabled && 'ASan' || '' }} ${{ matrix.config.coverageEnabled && 'Coverage' || '' }}
runs-on: ${{ matrix.config.os }}
strategy:
matrix:
config: [

{
os: ubuntu-24.04,
qtVersion: 6,
cmakeBuildType: RelWithDebInfo,
asanEnabled: false,
cudaEnabled: false,
checkCodeFormat: true,
},
{
os: ubuntu-22.04,
qtVersion: 6,
cmakeBuildType: Release,
asanEnabled: false,
cudaEnabled: false,
checkCodeFormat: true,
},
{
os: ubuntu-22.04,
qtVersion: 5,
cmakeBuildType: Release,
asanEnabled: false,
cudaEnabled: true,
checkCodeFormat: false,
},
{
os: ubuntu-22.04,
os: ubuntu-24.04,
qtVersion: 6,
cmakeBuildType: Release,
asanEnabled: true,
cudaEnabled: false,
checkCodeFormat: false,
},
{
os: ubuntu-22.04,
os: ubuntu-24.04,
qtVersion: 6,
cmakeBuildType: ClangTidy,
asanEnabled: false,
cudaEnabled: false,
Expand All @@ -53,6 +64,8 @@ jobs:
CCACHE_DIR: ${{ github.workspace }}/compiler-cache/ccache
CCACHE_BASEDIR: ${{ github.workspace }}
CTCACHE_DIR: ${{ github.workspace }}/compiler-cache/ctcache
GLOG_v: 2
GLOG_logtostderr: 1

steps:
- uses: actions/checkout@v4
Expand All @@ -62,14 +75,15 @@ jobs:
key: v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.cmakeBuildType }}-${{ matrix.config.asanEnabled }}--${{ matrix.config.cudaEnabled }}-${{ github.run_id }}-${{ github.run_number }}
restore-keys: v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.cmakeBuildType }}-${{ matrix.config.asanEnabled }}--${{ matrix.config.cudaEnabled }}
path: ${{ env.COMPILER_CACHE_DIR }}

- name: Install compiler cache
run: |
mkdir -p "$CCACHE_DIR" "$CTCACHE_DIR"
echo "$COMPILER_CACHE_DIR/bin" >> $GITHUB_PATH

if [ -f "$COMPILER_CACHE_DIR/bin/ccache" ]; then
exit 0
fi

set -x
wget https://github.com/ccache/ccache/releases/download/v4.8.2/ccache-4.8.2-linux-x86_64.tar.xz
echo "0b33f39766fe9db67f40418aed6a5b3d7b2f4f7fab025a8213264b77a2d0e1b1 ccache-4.8.2-linux-x86_64.tar.xz" | sha256sum --check
Expand All @@ -81,41 +95,50 @@ jobs:
echo "108b087f156a9fe7da0c796de1ef73f5855d2a33a27983769ea39061359a40fc ${ctcache_commit_id}.zip" | sha256sum --check
unzip "${ctcache_commit_id}.zip"
mv ctcache-${ctcache_commit_id}/clang-tidy* "$COMPILER_CACHE_DIR/bin"

- name: Check code format
if: matrix.config.checkCodeFormat
run: |
set +x -euo pipefail
sudo apt-get update && sudo apt-get install -y clang-format-14 black
./scripts/format/clang_format.sh
python -m pip install clang-format==20.1.5
./scripts/format/c++.sh
git diff --name-only
git diff --exit-code || (echo "Code formatting failed" && exit 1)

- name: Setup Ubuntu
run: |
if [ "${{ matrix.config.qtVersion }}" == "5" ]; then
qt_packages="qtbase5-dev libqt5opengl5-dev libcgal-qt5-dev"
elif [ "${{ matrix.config.qtVersion }}" == "6" ]; then
qt_packages="qt6-base-dev libqt6opengl6-dev libqt6openglwidgets6"
fi

sudo apt-get update && sudo apt-get install -y \
build-essential \
cmake \
ninja-build \
libboost-program-options-dev \
libboost-filesystem-dev \
libboost-graph-dev \
libboost-system-dev \
libeigen3-dev \
libsuitesparse-dev \
libceres-dev \
libflann-dev \
libfreeimage-dev \
libmetis-dev \
libgoogle-glog-dev \
libgtest-dev \
libgmock-dev \
libsqlite3-dev \
libglew-dev \
qtbase5-dev \
$qt_packages \
libqt5opengl5-dev \
libcgal-dev \
libcgal-qt5-dev \
libgl1-mesa-dri \
libunwind-dev \
libcurl4-openssl-dev \
xvfb

if [ "${{ matrix.config.cudaEnabled }}" == "true" ]; then
if [ "${{ matrix.config.os }}" == "ubuntu-20.04" ]; then
sudo apt-get install -y \
Expand All @@ -133,16 +156,19 @@ jobs:
echo "CUDAHOSTCXX=/usr/bin/g++-10" >> $GITHUB_ENV
fi
fi

if [ "${{ matrix.config.asanEnabled }}" == "true" ]; then
sudo apt-get install -y clang-15 libomp-15-dev
echo "CC=/usr/bin/clang-15" >> $GITHUB_ENV
echo "CXX=/usr/bin/clang++-15" >> $GITHUB_ENV
sudo apt-get install -y clang-18 libomp-18-dev
echo "CC=/usr/bin/clang-18" >> $GITHUB_ENV
echo "CXX=/usr/bin/clang++-18" >> $GITHUB_ENV
fi

if [ "${{ matrix.config.cmakeBuildType }}" == "ClangTidy" ]; then
sudo apt-get install -y clang-15 clang-tidy-15 libomp-15-dev
echo "CC=/usr/bin/clang-15" >> $GITHUB_ENV
echo "CXX=/usr/bin/clang++-15" >> $GITHUB_ENV
sudo apt-get install -y clang-18 clang-tidy-18 libomp-18-dev
echo "CC=/usr/bin/clang-18" >> $GITHUB_ENV
echo "CXX=/usr/bin/clang++-18" >> $GITHUB_ENV
fi

- name: Upgrade CMake
run: |
CMAKE_VERSION=3.28.6
Expand All @@ -151,6 +177,7 @@ jobs:
tar -xzf ${CMAKE_DIR}.tar.gz
sudo cp -r ${CMAKE_DIR}/* /usr/local/
rm -rf ${CMAKE_DIR}*

- name: Configure and build
run: |
set -x
Expand All @@ -162,29 +189,31 @@ jobs:
-DCMAKE_BUILD_TYPE=${{ matrix.config.cmakeBuildType }} \
-DCMAKE_INSTALL_PREFIX=./install \
-DCMAKE_CUDA_ARCHITECTURES=50 \
-DSuiteSparse_CHOLMOD_LIBRARY="/usr/lib/x86_64-linux-gnu/libcholmod.so" \
-DSuiteSparse_CHOLMOD_INCLUDE_DIR="/usr/include/suitesparse" \
-DCUDA_ENABLED=${{ matrix.config.cudaEnabled }} \
-DTESTS_ENABLED=ON \
-DASAN_ENABLED=${{ matrix.config.asanEnabled }}
ninja -k 10000

- name: Run tests
if: ${{ matrix.config.cmakeBuildType != 'ClangTidy' }}
run: |
run: |
export DISPLAY=":99.0"
export QT_QPA_PLATFORM="offscreen"
Xvfb :99 &
sleep 3
cd build
ctest --output-on-failure -E .+colmap_.*

- name: Cleanup compiler cache
run: |
set -x
ccache --show-stats --verbose
ccache --evict-older-than 1d
ccache --show-stats --verbose

echo "Size of ctcache before: $(du -sh $CTCACHE_DIR)"
echo "Number of ctcache files before: $(find $CTCACHE_DIR | wc -l)"
# Delete cache older than 10 days.
find "$CTCACHE_DIR"/*/ -mtime +10 -print0 | xargs -0 rm -rf
echo "Size of ctcache after: $(du -sh $CTCACHE_DIR)"
echo "Number of ctcache files after: $(find $CTCACHE_DIR | wc -l)"
echo "Number of ctcache files after: $(find $CTCACHE_DIR | wc -l)"
Loading