GPU-accelerated Monte Carlo uncertainty quantification for SVBRDF measurements on the La Coupole setup. Companion code to the associated Optics Express paper and dataset.
Project description
PyCoupole
GPU-accelerated Monte Carlo uncertainty quantification for SVBRDF measurements on the La Coupole setup. Companion code to the associated Optics Express paper and measured dataset.
Interpreting the output
computeBRDFDistribution returns a probability density, not a histogram of
counts. The density carries the inverse unit of the BRDF (sr), and integrates
to 1 over its support — so its values are not bounded by 1 and will be large
for a sharply peaked distribution. Recover the per-bin probability mass, then
the moments and credible intervals, as:
binWidth = brdfValues[1] - brdfValues[0]
mass = pdf * binWidth # sums to 1
mean = float(np.sum(mass * brdfValues))
std = float(np.sqrt(np.sum(mass * (brdfValues - mean) ** 2)))
cdf = np.cumsum(mass)
median = float(np.interp(0.50, cdf, brdfValues))
ci95_low = float(np.interp(0.025, cdf, brdfValues))
ci95_up = float(np.interp(0.975, cdf, brdfValues))
For a well-conditioned acquisition the deterministic value sits near the centre
of the distribution and the out-of-range fraction (1 - nbAccepted / nbTotal)
is negligible.
Citation
If you use this software, please cite the associated paper as below (see also CITATION.cff).
La Coupole: an SVBRDF measurement device for large and non-planar objects. Antoine Lucat, Pierre Mézières, François Margall, Louis De Oliveira, Marjorie Paillet, Arnaud Tizon, Pierre Bénard, Romain Pacanowski. Optics Express, Vol. 34, Issue 7, pp. 11695-11709 (March 2026). DOI: 10.1364/OE.587877.
Associated BibTeX entry
@article{Lucat:26,
author = {Antoine Lucat and Pierre M\'{e}zi\`{e}res and Fran\c{c}ois Margall and Louis De Oliveira and Marjorie Paillet and Arnaud Tizon and Pierre B\'{e}nard and Romain Pacanowski},
journal = {Optics Express},
keywords = {Camera calibration; Imaging systems; Light sources; Physiology; Printed circuit boards; Spatial resolution},
number = {7},
pages = {11695--11709},
publisher = {Optica Publishing Group},
title = {La Coupole: an SVBRDF measurement device for large and non-planar objects},
volume = {34},
month = {Apr},
year = {2026},
url = {https://opg.optica.org/oe/abstract.cfm?URI=oe-34-7-11695},
doi = {10.1364/OE.587877},
}
[!note] For a detailed derivation of the uncertainty estimation method, including assumptions, propagation steps, and validation, see Section 3 (pp. 14–20) of the associated Supplemental Material (DOI: 10.6084/m9.figshare.31418393.v1).
License
PyCoupole is distributed under the MIT License. See LICENSE.txt for more information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pycoupole-0.1.0.tar.gz.
File metadata
- Download URL: pycoupole-0.1.0.tar.gz
- Upload date:
- Size: 14.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc6f66269db40535432a2828a02f876e2101acfac4110dc62f91b2e54654e47f
|
|
| MD5 |
a9a5827f516de5fee88fab68ab38d3f0
|
|
| BLAKE2b-256 |
fdd4f563f27b37c84a1fb41ed5d42d294a746acac8b2c2053c0359e42dc525f1
|
File details
Details for the file pycoupole-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pycoupole-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
032422cbdfdebbb56e7c6e40196e46dc90e6df11f62e6c6baffa59066efff27f
|
|
| MD5 |
c4494a79db2f7c93ba4490b3740cbf25
|
|
| BLAKE2b-256 |
4135215e23653261874b8472cbbb9425bab2652070a3c7f5aa0a88d7f6e0af83
|