├── LICENSE ├── README.md ├── docs ├── benchmark_notre_dame.html ├── benchmark_pantheon.html ├── benchmark_reichstag.html ├── benchmark_st_peters_square.html ├── benchmark_st_vitus_cathedral.html ├── datasets.html ├── images │ ├── favicon │ │ ├── favicon-16x16.png │ │ ├── favicon-192x192.png │ │ ├── favicon-228x228.png │ │ ├── favicon-32x32.png │ │ ├── favicon-64x64.png │ │ └── favicon.svg │ ├── github-mark-white.svg │ ├── github-mark.svg │ ├── mesh_screenshots │ │ ├── notre_dame_de_paris │ │ │ ├── MVS00.png │ │ │ ├── MVS01.png │ │ │ ├── MVS02.png │ │ │ ├── alejandro_diaz00.png │ │ │ ├── alejandro_diaz01.png │ │ │ ├── alejandro_diaz02.png │ │ │ ├── chigirinsky00.png │ │ │ ├── chigirinsky01.png │ │ │ ├── chigirinsky02.png │ │ │ ├── giotis_nocolor00.png │ │ │ ├── giotis_nocolor01.png │ │ │ ├── giotis_nocolor02.png │ │ │ ├── jul00.png │ │ │ ├── jul01.png │ │ │ ├── jul02.png │ │ │ ├── little_goomba00.png │ │ │ ├── little_goomba01.png │ │ │ ├── little_goomba02.png │ │ │ ├── miguel_bandera00.png │ │ │ ├── miguel_bandera01.png │ │ │ ├── miguel_bandera02.png │ │ │ ├── miniworld3d00.png │ │ │ ├── miniworld3d01.png │ │ │ └── miniworld3d02.png │ │ ├── pantheon │ │ │ ├── adsman00700.png │ │ │ ├── adsman00701.png │ │ │ ├── adsman00702.png │ │ │ ├── brnipon00.png │ │ │ ├── brnipon01.png │ │ │ ├── brnipon02.png │ │ │ ├── emanuele_viani00.png │ │ │ ├── emanuele_viani01.png │ │ │ ├── emanuele_viani02.png │ │ │ ├── fovea00.png │ │ │ ├── fovea01.png │ │ │ ├── fovea02.png │ │ │ ├── mvs00.png │ │ │ ├── mvs01.png │ │ │ ├── mvs02.png │ │ │ ├── ultima_ratio00.png │ │ │ ├── ultima_ratio01.png │ │ │ └── ultima_ratio02.png │ │ ├── reichstag │ │ │ ├── 189400.png │ │ │ ├── 189401.png │ │ │ ├── 189402.png │ │ │ ├── 1894_194500.png │ │ │ ├── 1894_194501.png │ │ │ ├── 1894_194502.png │ │ │ ├── high00.png │ │ │ ├── high01.png │ │ │ ├── high02.png │ │ │ ├── klaus_t00.png │ │ │ ├── klaus_t01.png │ │ │ ├── klaus_t02.png │ │ │ ├── low00.png │ │ │ ├── low01.png │ │ │ ├── low02.png │ │ │ ├── mvs00.png │ │ │ ├── mvs01.png │ │ │ ├── mvs02.png │ │ │ ├── sh00.png │ │ │ ├── sh01.png │ │ │ └── sh02.png │ │ ├── st_peters_square │ │ │ ├── antonino_g00.png │ │ │ ├── antonino_g01.png │ │ │ ├── antonino_g02.png │ │ │ ├── brian_trepanier00.png │ │ │ ├── brian_trepanier01.png │ │ │ ├── brian_trepanier02.png │ │ │ ├── dounia_b00.png │ │ │ ├── dounia_b01.png │ │ │ ├── dounia_b02.png │ │ │ ├── mstochl00.png │ │ │ ├── mstochl01.png │ │ │ ├── mstochl02.png │ │ │ ├── mvs00.png │ │ │ ├── mvs01.png │ │ │ └── mvs02.png │ │ └── st_vitus_cathedral │ │ │ ├── brian_trepanier00.png │ │ │ ├── brian_trepanier01.png │ │ │ ├── brian_trepanier02.png │ │ │ ├── brian_trepanier_crop00.png │ │ │ ├── brian_trepanier_crop01.png │ │ │ ├── brian_trepanier_crop02.png │ │ │ ├── hrusak00.png │ │ │ ├── hrusak01.png │ │ │ ├── hrusak02.png │ │ │ ├── mvs00.png │ │ │ ├── mvs01.png │ │ │ ├── mvs02.png │ │ │ ├── pera00.png │ │ │ ├── pera01.png │ │ │ └── pera02.png │ ├── scene_thumbnails │ │ ├── notre_dame_thumbnail_more_detail_smaller_scale_final_plain_400x340px.svg │ │ ├── pantheon_thumbnail_final_plain_small_400x340px.svg │ │ ├── reichstag_thumbnail_final_plain_400x340px.svg │ │ ├── st_peters_square_thumbnail_final_plain_400x340px.svg │ │ └── st_vitus_thumbnail_final_plain_400x340px.svg │ └── sketchup_screenshots │ │ ├── export_as_obj_1.png │ │ └── export_as_obj_2.png ├── index.html ├── info.html ├── jquery-3.6.3.min.js ├── scripts │ └── update-date.js ├── styles.css └── tables │ ├── example_table.html │ ├── notre_dame │ ├── A_miguel_bandera.html │ ├── B_chigirinsky.html │ ├── C_alejandro_diaz.html │ ├── D_little_goomba.html │ ├── E_miniworld3d.html │ ├── F_giotis.html │ └── G_jul.html │ ├── pantheon │ ├── A_fovea.html │ ├── B_brnipon.html │ ├── C_ultima_ratio.html │ ├── D_adsman007.html │ └── E_emanuele_viani.html │ ├── reichstag │ ├── A_EH99_high_lod.html │ ├── B_EH99_low_lod.html │ ├── C_EH99_old_high_lod.html │ ├── D_EH99_old_low_lod.html │ ├── E_klaus_t.html │ └── F_sh.html │ ├── st_peters_square │ ├── A_brian_trepanier.html │ ├── B_dounia_b.html │ ├── C_mstochl.html │ └── D_antonino_g.html │ └── st_vitus_cathedral │ ├── A_brian_trepanier_crop.html │ ├── B_brian_trepanier.html │ ├── C_pera.html │ └── D_hrusak.html ├── evaluate_dcre.py ├── renderer_o3d.py └── teaser.svg /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2022, Vojtěch Pánek 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of the copyright holder nor the names of its 16 | contributors may be used to endorse or promote products derived from 17 | this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Benchmark for visual localization on 3D mesh models 2 | ![Teaser image](teaser.svg) 3 | Repository for the localization benchmark at [v-pnk.github.io/cadloc](https://v-pnk.github.io/cadloc/). To upload the results to the benchmark, run [the evaluation script](https://github.com/v-pnk/cadloc/blob/main/evaluate_dcre.py) on your pose estimates and create a pull request to add your results into the tables. 4 | 5 | ## Citation 6 | If you use the benchmark or the code from this repository, please cite the following paper: 7 | ``` 8 | @article{Panek2023cadloc, 9 | title={{Visual Localization using Imperfect 3D Models from the Internet}}, 10 | author={Vojtech Panek and Zuzana Kukelova and Torsten Sattler}, 11 | booktitle={Proceedings of the IEEE/CVF conference on computer vision and pattern recognition}, 12 | year={2023}} 13 | ``` 14 | 15 | ## Installation 16 | The evaluation tool and rendering script needs few Python packages: 17 | ``` 18 | conda create --name cadloc python=3.9 19 | conda activate cadloc 20 | pip3 install open3d==0.17 pycolmap==0.3 numpy argparse tqdm Pillow 21 | ``` 22 | ## Preparation of data for the benchmark 23 | [The evaluation script](https://github.com/v-pnk/cadloc/blob/main/evaluate_dcre.py) expects the estimated poses to be stored in the .txt format used by [visuallocalization.net](https://www.visuallocalization.net/), i.e., each line contains an image name and estimated pose described by a quaternion `q` and translation vector `t`: 24 | ``` 25 | 26 | ``` 27 | 28 | ## Uploading new benchmark results 29 | Edit [the table corresponding to your results](https://github.com/v-pnk/cadloc/tree/main/docs/tables) and create a pull request. 30 | 31 | ## License 32 | This repository is licensed under the 3-Clause BSD License. See the [LICENSE](https://github.com/v-pnk/cadloc/blob/main/LICENSE) file for full text. 33 | -------------------------------------------------------------------------------- /docs/benchmark_notre_dame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 23 | 24 | 25 | 53 | 54 |
55 |
56 |

Notre Dame (Paris, France)

57 | 66 | 67 | 68 |
69 |
70 |

A - Miguel Bandera

71 |

Edit the table in the repository to upload your results.

72 |
73 |
74 |
75 |

B - Chigirinsky

76 |

Edit the table in the repository to upload your results.

77 |
78 |
79 |
80 |

C - Alejandro Diaz

81 |

Edit the table in the repository to upload your results.

82 |
83 |
84 |
85 |

D - Little-Goomba

86 |

Edit the table in the repository to upload your results.

87 |
88 |
89 |
90 |

E - MiniWorld3D

91 |

Edit the table in the repository to upload your results.

92 |
93 |
94 |
95 |

F - giotis

96 |

Edit the table in the repository to upload your results.

97 |
98 |
99 |
100 |

G - Jul

101 |

Edit the table in the repository to upload your results.

102 |
103 |
104 |
105 | 106 | 120 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /docs/benchmark_pantheon.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 23 | 24 | 25 | 53 | 54 |
55 |
56 |

Pantheon (Rome, Italy)

57 | 64 | 65 | 66 |
67 |
68 |

A - Fovea

69 |

Edit the table in the repository to upload your results.

70 |
71 |
72 |
73 |

B - brnipon

74 |

Edit the table in the repository to upload your results.

75 |
76 |
77 |
78 |

C - Ultima Ratio

79 |

Edit the table in the repository to upload your results.

80 |
81 |
82 |
83 |

D - Adsman007

84 |

Edit the table in the repository to upload your results.

85 |
86 |
87 |
88 |

E - Emanuele Viani

89 |

Edit the table in the repository to upload your results.

90 |
91 |
92 |
93 | 94 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /docs/benchmark_reichstag.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 23 | 24 | 25 | 53 | 54 |
55 |
56 |

Reichstag (Berlin, Germany)

57 | 65 |
66 |
67 |

A - EH99 - high LoD

68 |

Edit the table in the repository to upload your results.

69 |
70 |
71 |
72 |

B - EH99 - low LoD

73 |

Edit the table in the repository to upload your results.

74 |
75 |
76 |
77 |

C - EH99 - old high LoD

78 |

Edit the table in the repository to upload your results.

79 |
80 |
81 |
82 |

D - EH99 - old low LoD

83 |

Edit the table in the repository to upload your results.

84 |
85 |
86 |
87 |

E - Klaus T.

88 |

Edit the table in the repository to upload your results.

89 |
90 |
91 |
92 |

F - SH

93 |

Edit the table in the repository to upload your results.

94 |
95 |
96 |
97 | 98 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /docs/benchmark_st_peters_square.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 23 | 24 | 25 | 53 | 54 |
55 |
56 |

St. Peter's Square (Vatican)

57 | 63 |
64 |
65 |

A - Brian Trepanier

66 |

Edit the table in the repository to upload your results.

67 |
68 |
69 |
70 |

B - Dounia B.

71 |

Edit the table in the repository to upload your results.

72 |
73 |
74 |
75 |

C - mstochl

76 |

Edit the table in the repository to upload your results.

77 |
78 |
79 |
80 |

D - Antonino G.

81 |

Edit the table in the repository to upload your results.

82 |
83 |
84 |
85 | 86 | 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /docs/benchmark_st_vitus_cathedral.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 23 | 24 | 25 | 53 | 54 |
55 |
56 |

St. Vitus Cathedral (Prague, Czech Republic)

57 | 63 |
64 |
65 |

A - Brian Trepanier - crop

66 |

Edit the table in the repository to upload your results.

67 |
68 |
69 |
70 |

B - Brian Trepanier

71 |

Edit the table in the repository to upload your results.

72 |
73 |
74 |
75 |

C - Pera

76 |

Edit the table in the repository to upload your results.

77 |
78 |
79 |
80 |

D - Hrusak

81 |

Edit the table in the repository to upload your results.

82 |
83 |
84 |
85 | 86 | 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /docs/images/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /docs/images/favicon/favicon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/favicon/favicon-192x192.png -------------------------------------------------------------------------------- /docs/images/favicon/favicon-228x228.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/favicon/favicon-228x228.png -------------------------------------------------------------------------------- /docs/images/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /docs/images/favicon/favicon-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/favicon/favicon-64x64.png -------------------------------------------------------------------------------- /docs/images/favicon/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 45 | 52 | 53 | 55 | 76 | 81 | 85 | 90 | 94 | 98 | 102 | 106 | 111 | 116 | 120 | 124 | 129 | 134 | 138 | 143 | 147 | 151 | 152 | 211 | 216 | 221 | 225 | 230 | 235 | 240 | 245 | 252 | 253 | 254 | -------------------------------------------------------------------------------- /docs/images/github-mark-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 11 | 18 | 19 | -------------------------------------------------------------------------------- /docs/images/github-mark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/MVS00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/MVS00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/MVS01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/MVS01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/MVS02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/MVS02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/alejandro_diaz00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/alejandro_diaz00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/alejandro_diaz01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/alejandro_diaz01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/alejandro_diaz02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/alejandro_diaz02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/chigirinsky00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/chigirinsky00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/chigirinsky01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/chigirinsky01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/chigirinsky02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/chigirinsky02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/giotis_nocolor00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/giotis_nocolor00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/giotis_nocolor01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/giotis_nocolor01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/giotis_nocolor02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/giotis_nocolor02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/jul00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/jul00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/jul01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/jul01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/jul02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/jul02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/little_goomba00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/little_goomba00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/little_goomba01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/little_goomba01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/little_goomba02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/little_goomba02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/miguel_bandera00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/miguel_bandera00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/miguel_bandera01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/miguel_bandera01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/miguel_bandera02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/miguel_bandera02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/miniworld3d00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/miniworld3d00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/miniworld3d01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/miniworld3d01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/notre_dame_de_paris/miniworld3d02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/notre_dame_de_paris/miniworld3d02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/adsman00700.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/adsman00700.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/adsman00701.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/adsman00701.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/adsman00702.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/adsman00702.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/brnipon00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/brnipon00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/brnipon01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/brnipon01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/brnipon02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/brnipon02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/emanuele_viani00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/emanuele_viani00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/emanuele_viani01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/emanuele_viani01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/emanuele_viani02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/emanuele_viani02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/fovea00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/fovea00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/fovea01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/fovea01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/fovea02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/fovea02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/mvs00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/mvs00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/mvs01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/mvs01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/mvs02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/mvs02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/ultima_ratio00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/ultima_ratio00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/ultima_ratio01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/ultima_ratio01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/pantheon/ultima_ratio02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/pantheon/ultima_ratio02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/189400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/189400.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/189401.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/189401.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/189402.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/189402.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/1894_194500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/1894_194500.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/1894_194501.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/1894_194501.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/1894_194502.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/1894_194502.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/high00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/high00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/high01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/high01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/high02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/high02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/klaus_t00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/klaus_t00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/klaus_t01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/klaus_t01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/klaus_t02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/klaus_t02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/low00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/low00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/low01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/low01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/low02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/low02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/mvs00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/mvs00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/mvs01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/mvs01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/mvs02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/mvs02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/sh00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/sh00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/sh01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/sh01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/reichstag/sh02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/reichstag/sh02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/antonino_g00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/antonino_g00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/antonino_g01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/antonino_g01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/antonino_g02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/antonino_g02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/brian_trepanier00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/brian_trepanier00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/brian_trepanier01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/brian_trepanier01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/brian_trepanier02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/brian_trepanier02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/dounia_b00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/dounia_b00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/dounia_b01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/dounia_b01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/dounia_b02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/dounia_b02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/mstochl00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/mstochl00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/mstochl01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/mstochl01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/mstochl02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/mstochl02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/mvs00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/mvs00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/mvs01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/mvs01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_peters_square/mvs02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_peters_square/mvs02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier_crop00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier_crop00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier_crop01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier_crop01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier_crop02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/brian_trepanier_crop02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/hrusak00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/hrusak00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/hrusak01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/hrusak01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/hrusak02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/hrusak02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/mvs00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/mvs00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/mvs01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/mvs01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/mvs02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/mvs02.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/pera00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/pera00.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/pera01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/pera01.png -------------------------------------------------------------------------------- /docs/images/mesh_screenshots/st_vitus_cathedral/pera02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/mesh_screenshots/st_vitus_cathedral/pera02.png -------------------------------------------------------------------------------- /docs/images/scene_thumbnails/pantheon_thumbnail_final_plain_small_400x340px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 14 | 17 | 21 | 25 | 29 | 33 | 37 | 41 | 45 | 49 | 53 | 57 | 61 | 65 | 69 | 73 | 77 | 81 | 85 | 89 | 93 | 97 | 101 | 105 | 109 | 113 | 117 | 121 | 125 | 129 | 133 | 137 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /docs/images/scene_thumbnails/reichstag_thumbnail_final_plain_400x340px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 14 | 17 | 21 | 25 | 29 | 33 | 37 | 41 | 45 | 49 | 53 | 57 | 61 | 65 | 69 | 73 | 77 | 81 | 85 | 89 | 93 | 97 | 101 | 105 | 109 | 113 | 117 | 121 | 125 | 129 | 133 | 137 | 141 | 145 | 149 | 153 | 157 | 161 | 165 | 169 | 173 | 177 | 181 | 185 | 189 | 193 | 197 | 201 | 205 | 209 | 213 | 217 | 221 | 225 | 229 | 233 | 237 | 241 | 245 | 249 | 253 | 257 | 261 | 265 | 269 | 273 | 277 | 281 | 285 | 289 | 293 | 297 | 301 | 302 | 303 | -------------------------------------------------------------------------------- /docs/images/sketchup_screenshots/export_as_obj_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/sketchup_screenshots/export_as_obj_1.png -------------------------------------------------------------------------------- /docs/images/sketchup_screenshots/export_as_obj_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pnk/cadloc/6de746beb17e4a0416e8597673ecb06245700d26/docs/images/sketchup_screenshots/export_as_obj_2.png -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 23 | 24 | 25 | 53 | 54 |
55 |
56 |

57 | 3D models readily available on the Internet allow to perform visual localization, i.e., camera pose (position and orientation) estimation, right away without the time-consuming scene capturing and model building steps. 58 | Yet, it also comes with challenges as the available 3D models are often imperfect reflections of reality. 59 | This benchmark was created to help the community with the research on this underexplored source of data by aggregating the 3D meshes of multiple levels of detail and fidelity, corresponding image datasets and providing the means of evaluation and comparison. 60 |

61 | 98 |
99 |
100 | 101 | 115 | 116 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /docs/info.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 22 | 23 | 24 | 25 | 53 | 54 |
55 |
56 |

57 | You can find details on the benchmark and evaluation in: Visual Localization using Imperfect 3D Models from the Internet 58 |

59 |

60 | If you use the benchmark, please cite the publication: 61 |

62 |
63 |
 64 | @article{Panek2023cadloc,
 65 | title={{Visual Localization using Imperfect 3D Models from the Internet}},
 66 | author={Vojtech Panek and Zuzana Kukelova and Torsten Sattler},
 67 | booktitle={Proceedings of the IEEE/CVF conference on computer vision and pattern recognition},
 68 | year={2023}}
 69 |             
70 | 73 |
74 |

Scripts

75 | 79 |

80 | If you find a mistake or have a question to the benchmark, please let us know by opening an issue in the repository. 82 |

83 |
84 |
85 | 86 | 100 | 101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /docs/scripts/update-date.js: -------------------------------------------------------------------------------- 1 | const updateTextCell = document.querySelector(".update-date"); 2 | 3 | var xhttp = new XMLHttpRequest(); 4 | xhttp.onreadystatechange = function () { 5 | if (this.readyState == 4 && this.status == 200) { 6 | let data = JSON.parse(this.responseText); 7 | let update_date = new Date(data.pushed_at); 8 | // updateTextCell.textContent = 'last updated: ' + update_date.toISOString(); 9 | let date_text = pad(update_date.getFullYear(), 4); 10 | date_text = date_text + '-' + pad(update_date.getMonth() + 1, 2); 11 | date_text = date_text + '-' + pad(update_date.getDate(), 2); 12 | date_text = date_text + ' ' + pad(update_date.getHours(), 2); 13 | date_text = date_text + ':' + pad(update_date.getMinutes(), 2); 14 | date_text = date_text + ':' + pad(update_date.getSeconds(), 2); 15 | updateTextCell.textContent = 'last update: ' + date_text; 16 | } 17 | }; 18 | xhttp.open("GET", "https://api.github.com/repos/v-pnk/cadloc", true); 19 | xhttp.send(); 20 | 21 | function pad(num, size) { 22 | num = num.toString(); 23 | while (num.length < size) num = "0" + num; 24 | return num; 25 | } -------------------------------------------------------------------------------- /docs/styles.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --color-one: #ffffff; 3 | --color-one-hover: #d8d8d8; 4 | --color-two: #172d44; 5 | --color-two-hover: #2e3e50; 6 | --color-three: #000000; 7 | --color-three-hover: #cdb95f; 8 | --color-four: #0082c7; 9 | --color-five: #fbf5d9; 10 | -webkit-text-size-adjust: none; 11 | } 12 | 13 | :target { 14 | background-color: var(--color-five); 15 | } 16 | 17 | :target .result-table tr:nth-child(2n-1) { 18 | background-color: var(--color-five); 19 | } 20 | 21 | html, body, table, tbody, tr, td { 22 | margin: 0; 23 | padding: 0; 24 | border: 0; 25 | } 26 | 27 | body, td, th, tr, p, a, header{ 28 | font-family: 'Jost', Verdana, Helvetica, sans-serif; 29 | } 30 | 31 | body, td, th, tr, p{ 32 | font-size: 16px; 33 | } 34 | 35 | body { 36 | background-color: var(--color-one); 37 | width: 100%; 38 | /* position:fixed; */ 39 | min-height: 100vh; 40 | display: flex; 41 | flex-direction: column; 42 | } 43 | 44 | h1 { 45 | color: var(--color-three); 46 | text-transform: uppercase; 47 | font-size: 28px; 48 | font-weight: 200; 49 | } 50 | 51 | h2 { 52 | color: var(--color-three); 53 | /* text-transform: uppercase; */ 54 | font-size: 22px; 55 | font-weight: 400; 56 | } 57 | 58 | h3 { 59 | color: var(--color-three); 60 | /* text-transform: uppercase; */ 61 | font-size: 18px; 62 | font-weight: 400; 63 | } 64 | 65 | table { 66 | border-collapse: collapse; 67 | } 68 | 69 | p { 70 | color: var(--color-three); 71 | } 72 | 73 | a { 74 | text-decoration: none; 75 | } 76 | 77 | a:link, a:visited, a:active { 78 | color: var(--color-three); 79 | } 80 | 81 | a:hover { 82 | color: var(--color-three-hover); 83 | } 84 | 85 | th { 86 | text-align: left; 87 | } 88 | 89 | .container { 90 | /* width: 1200px; */ 91 | /* padding-left: 30px; */ 92 | /* padding-right: 30px; */ 93 | 94 | width: 96%; 95 | max-width: 1200px; 96 | 97 | margin-left: auto; 98 | margin-right: auto; 99 | 100 | border: none; 101 | position: relative; 102 | clear: both; 103 | } 104 | 105 | 106 | 107 | /* Navigation menu */ 108 | .nav-menu { 109 | /* background-color: seagreen; */ 110 | height: 54px; 111 | } 112 | 113 | .nav-menu nav { 114 | /* width: 1188px; */ 115 | width: 100%; 116 | 117 | height: 42px; 118 | 119 | /* background-color: palevioletred; */ 120 | /* background-color: var(--color-two); */ 121 | 122 | position: absolute; 123 | top: 0; 124 | display: block; 125 | } 126 | 127 | .nav-menu ul { 128 | margin: 0px; 129 | padding: 0px; 130 | height: 42px; 131 | float: left; 132 | } 133 | 134 | .nav-menu li { 135 | height: 36px; 136 | width: fit-content; 137 | margin: 0 4px 0 0; 138 | padding: 0 6px 0 6px; 139 | 140 | background-color: var(--color-one); 141 | border-width: 3px; 142 | border-color: var(--color-two); 143 | border-style: solid; 144 | border-radius: 3px; 145 | 146 | line-height: 36px; 147 | text-align: center; 148 | text-transform: uppercase; 149 | 150 | list-style: none; 151 | display: inline-block; 152 | position:relative; 153 | } 154 | 155 | .nav-menu a:hover { 156 | color: var(--color-three-hover); 157 | } 158 | 159 | .curr-nav li { 160 | background-color: var(--color-two) !important; 161 | color: var(--color-one); 162 | } 163 | 164 | a.curr-nav:hover li { 165 | color: var(--color-three-hover); 166 | } 167 | 168 | 169 | 170 | /* Main part of the document */ 171 | /* #main { 172 | margin: 12px 0 12px 0; 173 | } */ 174 | 175 | 176 | /* Main scene selection grid */ 177 | .index-thumbnails { 178 | display: grid; 179 | margin: auto; 180 | margin-bottom: 24px; 181 | grid-template-columns: repeat(auto-fit, 400px); 182 | align-items: center; 183 | justify-content: center; 184 | } 185 | 186 | .index-thumb-elem { 187 | margin: auto; 188 | width: 400px; 189 | /* height: 340px; */ 190 | height: auto; 191 | } 192 | 193 | .thumbnail { 194 | display: inline-block; 195 | width: calc(100% - 20px); 196 | aspect-ratio: 400 / 340; 197 | mask-size: cover; 198 | -webkit-mask-size: cover; 199 | } 200 | 201 | .scene-select-grid-cell span { 202 | background: var(--color-two); 203 | } 204 | 205 | .scene-select-grid-cell:hover p { 206 | color: var(--color-three-hover); 207 | } 208 | 209 | .scene-select-grid-cell:hover span { 210 | background: var(--color-three-hover); 211 | } 212 | 213 | /* Datasets list */ 214 | .dataset-block { 215 | border-style: solid; 216 | border-width: 4px 0 0 0; 217 | border-color: var(--color-one-hover); 218 | padding: 10px 0 0 0; 219 | } 220 | 221 | /* .dataset-cell { 222 | display: grid; 223 | margin: auto; 224 | align-items: center; 225 | justify-content: center; 226 | } */ 227 | 228 | .dataset-cell { 229 | border-style: dotted; 230 | border-width: 2px 0 0 0; 231 | border-color: var(--color-one-hover); 232 | padding: 12px 0 12px 0; 233 | min-height: auto; 234 | overflow:hidden; 235 | } 236 | 237 | .dataset-thumbnail-cell { 238 | float: left; 239 | } 240 | 241 | .dataset-thumbnail-cell span { 242 | background: var(--color-two); 243 | } 244 | 245 | .dataset-thumbnail-cell:hover span { 246 | background: var(--color-three-hover); 247 | } 248 | 249 | /* Thumbnail masks definition */ 250 | .thumbnail-notre-dame { 251 | mask: url(images/scene_thumbnails/notre_dame_thumbnail_more_detail_smaller_scale_final_plain_400x340px.svg) 0 0 / 100% 100%; 252 | -webkit-mask: url(images/scene_thumbnails/notre_dame_thumbnail_more_detail_smaller_scale_final_plain_400x340px.svg); 253 | } 254 | .thumbnail-pantheon { 255 | mask: url(images/scene_thumbnails/pantheon_thumbnail_final_plain_small_400x340px.svg); 256 | -webkit-mask: url(images/scene_thumbnails/pantheon_thumbnail_final_plain_small_400x340px.svg); 257 | } 258 | .thumbnail-reichstag { 259 | mask: url(images/scene_thumbnails/reichstag_thumbnail_final_plain_400x340px.svg); 260 | -webkit-mask: url(images/scene_thumbnails/reichstag_thumbnail_final_plain_400x340px.svg); 261 | } 262 | .thumbnail-st-peters { 263 | mask: url(images/scene_thumbnails/st_peters_square_thumbnail_final_plain_400x340px.svg); 264 | -webkit-mask: url(images/scene_thumbnails/st_peters_square_thumbnail_final_plain_400x340px.svg); 265 | } 266 | .thumbnail-st-vitus { 267 | mask: url(images/scene_thumbnails/st_vitus_thumbnail_final_plain_400x340px.svg); 268 | -webkit-mask: url(images/scene_thumbnails/st_vitus_thumbnail_final_plain_400x340px.svg); 269 | } 270 | 271 | .dataset-text-cell { 272 | float: left; 273 | margin-right: 24px; 274 | vertical-align: top; 275 | /* width: 600px; */ 276 | /* width: 400px; */ 277 | /* position: absolute; */ 278 | /* top: 0; */ 279 | /* left: 0; */ 280 | } 281 | 282 | .dataset-text-cell h2 { 283 | margin: 12px 0 4px 0; 284 | } 285 | 286 | .dataset-text-cell a { 287 | text-decoration: underline; 288 | text-decoration-skip-ink: auto; 289 | } 290 | 291 | .dataset-text-cell ul { 292 | /* padding: 0 0 0 16px; */ 293 | padding: 0; 294 | margin: 0; 295 | list-style-type: none; 296 | } 297 | 298 | .dataset-text-cell-top { 299 | width: 600px; 300 | margin-left: 12px; 301 | } 302 | 303 | .dataset-text-cell-scene { 304 | height: 100%; 305 | width: 400px; 306 | } 307 | 308 | .dataset-text-cell-scene h3 { 309 | margin-top: 0; 310 | margin-bottom: 0; 311 | } 312 | 313 | .dataset-thumbnail { 314 | display: inline-block; 315 | width: 200px; 316 | height: 170px; 317 | mask-size: cover; 318 | -webkit-mask-size: cover; 319 | } 320 | 321 | .dataset-mesh-thumbnail { 322 | width: 200px; 323 | height: auto; 324 | } 325 | 326 | .dataset-table th, 327 | .dataset-table td{ 328 | /* border-style: solid; 329 | border-width: 1px; 330 | border-color: var(--color-one-hover); 331 | border-collapse: collapse; */ 332 | } 333 | 334 | .dataset-table td{ 335 | height: auto; 336 | overflow: hidden; 337 | vertical-align: top; 338 | padding-bottom: 12px; 339 | } 340 | 341 | .dataset-table tr { 342 | margin-bottom: 12px; 343 | } 344 | 345 | .dataset-text { 346 | text-align: left; 347 | } 348 | 349 | .thumbnail-text { 350 | text-align: center; 351 | margin: 0; 352 | } 353 | 354 | .code-block { 355 | background-color: var(--color-one-hover); 356 | padding: 4px 12px 0px 24px; 357 | border-radius: 3px; 358 | } 359 | 360 | .code-block code { 361 | font-size: 12px; 362 | } 363 | 364 | /* pre button { 365 | position: absolute; 366 | right: 10px; 367 | top: 44px; 368 | width: 48px; 369 | height: 36px; 370 | border-radius: 3px; 371 | border-style: none; 372 | background-color: var(--color-one); 373 | } 374 | 375 | pre button:hover { 376 | color: var(--color-three-hover); 377 | } */ 378 | 379 | 380 | /* Results tables */ 381 | .result-text a { 382 | text-decoration: underline; 383 | text-decoration-skip-ink: auto; 384 | } 385 | 386 | .result-text h3 { 387 | margin : 10px 0 10px 0; 388 | } 389 | 390 | .result-text ul { 391 | margin: 0; 392 | padding: 0 0 0 16px; 393 | } 394 | 395 | .result-intro-block { 396 | padding: 0 0 12px 0; 397 | } 398 | 399 | .result-block { 400 | /* border-style: solid; */ 401 | /* border-width: 2px 0 0 0; */ 402 | /* padding: 4px 0 0 0; */ 403 | margin-bottom: 24px; 404 | border-color: var(--color-one-hover); 405 | } 406 | 407 | .result-table { 408 | width: 100%; 409 | margin: 8px 0 0 0; 410 | } 411 | 412 | .result-table tr { 413 | line-height: 32px; 414 | } 415 | 416 | .result-table tr:nth-child(2n) { 417 | background-color: var(--color-one-hover); 418 | } 419 | 420 | .result-table tr:nth-child(2n-1) { 421 | background-color: var(--color-one); 422 | } 423 | 424 | .result-table td, 425 | .result-table th { 426 | padding: 0 10px 0 10px; 427 | border-style: solid; 428 | border-width: 1px; 429 | } 430 | 431 | .recall_3column { 432 | width: 160px; 433 | text-align:center; 434 | } 435 | 436 | 437 | 438 | 439 | /* Footer */ 440 | .footer { 441 | height: 48px; 442 | 443 | background-color: var(--color-two); 444 | color: white; 445 | border-radius: 3px 3px 0 0; 446 | margin-top: auto; 447 | } 448 | 449 | .footer a, 450 | .footer a:visited { 451 | color: white; 452 | } 453 | 454 | .footer a:hover { 455 | color: var(--color-three-hover); 456 | } 457 | 458 | .footer svg { 459 | fill: white; 460 | } 461 | 462 | /* .footer svg:hover { 463 | fill: var(--color-three); 464 | } */ 465 | 466 | .git-button { 467 | float: left; 468 | margin: 12px 12px 12px 12px; 469 | height: 24px; 470 | border-radius: 16px; 471 | } 472 | 473 | .git-button:hover > svg *, 474 | .git-button:hover { 475 | fill: var(--color-three-hover); 476 | } 477 | 478 | .git-button-text { 479 | height: 22px; 480 | padding: 2px 4px 0 8px; 481 | float: right; 482 | text-align: center; 483 | } 484 | 485 | .update-date { 486 | float: right; 487 | margin: 14px 20px 12px 12px; 488 | height: 22px; 489 | text-align: center; 490 | } 491 | 492 | @media (max-width: 914px) { 493 | .dataset-text-cell { 494 | width: 100%; 495 | } 496 | } 497 | 498 | @media (max-width: 768px) { 499 | body, td, th, tr, p{ 500 | font-size: 24px; 501 | } 502 | 503 | h1 { 504 | font-size: 40px; 505 | } 506 | 507 | h2 { 508 | font-size: 30px; 509 | } 510 | 511 | h3 { 512 | font-size: 26px; 513 | } 514 | 515 | .nav-menu { 516 | height: 60px; 517 | } 518 | 519 | .nav-menu nav { 520 | height: 48px; 521 | display: flex; 522 | justify-content: center; 523 | } 524 | 525 | .footer { 526 | height: 54px; 527 | } 528 | 529 | .git-button-text { 530 | height: 22px; 531 | padding: 0px 0px 0 12px; 532 | float: right; 533 | text-align: center; 534 | } 535 | 536 | .update-date { 537 | display:none; 538 | } 539 | 540 | .git-button { 541 | margin: 12px 12px 12px 16px; 542 | } 543 | } 544 | 545 | @media (max-width: 672px) { 546 | .dataset-mesh-thumbnail { 547 | width: 150px; 548 | } 549 | } 550 | 551 | @media (max-width: 526px) { 552 | .dataset-mesh-thumbnail { 553 | width: 100px; 554 | } 555 | } -------------------------------------------------------------------------------- /docs/tables/example_table.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
The method using trained squirellslinklink100.0 / 100.0 / 100.0100.0 / 100.0 / 100.0100.0 / 100.0 / 100.0100.0 / 100.0 / 100.0
Combusting the banana peelslinklink100.0 / 100.0 / 100.0100.0 / 100.0 / 100.0100.0 / 100.0 / 100.0100.0 / 100.0 / 100.0
We hired a bunch of Oompa Loompas to find the poses for uslinklink100.0 / 100.0 / 100.0100.0 / 100.0 / 100.0100.0 / 100.0 / 100.0100.0 / 100.0 / 100.0
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/notre_dame/A_miguel_bandera.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub98.4 / 98.4 / 98.997.9 / 98.4 / 98.498.4 / 98.4 / 98.997.4 / 98.4 / 98.4
MeshLoc - Patch2Pix+SuperGluearXivGitHub97.9 / 98.4 / 98.496.8 / 97.9 / 97.997.9 / 98.4 / 98.496.3 / 97.4 / 97.9
MeshLoc - SuperGluearXivGitHub97.9 / 98.4 / 98.996.8 / 97.9 / 98.497.9 / 98.4 / 98.996.8 / 97.9 / 98.4
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/notre_dame/B_chigirinsky.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub88.4 / 93.1 / 95.886.2 / 89.9 / 92.688.4 / 92.6 / 95.884.7 / 89.9 / 92.6
MeshLoc - Patch2Pix+SuperGluearXivGitHub87.8 / 94.7 / 96.886.2 / 91.5 / 94.788.4 / 94.7 / 96.886.2 / 91.0 / 94.7
MeshLoc - SuperGluearXivGitHub90.5 / 95.2 / 97.988.4 / 93.7 / 96.389.9 / 95.8 / 97.987.8 / 93.7 / 96.3
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/notre_dame/C_alejandro_diaz.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub54.5 / 83.6 / 88.98.5 / 43.9 / 67.258.2 / 84.1 / 88.911.1 / 46.0 / 69.3
MeshLoc - Patch2Pix+SuperGluearXivGitHub57.1 / 85.2 / 89.46.9 / 45.5 / 72.060.8 / 85.7 / 89.99.5 / 52.4 / 74.1
MeshLoc - SuperGluearXivGitHub56.6 / 84.1 / 90.55.3 / 45.5 / 70.460.3 / 84.7 / 91.59.0 / 49.7 / 73.5
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/notre_dame/D_little_goomba.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub31.7 / 71.4 / 81.03.2 / 19.0 / 41.334.9 / 72.0 / 81.04.2 / 21.7 / 48.1
MeshLoc - Patch2Pix+SuperGluearXivGitHub36.5 / 67.7 / 79.92.1 / 23.3 / 41.833.9 / 66.7 / 79.45.8 / 23.3 / 42.9
MeshLoc - SuperGluearXivGitHub39.7 / 74.1 / 85.22.1 / 24.9 / 48.741.3 / 73.5 / 84.13.7 / 26.5 / 50.3
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/notre_dame/E_miniworld3d.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub70.9 / 75.7 / 82.064.6 / 71.4 / 75.170.9 / 75.7 / 83.164.0 / 71.4 / 74.6
MeshLoc - Patch2Pix+SuperGluearXivGitHub66.1 / 74.6 / 80.460.8 / 67.7 / 73.565.6 / 75.1 / 80.461.4 / 67.2 / 73.5
MeshLoc - SuperGluearXivGitHub70.9 / 78.3 / 83.163.0 / 71.4 / 77.870.9 / 78.3 / 82.564.0 / 71.4 / 77.2
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/notre_dame/F_giotis.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub5.3 / 12.2 / 21.23.2 / 10.1 / 16.45.3 / 12.2 / 21.23.2 / 10.6 / 16.4
MeshLoc - Patch2Pix+SuperGluearXivGitHub6.9 / 18.0 / 24.33.7 / 7.9 / 13.86.9 / 17.5 / 23.83.2 / 8.5 / 13.2
MeshLoc - SuperGluearXivGitHub23.8 / 36.5 / 48.113.8 / 25.4 / 31.223.3 / 36.5 / 48.113.8 / 25.4 / 31.2
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/notre_dame/G_jul.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub1.6 / 10.1 / 20.10.5 / 4.2 / 12.71.6 / 13.2 / 19.61.1 / 6.9 / 13.2
MeshLoc - Patch2Pix+SuperGluearXivGitHub1.6 / 5.8 / 22.20.5 / 2.1 / 5.31.6 / 5.3 / 20.10.5 / 2.6 / 5.8
MeshLoc - SuperGluearXivGitHub4.8 / 14.3 / 30.70.5 / 5.8 / 14.35.8 / 13.8 / 31.71.6 / 6.3 / 14.3
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/pantheon/A_fovea.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub97.2 / 100.0 / 100.088.7 / 95.0 / 97.285.1 / 87.9 / 93.661.0 / 73.8 / 80.1
MeshLoc - Patch2Pix+SuperGluearXivGitHub96.5 / 99.3 / 100.089.4 / 95.7 / 97.985.1 / 87.2 / 92.963.1 / 75.2 / 79.4
MeshLoc - SuperGluearXivGitHub97.9 / 100.0 / 100.085.8 / 94.3 / 95.785.1 / 87.2 / 93.661.0 / 73.0 / 81.6
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/pantheon/B_brnipon.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub91.5 / 98.6 / 98.653.9 / 90.8 / 97.989.4 / 98.6 / 98.650.4 / 86.5 / 97.9
MeshLoc - Patch2Pix+SuperGluearXivGitHub90.1 / 95.0 / 99.360.3 / 90.1 / 95.088.7 / 95.7 / 99.353.9 / 85.1 / 95.0
MeshLoc - SuperGluearXivGitHub87.9 / 94.3 / 97.961.7 / 88.7 / 92.287.2 / 94.3 / 97.954.6 / 86.5 / 92.9
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/pantheon/C_ultima_ratio.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub67.4 / 85.8 / 90.151.8 / 65.2 / 75.968.1 / 83.7 / 90.151.1 / 63.8 / 74.5
MeshLoc - Patch2Pix+SuperGluearXivGitHub17.7 / 27.7 / 46.17.1 / 17.0 / 23.417.7 / 28.4 / 45.47.1 / 17.0 / 24.1
MeshLoc - SuperGluearXivGitHub29.8 / 46.1 / 57.47.1 / 24.8 / 36.229.1 / 46.8 / 58.25.7 / 24.8 / 36.9
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/pantheon/D_adsman007.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub9.2 / 18.4 / 33.31.4 / 12.8 / 21.39.2 / 19.1 / 34.81.4 / 13.5 / 22.7
MeshLoc - Patch2Pix+SuperGluearXivGitHub25.5 / 39.0 / 48.917.0 / 27.0 / 34.825.5 / 39.7 / 48.917.7 / 27.0 / 34.8
MeshLoc - SuperGluearXivGitHub38.3 / 53.2 / 61.020.6 / 38.3 / 48.239.0 / 53.2 / 61.019.9 / 39.0 / 49.6
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/pantheon/E_emanuele_viani.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub9.9 / 33.3 / 52.50.0 / 10.6 / 24.83.5 / 32.6 / 50.40.0 / 9.2 / 23.4
MeshLoc - Patch2Pix+SuperGluearXivGitHub16.3 / 22.7 / 34.814.2 / 17.7 / 21.314.9 / 21.3 / 33.314.2 / 17.0 / 20.6
MeshLoc - SuperGluearXivGitHub4.3 / 20.6 / 37.61.4 / 6.4 / 17.05.0 / 17.0 / 36.92.1 / 4.3 / 15.6
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/reichstag/A_EH99_high_lod.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub77.3 / 93.3 / 94.754.7 / 74.7 / 88.069.3 / 89.3 / 93.348.0 / 70.7 / 78.7
MeshLoc - Patch2Pix+SuperGluearXivGitHub70.7 / 85.3 / 92.038.7 / 64.0 / 78.766.7 / 80.0 / 90.733.3 / 61.3 / 72.0
MeshLoc - SuperGluearXivGitHub72.0 / 85.3 / 93.345.3 / 70.7 / 78.768.0 / 84.0 / 89.345.3 / 68.0 / 78.7
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/reichstag/B_EH99_low_lod.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub96.0 / 100.0 / 100.089.3 / 94.7 / 97.392.0 / 98.7 / 100.086.7 / 93.3 / 93.3
MeshLoc - Patch2Pix+SuperGluearXivGitHub96.0 / 98.7 / 100.090.7 / 96.0 / 98.792.0 / 100.0 / 100.080.0 / 89.3 / 92.0
MeshLoc - SuperGluearXivGitHub96.0 / 98.7 / 100.088.0 / 93.3 / 97.390.7 / 97.3 / 98.782.7 / 89.3 / 92.0
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/reichstag/C_EH99_old_high_lod.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub64.0 / 73.3 / 92.050.7 / 64.0 / 69.365.3 / 74.7 / 90.750.7 / 64.0 / 69.3
MeshLoc - Patch2Pix+SuperGluearXivGitHub64.0 / 73.3 / 85.329.3 / 52.0 / 66.762.7 / 69.3 / 82.728.0 / 52.0 / 66.7
MeshLoc - SuperGluearXivGitHub65.3 / 74.7 / 85.342.7 / 65.3 / 65.365.3 / 74.7 / 84.041.3 / 65.3 / 65.3
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/reichstag/D_EH99_old_low_lod.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub86.7 / 96.0 / 98.772.0 / 85.3 / 94.785.3 / 96.0 / 98.770.7 / 84.0 / 89.3
MeshLoc - Patch2Pix+SuperGluearXivGitHub81.3 / 89.3 / 98.762.7 / 77.3 / 86.778.7 / 88.0 / 97.365.3 / 76.0 / 84.0
MeshLoc - SuperGluearXivGitHub78.7 / 92.0 / 96.069.3 / 78.7 / 86.780.0 / 90.7 / 97.370.7 / 82.7 / 88.0
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/reichstag/E_klaus_t.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub5.3 / 30.7 / 60.00.0 / 6.7 / 22.75.3 / 32.0 / 58.71.3 / 5.3 / 22.7
MeshLoc - Patch2Pix+SuperGluearXivGitHub36.0 / 56.0 / 68.013.3 / 33.3 / 42.737.3 / 54.7 / 68.013.3 / 33.3 / 41.3
MeshLoc - SuperGluearXivGitHub48.0 / 72.0 / 90.716.0 / 42.7 / 61.348.0 / 72.0 / 90.716.0 / 42.7 / 60.0
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/reichstag/F_sh.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub5.3 / 18.7 / 30.74.0 / 6.7 / 16.06.7 / 17.3 / 29.32.7 / 5.3 / 14.7
MeshLoc - Patch2Pix+SuperGluearXivGitHub5.3 / 14.7 / 26.72.7 / 5.3 / 9.35.3 / 14.7 / 25.32.7 / 5.3 / 8.0
MeshLoc - SuperGluearXivGitHub6.7 / 17.3 / 40.01.3 / 10.7 / 17.36.7 / 17.3 / 40.01.3 / 10.7 / 16.0
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/st_peters_square/A_brian_trepanier.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub85.7 / 92.1 / 95.217.5 / 50.0 / 69.815.9 / 48.4 / 70.63.2 / 6.3 / 11.9
MeshLoc - Patch2Pix+SuperGluearXivGitHub84.1 / 92.9 / 94.419.8 / 52.4 / 69.819.0 / 50.0 / 73.84.0 / 7.9 / 14.3
MeshLoc - SuperGluearXivGitHub88.1 / 92.9 / 92.921.4 / 54.8 / 73.826.2 / 57.1 / 78.65.6 / 10.3 / 18.3
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/st_peters_square/B_dounia_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub42.1 / 81.0 / 88.110.3 / 21.4 / 38.110.3 / 29.4 / 54.81.6 / 4.8 / 7.1
MeshLoc - Patch2Pix+SuperGluearXivGitHub41.3 / 77.8 / 91.311.1 / 18.3 / 35.77.9 / 27.8 / 48.41.6 / 5.6 / 7.9
MeshLoc - SuperGluearXivGitHub50.0 / 76.2 / 84.110.3 / 28.6 / 42.911.1 / 34.1 / 53.21.6 / 4.8 / 8.7
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/st_peters_square/C_mstochl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub46.8 / 65.1 / 69.018.3 / 31.7 / 42.919.8 / 53.2 / 73.07.9 / 15.9 / 22.2
MeshLoc - Patch2Pix+SuperGluearXivGitHub33.3 / 56.3 / 65.911.1 / 19.0 / 24.622.2 / 53.2 / 72.24.0 / 9.5 / 21.4
MeshLoc - SuperGluearXivGitHub39.7 / 54.8 / 65.17.1 / 21.4 / 29.426.2 / 56.3 / 71.42.4 / 12.7 / 22.2
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/st_peters_square/D_antonino_g.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub7.9 / 29.4 / 43.73.2 / 17.5 / 29.41.6 / 11.1 / 19.00.8 / 2.4 / 9.5
MeshLoc - Patch2Pix+SuperGluearXivGitHub15.1 / 37.3 / 49.24.0 / 7.9 / 19.03.2 / 18.3 / 34.91.6 / 1.6 / 6.3
MeshLoc - SuperGluearXivGitHub28.6 / 47.6 / 63.53.2 / 14.3 / 31.75.6 / 24.6 / 48.40.8 / 4.8 / 9.5
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/st_vitus_cathedral/A_brian_trepanier_crop.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub34.7 / 40.4 / 46.530.5 / 32.4 / 34.731.0 / 38.0 / 44.116.9 / 26.3 / 31.0
MeshLoc - Patch2Pix+SuperGluearXivGitHub40.8 / 45.1 / 50.237.6 / 40.8 / 43.238.0 / 42.3 / 48.424.9 / 34.3 / 39.9
MeshLoc - SuperGluearXivGitHub36.2 / 41.3 / 47.430.0 / 36.6 / 40.434.3 / 40.4 / 48.419.2 / 31.0 / 38.0
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/st_vitus_cathedral/B_brian_trepanier.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub24.9 / 27.2 / 37.122.1 / 24.4 / 24.923.9 / 28.2 / 37.118.3 / 23.5 / 23.9
MeshLoc - Patch2Pix+SuperGluearXivGitHub29.6 / 30.5 / 34.324.4 / 27.7 / 28.629.1 / 30.0 / 33.819.2 / 25.8 / 28.2
MeshLoc - SuperGluearXivGitHub25.4 / 25.8 / 30.021.6 / 23.9 / 25.425.4 / 25.8 / 30.518.3 / 23.0 / 24.9
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/st_vitus_cathedral/C_pera.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub32.4 / 39.4 / 47.417.4 / 29.1 / 34.722.1 / 37.6 / 46.55.2 / 21.6 / 29.1
MeshLoc - Patch2Pix+SuperGluearXivGitHub28.6 / 34.3 / 45.119.2 / 26.3 / 32.423.5 / 32.9 / 41.35.2 / 21.6 / 28.6
MeshLoc - SuperGluearXivGitHub28.6 / 37.1 / 47.920.7 / 28.6 / 33.821.6 / 33.8 / 44.16.1 / 21.6 / 30.0
47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/tables/st_vitus_cathedral/D_hrusak.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Listed results are the recalls at 10 % / 20 % / 30 % DCRE (normalized by query image diagonal). 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
methodpapercodemean GAmax. GAmean LRmax. LR
MeshLoc - LoFTRarXivGitHub35.2 / 44.6 / 51.613.6 / 33.3 / 39.024.4 / 39.9 / 50.72.3 / 23.9 / 31.9
MeshLoc - Patch2Pix+SuperGluearXivGitHub31.5 / 42.3 / 48.814.1 / 31.9 / 39.922.1 / 39.4 / 48.44.2 / 23.9 / 36.2
MeshLoc - SuperGluearXivGitHub31.0 / 40.8 / 48.810.8 / 31.0 / 36.623.0 / 37.6 / 47.94.2 / 22.5 / 31.0
47 | 48 | 49 | -------------------------------------------------------------------------------- /renderer_o3d.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # Copyright (c) 2023, Vojtech Panek and Zuzana Kukelova and Torsten Sattler 4 | # All rights reserved. 5 | # 6 | # Redistribution and use in source and binary forms, with or without 7 | # modification, are permitted provided that the following conditions are met: 8 | # 9 | # 1. Redistributions of source code must retain the above copyright notice, this 10 | # list of conditions and the following disclaimer. 11 | # 12 | # 2. Redistributions in binary form must reproduce the above copyright notice, 13 | # this list of conditions and the following disclaimer in the documentation 14 | # and/or other materials provided with the distribution. 15 | # 16 | # 3. Neither the name of the copyright holder nor the names of its 17 | # contributors may be used to endorse or promote products derived from 18 | # this software without specific prior written permission. 19 | # 20 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | import os 32 | import numpy as np 33 | import open3d as o3d 34 | import struct 35 | import PIL 36 | import argparse 37 | import collections 38 | from tqdm import tqdm 39 | 40 | 41 | parser = argparse.ArgumentParser(description="Render images from 3D model") 42 | parser.add_argument("--model", type=str, required=True, 43 | help="Path to the 3D mesh model in a format supported by Open3D") 44 | parser.add_argument("--colmap_model", type=str, required=False, 45 | help="Path to the colmap model (for camera definitions) - directory containing images.txt and cameras.txt") 46 | parser.add_argument("--output_dir", type=str, required=True, 47 | help="Path to the output directory") 48 | parser.add_argument("--only_black_frames", action="store_true", 49 | help="Check output dir. and render only if the output does not exist or the image is all black") 50 | args = parser.parse_args() 51 | 52 | 53 | def main(args): 54 | assert os.path.isfile(args.model) 55 | assert os.path.isdir(args.output_dir) 56 | 57 | valid_cam_info = (args.colmap_model is not None) and os.path.isdir(args.colmap_model) 58 | assert valid_cam_info, "No valid camera informations passed to the script - specify valid colmap_model argument" 59 | 60 | # Load the mesh 61 | print('Loading the mesh') 62 | mesh = o3d.io.read_triangle_model(args.model, True) 63 | 64 | # Load the images 65 | print('Loading the images and cameras') 66 | cam_list = [] 67 | 68 | if args.colmap_model is not None: 69 | cameras, images = read_model(args.colmap_model) 70 | for i in images: 71 | qvec = images[i].qvec 72 | tvec = images[i].tvec 73 | cam_data = cameras[images[i].camera_id] 74 | cam_dict = parse_cam_model(cam_data) 75 | 76 | K = np.array([ 77 | [cam_dict["fx"], 0.0, cam_dict["cx"]], 78 | [0.0, cam_dict["fx"], cam_dict["cy"]], 79 | [0.0, 0.0, 1.0]]) 80 | 81 | R = qvec2rotmat(qvec) 82 | T = np.eye(4) 83 | T[0:3, 0:3] = R 84 | T[0:3, 3] = tvec 85 | w, h = cam_dict["width"], cam_dict["height"] 86 | 87 | basename = os.path.splitext(images[i].name)[0] 88 | 89 | cam_list.append({'basename':basename, 'K':K, 'T':T, 'w':w, 'h':h}) 90 | elif args.vrephoto_dir is not None: 91 | file_list = os.listdir(args.vrephoto_dir) 92 | for file in file_list: 93 | if not(file.endswith(".cam")): 94 | continue 95 | 96 | cam_file_path = os.path.join(args.vrephoto_dir, file) 97 | res_file_path = os.path.join(args.vrephoto_dir, file[:-4] + ".res") 98 | 99 | w, h = parse_res_file(res_file_path) 100 | T, K = parse_cam_file(cam_file_path, w, h) 101 | 102 | basename = os.path.splitext(file)[0] 103 | 104 | cam_list.append({'basename':basename, 'K':K, 'T':T, 'w':w, 'h':h}) 105 | 106 | # - all possible Open3D renderer shaders found in 107 | # Open3D/cpp/open3d/visualization/gui/Materials/ directory 108 | for iter in range(len(mesh.materials)): 109 | mesh.materials[iter].shader = "defaultUnlit" 110 | 111 | # - the original colors make the textures too dark - set to white 112 | mesh.materials[iter].base_color = [1.0, 1.0, 1.0, 1.0] 113 | 114 | for cam in tqdm(cam_list): 115 | output_path = os.path.join(args.output_dir, "{}_rendered_color.png".format(cam["basename"].replace('/', '_'))) 116 | 117 | if args.only_black_frames and os.path.exists(output_path): 118 | out_img = np.asarray(PIL.Image.open(output_path)) 119 | if not(np.all(out_img <= 1)): 120 | # the output exists and is not all-black frame 121 | continue 122 | else: 123 | print("rerendering: {}".format(os.path.basename(output_path))) 124 | 125 | T = cam["T"] 126 | K = cam["K"] 127 | w, h = cam["w"], cam["h"] 128 | 129 | renderer = o3d.visualization.rendering.OffscreenRenderer(w, h) 130 | renderer.scene.add_model("Scene mesh", mesh) 131 | 132 | renderer.setup_camera(K, T, w, h) 133 | 134 | light_name_list = [] 135 | 136 | # - setup lighting 137 | renderer.scene.scene.enable_sun_light(False) 138 | 139 | color = np.array(renderer.render_to_image()) 140 | 141 | # # - OpenGL - left-handed CS 142 | # # (http://www.songho.ca/opengl/gl_projectionmatrix.html) 143 | # # depth = ((far*near)/(far-near)) / (depth + (far/(near-far))) 144 | # # - OpenGL - right-handed CS 145 | # # depth = ((far*near)/(far-near)) / (depth + (far/(far-near))) 146 | # # - Filament - inverse of eq. 119 at 147 | # # (https://google.github.io/filament/Filament.md.html#imagingpipeline) 148 | # # depth = (near - (far*depth)) / (depth*(near - far)) 149 | # # depth = (depth*(far+near)-2*near)/(depth*(far-near)) 150 | # # - Open3D VisualizerRender.cpp lines 410-413 151 | # # depth = 2.0 * near * far / \ 152 | # # (far + near - (2.0 * depth - 1.0) * (far - near)) 153 | # # - the same as above, just rewritten 154 | # depth = near * far / (far - depth * (far - near)) 155 | 156 | depth = np.array(renderer.render_to_depth_image(True)) 157 | depth[np.isinf(depth)] = 0.0 158 | 159 | img_rendering = PIL.Image.fromarray(color) 160 | img_rendering.save(output_path) 161 | np.savez_compressed(os.path.join(args.output_dir, "{}_depth.npz".format(cam["basename"].replace('/', '_'))), depth=depth.astype(np.float16)) 162 | 163 | # - remove all lights from the scene 164 | for light_name in light_name_list: 165 | renderer.scene.scene.remove_light(light_name) 166 | 167 | #### Code taken from Colmap: 168 | # from https://github.com/colmap/colmap/blob/dev/scripts/python/read_write_model.py 169 | CameraModel = collections.namedtuple( 170 | "CameraModel", ["model_id", "model_name", "num_params"]) 171 | Camera = collections.namedtuple( 172 | "Camera", ["id", "model", "width", "height", "params"]) 173 | BaseImage = collections.namedtuple( 174 | "Image", ["id", "qvec", "tvec", "camera_id", "name", "xys", "point3D_ids"]) 175 | Point3D = collections.namedtuple( 176 | "Point3D", ["id", "xyz", "rgb", "error", "image_ids", "point2D_idxs"]) 177 | 178 | 179 | class Image(BaseImage): 180 | def qvec2rotmat(self): 181 | return qvec2rotmat(self.qvec) 182 | 183 | 184 | CAMERA_MODELS = { 185 | CameraModel(model_id=0, model_name="SIMPLE_PINHOLE", num_params=3), 186 | CameraModel(model_id=1, model_name="PINHOLE", num_params=4), 187 | CameraModel(model_id=2, model_name="SIMPLE_RADIAL", num_params=4), 188 | CameraModel(model_id=3, model_name="RADIAL", num_params=5), 189 | CameraModel(model_id=4, model_name="OPENCV", num_params=8), 190 | CameraModel(model_id=5, model_name="OPENCV_FISHEYE", num_params=8), 191 | CameraModel(model_id=6, model_name="FULL_OPENCV", num_params=12), 192 | CameraModel(model_id=7, model_name="FOV", num_params=5), 193 | CameraModel(model_id=8, model_name="SIMPLE_RADIAL_FISHEYE", num_params=4), 194 | CameraModel(model_id=9, model_name="RADIAL_FISHEYE", num_params=5), 195 | CameraModel(model_id=10, model_name="THIN_PRISM_FISHEYE", num_params=12) 196 | } 197 | CAMERA_MODEL_IDS = dict([(camera_model.model_id, camera_model) 198 | for camera_model in CAMERA_MODELS]) 199 | CAMERA_MODEL_NAMES = dict([(camera_model.model_name, camera_model) 200 | for camera_model in CAMERA_MODELS]) 201 | 202 | 203 | def read_next_bytes(fid, num_bytes, format_char_sequence, endian_character="<"): 204 | """Read and unpack the next bytes from a binary file. 205 | :param fid: 206 | :param num_bytes: Sum of combination of {2, 4, 8}, e.g. 2, 6, 16, 30, etc. 207 | :param format_char_sequence: List of {c, e, f, d, h, H, i, I, l, L, q, Q}. 208 | :param endian_character: Any of {@, =, <, >, !} 209 | :return: Tuple of read and unpacked values. 210 | """ 211 | data = fid.read(num_bytes) 212 | return struct.unpack(endian_character + format_char_sequence, data) 213 | 214 | 215 | def qvec2rotmat(qvec): 216 | return np.array([ 217 | [1 - 2 * qvec[2]**2 - 2 * qvec[3]**2, 218 | 2 * qvec[1] * qvec[2] - 2 * qvec[0] * qvec[3], 219 | 2 * qvec[3] * qvec[1] + 2 * qvec[0] * qvec[2]], 220 | [2 * qvec[1] * qvec[2] + 2 * qvec[0] * qvec[3], 221 | 1 - 2 * qvec[1]**2 - 2 * qvec[3]**2, 222 | 2 * qvec[2] * qvec[3] - 2 * qvec[0] * qvec[1]], 223 | [2 * qvec[3] * qvec[1] - 2 * qvec[0] * qvec[2], 224 | 2 * qvec[2] * qvec[3] + 2 * qvec[0] * qvec[1], 225 | 1 - 2 * qvec[1]**2 - 2 * qvec[2]**2]]) 226 | 227 | 228 | def read_cameras_text(path): 229 | """ 230 | see: src/base/reconstruction.cc 231 | void Reconstruction::WriteCamerasText(const std::string& path) 232 | void Reconstruction::ReadCamerasText(const std::string& path) 233 | """ 234 | cameras = {} 235 | with open(path, "r") as fid: 236 | while True: 237 | line = fid.readline() 238 | if not line: 239 | break 240 | line = line.strip() 241 | if len(line) > 0 and line[0] != "#": 242 | elems = line.split() 243 | camera_id = int(elems[0]) 244 | model = elems[1] 245 | width = int(elems[2]) 246 | height = int(elems[3]) 247 | params = np.array(tuple(map(float, elems[4:]))) 248 | cameras[camera_id] = Camera(id=camera_id, model=model, 249 | width=width, height=height, 250 | params=params) 251 | return cameras 252 | 253 | 254 | def read_cameras_binary(path_to_model_file): 255 | """ 256 | see: src/base/reconstruction.cc 257 | void Reconstruction::WriteCamerasBinary(const std::string& path) 258 | void Reconstruction::ReadCamerasBinary(const std::string& path) 259 | """ 260 | cameras = {} 261 | with open(path_to_model_file, "rb") as fid: 262 | num_cameras = read_next_bytes(fid, 8, "Q")[0] 263 | for _ in range(num_cameras): 264 | camera_properties = read_next_bytes( 265 | fid, num_bytes=24, format_char_sequence="iiQQ") 266 | camera_id = camera_properties[0] 267 | model_id = camera_properties[1] 268 | model_name = CAMERA_MODEL_IDS[camera_properties[1]].model_name 269 | width = camera_properties[2] 270 | height = camera_properties[3] 271 | num_params = CAMERA_MODEL_IDS[model_id].num_params 272 | params = read_next_bytes(fid, num_bytes=8*num_params, 273 | format_char_sequence="d"*num_params) 274 | cameras[camera_id] = Camera(id=camera_id, 275 | model=model_name, 276 | width=width, 277 | height=height, 278 | params=np.array(params)) 279 | assert len(cameras) == num_cameras 280 | return cameras 281 | 282 | 283 | def read_images_text(path): 284 | """ 285 | see: src/base/reconstruction.cc 286 | void Reconstruction::ReadImagesText(const std::string& path) 287 | void Reconstruction::WriteImagesText(const std::string& path) 288 | """ 289 | images = {} 290 | with open(path, "r") as fid: 291 | while True: 292 | line = fid.readline() 293 | if not line: 294 | break 295 | line = line.strip() 296 | if len(line) > 0 and line[0] != "#": 297 | elems = line.split() 298 | image_id = int(elems[0]) 299 | qvec = np.array(tuple(map(float, elems[1:5]))) 300 | tvec = np.array(tuple(map(float, elems[5:8]))) 301 | camera_id = int(elems[8]) 302 | image_name = elems[9] 303 | elems = fid.readline().split() 304 | # xys = np.column_stack([tuple(map(float, elems[0::3])), 305 | # tuple(map(float, elems[1::3]))]) 306 | # point3D_ids = np.array(tuple(map(int, elems[2::3]))) 307 | # images[image_id] = Image( 308 | # id=image_id, qvec=qvec, tvec=tvec, 309 | # camera_id=camera_id, name=image_name, 310 | # xys=xys, point3D_ids=point3D_ids) 311 | images[image_id] = Image( 312 | id=image_id, qvec=qvec, tvec=tvec, 313 | camera_id=camera_id, name=image_name, 314 | xys={}, point3D_ids={}) 315 | return images 316 | 317 | 318 | def read_images_binary(path_to_model_file): 319 | """ 320 | see: src/base/reconstruction.cc 321 | void Reconstruction::ReadImagesBinary(const std::string& path) 322 | void Reconstruction::WriteImagesBinary(const std::string& path) 323 | """ 324 | images = {} 325 | with open(path_to_model_file, "rb") as fid: 326 | num_reg_images = read_next_bytes(fid, 8, "Q")[0] 327 | for _ in range(num_reg_images): 328 | binary_image_properties = read_next_bytes( 329 | fid, num_bytes=64, format_char_sequence="idddddddi") 330 | image_id = binary_image_properties[0] 331 | qvec = np.array(binary_image_properties[1:5]) 332 | tvec = np.array(binary_image_properties[5:8]) 333 | camera_id = binary_image_properties[8] 334 | image_name = "" 335 | current_char = read_next_bytes(fid, 1, "c")[0] 336 | while current_char != b"\x00": # look for the ASCII 0 entry 337 | image_name += current_char.decode("utf-8") 338 | current_char = read_next_bytes(fid, 1, "c")[0] 339 | num_points2D = read_next_bytes(fid, num_bytes=8, 340 | format_char_sequence="Q")[0] 341 | x_y_id_s = read_next_bytes(fid, num_bytes=24*num_points2D, 342 | format_char_sequence="ddq"*num_points2D) 343 | xys = np.column_stack([tuple(map(float, x_y_id_s[0::3])), 344 | tuple(map(float, x_y_id_s[1::3]))]) 345 | point3D_ids = np.array(tuple(map(int, x_y_id_s[2::3]))) 346 | images[image_id] = Image( 347 | id=image_id, qvec=qvec, tvec=tvec, 348 | camera_id=camera_id, name=image_name, 349 | xys={}, point3D_ids={}) 350 | return images 351 | 352 | 353 | def detect_model_format(path, ext): 354 | if os.path.isfile(os.path.join(path, "cameras" + ext)) and \ 355 | os.path.isfile(os.path.join(path, "images" + ext)): 356 | print("Detected model format: '" + ext + "'") 357 | return True 358 | 359 | return False 360 | 361 | 362 | def read_model(path, ext=""): 363 | # try to detect the extension automatically 364 | if ext == "": 365 | if detect_model_format(path, ".bin"): 366 | ext = ".bin" 367 | elif detect_model_format(path, ".txt"): 368 | ext = ".txt" 369 | else: 370 | print("Provide model format: '.bin' or '.txt'") 371 | return 372 | 373 | if ext == ".txt": 374 | cameras = read_cameras_text(os.path.join(path, "cameras" + ext)) 375 | images = read_images_text(os.path.join(path, "images" + ext)) 376 | else: 377 | cameras = read_cameras_binary(os.path.join(path, "cameras" + ext)) 378 | images = read_images_binary(os.path.join(path, "images" + ext)) 379 | return cameras, images 380 | 381 | 382 | def parse_cam_model(cam_data): 383 | model = cam_data.model 384 | width = cam_data.width 385 | height = cam_data.height 386 | 387 | if model == "SIMPLE_PINHOLE" or model == "SIMPLE_RADIAL" or model == "RADIAL" or model == "SIMPLE_RADIAL_FISHEYE" or model == "RADIAL_FISHEYE": 388 | fx = cam_data.params[0] 389 | fy = fx 390 | cx = cam_data.params[1] 391 | cy = cam_data.params[2] 392 | elif model == "PINHOLE" or model == "OPENCV" or model == "OPENCV_FISHEYE" or model == "FULL_OPENCV" or model == "FOV" or model == "THIN_PRISM_FISHEYE": 393 | fx = cam_data.params[0] 394 | fy = cam_data.params[1] 395 | cx = cam_data.params[2] 396 | cy = cam_data.params[3] 397 | 398 | return {"width":width, "height":height, "fx":fx, "fy":fy, "cx":cx, "cy":cy} 399 | 400 | 401 | def parse_cam_file(path, w, h): 402 | R = np.eye(3) 403 | t = np.zeros((3,1)) 404 | T = np.eye(4) 405 | 406 | f = open(path, 'r') 407 | line1 = f.readline() 408 | line2 = f.readline() 409 | 410 | t[0], t[1], t[2], R[0, 0], R[0, 1], R[0, 2], R[1, 0], R[1, 1], R[1, 2], R[2, 0], R[2, 1], R[2, 2] = map(float, line1.split()) 411 | T[0:3, 0:3] = R 412 | T[0:3, 3] = t.flatten() 413 | 414 | f_norm, _, _, aspect, cx_w, hcy_h = map(float, line2.split()) 415 | 416 | fx = f_norm * np.float32(max(w, h)) 417 | fy = aspect * fx 418 | cx = cx_w * w 419 | cy = h - (hcy_h * h) 420 | K = np.array([[fx, 0.0, cx],[0.0, fy, cy],[0.0, 0.0, 1.0]]) 421 | 422 | f.close() 423 | 424 | return T, K 425 | 426 | 427 | def parse_res_file(path): 428 | f = open(path, 'r') 429 | line = f.readline() 430 | words = line.split() 431 | w = int(words[0]) 432 | h = int(words[1]) 433 | f.close() 434 | 435 | return w, h 436 | 437 | 438 | if __name__ == "__main__": 439 | main(args) 440 | --------------------------------------------------------------------------------