# La Coupole: Spatially varying measurement system for 3D objects

Pierre Mézières

► To cite this version:

Pierre Mézières. La Coupole: Spatially varying measurement system for 3D objects. xDDiff 2025 - Multidimensional optical diffusion for the measurement of appearance, Dec 2025, Braunschweig, Germany. hal-05474365

HAL Id: hal-05474365

https://hal.science/hal-05474365v1

Submitted on 23 Jan 2026

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>

Distributed under a Creative Commons CC BY 4.0 - Attribution - International License
# La Coupole : Spatially varying measurement system for 3D objects

Pierre Mézières

<figure><img src="image_2.png" /></figure>
**Ethnographic** objectives:

Visualization, inspection, and diagnosis of
old and fragile textiles.

**Appearance digitization:** Reproduce the
appearance of the object on screen as it
would be seen under any lighting conditions.

<figure><img src="image_3.png" /></figure>

Acquisition of the reflectance
function (SV-BRDF)

<figure><img src="image_4.png" /></figure>

Mihaly ©

<figure><img src="image_5.png" /></figure>

OCE Print ©
<figure><img src="image_6.png" /></figure>
<figure><img src="image_7.png" /></figure>

Total weight: Approximately 900kg
<figure><img src="image_8.png" /></figure>

Calibration

**Thesis by Antoine Lucat:** Opto-digital acquisition of
ancient Asian clothing (2020)
$$ 
\begin{aligned}
\text{380 POV} \\
\times \\
\text{300 photos per POV} \\
= \\
\text{114 000 photos} \\
(\approx 2 \text{ TB of data})
\end{aligned}
$$

<figure><img src="image_9.png" /></figure>
<figure><img src="image_10.png" /><figcaption>BRDF at the triangle scale (no texture coordinates).</figcaption></figure>

≈1 cm in diameter

≈5000 triangles

Bayer pattern
Exporting a BRDF slice
by triangle.

Fixed camera direction for
each triangle.

<figure><img src="image_11.png" /></figure>
# Pre-filtering

## Photo pre-filtering

<figure><img src="image_12.png" /></figure>
Samples

<figure><img src="image_13.png" /></figure>

With prefilter

<figure><img src="image_14.png" /></figure>

Without prefilter

<figure><img src="image_15.png" /></figure>

MERL: 16,200 samples per slice
# Representation of a slice of BRDF

* Spherical Harmonics (SH):
  Decomposition into sine and cosine on the sphere

* Radial basis functions (RBF):
  weighted sum of radial basis functions

* Microfacet model (GGX):
  analytical model with 7 coefficients

<figure><img src="image_16.png" /></figure>

$$ \text{GGX}(\omega_i, \omega_o) = \frac{k_d}{\pi} + \frac{D(h, \alpha)F(\omega_o, h, \eta)G(\omega_i, \omega_o, \alpha)}{4(n \cdot \omega_i)(n \cdot \omega_o)} $$
Result with a single viewpoint

<figure><img src="image_17.png" /></figure>
Cut angle ($\theta_{max}$)

<figure><img src="image_18.png" /></figure>

$\theta_{max} = 90^\circ$

SH

<figure><img src="image_19.png" /></figure>

0.014

RBF

<figure><img src="image_20.png" /></figure>

0.012

Avec cos ($\theta_{max}$ = 90°)

<figure><img src="image_21.png" /></figure>

0.011

<figure><img src="image_22.png" /></figure>

0.012

Photo

<figure><img src="image_23.png" /></figure>

mae
Number of SH and RBF coefficients

<figure><img src="image_24.png" /></figure>
Tessellation

<figure><img src="image_25.png" /></figure>
Future work - multiple views

<figure><img src="image_26.png" /><figcaption>Photo 1</figcaption></figure>

<figure><img src="image_27.png" /><figcaption>Photo 2</figcaption></figure>

<figure><img src="image_28.png" /><figcaption>Photo 3</figcaption></figure>

<figure><img src="image_29.png" /><figcaption>Photo 4</figcaption></figure>

<figure><img src="image_30.png" /></figure>

<figure><img src="image_31.png" /></figure>

<figure><img src="image_32.png" /></figure>

<figure><img src="image_33.png" /></figure>

<figure><img src="image_34.png" /></figure>

View of triangles
Future work - multiple views

<figure><img src="image_35.png" /><figcaption>View of triangles</figcaption></figure>

<figure><img src="image_36.png" /></figure>
**Data densification:** export more densely sampled BRDFs with the same dataset:

* Symmetry constraints

* Segmentation

<figure><img src="image_37.png" /></figure>
Bilateral symmetry

<figure><img src="image_38.png" /></figure>

Bilateral
symmetry
Segmentation

<figure><img src="image_39.png" /><figcaption>SH per cluster</figcaption></figure>

<figure><img src="image_40.png" /><figcaption>SH per triangle</figcaption></figure>

<figure><img src="image_41.png" /><figcaption>Photo</figcaption></figure>

<figure><img src="image_42.png" /></figure>

50 clusters
1000 clusters

<figure><img src="image_43.png" /></figure>

