traitement d’images sur carte 3d application temps réel de filtres sur cartes 3d évoluées
TRANSCRIPT
Traitement Traitement d’images d’images
sur carte 3Dsur carte 3DApplication temps réel de Application temps réel de
filtres sur cartes 3D évoluéesfiltres sur cartes 3D évoluées
Xavier LEMAITRE 2DESS RSI - Traitement d'Images
Traitement d’images sur Traitement d’images sur carte 3Dcarte 3D
IntroductionIntroduction I - Calculs sur cartes 3DI - Calculs sur cartes 3D II - RéalisationII - Réalisation III - ApplicationsIII - Applications ConclusionConclusion
Xavier LEMAITRE 3DESS RSI - Traitement d'Images
IntroductionIntroduction
Traitement numérique d’imagesTraitement numérique d’images calculs sur nombreux pixelscalculs sur nombreux pixels
Cartes 3DCartes 3D performantes pour calculs sur textures, performantes pour calculs sur textures,
buffersbuffers Augmentation de leur puissance de Augmentation de leur puissance de
calcul calcul > loi de Moore> loi de Moore
Xavier LEMAITRE 4DESS RSI - Traitement d'Images
I – Calculs sur cartes 3DI – Calculs sur cartes 3D
Carte graphique = machine de Carte graphique = machine de calculs parallèlescalculs parallèles
Xavier LEMAITRE 5DESS RSI - Traitement d'Images
I – Calculs sur cartes 3DI – Calculs sur cartes 3D
Flexibilité d’utilisation du GPU pour Flexibilité d’utilisation du GPU pour calculs sur cartes graphiques calculs sur cartes graphiques récentes (depuis 2001)récentes (depuis 2001)
2 unités de traitement à notre 2 unités de traitement à notre dispositiondisposition Vertex ShaderVertex Shader Pixel ShaderPixel Shader
Xavier LEMAITRE 6DESS RSI - Traitement d'Images
I – Calculs sur cartes 3DI – Calculs sur cartes 3D
Pour traitement d’images:Pour traitement d’images: Utilisation du Pixel ShaderUtilisation du Pixel Shader
Figure - Les unités de traitement avec leur paramètres d’entrée
TEXTURE
Xavier LEMAITRE 7DESS RSI - Traitement d'Images
I – Calculs sur cartes 3DI – Calculs sur cartes 3D
Exploitation de la carte 3D par API 3D:Exploitation de la carte 3D par API 3D: Direct3D de MicrosoftDirect3D de Microsoft OpenGLOpenGL
Exploitation des Shader Units par Exploitation des Shader Units par langages:langages: Shading AssemblerShading Assembler Cg « C for graphics » de nVidiaCg « C for graphics » de nVidia HLSL « High Level Shading Language » HLSL « High Level Shading Language »
MicrosoftMicrosoft GLSL « OpenGL Shading Language »GLSL « OpenGL Shading Language »
Xavier LEMAITRE 8DESS RSI - Traitement d'Images
II - RéalisationII - Réalisation
Création de deux bibliothèquesCréation de deux bibliothèques xlGraphics: xlGraphics:
Encapsulation des API 3D (Direct3D 9)Encapsulation des API 3D (Direct3D 9) xlImage:xlImage:
Basé sur xlGraphicsBasé sur xlGraphics Fournit des classes et fonctions pour T.I.Fournit des classes et fonctions pour T.I. Permet le traitement numérique d’images Permet le traitement numérique d’images
sur carte 3Dsur carte 3D
Xavier LEMAITRE 9DESS RSI - Traitement d'Images
II - RéalisationII - Réalisation
xlGraphicsxlGraphics Création d’une fenêtre de renduCréation d’une fenêtre de rendu
xlImagexlImage Gestion des imagesGestion des images Définition d’un pipeline des opérations Définition d’un pipeline des opérations
à effectuer sur une imageà effectuer sur une image
Xavier LEMAITRE 10DESS RSI - Traitement d'Images
II - RéalisationII - Réalisation
xlImage : classes d’opérationxlImage : classes d’opération SourceOperatorSourceOperator
D3D9LoadImageD3D9LoadImage FilterOperatorFilterOperator
D3D9FilterD3D9Filter D3D9SeparableFilterD3D9SeparableFilter D3D9IterativeFilterD3D9IterativeFilter
OutputOperatorOutputOperator D3D9ViewD3D9View
Xavier LEMAITRE 11DESS RSI - Traitement d'Images
II - RéalisationII - Réalisation
xlImage : diagramme des classesxlImage : diagramme des classes
Xavier LEMAITRE 12DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Ecriture des filtres en HLSLEcriture des filtres en HLSL Un filtre = une ou plusieurs passes Un filtre = une ou plusieurs passes
de rendude rendu Pour chaque passe de rendu : 1 Pour chaque passe de rendu : 1
« Pixel Shader »« Pixel Shader »
Xavier LEMAITRE 13DESS RSI - Traitement d'Images
III - ApplicationIII - Application
Filtres classiquesFiltres classiques UniformeUniforme MédianMédian GaussienneGaussienne
Image originale
Image bruitée
Filtre moyenne 3x3
Xavier LEMAITRE 14DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre d’approximation médian (3x3)Filtre d’approximation médian (3x3) ExplicationsExplications
Valeur milieu sur chaque ligneValeur milieu sur chaque ligne Valeur milieu sur la colonne obtenueValeur milieu sur la colonne obtenue
Xavier LEMAITRE 15DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre d’approximation médianFiltre d’approximation médian Algorithme : 1Algorithme : 1èreère passe passe
Pass1Median ()Pass1Median ()
DebutDebut
SiSi Pixel ( x-1 ) < Pixel ( x ) Pixel ( x-1 ) < Pixel ( x )
AlorsAlors
SiSi Pixel ( x ) < Pixel ( x+1 ) Pixel ( x ) < Pixel ( x+1 )
RetournerRetourner Pixel ( x ) ; Pixel ( x ) ;
SinonSinon
RetournerRetourner max ( Pixel ( x-1 ), Pixel ( x+1 ) ) ; max ( Pixel ( x-1 ), Pixel ( x+1 ) ) ;
FinSiFinSi
SinonSinon
SiSi Pixel ( x-1 ) < Pixel ( x+1 ) Pixel ( x-1 ) < Pixel ( x+1 )
RetournerRetourner Pixel ( x-1 ) ; Pixel ( x-1 ) ;
SinonSinon
RetournerRetourner max ( Pixel ( x ), Pixel ( x+1 ) ) ; max ( Pixel ( x ), Pixel ( x+1 ) ) ;
FinSiFinSi
FinSiFinSi
FinFin
Xavier LEMAITRE 16DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre d’approximation médianFiltre d’approximation médian Algorithme : 2Algorithme : 2èmeème passe passe
Pass2Median ()Pass2Median ()
DebutDebut
SiSi Pixel ( y-1 ) < Pixel ( y ) Pixel ( y-1 ) < Pixel ( y )
AlorsAlors
SiSi Pixel ( y ) < Pixel ( y+1 ) Pixel ( y ) < Pixel ( y+1 )
RetournerRetourner Pixel ( y ) ; Pixel ( y ) ;
SinonSinon
RetournerRetourner max ( Pixel ( y-1 ), Pixel ( y+1 ) ) ; max ( Pixel ( y-1 ), Pixel ( y+1 ) ) ;
FinSiFinSi
SinonSinon
SiSi Pixel ( y-1 ) < Pixel ( y+1 ) Pixel ( y-1 ) < Pixel ( y+1 )
RetournerRetourner Pixel ( y-1 ) ; Pixel ( y-1 ) ;
SinonSinon
RetournerRetourner max ( Pixel ( y ), Pixel ( y+1 ) ) ; max ( Pixel ( y ), Pixel ( y+1 ) ) ;
FinSiFinSi
FinSiFinSi
FinFin
Xavier LEMAITRE 17DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre d’approximation médian (3x3)Filtre d’approximation médian (3x3) RésultatsRésultats
Image bruitée Filtre d’approximation médian 3x3
Xavier LEMAITRE 18DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre de Kuwahara (5x5)Filtre de Kuwahara (5x5) ExplicationsExplications
Calcul moyenne et variance dans sous-Calcul moyenne et variance dans sous-régionrégion
La moyenne avec variance min est choisieLa moyenne avec variance min est choisie
Xavier LEMAITRE 19DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications Filtre de KuwaharaFiltre de Kuwahara
Algorithme : 1Algorithme : 1èreère passe passe
Pass1Kuwahara ()Pass1Kuwahara ()
InitialisationInitialisation
Moyenne : flottant3 = 0.0 ;Moyenne : flottant3 = 0.0 ;
Cumul : flottant3 = 0.0 ;Cumul : flottant3 = 0.0 ;
Variance : flottant = 0.0 ;Variance : flottant = 0.0 ;
Poids : flottant = 1.0 / 9.0 ;Poids : flottant = 1.0 / 9.0 ;
FinInitialisationFinInitialisation
DebutDebut
PourPour i de -1 à 1 i de -1 à 1
FaireFaire
PourPour j de -1 à 1 j de -1 à 1
FaireFaire
Cumul += Pixel ( x+i, y+j ) ;Cumul += Pixel ( x+i, y+j ) ;
FinPourFinPour
FinPourFinPour
Moyenne = Cumul * Poids ;Moyenne = Cumul * Poids ;
PourPour i de -1 à 1 i de -1 à 1
FaireFaire
PourPour j de -1 à 1 j de -1 à 1
FaireFaire
Cumul += Pixel ( x+i, y+j ) Cumul += Pixel ( x+i, y+j )
- Moyenne;- Moyenne;
FinPourFinPour
FinPourFinPour
Variance = dot_product (Cumul, Poids.xxx);Variance = dot_product (Cumul, Poids.xxx);
RetournerRetourner flottant4( Moyenne, Variance ); flottant4( Moyenne, Variance );
FinFin
Xavier LEMAITRE 20DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre de KuwaharaFiltre de Kuwahara Algorithme: 2Algorithme: 2èmeème
passepasse
Pass2Kuwahara ()Debut Retourner TrouveMoyennePourMinVariance ( Pixel ( x-1, y-1 ), Pixel ( x+1, y-1), Pixel ( x-1, y+1 ), Pixel ( x+1, y+1 ) ) ;Fin
Xavier LEMAITRE 21DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre de Kuwahara 5x5Filtre de Kuwahara 5x5 RésultatsRésultats
1 itération 3 itérations 5 itérations
Xavier LEMAITRE 22DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre de diffusion anisotropeFiltre de diffusion anisotrope Algorithme : 1Algorithme : 1èreère passe passe
Pass1Krissian98v2 ()Initialisation Sortie : flottant4 ; Gradient : flottant2 ;FinInitialisationBegin Gradient.x = Pixel ( x+1, y ) – Pixel ( x-1, y ) ; Gradient.y = Pixel ( x, y+1 ) – Pixel ( x, y-1 ) ; Sortie.r = Pixel ( x, y ) ; // luminance Sortie.g = Gradient.x ; // gradient en x Sortie.b = Gradient.y ; // gradient en y Gradient /= 2.0 ; Sortie.a = PeronaMalik1 ( Gradient.x * Gradient.x + Gradient.y * Gradient.y ) ; Retourner Sortie ;End
Xavier LEMAITRE 23DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre de diffusion anisotropeFiltre de diffusion anisotrope Algorithme : 2Algorithme : 2èmeème passe passe
Pass2Krissian98v2 ()Initialisation DT : flottant = 0.25 ; DeltaX : flottant ; DeltaY : flottant ; DeltaImage : flottant ;FinInitialisationBegin DeltaX = Pixel ( x+1, y ).a * Pixel ( x+1, y).g – Pixel ( x-1, y ).a * Pixel ( x-1, y ).g ; DeltaY = Pixel ( x, y+1 ).a * Pixel ( x, y+1).b – Pixel ( x, y-1 ).a * Pixel ( x, y-1 ).b ; DeltaImage = DeltaX + DeltaY ; Retourner flottant4 ( ( Pixel ( x, y ).r + DT * DeltaImage ).xxx, 0.0 ) ;End
Xavier LEMAITRE 24DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre de diffusion anisotropeFiltre de diffusion anisotrope Résultats: fonction de diffusion de Résultats: fonction de diffusion de
Perona-Malik 1Perona-Malik 1
50 itérations 100 itérations 150 itérations
dt = 0.25 et K = 0.05
Xavier LEMAITRE 25DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre de diffusion anisotropeFiltre de diffusion anisotrope Résultats: fonction de diffusion de Résultats: fonction de diffusion de
Perona-Malik 2Perona-Malik 2
50 itérations 100 itérations 150 itérations
dt = 0.25 et K = 0.022
Xavier LEMAITRE 26DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre de diffusion anisotropeFiltre de diffusion anisotrope Résultats: fonction de diffusion de Résultats: fonction de diffusion de
WeickertWeickert
50 itérations 100 itérations 150 itérations
dt = 0.25 et K = 0.04
Xavier LEMAITRE 27DESS RSI - Traitement d'Images
III - ApplicationsIII - Applications
Filtre de diffusion anisotropeFiltre de diffusion anisotrope Résultats: fonction de diffusion de Résultats: fonction de diffusion de
Geman-ReynoldsGeman-Reynolds
50 itérations 100 itérations 150 itérations
dt = 0.25 et K = 5
Xavier LEMAITRE 28DESS RSI - Traitement d'Images
ConclusionConclusion
Le traitement numérique d’images Le traitement numérique d’images sur carte 3D c’est possiblesur carte 3D c’est possible
Comparer les mêmes algorithmes Comparer les mêmes algorithmes sur CPUsur CPU