Mathématice, intégration des Tice dans l'enseignement des mathématiques  
Sommaire > N°41 - septembre 2014 > Approche constructive des fonctions avec (...)
Maths et ISN
Approche constructive des fonctions avec Blender 3D
corrigé de l’exercice 3 du sujet bac S Centres étrangers 2014
Moteur de recherche
Mis en ligne le 28 juin 2014, par Alain Busser

Le sujet est ici. L’exercice 3 occupe les pages 2, 3 et 4 du sujet, ainsi que l’annexe en dernière page.

Le logiciel Blender 3D est libre et téléchargeable gratuitement pour toutes les plateformes habituelles (hormis les tactiles). C’est la version 2.4 Linux qui a servi ici.

La retouche de niveaux de gris d’une image avait déjà été traitée dans cet article, mais alors, en Python.

Cet article peut être librement diffusé à l’identique dans la limite d’une utilisation non commerciale suivant la licence CC-by-nc-nd (http://creativecommons.org/licenses/by-nc-nd/3.0/fr/)

L’outil permettant d’appliquer une fonction aux niveaux de gris d’une image est appelé "éditeur de nœuds" (en anglais, "node editor"). Comme l’écran de Blender est composé de fenêtres, on a besoin que l’une d’entre elles (par exemple la plus grande, à gauche) soit celle de l’éditeur de nœuds. On commence donc par cliquer sur le choix de la fenêtre, puis dans le menu qui se déroule alors, on choisit celui du "node editor" :

La fenêtre devient alors toute grise parce qu’il n’y a pas encore de briques de construction de fonctions, dessus. Et pour en créer, il faut d’abord choisir les nœuds de type "composite" :

puis cliquer sur le bouton "use nodes" qui permet enfin d’utiliser ces "nœuds" :

Deux nœuds ont été créés et placés sur le plan de travail. Ils ne serviront pas dans le corrigé de l’exercice 3 du sujet S Centres étrangers de 2014. On doit donc d’abord les sélectionner en cliquant dessus puis les supprimer à l’aide du bouton "Suppr" du clavier.


Entrées et sorties

Comme image en entrée, on va choisir la version en noir et blanc du célèbre portrait de Lenna :

Pour cela, on crée un nœud de type "input", et plus précisément une entrée de type "image" :

Pour l’instant, l’image est vide. Alors on clique sur "load" pour en charger une depuis le disque dur :

Une fois qu’on a choisi le portrait de Lena, on obtient une miniature de la photo à traiter :

La liste des pixels à traiter est disponible sur la prise jaune appelée "Image". On la branchera donc sur des fonctions numériques pour faire de la retouche.

Pour la sortie, on peut choisir une sortie sur fichier, mais pour plus d’interactivité, on choisit un "viewer" dans le plan de travail. On le trouve en explorant le menu "output" :

Ensuite, pour peu qu’on aie branché la sortie de l’entrée sur l’entrée de la sortie, on voit à nouveau la miniature de Lena mais cette fois-ci, sur l’affichage de sortie :

On voit alors un important théorème sur la retouche d’images :

Théorème :

Lorsqu’on n’applique aucun traitement à une image, celle-ci est identique à l’image de départ

Redevenons sérieux, avec un petit problème de choix de la représentation des niveaux de gris :


Au laboratoire photo, il est d’usage de travailler sur un négatif

Pour faire du traitement d’image sous Blender, en général on ajoute des nœuds "RVB" qui permettent de modifier les niveaux de rouge, vert et bleu par des outils de type courbe de Bézier. Mais puisque les fonctions de retouche de l’énoncé sont données par des formules mathématiques, on va placer des nœuds "math" :

Par exemple, la fonction "cube" est une fonction de retouche au sens de l’énoncé. On la trouve en paramétrant l’objet "math" sur "power", en mettant la valeur 3 dans l’exposant :

Le problème est que la photo est assombrie au lieu d’être éclaircie :

La raison de ce phénomène est que l’énoncé du sujet de bac utilise une convention différente de Blender pour le codage des niveaux de gris :

Une image numérique en noir et blanc est composée de petits carrés (pixels) dont la couleur va du blanc au noir en passant par toutes les nuances de gris. Chaque nuance est codée par un réel x de la façon suivante :

•x=0 pour le blanc ;

•x=1 pour le noir

Alors que sous Blender, c’est le contraire : 0 pour le noir et 1 pour le blanc. On doit donc appliquer la fonction 1-x entre l’entrée et le début du traitement, ainsi qu’entre la fin du traitement et la sortie. Ce qui donne le négatif la première fois, et le positif (négatif du négatif) la seconde. Plutôt qu’une formule, on peut utiliser l’instruction "invert" (négatif) toute faite :

Avec cette modification, la fonction "cube" éclaircit bel et bien la photo :


Les fonctions de l’énoncé

La fonction ƒ1 réduit le contraste de la photo [1] :

Pour calculer le carré de l’entrée, on aurait pu faire comme pour le cube, "power" mais cette fois-ci avec 2 au lieu de 3 comme exposant. On a préféré multiplier l’entrée par elle-même, ce qui donne bien son carré. Chaque puissance de l’entrée est multipliée par son coefficient, et la somme des deux premiers monômes est additionnée au troisième pour avoir la sortie.

La fonction ƒ2 quant à elle, augmente le contraste de la photo :

Image {PNG}

L’entrée est multipliée par e-1 qui est précalculé, à 1,7182818. Puis on lui ajoute 1, et comme tout logarithme peut être utilisé par Blender, il a fallu entrer la base du logarithme choisi, qui est e, et là encore, e a été entré sous forme décimale, comme 2,7182818. Seules les deux premières décimales sont affichées.

La fonction ƒ3 donnée à la fin de l’exercice peut rapidement être programmée, en modifiant le fichier :

Comme Blender n’a pas d’exponentielle, il a fallu élever 2,7182818 à la puissance x ce qui donne bien l’exponentielle de x.

Et la fonction ƒ4 éclarcit visiblement moins la photo que le fait ƒ3 :

Pour s’en convaincre, voici les sorties fichier correspondantes :

Fonction ƒ3 :

Fonction ƒ4 :

Ce qui permet, à vue, de répondre à la dernière question de l’énoncé :

2. De ces deux fonctions, laquelle a pour effet d’éclaircir le plus l’image ?

Voici les fichiers au format Blender, pour les 4 fonctions de retouche :

fonction ƒ1 fonction ƒ2 fonction ƒ3 fonction ƒ4
Blender - 140.7 ko
Blender - 137.9 ko
Blender - 138.7 ko
Blender - 139.3 ko

notes

[1on aurait pu faire plus simple avec l’algorithme de Hörner, mais on aurait moins vu le rapport avec la fonction telle que donnée dans l’énoncé.

Réagir à cet article
Vous souhaitez compléter cet article pour un numéro futur, réagir à son contenu, demander des précisions à l'auteur ou au comité de rédaction...
À lire aussi ici
MathémaTICE est un projet
en collaboration avec
Suivre la vie du site Flux RSS 2.0  |  Espace de rédaction  |  Nous contacter  |  Site réalisé avec: SPIP  |  N° ISSN 2109-9197