<figure><img src="image_44.png" /></figure>
<figure><img src="image_45.png" /><figcaption>GGX</figcaption></figure>

Alban Fichet - Post-doc
Antoine Lucat - PhD student
Arnaud Tizon - LP2N
David Murray - Post-doc
François Margall - Post-doc

<figure><img src="image_46.png" /><figcaption>RBF</figcaption></figure>

Jérémie Ettedgui - Engineer
Louis De Oliveira - PhD student
Marjorie Paillet - Engineer
Morgane Gérardin - Post-doc
Philippe Teulat - LP2N

Pierre Bénard - LaBRI
Romain Pacanowski - Inria
Xavier Granier - IOGS
<figure><img src="image_47.png" /><figcaption>Statistics on a capture according to the circle of confusion</figcaption></figure>
Timings and memory occupation

<table><thead><tr><th rowspan="3">Dataset</th><th colspan="9">Timings (s)</th><th colspan="3">Memory space (Gb)</th></tr><tr><th rowspan="2">samp.<br>export</th><th colspan="3">fit</th><th colspan="3">RT</th><th rowspan="2">samp.</th><th rowspan="2">SH<br>RBF</th><th rowspan="2">GGX</th></tr><tr><th>SH</th><th>RBF</th><th>GGX</th><th>SH</th><th>RBF</th><th>GGX</th></tr></thead><tbody><tr><td>Al</td><td>176</td><td>238</td><td>459</td><td>483</td><td>1.74</td><td>5.76</td><td>1.04</td><td>11.7</td><td>0.586</td><td>0.017</td></tr><tr><td>W1</td><td>114</td><td>184</td><td>387</td><td>278</td><td>1.80</td><td>6.09</td><td>1.06</td><td>8.6</td><td>0.669</td><td>0.020</td></tr><tr><td>G1</td><td>94</td><td>174</td><td>390</td><td>243</td><td>1.86</td><td>6.45</td><td>1.05</td><td>7.6</td><td>0.750</td><td>0.023</td></tr><tr><td>Ai</td><td>194</td><td>336</td><td>688</td><td>416</td><td>1.87</td><td>6.20</td><td>1.08</td><td>16.7</td><td>0.959</td><td>0.029</td></tr><tr><td>F1</td><td>112</td><td>194</td><td>418</td><td>330</td><td>1.92</td><td>6.30</td><td>1.10</td><td>8.9</td><td>0.773</td><td>0.023</td></tr><tr><td>P</td><td>142</td><td>282</td><td>601</td><td>631</td><td>1.93</td><td>6.32</td><td>1.09</td><td>13.2</td><td>1.0</td><td>0.031</td></tr></tbody></table>
Visualization of a BRDF slice

<figure><img src="image_48.png" /></figure>

<figure><img src="image_49.png" /></figure>

<figure><img src="image_50.png" /></figure>
Data prefiltering

<figure><img src="image_51.png" /></figure>
Threshold on pixel values

<figure><img src="image_52.png" /></figure>
Data ablation

<figure><img src="image_53.png" /></figure>
Light extrapolation

<figure><img src="image_54.png" /><figcaption>Light 1
Light 2</figcaption></figure>
Metrics with GGX fitting

89°

base

<figure><img src="image_55.png" /></figure>

cos

<figure><img src="image_56.png" /></figure>

log

<figure><img src="image_57.png" /></figure>

log-cos

<figure><img src="image_58.png" /></figure>

Photo

<figure><img src="image_59.png" /></figure>

90°

<figure><img src="image_60.png" /></figure>

<figure><img src="image_61.png" /></figure>

<figure><img src="image_62.png" /></figure>

<figure><img src="image_63.png" /></figure>
SH filtering

SH

<figure><img src="image_64.png" /></figure>

SH - filtered

<figure><img src="image_65.png" /></figure>

RBF

<figure><img src="image_66.png" /></figure>

Photo

<figure><img src="image_67.png" /></figure>
SH filtering

<figure><img src="image_68.png" /></figure>

<figure><img src="image_69.png" /></figure>

<figure><img src="image_70.png" /></figure>

<figure><img src="image_71.png" /></figure>

<figure><img src="image_72.png" /></figure>

<figure><img src="image_73.png" /></figure>

<figure><img src="image_74.png" /></figure>

<figure><img src="image_75.png" /></figure>

<figure><img src="image_76.png" /></figure>

<figure><img src="image_77.png" /></figure>

<figure><img src="image_78.png" /></figure>

<figure><img src="image_79.png" /></figure>

<figure><img src="image_80.png" /></figure>

<figure><img src="image_81.png" /></figure>
SH filtering

<figure><img src="image_82.png" /></figure>
Amount of regularization

<figure><img src="image_83.png" /><figcaption>SH</figcaption></figure>

$\lambda = 1$

0.023

$\lambda = 0.1$

0.026

$\lambda = 0.01$

0.034

<figure><img src="image_84.png" /><figcaption>Photo</figcaption></figure>

mae

<figure><img src="image_85.png" /><figcaption>RBF</figcaption></figure>

0.031

<figure><img src="image_86.png" /></figure>

0.025

<figure><img src="image_87.png" /></figure>

0.023