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

Post on 04-Apr-2015

103 views 0 download

Transcript of 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

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