# Projet Boul-A-Mat : caractérisation de la BRDF

Samuel Carré, Christophe Martinsons

## ► To cite this version:

Samuel Carré, Christophe Martinsons. Projet Boul-A-Mat : caractérisation de la BRDF. Rapport CSTB n°EN-DSC/ECE 19.12.R, CSTB - Centre scientifique et technique du bâtiment, France. 2019. [hal-04700557](https://hal.science/hal-04700557v1)

HAL Id: hal-04700557

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

Submitted on 8 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
CSTB
le futur en construction

Boul-A-Mat
Caractérisation de la
BRDF

livrable intermédiaire
2019

Samuel CARRÉ

Christophe MARTINSONS
Chef de la Division Éclairage et Champs Électromagnétiques

Demandeur de l'étude
DRD

N/Réf. EN-DSC/ECE 19.12.R
2019
CSTB

le futur en construction

Boul-A-Mat
Caractérisation de la
BRDF

livrable intermédiaire
2019

Toute reproduction partielle susceptible de dénaturer le contenu du présent
document, qu'il s'agisse d'une omission, d'une modification ou d'une adaptation
engage la responsabilité du client vis-à-vis du CSTB ainsi que des tiers concernés.

Auteur(s)

Samuel CARRÉ
Table des matières

<table><tr><td>1</td><td>Boul-A-Mat, banc BRDF</td><td>6</td></tr><tr><td>1.1</td><td>Présentation du projet</td><td>6</td></tr><tr><td>1.1.1</td><td>Mesure de BRDF</td><td>6</td></tr><tr><td>1.1.2</td><td>Système et méthode de mesure</td><td>6</td></tr><tr><td>1.1.3</td><td>Validité de la méthode utilisée</td><td>8</td></tr><tr><td>1.2</td><td>Conception de l'appareil</td><td>10</td></tr><tr><td>1.2.1</td><td>Cahier des charges</td><td>10</td></tr><tr><td>1.2.1.1</td><td>Cahier des charges optique</td><td>10</td></tr><tr><td>1.2.1.2</td><td>Cahier des charges logiciel</td><td>11</td></tr><tr><td>1.2.2</td><td>Conception de la source</td><td>11</td></tr><tr><td>1.2.2.1</td><td>Systèmes à une ou deux lentilles</td><td>11</td></tr><tr><td>1.2.2.2</td><td>Éclairage de Köhler</td><td>13</td></tr><tr><td>1.2.2.3</td><td>Réalisation d'une source et de la structure de support</td><td>15</td></tr><tr><td>1.2.3</td><td>Calibration photométrique</td><td>16</td></tr><tr><td>1.2.3.1</td><td>Détermination de K'</td><td>16</td></tr><tr><td>1.2.3.2</td><td>Détermination de ρ</td><td>17</td></tr><tr><td>1.2.3.3</td><td>Détermination du niveau au noir</td><td>18</td></tr><tr><td>1.2.3.4</td><td>Détermination du niveau en fonction du gain</td><td>18</td></tr><tr><td>1.2.4</td><td>Calibration géométrique</td><td>19</td></tr><tr><td>1.2.4.1</td><td>Distorsion de la caméra</td><td>19</td></tr><tr><td>1.2.4.2</td><td>Détermination des correspondances pixel ↔ (θ, φ)</td><td>20</td></tr><tr><td>1.2.5</td><td>Image HDR</td><td>24</td></tr><tr><td>1.2.6</td><td>Obtention de la BRDF</td><td>27</td></tr><tr><td>1.3</td><td>Premiers résultats</td><td>28</td></tr><tr><td>1.3.1</td><td>Performances</td><td>28</td></tr><tr><td>1.3.2</td><td>Mesures sur des échantillons</td><td>28</td></tr><tr><td>1.4</td><td>Logiciel pour la mesure de la BRDF</td><td>30</td></tr><tr><td>1.4.1</td><td>Structure du logiciel</td><td>30</td></tr><tr><td>1.5</td><td>Travaux en cours en 2019</td><td>32</td></tr><tr><td>1.5.1</td><td>Pilotage de la caméra</td><td>32</td></tr></table>
<table><tr><td>1.5.2</td><td>Matériel</td><td>32</td></tr><tr><td>1.5.3</td><td>Logiciel</td><td>33</td></tr></table>
Table des figures

<table><tr><td>1.1</td><td>Schéma en coupe du système de mesure de BRDF</td><td>7</td></tr><tr><td>1.2</td><td>Schéma des angles du système de mesure de BRDF</td><td>8</td></tr><tr><td>1.3</td><td>Photographie du goniospectrophotomètre de mesure de la BRDF</td><td>10</td></tr><tr><td>1.4</td><td>Exemple de résultat obtenu avec Oslo pour 2 lentilles</td><td>12</td></tr><tr><td>1.5</td><td>Schéma de l'éclairage de Köhler à 3 lentilles</td><td>14</td></tr><tr><td>1.6</td><td>Répartition du flux sur la surface éclairée</td><td>14</td></tr><tr><td>1.7</td><td>Source</td><td>15</td></tr><tr><td>1.8</td><td>Structure de support des sources et spot lumineux sur l'échantillon</td><td>16</td></tr><tr><td>1.9</td><td>Courbes de niveau au noir</td><td>18</td></tr><tr><td>1.10</td><td>Courbes de niveau en fonction de l'exposition et du gain</td><td>19</td></tr><tr><td>1.11</td><td>Courbe des fonctions de coefficients de distorsion</td><td>20</td></tr><tr><td>1.12</td><td>Schéma des angles pour la détermination théorique</td><td>21</td></tr><tr><td>1.13</td><td>Méthode de réalisation de la détermination théorique</td><td>21</td></tr><tr><td>1.14</td><td>Schéma du principe de l'interpolation</td><td>23</td></tr><tr><td>1.15</td><td>Évolution de l'écart relatif des valeurs en fonction du gain</td><td>24</td></tr><tr><td>1.16</td><td>Allure des courbes pour le poids des images HDR</td><td>24</td></tr><tr><td>1.17</td><td>Schéma de la méthode d'acquisition des images HDR</td><td>25</td></tr><tr><td>1.18</td><td>Éléments utilisés pour les mesures de BRDF</td><td>28</td></tr><tr><td>1.19</td><td>Mesure de BRDF des matériaux Brillant et Satiné</td><td>29</td></tr><tr><td>1.20</td><td>Graphe représentant les inclusions des différentes classes</td><td>30</td></tr><tr><td>1.21</td><td>Schéma des différents fichiers sources liés à la classe CMainUI_AnalyseBRDF</td><td>31</td></tr><tr><td>1.22</td><td>Simulation optique à l'aide du logiciel CSTB</td><td>32</td></tr></table>
# Chapitre 1

## Boul-A-Mat, banc BRDF

Ce document fait un point sur l'avancement du projet à la fin de l'année 2018. Il intègre une description de la grandeur photométrique que nous cherchons à caractériser, le principe de mesurage proposé ainsi que les procédures d'étalonnages nécessaires.

### 1.1 - Présentation du projet

#### 1.1.1 - Mesure de BRDF

La BRDF (Bidirectional Reflectance Distribution Function) est une fonction caractérisant les propriétés de réflexion bi-directionnelle d'un matériau, élément essentiel en synthèse d'image. Dans le domaine du bâtiment, il s'agit principalement de caractériser des matériaux de construction tels que des peintures ou des parquets, de manière à réaliser des simulations d'éclairage plus réalistes en prenant en compte la directivité des réflexions.

Les paramètres de la BRDF sont :

* $\theta_i$ et $\phi_i$ : les angles en coordonnées sphériques de la lumière incidente

* $\lambda_i$ : la longueur d'onde incidente

* $\theta_r$ et $\phi_r$ : les angles en coordonnées sphériques de la lumière réfléchie

* $\lambda_r$ : la longueur d'onde de la lumière réfléchie

La première approximation consiste à considérer que $\lambda_i = \lambda_r$ (pas de fluorescence). De même, les phénomènes de polarisation ne seront pas pris en compte.

#### 1.1.2 - Système et méthode de mesure

Il existe de nombreux dispositifs, expérimentaux ou commerciaux, permettant la caractérisation de la BRDF. Nous n'en referons pas la description ici.
Actuellement, aucun de ces outils ne permet une caractérisation rapide et/ou d'une précision adaptée aux besoins de l'ingénierie de l'éclairage. Le dispositif imaginé par le CSTB reprend le principe des dispositifs imageants, en réduisant les exigences concernant la précision mécanique et optique, avec un temps de traitement allant de quelques minutes (caractérisation de matériaux simples) à quelques heures (matériaux les plus complexes).

Le système utilisé pour la mesure est composé d'une demi-sphère opaque et faiblement réfléchissante au centre de laquelle se trouve un porte-échantillon. La lumière réfléchie par l'échantillon est
projetée sur l'écran hémisphérique vu par un imageur numérique. La BRDF est alors déterminée
sur la base des images prises pour diverses configurations d'illumination.

La sphère mesure 0.9m de rayon. Des trous sont percés pour les sources tous les 10°, de 10° à 80° par rapport à la verticale. Le système est donc constitué de 8 sources différentes.

Ainsi, $\varphi_i$ dépend de la source active, $\lambda$ dépend du spectre de la source (3 bandes spectrales sont possibles actuellement : une dans le bleu, une dans le rouge et une dans le vert) et $\theta_i$ correspond à la rotation du plateau porte-échantillon. Les angles $\varphi_r$ et $\theta_r$ sont associés à chaque pixel des images capturées.

<figure><img src="image_2.png" /><figcaption>FIGURE 1.1: Schéma en coupe du système de mesure de BRDF</figcaption></figure>

L'utilisation d'une telle méthode de mesure présente plusieurs avantages, dont le principal est la rapidité de la mesure. En effet, pour une configuration d'éclairage donnée ($\theta_i$, $\varphi_i$ et $\lambda$ fixés), la mesure selon toutes les directions du demi-espace ($\theta_r$, $\varphi_r$) est réalisée sur la base d'une seule image.
### 1.1.3 - Validité de la méthode utilisée

La formule de la BRDF générale est la suivante :

$$brdf(\omega_i, \omega_r) = \frac{dL_r(\omega_r)}{L_i(\omega_i)cos(\theta_i)d\omega_i}$$

où $\omega_i$ est le vecteur vers la lumière incidente et $\omega_r$ le vecteur dans la direction de la lumière réfléchie. L est la luminance et $\theta_i$ est l'angle entre $\omega_i$ et la normale à la surface.

<figure><img src="image_3.png" /><figcaption>FIGURE 1.2: Schéma des angles du système de mesure de BRDF</figcaption></figure>

Dans le cas de ce dispositif, la luminance $L_i$ de la source est inconnue et sera déterminée indir ectement en exploitant un matériau de référence.

Cette mesure relative exploitant un matériau étalon est référencée par la notation $element_{ref}$ par la suite.

On caractérise la BRDF pour chaque pixel significatif de la caméra, c'est à dire sur chaque projection d'un élément de surface de la demi-sphère sur un pixel de la caméra. On obtient alors la formule suivante :

$$brdf(pixel) = \frac{\rho_{ref}}{\pi} \times \frac{L_{directe}(pixel)}{L_{directe ref}(pixel)}$$

Cette formule peut se réécrire en niveaux de gris (corrigés des phénomènes de non linéarité), ce qui correspond alors aux valeurs associées à chaque pixel :

$$brdf(pixel) = \frac{\rho_{ref}}{\pi} \times \frac{Gris_{direct}(pixel)}{Gris_{direct ref}(pixel)}$$

L'indice "direct" signifie qu'il ne faut pas considérer la valeur de luminance associée à chaque pixel directement, mais qu'il faut soustraire la valeur associée aux inter-réflexions dans la demi-sphère.
C'est pour cette raison que la surface interne de la sphère a été choisie faiblement réfléchissante. Cela peut se traduire de la manière suivante :

$$L_{directe}(pixel) = L_{totale}(pixel) - \frac{\rho(pixel)}{\pi} \int_{surface demi-sphere} L_{totale}(s) \cdot FF(s, pixel) \cdot ds$$

Dans cette formule, $\rho(pixel)$ correspond au facteur de réflexion d'un élément de surface de la demi-sphère, et associé à un pixel. $s$ est un élément de surface quelconque de la demi-sphère, $FF(s, pixel)$ est le facteur de forme (point-surface) entre l'élément de surface $s$ et une position sur la sphère associée au pixel.

$$L_{directe}(pixel) = \frac{\rho(pixel)}{\pi} \times \left( Ecl_{total}(pixel) - \int_{surface demi-sphere} L_{totale}(s) \cdot FF(s, pixel) \cdot ds \right)$$

La BRDF peut donc s'écrire :

$$brdf(pixel) = \frac{\rho_{ref}}{\pi} \times \frac{Ecl_{total}(pixel) - \int L_{totale}(s) \cdot FF(s, pixel) \cdot ds}{Ecl_{total ref}(pixel) - \int L_{totale ref}(s) \cdot FF(s, pixel) \cdot ds}$$

$$Gris(pixel) = K \times K'(pixel) \frac{\rho(pixel)}{\pi} Ecl_{total}(pixel)$$

$$L_{totale}(pixel) = \frac{\rho(pixel)}{\pi} Ecl_{total}(pixel)$$

Ainsi :

$$brdf(pixel) = \frac{\rho_{ref}}{\pi} \times \frac{\text{Gris}(pixel) - \sum_{s}^{\frac{1}{2}\text{sphere}} \left( \frac{K'(pixel)}{K'(s)} \times \frac{\rho(pixel)}{\pi} \times \text{Gris}(s) \cdot \text{FF}(s, pixel) \right)}{\text{Gris}_{ref}(pixel) - \sum_{s}^{\frac{1}{2}\text{sphere}} \left( \frac{K'(pixel)}{K'(s)} \times \frac{\rho(pixel)}{\pi} \times \text{Gris}_{ref}(s) \cdot \text{FF}(s, pixel) \right)} \quad (1.1)$$

Ce calcul montre donc la nécessité de connaître trois choses :

* La surface correspondant à chaque pixel (que l'on exprimera selon un angle entre le vecteur partant du centre de la sphère et pointant vers le centre de la surface et la normale à la surface)

* La fonction $\rho(pixel)$ qui caractérise l'albédo de chaque surface correspondant à un pixel

* La fonction $K'(pixel)$ qui caractérise le coefficient de réponse de chaque pixel
## 1.2 - Conception de l'appareil

<figure><img src="image_4.png" /><figcaption>FIGURE 1.3: Photographie du goniospectrophotomètre de mesure de la BRDF</figcaption></figure>

### 1.2.1 - Cahier des charges

Le principal intérêt de cet appareil de mesure de la BRDF est de réaliser une mesure quasi complète en un temps très raisonnable, soit de l'ordre d'une heure. Par mesure complète, on entend une mesure pour tous les angles incidents et tous les angles réfléchis au niveau de l'échantillon. Notre appareil ne comporte pour cela qu'un seul niveau de réglage pour le nombre d'angles : le nombre d'angles de rotation du plateau porte-échantillon (soit selon $\theta_i$). Les autres angles sont limités : $\phi_i$ est limité à une mesure tous les 10° par le nombre de sources fixes, $\theta_r$ et $\phi_r$ sont limités par la résolution de la caméra. En théorie, on pourrait obtenir une résolution de 0.2° mais en pratique, la résolution sera plutôt de l'ordre du degré, de par les nombreuses sources d'incertitudes.

La BRDF mesurée est une BRDF relative et non absolue.

#### 1.2.1.1 - Cahier des charges optique

Les sources doivent répondre à différentes contraintes pour réussir à obtenir le résultat souhaité. Dans de précédentes configurations, des lampes très puissantes mais n'utilisant qu'une seule optique, ainsi que des LEDs n'utilisant aussi qu'une seule lentille ont été utilisées. Les lampes de puissance proposaient un rendement très mauvais ainsi qu'un niveau d'éclairement insuffisant et les LEDs ne permettaient d'obtenir que de trop faibles niveaux d'éclairement sur l'échantillon, répartis de manière non uniforme.

La source doit donc répondre aux contraintes suivantes :
* Le diamètre d'entrée dans la sphère est de 50mm et ne doit pas être agrandi (les trous existent déjà, et un agrandissement fragiliserait la structure)

* La longueur totale du système optique ne doit pas excéder 40cm (le système doit pouvoir tenir dans la pièce actuelle)

* La distance entre le dernier élément optique du système et l'échantillon est au minimum de 0.9m (rayon de la demi-sphère)

* Expoitation de sources LED pour leur durée de vie et stabilité de fonctionnement

* L'éclairement sur l'échantillon doit être supérieur à 10000lux pour une LED verte, l'idéal étant d'atteindre 30000lux

* La zone à éclairer est une zone circulaire de 50mm de diamètre, un diaphragme étant utilisé sur l'échantillon pour tenter de supprimer la lumière arrivant au-delà de ce disque et risquant d'engendrer des parasites dans la mesure

* L'uniformité de l'éclairage de la zone n'est pas nécessaire car on s'intéresse uniquement à la moyenne de la BRDF de la zone éclairée. Cependant une uniformité correcte est un plus

* Un réglage de la taille de la zone éclairée est un plus

* Il faut prévoir un système d'anamorphose pour que la zone éclairée soit toujours circulaire y compris pour les sources formant des angles important par rapport à la verticale

* L'objectif est de pouvoir recréer un spectre visible au mieux. L'utilisation de LEDs rouges, vertes et bleues permettrait une approche intéressante

* Le budget étant limité, il convient de partir sur des optiques standards relativement peu coûteuses du type Thorlabs

### 1.2.1.2 - Cahier des charges logiciel

La caméra utilisée est une caméra Hamamatsu C4742-96 munie d'un objectif fisheye. Cette caméra doit être pilotée par ordinateur, ce qui est réalisable avec la LIBDC1394, bibliothèque permettant le contrôle de différentes caméras, dont celle-ci.

Un logiciel permettant les calibrations nécessaires, ainsi que tout ce qu'il faut pour réaliser une mesure de manière automatisée, doit être réalisé. Il sera en C++ et utilisera FLTK pour l'interface graphique, la LIBDC1394 pour le pilotage de la caméra et OpenCV pour la calibration de la caméra.

## 1.2.2 - Conception de la source

Pour concevoir une source répondant au mieux aux différents critères du cahier des charges, différentes pistes ont été envisagées.

### 1.2.2.1 - Systèmes à une ou deux lentilles

Diverses configurations à une ou plusieurs lentilles ont été testées à l'aide de la version d'essai du logiciel Oslo LT.
<figure><img src="image_5.png" /><figcaption>FIGURE 1.4: Exemple de résultat obtenu avec Oslo pour 2 lentilles</figcaption></figure>

Les résultats obtenus sur l'exemple de la figure 1.4 semblent intéressants à première vue, cependant plusieurs problèmes se posent avec une telle configuration. La simulation permettant d'obtenir ce résultat suppose une LED carrée de 2mm de côté et de flux très important si l'on souhaite obtenir les éclairements nécessaires. La faible surface limite cependant le flux maximum de la LED. On ne trouve pas de LED dans le commerce ayant de telles caractéristiques. Le système image la LED, ce qui donne ici un résultat qui semble uniforme car la LED simulée éclaire uniformément sur sa surface, ce qui n'est absolument pas le cas d'une LED réelle et qui résulte en une non-uniformité très grande. Le problème persiste et est même encore plus présent si l'on essaie d'utiliser un collimateur pour LED. En effet, le collimateur forme deux ensembles de rayons à sa sortie : les rayons qui sont réfléchis sur la paroi avant de passer par la lentille du collimateur,
et ceux qui ne font que passer par la lentille. Ces deux ensembles de rayons forment ainsi deux cercles bien distincts et qui seront retranscrits au niveau de la zone éclairée.

La version d'Oslo utilisée étant une version d'essai, il n'est pas possible de faire des optimisations autrement qu'en changeant les paramètres manuellement, ce qui signifie qu'il n'est pas possible de vérifier efficacement que le résultat obtenu est le meilleur résultat possible (par rapport à la convergence locale des paramètres), de même qu'il est difficile de prévoir la précision nécessaire dans le placement des éléments, ce qui peut avoir des effets dramatiques.

De plus, un tel système ne permet pas un ajout de diaphragme au niveau des lentilles. Le positionner au niveau de l'échantillon risque de générer de nombreux parasites.

### 1.2.2.2 - Éclairage de Köhler

Pour pallier ces différents problèmes, un second système a été conçu, à l'aide d'une version of-ficielle du logiciel Zemax. L'idée est cette fois de créer un système d'éclairage de Köhler. Un tel système est composé de deux parties distinctes : le condenseur et le projecteur. Le condenseur permet de mélanger les rayons lumineux de manière à ce que sa pupille de sortie soit éclairée uniformément. Le projecteur réalise ensuite une image de cette pupille.

La source n'est pas imagée, ce qui a pour avantage d'uniformiser l'image de sortie obtenue. Il est possible de placer un diaphragme au niveau de la pupille de sortie du condenseur. Celui-ci étant imagé, l'image est ainsi réduite en taille, mais l'éclairement sur la surface toujours éclairée varie très peu. C'est une propriété intéressante pour limiter la lumière parasite.

En prenant en compte les différentes contraintes, les calculs montrent qu'il n'est pas possible de répondre au cahier des charges en utilisant une unique lentille pour le condenseur et une unique lentille pour le projecteur. Cela nécessiterait soit de perdre une quantité de flux trop importante, soit d'avoir des optiques de trop grand diamètre. Il faut au moins trois lentilles pour le système complet afin de rentrer dans les différents critères.

Pour réaliser le système sur Zemax, les deux parties de l'éclairage de Köhler sont conçues et réalisées séparément avant d'être combinées et ré-optimisées pour bien fonctionner entre elles.

Cette optimisation en deux parties est nécessaire car Zemax permet une optimisation de la convergence des faisceaux lumineux dans un plan. En situant ainsi un objet à l'infini et en faisant converger les rayons dans un plan, on obtient un projecteur inversé. Il suffira donc d'obtenir une image de la même taille que la pupille de sortie du condenseur et d'inverser le sens du résultat obtenu lors de l'assemblage des deux éléments sous Zemax.

Afin de conserver le maximum possible de flux en provenance de la LED, différents ensembles de LED-collimateur sont utilisés dans les simulations. Cela est possible grâce aux modèles 3D des collimateurs et aux fichiers de rayons issus des LEDs disponibles chez les constructeurs.

Notre choix s'est porté sur le fabricant de lentilles Thorlabs (coûts raisonnables). Afin de trouver les lentilles les plus proches existantes de celles calculées par Zemax, les lentilles ont été simplifiées en plan-convexe et le système a été ré-optimisé avec ces nouvelles contraintes. Des lentilles de bon diamètre et ayant des rayons de courbure proches de ceux calculés ont ensuite été cherchées dans le catalogue Thorlabs.
Les performances annoncées par Zemax sur la base de ces lentilles sont satisfaisantes, le flux étant toutefois plus faible que prévu : le minimum sur la surface est de l'ordre de 10000lux et le maximum de l'ordre de 18000lux pour une LED verte de flux 250lm (flux d'une LED standard).

<figure><img src="image_6.png" /><figcaption>FIGURE 1.5: Schéma de l'éclairage de Köhler à 3 lentilles</figcaption></figure>

<figure><img src="image_7.png" /><figcaption>FIGURE 1.6: Répartition du flux sur la surface éclairée</figcaption></figure>

Le positionnement de la LED dans le collimateur influence grandement les résultats. Un décalage de quelques dixièmes de millimètres permet de gagner 50% de flux. On passe ainsi de 45lm reçus sur la surface circulaire de 50mm de diamètre à un flux d'environ 66lm.

Différents collimateurs ainsi que différentes LEDs adaptées ont donc été testés, par simulation, afin de déterminer quelques ensembles LED-collimateur prometteurs.
### 1.2.2.3 - Réalisation d'une source et de la structure de support

Pour le maintien des optiques et leur positionnement précis, deux systèmes ont été envisagés, un système de fixation des lentilles dans des tubes et un système de fixation sur des montures elles-mêmes fixées à des rails (cf. Annexe ??). C'est la seconde solution qui a été retenue car elle est plus facile à mettre en place et plus modulaire.

Sur la base de tests expérimentaux, l'ensemble LED-collimateur le plus intéressant est finalement constitué d'éléments très standards, le maximum obtenu à 1m de la dernière lentille étant de 40000lux.

Les performances des autres combinaisons s'avèrent finalement trop dépendantes de la précision mécanique de l'assemblage LED-collimateur.

<figure><img src="image_8.png" /><figcaption>FIGURE 1.7: Source</figcaption></figure>

La source est positionnée sur la demi-sphère et orientée vers l'échantillon situé au centre. Une structure basé sur de simples cornières métalliques vissées entre elles et attachées à la base de la demi-sphère permet la mise en place des supports de lentilles. Après un réglage grossier, la mise en place d'un diaphragme dans le système optique permet d'affiner la position du spot ainsi que sa taille et sa forme.

Le montage de la structure dans son intégralité a été réalisé et la source situé à 40° (angle depuis la verticale) a été positionnée et réglée.
<figure><img src="image_9.png" /><figcaption>FIGURE 1.8: Structure de support des sources et spot lumineux sur l'échantillon</figcaption></figure>

L'éclairement mesuré au niveau de l'échantillon est de 30000 lux lorsque la LED est allumée au maximum de sa puissance (courant de 1A) ce qui est cohérent avec une incidence de 40° par rapport à la verticale.

### 1.2.3 - Calibration photométrique

La caméra utilisée est une caméra Hamamatsu modèle C4742-96. Cette caméra a les caractéristiques constructeur suivantes :

* Caméra noir et blanc

* Dynamique sur 12bits (niveaux de gris entre 0 et 4095)

* Temps d'exposition variable de 10µs à 10s

* Gain variable de ×1 à ×10 sur 256 pas (1 octet)

* Ouverture variable de 1.4 à 16

L'ouverture ne doit pas changer durant une mesure. Elle est donc fixée avec une valeur plutôt faible (grande ouverture) afin d'être plus sensible aux faibles luminosités. De plus, la référence et le matériau doivent impérativement utiliser la même ouverture pour que le rapport de l'équation 1.1 ait un sens.

En ce qui concerne la photométrie, quatre inconnues sont à déterminer (cf. Équation 1.1) :

* $K'(pixel)$

* $\rho(pixel)$

* Niveau au noir

* Niveau en fonction du gain

#### 1.2.3.1 - Détermination de K'

$K'$ correspond à la réponse de chacun des pixels relativement aux autres. Il caractérise les différences en réponse de chacun des pixels du capteur. Pour réaliser cette mesure, il convient d'éclairer le capteur de manière uniforme à des niveaux suffisamment forts mais sans faire saturer aucun des pixels. Pour cela, il suffit de placer la caméra dans une sphère intégrante et de régler
l'éclairage pour obtenir les niveaux souhaités.

Une série de captures d'images est ensuite réalisée. Pour chaque pixel, la médiane des valeurs du pixel dans chacune des images est retenue. Cela forme une image que l'on appellera image médiane dans la suite de ce document.

À partir de cette image médiane, chaque valeur de pixel est normalisée, soit par le pixel ayant la valeur la plus forte, soit par le pixel ayant la valeur la plus faible, soit par la valeur médiane de tous les pixels. Cette valeur $K'$ étant relative, la référence n'a pas d'importance. Le facteur de normalisation correspond à $K'(pixel)$.

### 1.2.3.2 - Détermination de $\rho$

$\rho(pixel)$ correspond au facteur de réflexion d'un élément de surface de la demi-sphère se rapportant au pixel. Cette mesure est nécessaire car la peinture recouvrant l'intérieur de la demi-sphère n'est pas forcément répartie parfaitement. Il ne faut donc pas considérer une valeur constante. Pour le déterminer, nous supposons que cette valeur varie peu sur la sphère.

Ainsi, en plaçant une source isotrope (ou lambertienne) au centre de la sphère et un luxmètre non loin, on mesure l'éclairement réfléchi par la sphère. À l'aide d'une simulation, on recréé des conditions analogues et l'on fait varier le facteur de réflexion de l'écran de manière à retrouver un éclairement similaire sur un luxmètre virtuel. Cela permet d'obtenir $\rho_{moyen}$.

On réalise ensuite une cartographie du facteur de réflexion de la sphère à l'aide de la caméra en laissant la source isotrope en place. On obtient alors un $\rho_{relatif}$ pour chaque pixel. Pour remonter au $\rho(pixel)$ à partir de ces valeurs, on réalise le calcul suivant :

$$ \sum_{i=0}^{nbPixels} \left( \frac{\rho_{relatif}(i) * S(i) * \cos(\theta_i)}{\pi} \right) = \alpha * \rho_{moyen} $$

Ce qui donne :

$$ \rho(pixel) = \frac{\rho_{relatif}(pixel)}{\alpha} $$
### 1.2.3.3 - Détermination du niveau au noir

Pour la détermination du niveau au noir, la caméra est placée dans le noir. Une image médiane est construite pour des niveaux d'exposition allant de 0.1s à 10s afin de s'assurer que le niveau au noir est stable avec la variation du temps d'exposition. L'ensemble des pixels de chaque image est ensuite trié par valeur et la valeur médiane ainsi que la valeur à 5% et à 95% sont récupérées et enregistrées. Le graphique suivant présente les résultats obtenus :

<figure><img src="image_10.png" /><figcaption>FIGURE 1.9: Courbes de niveau au noir</figcaption></figure>

Le second graphique de la figure 1.9 représente le niveau au noir en fonction du gain. On remarque que ces deux courbes sont très stables (on rappelle que le niveau de gris maximum est de 4095). Notamment celle concernant la variation de l'exposition. Notre hypothèse est que la caméra comporte un capteur interne permettant de fixer le niveau de noir à une valeur de 200. Ces niveaux au noir sont pris en compte lors de la capture d'images par la caméra. En ce qui concerne le niveau de gris en fonction de l'exposition, cela est pris en compte selon la valeur médiane du graphique. C'est à dire que pour un temps d'exposition donné, on retranchera à toutes les valeurs de pixel, la valeur médiane du niveau au noir obtenu à cette exposition. Le gain est quant à lui pris en compte selon la partie suivante, car ces effets sont mieux évalués lorsqu'il s'agit de corriger la linéarité de la réponse en gain.

### 1.2.3.4 - Détermination du niveau en fonction du gain

Des vérifications ont été réalisées sur la caméra pour mesurer sa réponse en fonction de l'exposition et du gain. Pour cela, la caméra est positionnée devant une source de lumière réglée sur une faible valeur de luminosité afin de ne pas faire saturer les pixels lors de l'utilisation de forts gains ou de fortes expositions.

Lors du réglage pour la variation de gain, on arrive à régler la source afin de n'avoir aucun pixel qui sature, cependant cela est beaucoup plus difficile pour l'exposition car le facteur au niveau des pixels passe de 10 pour le gain à 100 pour l'exposition. Cela oblige à avoir un niveau de moins de 400 cd/m² lors d'une exposition à 0.1s (la source exploitée devient alors moins stable durant ces expérimentations).

La mauvaise stabilité se retrouve dans la courbe selon l'exposition, notamment aux fortes expositions, où la saturation de certains des pixels se produit. En dehors de ces artefacts, la variation du niveau en fonction de l'exposition est linéaire et sera considérée comme telle lors des mesures. Sur les deux courbes de la figure 1.10, sont représentées, de même que sur la figure 1.9, la médiane des pixels en valeur ainsi que la valeur à 5% et à 95%. Si ces courbes s'écartent autant,
<figure><img src="image_11.png" /><figcaption>FIGURE 1.10: Courbes de niveau en fonction de l'exposition et du gain</figcaption></figure>

c'est parce que la mesure n'a pas été faite dans des conditions où chacun des pixels était autant éclairé que son voisin car la lampe utilisée était un simple plafonnier positionné très proche de la caméra fisheye. Les pixels centraux sont donc plus éclairés que ceux du bord, ce qui explique ces écarts de courbes.

En ce qui concerne la courbe médiane du niveau en fonction du gain, sa non-linéarité doit être prise en compte. Ces sauts brusques au niveau de la courbe sont probablement dus à l'utilisation d'un réseau de résistances pour la réalisation d'un convertisseur analogique-numérique à l'intérieur de la caméra.

### 1.2.4 - Calibration géométrique

Sur les images, les angles $θ_r$ et $φ_r$ associés à la lumière réfléchie sont déterminés en fonction de la position de chaque pixel. Il faut donc pouvoir passer d'un pixel de l'image prise par la caméra à un angle ($θ_r, φ_r$) pour l'intégralité des pixels couvrant la zone utile.

La meilleure solution pour obtenir un résultat correct serait de mesurer cela précisément en utilisant par exemple un laser dont la position du faisceau sur la demi-sphère serait exactement connu et que l'on pourrait imager grâce à la caméra. Le soucis d'une telle méthode est la complexité mécanique du système nécessaire à la très bonne connaissance de l'orientation du laser. Cette solution a par conséquent été écartée au profit d'une solution hybride entre une mesure et un calcul théorique.

#### 1.2.4.1 - Distorsion de la caméra

Pour ce calcul théorique, plusieurs paramètres sont important à connaître, dont notamment la distorsion de la caméra.

Pour l'obtenir relativement facilement, la bibliothèque OpenCV (bibliothèque open source de traitement d'image) est utilisée. Cette bibliothèque a l'avantage d'être utilisable en C++ (langage utilisé pour le projet) et de comporter des fonctions de calibration de caméra, et plus spécifiquement des fonctions de calibration de caméra fisheye.

Pour cela, OpenCV se base sur les coordonnées d'un ensemble de points. Ces coordonnées doivent être à la fois exprimées en coordonnées cartésiennes à trois dimensions dans le monde réel, et en coordonnées deux dimensions dans les images prises par la caméra de cet ensemble de points. Pour les obtenir facilement, la méthode utilisée est de se servir de la fonction de détection de damiers d'OpenCV. Cette fonction permet de trouver les coordonnées en pixels sur le capteur de
la caméra des points d'intersection d'un damier de taille connu. Cette détection est relativement robuste et permet d'obtenir facilement un grand nombre de points de références.

Pour vérifier la précision que l'on peut obtenir avec un tel principe, ce mode de fonctionnement est testé sur la base d'images de synthèse.

Ces simulations sont basées sur des images générées par code de caméras fisheyes "parfaites" dans un premier temps. Par "parfaite", on entend une caméra fisheye dont l'angle de réception de la lumière varie linéairement avec la distance au centre de l'image, le centre correspondant à la lumière provenant directement de face à la caméra. Cette simulation a permis de vérifier la méthode à mettre en oeuvre pour appliquer les fonctions de détection de damiers ainsi que de calibration.

Pour aller plus loin, des coefficients de distorsion similaires à ceux déterminés par OpenCV ont été utilisés pour distordre les images générées et tenter de retrouver ces mêmes coefficients à l'aide des fonctions d'OpenCV. Le résultat est plutôt satisfaisant car les écarts mesurés sur la fonction de distorsion sont très faibles (voir la figure 1.11).

<figure><img src="image_12.png" /><figcaption>FIGURE 1.11: Courbe des fonctions de coefficients de distorsion</figcaption></figure>

Sur ce graphique, la courbe d'entrée est la courbe appliquée aux images générées, et la courbe de sortie est celle obtenue par la fonction de calibration. Les deux courbes sont superposées sur le graphique, et leur écart absolu est tracé multiplié par 1000.

Il faut cependant nuancer ces résultats très optimistes car les coefficients de distorsion d'OpenCV sont des coefficients $k_1, k_2, k_3, k_4$ tels que $\theta_d = \theta(1 + k_1\theta^2 + k_2\theta^4 + k_3\theta^6 + k_4\theta^8)$ où $\theta_d$ est l'angle corrigé de la distorsion par rapport à $\theta$. Certaines distorsions ne seront pas aussi bien représentées par ce polynôme.

#### 1.2.4.2 - Détermination des correspondances pixel ↔ (θ, φ)

La détermination des correspondances se fait en exploitant conjointement quelques points de repère (déterminés par laser par exemple) et d'un modèle de caméra pour réaliser une interpolation réaliste entre ces points de contrôle. Le modèle théorique sert ainsi uniquement à orienter l'interpolation entre les mesures pour obtenir un résultat meilleur que le modèle théorique seul.
## Modèle théorique

Le modèle théorique nécessite certains paramètres :

* Le rayon de la sphère

* La position de la caméra

* L'orientation de la caméra

Les deux derniers paramètres étant difficile à déterminer, on suppose donc que la caméra est orientée exactement selon un axe vertical (donc que le pixel central image un point situé exactement à la verticale de la caméra) et on utilise 3 paramètres plus simples afin de déterminer la position et l'orientation de la caméra. Ces paramètres sont :

* La distance entre la caméra et le centre de la sphère

* L'angle $\gamma$

* L'angle $\delta$

Les angles $\gamma$ et $\delta$ sont considérés selon le schéma de la figure 1.12.

À partir de ces paramètres, un échantillonnage de l'hémisphère ($\theta_r$, $\varphi_r$) depuis le centre de l'échantillon est mis en correspondance avec sa projection sur la sphère puis dans le plan image.

<figure><img src="image_13.png" /><figcaption>FIGURE 1.13: Méthode de réalisation de la détermination théorique</figcaption></figure>
## Interpolation

Le principe de l'interpolation est le suivant :

Un certain nombre de correspondances pixel $\leftrightarrow (\theta, \varphi)$ (angles dans le repère échantillon) sont connues. Donc pour chaque $(\theta, \varphi)_{\text{mesures}}$, la position sur l'image est repérée. Le modèle théorique permet d'associer le couple $(\theta, \varphi)_{\text{theoriques}}$ à ce pixel (et donc à $(\theta, \varphi)_{\text{mesures}}$).

À partir de ces données, une structure est créée en se servant d'une bibliothèque interne au CSTB : LDR (pour Lancer De Rayons). Cette structure construit des polygones (triangles et quadrangles ici) à partir des $(\theta, \varphi)_{\text{theoriques}}$, en mettant en regard les coordonnées $(\theta, \varphi)_{\text{mesures}}$ correspondantes au niveau des sommets des polygones.

Lors du traitement de l'image entière, à chaque pixel correspond un couple $(\theta, \varphi)_{\text{theoriques}}$. Ces angles sont exploités pour lancer un rayon depuis le centre de la demi-sphère et déterminer quel polygone a été intersecté, ainsi que les coordonnées locales $(u,v)$ au sein du polygone.

Ces coordonnées locales permettent d'interpoler entre les valeurs $(\theta, \varphi)_{\text{mesures}}$ associées à chaque sommet du polygône. Cela permet ainsi d'obtenir pour ce pixel des coordonnées $(\theta, \varphi)_{\text{reels}}$.
Le schéma de la figure 1.14 récapitule l'interpolation :
<figure><img src="image_14.png" /><figcaption>FIGURE 1.14: Schéma du principe de l'interpolation</figcaption></figure>
### 1.2.5 - Image HDR

L'objectif de la mesure avec la caméra est d'obtenir une carte de luminance de la surface de la demi-sphère. Cette carte mise en relation avec les correspondances en angle (partie précédente), permet d'obtenir pour différents $(\theta_r, \phi_r)$ un niveau, comparable entre chaque mesure.

Pour réaliser cela, la dynamique de la caméra, limitée à 12 bits, n'est pas suffisante.

Pour l'augmenter, une solution est de réaliser des combinaisons d'images prises avec différents temps d'exposition et différents gains. Il s'agit donc de la réalisation d'une image HDR (High Dynamic Range). Pour cela, il convient dans un premier temps de tester la réponse de la caméra en gain, en exposition, ainsi qu'aux niveaux des pixels. En effet, on va vouloir favoriser les paramètres minimisant le bruit de mesure pour gagner en précision.

<figure><img src="image_15.png" /><figcaption>FIGURE 1.15: Évolution de l'écart relatif des valeurs en fonction du gain</figcaption></figure>

Le graphique de la figure 1.15 a été réalisé en mettant la caméra devant une source de lumière constante et en réalisant des images à différents niveaux de gain. Pour un niveau de gain donné, un ensemble d'images est capturé. Les valeurs d'un même pixel sur différentes images sont triées et les valeurs des neuf déciles sont récupérées et normalisées par la valeur médiane. La médiane de chacun des déciles est ensuite réalisée à l'échelle de l'image. Cette valeur médiane pour chacun des déciles est tracée en fonction du gain pour obtenir la courbe. Ce qui est intéressant sur cette courbe, c'est de remarquer que les écarts relatifs tendent à se réduire lorsque le gain augmente. Cela signifie que les valeurs obtenues avec un gain plus fort présentent un bruit légèrement plus faible que lorsque le gain est plus faible.

En ce qui concerne l'exposition, plus celle-ci sera longue et plus le bruit de photon sera diminué.

<figure><img src="image_16.png" /><figcaption>FIGURE 1.16: Allure des courbes pour le poids des images HDR</figcaption></figure>
Pour la réalisation d'images HDR, il sera intéressant d'augmenter le gain de manière préférentielle à l'exposition car cela permet de réduire le temps d'acquisition de l'image HDR, et donc le temps de mesure.

Pour tenter de réduire le bruit et d'avoir une certaine marge de manoeuvre lors de mesures, un poids est introduit dans l'algorithme d'acquisition d'images HDR. Ce poids prend en compte trois paramètres différents : le gain, l'exposition, et la valeur du pixel par rapport à ses bornes.

Le but est de favoriser les pixels dont la valeur est comprise entre une borne minimum (trop peu de signal) et une borne maximum (saturation) ainsi que les pixels soumis à de forts gains et de fortes expositions. La figure 1.16 montre l'allure des courbes appliquées pour la fonction de poids.

La prise en compte de ce poids se fait par pixel selon les formules :

$$grisEtPoids = poids * \left( \frac{gris - niveauNoir}{facteurGain * exposition} \right)$$

$$grisFinal = \frac{grisEtPoidsTotal}{poidsTotal}$$

La méthode d'acquisition des images HDR est décrite sur le schéma de la figure 1.17 :

<figure><img src="image_17.png" /><figcaption>FIGURE 1.17: Schéma de la méthode d'acquisition des images HDR</figcaption></figure>

Le gain est initialement réglé au minimum (×1) et l'exposition à 0.1ms.

On rentre ensuite dans la boucle principale. Une image médiane est capturée. Le maximum de l'image n'ayant pas atteint son objectif de poids est déterminé (il servira pour le choix des paramètres pour la capture d'image suivante). Pour chacun des pixels, les valeurs de poids et de grisEtPoids sont incrémentées selon les formules décrites précédemment.

Si suite à cela, tous les poids sont supérieurs à l'objectif ou que le temps écoulé depuis le début de la mesure est supérieur au temps maximum autorisé, la mesure s'arrête, sinon le facteur à
appliquer est déterminé (3300/maxImage). Ce facteur peut-être inférieur à 1. Il essaie de ramener les pixels n'ayant pas encore atteint leur objectif de poids vers une valeur autour de 3300 (valeur intéressante car élevée, mais assez loin de la saturation). Si ce facteur est supérieur à 1 et que gain et exposition étaient déjà réglés au maximum, alors la mesure s'arrête et les pixels non renseignés sont mis de côté et notés comme ayant une valeur trop faible pour être déterminés.

Dans le cas où le facteur est inférieur à 1 et que le gain n'est pas au minimum ou bien que le gain n'est pas égal au maximum et que le temps d'exposition est supérieur au temps de récupération des données, alors, le gain varie suivant le facteur calculé, sinon c'est l'exposition.

Une capture d'image médiane est réalisée avec les nouveaux paramètres et le processus se poursuit jusqu'à obtenir l'autorisation de sortie de la boucle (garantie par le temps limite).

Le temps de récupération des données correspond au temps de transfert depuis la caméra vers l'ordinateur après la capture d'image. Ce temps est déterminé en réalisant plusieurs captures successives avec le même temps d'exposition (connu) et en mesurant le temps total nécessaire pour la réalisation de ces captures. Le temps obtenu est ≈ 50ms.

Pour la capture HDR, le temps d'exposition commence à 0.1s, puis augmente jusqu'à dépasser 50ms. C'est ensuite le gain qui augmente progressivement de ×1 à ×10. Le temps d'exposition continue ensuite d'augmenter jusqu'à arriver à son maximum : 10s.

Dans le cas où l'on souhaite baisser la sensibilité de l'image, le gain redescend de manière préférentiel car il peut être à l'origine d'artefact sur les bords de zone saturées.

Dans les conditions de mesure, en utilisant des matériaux blancs standards, le temps d'une capture HDR est d'environ 1min30. Ce temps varie évidemment si les valeurs d'objectifs de poids sont plus importantes ou si l'image à capturer présente une dynamique très forte avec des zones très sombres.

Le code servant à la capture d'images HDR, se trouve à l'annexe ??.
### 1.2.6 - Obtention de la BRDF

La capture d'images HDR permet d'obtenir une cartographie de luminance brute de la surface interne de la demi-sphère. Pour obtenir le numérateur de la formule de l'équation 1.1, il faut retirer les inter-réflexions. Il faut donc supprimer les apports de chaque élément de surface vers un autre élément de surface.

Pour minimiser ces inter-réflexions, le facteur de réflexion de la peinture pour la sphère a été fixé à une valeur assez faible (0.3). Il s'agit d'un compromis entre l'importance des inter-réflexions et la sensibilité de la caméra.

La forme sphérique de l'écran présente l'avantage d'un facteur de forme constant entre éléments de surfaces. Entre un point et une portion de sphère, il vaut $\frac{\Delta S}{4r^2}$ avec S l'aire de la surface éclairante et r le rayon de la sphère.

Pour le calcul détaillé, se référer à l'annexe ??.

Après avoir pris en compte les inter-réflexions, le dénominateur de l'équation 1.1 doit être déterminé sur la base d'un matériau de référence de BRDF connu.
# 1.3 - Premiers résultats

## 1.3.1 - Performances

Conditions de mesure :

* 3 sources différentes (LEDs rouges, vertes et bleues)

* 8 $\varphi_i$ (tous les 10° entre 10° et 80°)

* 12 $\theta_i$ (tous les 30°)

* 1 minute 30 par acquisition

Les performances attendues avec ces conditions de mesure sont :

* Une mesure qualifiée de "complète" (la résolution de mesure en $\lambda$, en $\varphi_i$ et en $(\theta_r, \varphi_r)$ ne peut pas être changée)

* Une résolution sur les angles $(\theta_r, \varphi_r)$ de l'ordre du degré

* Un temps de mesure de l'ordre de 7 heures

## 1.3.2 - Mesures sur des échantillons

Dans le cadre d'un GDR, trois échantillons de référence ont été réalisés et confiés à trois laboratoires (SIC de poitiers, LNE et CSTB) : un échantillon Mat, un échantillon Satiné et un échantillon Brillant.

Notre appareil réalisant une mesure de BRDF relative, l'échantillon Mat est exploité actuellement en tant que référence pour pouvoir mesurer les deux autres échantillons.

Les résultats issus du banc de mesure du LNE seront ensuite exploités afin de disposer d'une caractérisation plus précise de cette référence.

<figure><img src="image_18.png" /><figcaption>FIGURE 1.18: Éléments utilisés pour les mesures de BRDF</figcaption></figure>

Sur la figure 1.18, on voit le masque utilisé, masque servant à supprimer les zones non utiles ainsi que les sources et l'ombre de la caméra sur la sphère de la mesure. Ce masque ainsi que l'interpolation utilisée pour ces mesures expliquent les trous que l'on remarque dans la mesure.

Les deux mesures réalisées sont présentées sur la figure 1.19. La source utilisée est la source verte située à 40° d'incidence par rapport à la verticale.

Les résultats sont conformes à nos attentes pour un matériau brillant et un matériau satiné (un matériau légèrement plus brillant qu'un matériau mat).

Le matériau Mat servant de référence, sa courbe de BRDF ne présente pas d'intérêt car il s'agit
d'une sphère. On comprend donc que le matériau Satiné soit aussi proche de la sphère tout en présentant une bosse du côté de la réflexion spéculaire (la source est située à droite sur les deux mesures présentées). Le matériau Brillant présente quant à lui un pic spéculaire conséquent ainsi qu'une base diffuse, ce qui semble aussi bien correspondre aux observations que l'on peut avoir en observant l'échantillon.

<figure><img src="image_19.png" /><figcaption>FIGURE 1.19: Mesure de BRDF des matériaux Brillant et Satiné</figcaption></figure>

Pour ces mesures, la mesure de $K'$, de $\rho$ et des points de mesure pour les correspondances n'ont pas été faites.
# 1.4 - Logiciel pour la mesure de la BRDF

Le logiciel permettant d'intégrer les procédures d'étalonnage et le pilotage du banc de mesure est réalisé en C++ sous linux (OS sur lequel il est destiné à fonctionner) et utilise différentes bibliothèques :

* Libdc1394 : sert au contrôle de la caméra

* FLTK : sert pour l'interface graphique

* LDR : sert au lancer de rayons pour l'interpolation (bibliothèque interne au CSTB)

* OpenCV : bibliothèque de traitement d'image servant à la calibration de la caméra

## 1.4.1 - Structure du logiciel

Le projet est principalement composé de deux grandes parties : la partie calculs et la partie interface graphique. Ces deux parties contiennent chacune une classe principale : CAnalyseBRDF pour la partie calcul et CMainUI_AnalyseBRDF pour la partie interface graphique.

<figure><img src="image_20.png" /><figcaption>FIGURE 1.20: Graphe représentant les inclusions des différentes classes</figcaption></figure>

Comme on peut le voir sur la figure 1.20, les classes ne sont que très peu dépendantes entre elles. La structure choisie est une structure de type fonctionnelle. Chaque classe de la partie calcul permet la création d'un objet servant à remplir un objectif en particulier.

* CAnalyseBRDF : Classe principale du projet, comportant beaucoup d'appels de fonctions et le main

* calibrationGeometrique : Classe comportant les fonctions de calibration géométrique

* calibrationOpenCV : Classe permettant la détermination de la distorsion de la caméra à l'aide d'openCV

* Camera : Classe gérant la caméra à l'aide de la bibliothèque libdc1394 (Annexe ??)

* Geometrie : Classe virtuelle contenant différentes géométries (quadrangles et triangles)

* ImageHDR : Classe permettant la capture d'images HDR (Annexe ??)

* mesure : Classe permettant la réalisation d'une mesure de la BRDF selon les paramètres rentrés dans l'UI

* Quadrangle : Classe gérant l'interpolation dans des quadrangles et héritant de Geometrie

* Triangle : Classe gérant l'interpolation dans des triangles et héritant de Geometrie

* Niveaux : Classe permettant l'obtention des mesures pour le niveau au noir ainsi que le niveau en fonction du gain
La partie UI (interface graphique) comporte quatre classes :

* CMainUI_AnalyseBRDF : Classe regroupant les fonctions d'appels de tous les éléments de l'interface graphique, et faisant la liaison avec CAnalyseBRDF

* CCaptureImages : Classe servant à l'affichage interactif des images pour pouvoir capturer des images de damiers à l'aide d'OpenCV

* CAvancementCalcul_UI : Classe servant à l'affichage d'une fenêtre avec une barre d'avancement, utile pour certains calculs longs

* CBox_Console_UI : Classe permettant la gestion d'un affichage type console dans un champ de texte de l'interface graphique

Ces classes disposent d'un fichier d'en-tête et d'un fichier source sauf la classe CMainUI_AnalyseBRDF qui comporte un fichier d'en-tête et un fichier source pour chacun des onglets de l'interface graphique, pour plus de facilité de lecture (cf. figure 1.21).

<figure><img src="image_21.png" /><figcaption>FIGURE 1.21: Schéma des différents fichiers sources liés à la classe CMainUI_AnalyseBRDF</figcaption></figure>

FLUID est utilisé pour générer les fenêtres, les boutons et faire le squelette de l'interface graphique. Les fonctions appelées par les boutons sont surchargées dans la classe CMainUI_AnalyseBRDF héritant de la classe CMainUI. Il en est de même pour les classe CCaptureImages et CAvancementCalcul qui sont liées à une fenêtre d'interface spécifique.

La documentation est réalisée à l'aide de Doxygen (les schémas des figures 1.20 et 1.21 en sont tirés).

Des captures d'écran du logiciel sont visibles dans l'annexe ??.
# 1.5 - Travaux en cours en 2019

## 1.5.1 - Pilotage de la caméra

Le pilotage de la caméra est toujours problématique. Avec la mise à jour du système d'exploitation, de nouveaux modes de fonctionnement ont été testés afin d'éviter de nouvelles situations de bloquage tout en assurant un débit satisfaisant pour la maîtrise des temps d'acquisition.

## 1.5.2 - Matériel

Il n'y a toujours qu'une seule source en place sur la sphère. Ce modèle est expérimental et conduit à des résultats satisfaisants mais son montage est complexe et fait intervenir des composants coûteux. Comme il faut prévoir 8 exemplaires pour chaque gamme de longueur d'onde, il est donc préférable de simplifier ce dispositif, d'en réduire la taille et d'envisager la construction d'un support sans réglage et permettant éventuellement de ne remplacer que les sources LED. De nouveaux tests ont donc été réalisés sur la base du prototype physique actuel et se poursuivent sur la base d'une modélisation numérique. Ces travaux ne sont pas réalisés à l'aide du logiciel Zemax (pas de licence à Nantes et nécessitant une bonne maîtrise de l'outil) mais à partir d'un logiciel spécifique développé au CSTB : Sim-luminaire. De nouvelles fonctionnalités ont été développées afin de répondre à ces travaux de conception.

<figure><img src="image_22.png" /><figcaption>FIGURE 1.22: Simulation optique à l'aide du logiciel CSTB</figcaption></figure>
### 1.5.3 - Logiciel

Les travaux de validation se poursuivent. La plus grande partie des travaux s'est toutefois concentrée sur les problèmes rencontrés avec le pilotage de la caméra.
CSTB
le futur en construction

## Le futur en construction

Établissement public au service de l'innovation dans le bâtiment, le CSTB, Centre Scientifique et Technique du Bâtiment, exerce quatre activités clés : la recherche et expertise, l'évaluation, la certification et la diffusion des connaissances, organisées pour répondre aux enjeux de la transition énergétique dans le monde de la construction. Son champ de compétence couvre les produits de construction, les bâtiments et leur intégration dans les quartiers et les villes.

Avec plus de 900 collaborateurs, ses filiales et ses réseaux de partenaires nationaux, européens et internationaux, le groupe CSTB est au service de l'ensemble des parties prenantes de la construction pour faire progresser la qualité et la sécurité des bâtiments.