FR 2887347 A1 20061222 FR 0506172 A 20050617 PROCEDE ET DISPOSITIF DE CONSTRUCTION D'UNE CARTE DE PROFONDEUR D'UNE IMAGE NUMERIQUE La présente invention se rapporte à un procédé et à un dispositif de construction d'une carte de profondeur d'une image numérique. Elle appartient tout à la fois au domaine de la photographie numérique et au domaine du traitement des images numériques. Il est parfois utile de pouvoir construire une carte de profondeur d'une scène saisie sous forme d'une image numérique, la carte de profondeur d'une image représentant la distance à laquelle chaque pixel de l'image se trouve de l'objectif de l'appareil d'acquisition d'images, contrairement à une image classique, où la valeur de chaque pixel représente la luminosité ou la couleur de la partie de la scène associée à ce pixel. La carte de profondeur peut en effet servir par exemple pour améliorer la qualité de l'image. Il est connu, pour construire une carte de profondeur, d'utiliser deux images de la même scène prises suivant des angles de vue légèrement différents et de résoudre le problème dit de correspondance stéréoscopique. On se reportera utilement à ce sujet à l'article de O. GRAU intitulé "A scene analysis system for the generation of 3-D models", in Int. Conf. on Recent Advances in 3-D Digital Imaging and Modeling, Ottawa, Canada, 1997, pages 221 à 228. Néanmoins, cette technique présente l'inconvénient de nécessiter de prendre des vues suivant des angles différents, ce qui nécessite, soit d'utiliser plusieurs appareils photo, soit de n'en utiliser qu'un mais de le déplacer horizontalement pour prendre les photos, ce qui est peu pratique et diminue la précision de la carte de profondeur. Il est également connu d'utiliser plusieurs appareils photo focalisés à des distances différentes, pour construire une carte de segmentation, comme décrit dans le document US-A-5 793 900. Outre l'inconvénient de nécessiter plusieurs appareils photo, ce procédé de l'art antérieur ne permet de construire qu'une carte de profondeur très rudimentaire, puisque chaque pixel de la carte se voit associé au plan focal d'un des appareils. La présente invention a pour but de remédier aux inconvénients de l'art antérieur. Dans ce but, la présente invention propose un procédé de construction d'une carte de profondeur d'une image numérique, remarquable en ce qu'il comporte des étapes suivant lesquelles: - au moyen d'un appareil d'acquisition d'images numériques, on saisit une série d'images d'une même scène en faisant varier la distance focale de l'optique de l'appareil; on divise chaque image en une pluralité de blocs de taille prédéterminée; - pour chaque distance focale utilisée lors de la saisie de la série d'images, on évalue sous forme d'une valeur numérique la netteté de chaque bloc, de façon à obtenir une fonction discrète de netteté ; - pour chaque bloc, on détermine une valeur optimale de la distance focale à partir des valeurs de la fonction discrète de netteté ; et - pour chaque bloc, on assigne à la profondeur la valeur de la distance focale optimale. Ainsi, l'invention permet de construire une carte de profondeur d'une scène avec un unique appareil photo numérique et sans avoir besoin de déplacer l'appareil. En outre, l'invention permet de calculer la distance réelle à laquelle se trouve le pixel, ce qui augmente considérablement la précision de la profondeur. Dans un mode particulier de réalisation, l'étape d'évaluation de la netteté de chaque bloc comporte des sous-étapes suivant lesquelles: -on calcule l'énergie totale du bloc; - on calcule l'énergie haute fréquence du bloc; et - on calcule le rapport entre l'énergie haute fréquence et l'énergie totale du bloc, ce rapport constituant la netteté du bloc pour la distance focale courante. Cela permet d'obtenir un excellent rapport entre la simplicité de la mise en oeuvre et la qualité du résultat en ce qui concerne la valeur de la netteté. Dans un mode particulier de réalisation, lors de l'étape de détermination d'une valeur optimale de la distance focale, on détermine une approximation de la fonction discrète de netteté par une fonction continue et, lors de l'étape d'assignation, on assigne à la profondeur la valeur de la distance focale associée au maximum de la fonction continue. Cela permet d'optimiser la qualité de la carte de profondeur, sachant qu'en général, le maximum de la fonction continue se trouve en dehors de l'ensemble des valeurs discrètes prises par la fonction discrète de netteté. Dans un mode particulier de réalisation, lors de l'étape d'approximation de la fonction discrète de netteté par une fonction continue, on approche la fonction discrète de netteté par une fonction continue constituée de splines. En variante, lors de l'étape d'approximation de la fonction discrète de netteté par une fonction continue, on approche la fonction discrète de netteté 15 par une fonction continue polynomiale. Ces deux techniques pour déterminer une approximation de la fonction discrète de netteté sont particulièrement efficaces et simples à mettre en oeuvre. Dans un mode particulier de réalisation, lors de l'étape de division de 20 l'image en blocs, on divise l'image en blocs de taille 8x8 pixels. Cette taille de bloc constitue un bon compromis entre la complexité de réalisation et la résolution de la carte de profondeur. Dans le même but que celui indiqué plus haut, la présente invention propose en outre un dispositif de construction d'une carte de profondeur d'une 25 image numérique, remarquable en ce qu'il comporte: -un module pour saisir une série d'images d'une même scène en faisant varier la distance focale de l'optique de l'appareil; - un module pour diviser chaque image en une pluralité de blocs de taille prédéterminée; -un module pour évaluer sous forme d'une valeur numérique, pour chaque distance focale utilisée lors de la saisie de la série d'images, la netteté de chaque bloc, le module d'évaluation de la netteté fournissant une fonction discrète de netteté ; - un module pour déterminer, pour chaque bloc, une valeur optimale de la distance focale à partir des valeurs de la fonction discrète de netteté ; et - un module pour assigner à la profondeur, pour chaque bloc, la valeur de la distance focale optimale. La présente invention vise aussi un moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, permettant la mise en oeuvre d'un procédé tel que ci-dessus. La présente invention vise aussi un moyen de stockage d'informations amovible, partiellement ou totalement, lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre d'un procédé tel que cidessus. La présente invention vise aussi un produit programme d'ordinateur pouvant être chargé dans un appareil programmable, comportant des séquences d'instructions pour mettre en oeuvre un procédé tel que ci- dessus, lorsque ce programme est chargé et exécuté par l'appareil programmable. Les caractéristiques particulières et les avantages du dispositif, des moyens de stockage et du produit programme d'ordinateur étant similaires à ceux du procédé, ils ne sont pas répétés ici. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit de modes particuliers de réalisation, donnés à titre d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent, dans lesquels: - les figures 1A, 1B et 1C sont des organigrammes illustrant des étapes du procédé de construction d'une carte de profondeur d'une image numérique conforme à la présente invention, dans deux modes particuliers de réalisation; - la figure 2 est une courbe illustrant un exemple de fonction continue approchant une fonction discrète représentant la netteté d'un bloc de l'image en fonction de la distance focale de l'appareil d'acquisition d'images; et - la figure 3 représente de façon schématique un dispositif adapté à mettre en oeuvre la présente invention, dans un mode particulier de réalisation. On suppose qu'on utilise un appareil photo numérique ou tout autre dispositif d'acquisition d'images numériques, pour prendre une photographie, et qu'on souhaite construire la carte de profondeur de l'image ainsi obtenue. Comme le montre la figure 1A, l'utilisateur met tout d'abord l'appareil photo dans un mode spécifique dit d'acquisition de carte de profondeur (étape 10). Dans ce mode de fonctionnement, l'appareil photo est prêt à effectuer la saisie d'une carte de profondeur. Lors de l'étape suivante 12, l'utilisateur effectue une demi-pression sur le bouton déclencheur de l'appareil photo, c'est-à-dire un geste similaire à celui généralement effectué dans le but de faire les réglages préalables à la prise d'une photo. Cette demi-pression déclenche les étapes suivantes. Lors de l'étape suivante 14, un ensemble prédéterminé de distances focales disponibles est parcouru de façon automatique. Dans le mode préféré de réalisation, cet ensemble inclut les distances focales suivantes: 30 m, 10 m, 3 m, 1 m, 0,3 m, 0,1 m, ces valeurs étant données à titre d'exemple nullement limitatif. La première distance focale sélectionnée est donc 30 m. L'étape suivante 16 consiste à lire les données captées par le capteur (par exemple CCD ou CMOS) de l'appareil photo lorsque le système optique de l'appareil est focalisé sur la distance focale sélectionnée précédemment. Une image de la scène saisie avec l'optique réglée sur la distance focale sélectionnée est alors mémorisée dans l'appareil photo. Puis l'image mémorisée est divisée en blocs de taille prédéterminée (étape 18). Toute taille de bloc est possible, allant des blocs contenant un seul pixel jusqu'à un bloc unique contenant tous les pixels de l'image. La suite du procédé consiste à déterminer une unique profondeur pour chaque bloc, donc la taille des blocs détermine la résolution de la carte de profondeur. Ainsi, par exemple, si on souhaite une carte de profondeur très précise, on choisit de diviser l'image en blocs de taille 1 xl pixel. Dans le mode préféré de réalisation, on divise l'image en blocs de 8x8 pixels, ce qui constitue une taille intermédiaire. On sélectionne ensuite le premier bloc de l'image (étape 20). Typiquement, on parcourt les blocs dans l'ordre lexicographique, d'en haut à gauche jusqu'en bas à droite. On cherche à affecter au bloc une valeur représentative de sa netteté. 5 Différentes approches sont possibles, consistant en général à évaluer la présence de hautes fréquences dans le bloc. Dans le mode préféré de réalisation, on procède en trois temps, comme suit. Dans un premier temps (étape 22), on calcule l'énergie totale E du bloc courant, sous la forme: 8 8 E _ x?i j=1 i=1 où les x;,i sont les valeurs des pixels contenus dans le bloc de 8x8 pixels. Dans un deuxième temps (étape 24), on calcule l'énergie en hautes fréquences du bloc. Pour cela, on applique un filtrage passe-haut au bloc. Divers filtrages sont possibles. Dans le mode préféré de réalisation, on constitue un nouveau bloc contenant des pixels y; ,i tels que: y;,, = si x;+1,;+1 est à l'intérieur du bloc, y;,, = 0 sinon. On calcule alors l'énergie totale Eh du bloc filtré : 8 8 Eh = j=1 i=1 Enfin, pour obtenir le rapport S représentatif de la netteté du bloc courant, on calcule à l'étape 26 le rapport entre l'énergie en hautes fréquences et l'énergie totale: S = Eh/E. Le rapport S est affecté au bloc courant. Pour chaque distance focale utilisée, un nouveau rapport S sera affecté au bloc. Ainsi, chaque bloc de l'image se voit associer autant de valeurs de netteté que de distances focales parcourues. On teste à l'étape 28 si le dernier bloc de l'image courante est atteint, auquel cas l'étape suivante est un test 30 consistant à déterminer si toutes les distances focales de l'ensemble prédéterminé ont été parcourues. Si le test 28 est négatif, on traite le bloc suivant (étape 32) en retournant à l'étape 22 de début du calcul de la netteté. Si le test 30 est négatif, on sélectionne la distance focale suivante (étape 34) et on retourne à l'étape 16 de lecture des données du capteur. Si le test 30 est positif, c'est-à-dire que toutes les distances focales ont été parcourues, on sélectionne le premier bloc de l'image (étape 36), comme le montre la figure 1C. L'étape suivante 38 consiste à approcher la fonction discrète de netteté, c'est-à-dire la série de valeurs du rapport S en fonction de la distance focale, par une fonction continue. Dans le mode préféré de réalisation, la fonction discrète de netteté a 6 points correspondant à des distances focales respectivement égales à 0,1 m, 0,3 m, 1 m, 3 m, 10 m et 30 m. De très nombreuses techniques d'approximation de fonctions existent. Dans le mode préféré de réalisation, on approche la fonction discrète par une fonction continue f constituée de splines. En variante, on peut également utiliser une fonction f polynomiale. La figure 2 illustre la courbe d'une fonction continue f ainsi obtenue. Au cours de l'étape suivante 40, on détermine le maximum de la fonction f associée au bloc courant et on mémorise dans l'appareil photo l'abscisse de ce maximum. Comme le montre la figure 2, dans l'exemple non limitatif décrit ici, ce maximum est atteint pour une distance focale de 7,2 m. Il est à noter que ce maximum est généralement différent des distances focales prédéterminées. Puis on assigne au bloc courant une profondeur correspondant à l'abscisse mémorisée précédemment (étape 42). Reste à tester (étape 44) si le bloc courant est le dernier bloc de l'image. Si c'est le cas, le processus est terminé. Sinon, on sélectionne le bloc suivant (étape 46) et on retourne à l'étape 38 d'approximation de la fonction discrète de netteté. Les étapes 38 et 40 sont optionnelles. En effet, en variante, comme le montre la figure 1B, on peut déterminer (étape 37) une valeur optimale de la distance focale, c'est-à-dire la distance focale qui réalise le maximum de netteté, directement à partir d'une fonction prédéterminée. Ainsi, par exemple, si on choisit comme modèle une parabole de type y = ax2+bx+c et qu'on fait passer cette parabole par les trois valeurs de netteté les plus élevées f, f", f" parmi les valeurs de netteté associées au bloc courant, l'état de la technique enseigne que les valeurs de a, b et c peuvent être calculées à partir de f, f" et f". On les notera donc a(f',f',f"), b(f',f",f"), c(f',f",f"). Le maximum de la parabole est atteint lorsque 2ax+b = 0. On en déduit que le maximum de netteté est atteint à la distance focale suivante: -b(f f' f")/(2.a(f f' f")) Dans ce mode de réalisation, on détermine donc directement la distance focale correspondant au maximum de netteté en fonction des valeurs de netteté discrètes calculées précédemment, par l'intermédiaire d'une fonction prédéterminée. Un dispositif 1000 mettant en oeuvre le procédé conforme à l'invention est illustré sur la figure 3. Ce dispositif peut par exemple être inclus dans un appareil photo 15 numérique. Le dispositif 1000 comporte un capteur CCD 113 et une interface de communication 112 apte à recevoir des informations numériques provenant du capteur CCD 113. Le dispositif 1000 comporte également un moyen de stockage 108 tel que par exemple une carte mémoire, qui peut contenir des données d'implantation logicielle de l'invention ainsi que le code de l'invention. En variante, le programme permettant au dispositif de mettre en oeuvre l'invention pourra être stocké en mémoire morte 102 (appelée ROM sur le dessin). Le dispositif 1000 possède un écran 104 permettant de visualiser les 25 informations à traiter ou de servir d'interface avec l'utilisateur. L'unité centrale 100 (appelée CPU sur le dessin) exécute les instructions relatives à la mise en oeuvre de l'invention, instructions stockées dans la mémoire morte 102 ou dans les autres éléments de stockage. Lors de la mise sous tension, les programmes et méthodes de traitement stockés dans une des mémoires (non volatile), par exemple la ROM 102, sont transférés dans la mémoire vive RAM 103, qui contient alors le code exécutable de l'invention ainsi que les variables nécessaires à la mise en oeuvre de l'invention. Bien entendu, la carte mémoire peut être remplacée par tout moyen de stockage d'information, lisible par un ordinateur ou par un microprocesseur, intégré ou non au dispositif 1000, éventuellement amovible, adapté à mémoriser un ou plusieurs programmes dont l'exécution permet la mise en oeuvre du procédé conforme à la présente invention. Le bus de communication 101 permet la communication entre les différents sous-éléments du dispositif 1000 ou liés à lui. La représentation du bus 101 n'est pas limitative et notamment, l'unité centrale 100 est susceptible de communiquer des instructions à tout sous-élément du dispositif 1000 directement ou par l'intermédiaire d'un autre sousélément du dispositif 1000. Le dispositif décrit ici est susceptible de contenir tout ou partie du traitement décrit dans l'invention. Ce dispositif peut être inclus dans l'appareil photo numérique sous la forme d'un circuit électronique et/ou d'un logiciel embarqué sur le processeur de 15 l'appareil photo. REVENDICATIONS 1. Procédé de construction d'une carte de profondeur d'une image numérique, caractérisé en ce qu'il comporte des étapes suivant lesquelles: - au moyen d'un appareil d'acquisition d'images numériques, on saisit (16) une série d'images d'une même scène en faisant varier la distance focale de l'optique de l'appareil; - on divise (18) chaque image en une pluralité de blocs de taille prédéterminée; - pour chaque distance focale utilisée lors de la saisie de ladite série d'images, on évalue (22, 24, 26) sous forme d'une valeur numérique la netteté de chaque bloc, de façon à obtenir une fonction discrète de netteté ; - pour chaque bloc, on détermine (37) une valeur optimale de la distance focale à partir des valeurs de la fonction discrète de netteté ; et - pour chaque bloc, on assigne (42) à la profondeur la valeur de la distance focale optimale. 2. Procédé selon la revendication 1, caractérisé en ce que l'étape (22, 24, 26) d'évaluation de la netteté de chaque bloc comporte des sousétapes suivant lesquelles: - on calcule (22) l'énergie totale (E) du bloc; - on calcule (24) l'énergie haute fréquence (Eh) du bloc; et -on calcule (26) le rapport (S) entre l'énergie haute fréquence et l'énergie totale du bloc, ledit rapport (S) constituant la netteté dudit bloc pour la distance focale courante. 3. Procédé selon la revendication 1 ou 2, caractérisé en ce que, lors de l'étape (37) de détermination d'une valeur optimale de la distance focale, on détermine (38) une approximation de la fonction discrète de netteté par une fonction continue et, lors de l'étape (42) d'assignation, on assigne à la profondeur la valeur de la distance focale associée au maximum de ladite fonction continue. 4. Procédé selon la revendication 3, caractérisé en ce que, lors de l'étape (38) d'approximation de la fonction discrète de netteté par une fonction continue, on approche la fonction discrète de netteté par une fonction continue constituée de splines. 5. Procédé selon la revendication 3, caractérisé en ce que, lors de l'étape (38) d'approximation de la fonction discrète de netteté par une fonction continue, on approche la fonction discrète de netteté par une fonction continue polynomiale. 6. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que, lors de l'étape (18) de division de l'image en blocs, on divise l'image en blocs de taille 8x8 pixels. 7. Dispositif de construction d'une carte de profondeur d'une image numérique, caractérisé en ce qu'il comporte: - des moyens pour saisir une série d'images d'une même scène en faisant varier la distance focale de l'optique de l'appareil; - des moyens pour diviser chaque image en une pluralité de blocs de taille prédéterminée; - des moyens pour évaluer sous forme d'une valeur numérique, pour chaque distance focale utilisée lors de la saisie de ladite série d'images, la netteté de chaque bloc, lesdits moyens d'évaluation de la netteté fournissant une fonction discrète de netteté ; - des moyens pour déterminer, pour chaque bloc, une valeur optimale de la distance focale à partir des valeurs de la fonction discrète de netteté ; et - des moyens pour assigner à la profondeur, pour chaque bloc, la valeur de la distance focale optimale. 8. Dispositif selon la revendication 7, caractérisé en ce que les moyens d'évaluation de la netteté de chaque bloc comportent: - des moyens pour calculer l'énergie totale (E) du bloc; - des moyens pour calculer l'énergie haute fréquence (Eh) du bloc; et - des moyens pour calculer le rapport (S) entre l'énergie haute fréquence et l'énergie totale du bloc, ledit rapport (S) constituant la netteté dudit bloc pour la distance focale courante. 9. Dispositif selon la revendication 7 ou 8, caractérisé en ce que lesdits moyens de détermination d'une valeur optimale de la distance focale sont adaptés à déterminer une approximation de la fonction discrète de netteté par une fonction continue et lesdits moyens d'assignation sont adaptés à assigner à la profondeur la valeur de la distance focale associée au maximum de ladite fonction continue. 10. Dispositif selon la revendication 9, caractérisé en ce que les moyens de détermination d'une valeur optimale de la distance focale sont adaptés à approcher la fonction discrète de netteté par une fonction continue constituée de splines. 11. Dispositif selon la revendication 9, caractérisé en ce que les moyens de détermination d'une valeur optimale de la distance focale sont adaptés à approcher la fonction discrète de netteté par une fonction continue polynomiale. 12. Dispositif selon l'une quelconque des revendications 7 à 11, caractérisé en ce que les moyens de division de l'image en blocs sont adaptés à diviser l'image en blocs de taille 8x8 pixels. 13. Moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre d'un procédé selon l'une quelconque des revendications 1 à 6. 14. Moyen de stockage d'informations amovible, partiellement ou totalement, lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre d'un procédé selon l'une quelconque des revendications 1 à 6. 15. Produit programme d'ordinateur pouvant être chargé dans un appareil programmable, caractérisé en ce qu'il comporte des séquences d'instructions pour mettre en oeuvre un procédé selon l'une quelconque des revendications 1 à 6, lorsque ce programme est chargé et exécuté par l'appareil programmable.