Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

28
Traitement Traitement d’images d’images sur carte 3D sur carte 3D Application temps réel de Application temps réel de filtres sur cartes 3D filtres sur cartes 3D évoluées évoluées

Transcript of Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

Page 1: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 2: Traitement d’images sur carte 3D Application temps réel de filtres 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

Page 3: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 4: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 5: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 6: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 7: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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 »

Page 8: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 9: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 10: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 11: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

Xavier LEMAITRE 11DESS RSI - Traitement d'Images

II - RéalisationII - Réalisation

xlImage : diagramme des classesxlImage : diagramme des classes

Page 12: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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 »

Page 13: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 14: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 15: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 16: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 17: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 18: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 19: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 20: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 21: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 22: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 23: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 24: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 25: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 26: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 27: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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

Page 28: Traitement d’images sur carte 3D Application temps réel de filtres sur cartes 3D évoluées.

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