11
1 Vision par ordinateur –Traitement 2D (Partie 4.4. du cours, point 3. Et manipulation No 24 ) 1 HESSO-HEIG-VD, J.-D. Dessimoz, 29.11.2016 Cours de Robotique et d’Automatisation Facultés de Technologies Industrielles (TIN), et Formation En Emploi (FEE) Filières microtechniques et électronique et automatisation industrielle (MI et EAI) LaRA - Laboratoire de Robotique et Automatisation Robotique et automatisation, JDZ/JDD 20.04.2011 2 • 1 Introduction 1 2 Acquisition d'images 5 3 Traitement bidimensionnel d'images 27 4 Analyse de scènes 48 5 Particularités de la vision pour robots 68 6 Exemples d'application 7. Conclusion Vision par ordinateur Robotique et automatisation, JDZ/JDD 20.04.2011 3 3 Traitement bidimensionnel d'images 3.1 Opérations par pixels individuels (point par point) 28 3.2 Modifications des pixels d'après leur voisinage 29 3.3 Opérations globales ou par régions 39 3.4 Détection de mouvement 45 3.5 Transformée en cosinus 46 3.6 Temps de traitement 46 Robotique et automatisation, JDZ/JDD 20.04.2011 4 Traitement de pixel pour affichage en pseudocouleurs Implémentation: - « palette » (tableau - array) - « look-up table » (petite mémoire) Robotique et automatisation, JDZ/JDD 20.04.2011 5 0, proche 255, distance éloigné 255 out 0 255 out 0 255 out 0 vert bleu rouge Traitement de pixel pour affichage en pseudocouleurs Exemple : affichage de distances 0, proche 255, distance éloigné 0, proche 255, dist. éloigné Robotique et automatisation, JDZ/JDD 20.04.2011 6 0, rouge 43, 85 128 170 jaune vert cyan bleu 255 out 0 Traitement de pixel pour affichage en couleurs Exemple : affichage de teinte 255, teinte rouge 12 0° 24 0° 36 0° ROUGE jaune VERT turquoise BLEU pourpres ROUGE ... à colorier ou à compléter en collant une vignette... (cyan) (magenta)

Filières microtechniques et électronique et automatisation

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Filières microtechniques et électronique et automatisation

1

Vision par ordinateur –Traitement 2D (Partie 4.4. du cours, point 3. Et manipulation No 24 )

1

HESSO-HEIG-VD, J.-D. Dessimoz,

29.11.2016

Cours de Robotique et d’Automatisation

Facultés de Technologies Industrielles (TIN), et Formation En Emploi (FEE)

Filières microtechniques et électronique et automatisation industrielle (MI et EAI) LaRA - Laboratoire de Robotique et Automatisation

Robotique et automatisation, JDZ/JDD 20.04.2011 2

•  1 Introduction 1 •  2 Acquisition d'images 5 •  3 Traitement bidimensionnel d'images 27 •  4 Analyse de scènes 48 •  5 Particularités de la vision pour robots 68 •  6 Exemples d'application •  7. Conclusion

Vision par ordinateur

Robotique et automatisation, JDZ/JDD 20.04.2011 3

•  3 Traitement bidimensionnel d'images •  3.1 Opérations par pixels individuels (point par

point) 28 •  3.2 Modifications des pixels d'après leur

voisinage 29 •  3.3 Opérations globales ou par régions 39 •  3.4 Détection de mouvement 45 •  3.5 Transformée en cosinus 46 •  3.6 Temps de traitement 46

Robotique et automatisation, JDZ/JDD 20.04.2011 4

Traitement de pixel pour affichage en pseudocouleurs

Implémentation: - « palette » (tableau - array) - « look-up table » (petite mémoire)

Robotique et automatisation, JDZ/JDD 20.04.2011 5

0, proche

255, distance éloigné

255 out

0

255 out

0

255 out

0

vert bleu rouge

Traitement de pixel pour affichage en pseudocouleurs

Exemple : affichage de distances

0, proche

255, distance éloigné 0,

proche

255, dist. éloigné

Robotique et automatisation, JDZ/JDD 20.04.2011 6

0, rouge

43, 85 128 170 jaune vert cyan bleu

255 out

0

Traitement de pixel pour affichage en couleurs

Exemple : affichage de teinte

255, teinte rouge

0° 120° 240° 360°ROUGE jaune VERT turquoise BLEU pourpres ROUGE

... à colorier ou à compléter en collant une vignette...

(cyan) (magenta)

Page 2: Filières microtechniques et électronique et automatisation

2

Robotique et automatisation, JDZ/JDD 20.04.2011 7 Robotique et automatisation, JDZ/JDD 20.04.2011 8

Exemple de traitement de pixel

Robotique et automatisation, JDZ/JDD 20.04.2011 9

•  3 Traitement bidimensionnel d'images •  3.1 Opérations par pixels individuels (point par

point) 28 •  3.2 Modifications des pixels d'après leur

voisinage 29 •  3.3 Opérations globales ou par régions 39 •  3.4 Détection de mouvement 45 •  3.5 Transformée en cosinus 46 •  3.6 Temps de traitement 46

Robotique et automatisation, JDZ/JDD 20.04.2011 10

3.2 Modifications des pixels d'après leur voisinage

Robotique et automatisation, JDZ/JDD 20.04.2011 11

I’(l,c)=Σ i=-n/2 n/2 Σ i=-m/2 m/2 k(i,j)*I(l-i, c-j)

3.2.1 Filtres linéaires - principe

a5 a4 a3 a6 a0 a2 a7 a8 a1

(convolution = corrélation avec retournement du noyau)

6 5

= =

Robotique et automatisation, JDZ/JDD 20.04.2011 12

1 -1

3.2.1 Filtres linéaires – exemple détaillé

0 0 0 0 0 0

0 0 0 0 0 0

0 0 255 255 255 0

0 0 255 255 255 0

0 0 0 0 0 0

? ? ? ? ? ?

0 0 0 0 0 0

0 0 -255 -255 -255 0

0 0 0 0 0 0

0 0 255 255 255 0

0 1 0 0 -1 0 0 0 0

0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0

Idem: … Idem:

Page 3: Filières microtechniques et électronique et automatisation

3

Robotique et automatisation, JDZ/JDD 20.04.2011 13

1 1

0 0 0 0 1 0 0 0 0 passe-tout moyenneur

vertical (facteur1/2)

3.2.1 Filtres linéaires – cas de base

0 255

0 0 128 255 … 128

Image test:

Noyaux/filtres:

Résultats: inchangée floue en vertical

Robotique et automatisation, JDZ/JDD 20.04.2011 14

1 -1

Sobel: 1 0 -1 2 0 -2 1 0 -1

Extracteur de bords horizontaux:

3.2.1 Filtres linéaires – cas de base

0 255

1 1 1 1 1

-1 -1 4 -1 -1

Effets approximatifs, passe-bas et passe-haut: Image test:

Robotique et automatisation, JDZ/JDD 20.04.2011 15

3.2.1 Filtres linéaires – Amplitudes ou poids du noyau

x

x

x -1 1

Extracteur de bords verticaux

Moyenneur (facteur 1/9)

x

Robotique et automatisation, JDZ/JDD 20.04.2011 16

Original Filtré passe-bas (Gaussien r=5)

3.2.1 Filtres linéaires – exemples

x

Robotique et automatisation, JDZ/JDD 20.04.2011 17

3.2.1 Filtres linéaires – exemples Filtrage passe-bas

Robotique et automatisation, JDZ/JDD 20.04.2011 18

3.2.1 Filtres linéaires – exemples

-1 1

Extraction de bords verticaux

+ gris moyen

Page 4: Filières microtechniques et électronique et automatisation

4

Robotique et automatisation, JDZ/JDD 20.04.2011 19

Filtré passe-haut (r=4) Extraction de bords

3.2.1 Filtres linéaires – exemples

Robotique et automatisation, JDZ/JDD 20.04.2011 20

3.2.1 Filtres linéaires – exemples

Extraction de bords

Robotique et automatisation, JDZ/JDD 20.04.2011 21

3.2.1 Filtres linéaires – exemples

Extraction de bords

Robotique et automatisation, JDZ/JDD 20.04.2011 22

-1 0 1-1 0 1-1 0 1

= 111

* -1 0 1 ; 1 2 12 4 21 2 1

= 1 11 1

* 1 11 1

3.2.1 Filtres linéaires – composition de filtres élémentaires

[-1 0 1] = [-1 1] * [ 1 1 ]

Robotique et automatisation, JDZ/JDD 20.04.2011 23

3.2.1 Filtres linéaires – exemple: orientation des bords

Image test Résultats avec Roberts, orientation estimée sur tous les bords: Atan4(Rx, Ry)

Robotique et automatisation, JDZ/JDD 20.04.2011 24

Original Dilatation des 1 Érosion des 0

3.2.1 Filtres non-linéaires – cas de base

0 0 0 0 0 0

0 0 0 0 0 0

0 0 1 1 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 1 1 0 0

0 1 1 1 1 0

0 0 1 1 0 0

0 0 0 0 0 0

Page 5: Filières microtechniques et électronique et automatisation

5

Robotique et automatisation, JDZ/JDD 20.04.2011 25

Original + bruit Addition de bruit puis filtre médian (r=2)

0 0 4 23 132 190 250 255 255 Ex.:

Robotique et automatisation, JDZ/JDD 20.04.2011 26

filtre médian Détail du « E » (coin haut gauche)

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 0 0

La médiane donne « 0 » dans les coins

Robotique et automatisation, JDZ/JDD 20.04.2011 27

AB

O O 1 O O O 1 1 1 O 1 1 1 1 1 O 1 1 1 O O O 1 O O

Fig. 3.10 Un élément structurant (B) est représenté en deux positions. Dans l'une, il est

entièrement inscrit dans l'objet A. Dans le deuxième, ce n'est pas

le cas.

Fig. 3.11 Elément structurant; sous forme graphique

simplifiée (gauche) et sous forme de matrice de pixels

booléens (droite).

Morphologie mathématique

Robotique et automatisation, JDZ/JDD 20.04.2011 28

AB

A B-

A

A B+

Fig. 3.12 Erosion de l'objet A par l'élément structurant B (gauche) et dilatation du même objet (droite)

Robotique et automatisation, JDZ/JDD 20.04.2011 29

Fig. Squelettisation: un pixel indispensable pour la continuité du bord est maintenu (A), sinon on peut le supprimer (cas B)

A 1 0 11 1 10 0 1

B 1 1 11 1 00 0 0

Robotique et automatisation, JDZ/JDD 20.04.2011 30

Labellisation

Exemple de traitement d’image avec Boorland C++

Il y a aussi des cas intermédiaires : librairie de fonctions C++ correspondant à Inspector (Matrox Image Library). Ou encore le « standard » OpenCV ; ou encore

Videolab sur nos PC (Source: Conti 2008, dipl. LaRA).

Page 6: Filières microtechniques et électronique et automatisation

6

Robotique et automatisation, JDZ/JDD 20.04.2011 31

Labellisation Principe de la méthode 1 - accès à 2 lignes à la fois Traiter l’image de gauche à droite, de haut en bas: -si blanc, avancer au pixel suivant -si noir - si pas de voisin noir, en haut ou à gauche: nouvelle étiquette (+1) - si voisin noir, en haut ou à gauche: même étiquette

0000000000000000000000000000000

000000000000000000000000000000000000000000000000000000000111

00000000000000000000000000000000000000000000000000000000011111

000000000000000000000000000000000000000000000000000000000000000000111110000000000000001

0000000000000000000000000000000000000000000000000000000000000000001111100000000000000011111000000000 00000011111000222

0000000000000000000000000000000000000000000000000000000000000000001111100000000000000011111000000000 00000011111000222222 0000000000000022 …

Robotique et automatisation, JDZ/JDD 20.04.2011 32

Labellisation Principe de la méthode 2 - traitemement récursif Traiter l’image de gauche à droite, de haut en bas: -si blanc, avancer au pixel suivant -si noir - nouvelle étiquette (+1) - puis, de façon récursive, jusqu’à ce que tous les voisins noirs soient traités: même étiquette et même traitement pour ces voisins noirs (chaque pixel a 4 voisins immédiats).

0000000000000000000000000000000

000000000000000000000000000000000000000000000000000000000111 11

00000000000000000000000000000000000000000000000000000000011111 11111 11111

0000000000000000000000000000000000000000000000000000000000000000001111100000000000000011111000000000 00000011111000

0000000000000000000000000000000000000000000000000000000000000000001111100000000000000011111000000000 00000011111000222 22

0000000000000000000000000000000000000000000000000000000000000000001111100000000000000011111000000000 00000011111000222222 222 222 222

Robotique et automatisation, JDZ/JDD 20.04.2011 33

Exemple de Matrox Inspector (source Conti 2008)

Robotique et automatisation, JDZ/JDD 20.04.2011 34

Exemple avec Labview (source Conti 2008)

Robotique et automatisation, JDZ/JDD 20.04.2011 35

Exemple avec Labview (source Conti 2008)

Robotique et automatisation, JDZ/JDD 20.04.2011 36

Exemple avec Labview (source Conti 2008)

Page 7: Filières microtechniques et électronique et automatisation

7

Robotique et automatisation, JDZ/JDD 20.04.2011 37

Exemple avec Labview (source Conti 2008)

Vision: Apprentissage de positions

N° du trou Pos. X [mm]

Pos. Y [mm]

39 7.734 1.596

12 (haut) 0.776 1.551

7 7.769 1.646

12 (bas) 7.743 1.596

Robotique et automatisation, JDZ/JDD 29.11.2016 38

(source Manip. 39 Bosch-Delta, PFG, 2016)

Vision: Exemple Cognex pour prise de balle

Robotique et automatisation, JDZ/JDD 20.04.2011 39

3 Traitement bidimensionnel d'images 3.1 Opérations par pixels individuels (point par

point) 3.2 Modifications des pixels d'après leur

voisinage 3.3 Opérations globales ou par régions 3.4 Détection de mouvement 3.5 Transformée en cosinus 3.6 Temps de traitement

Robotique et automatisation, JDZ/JDD 20.04.2011 40

•  3.3 Opérations globales ou par régions •  Fenêtres avec déplacement, rééchantillonnage

et rotation •  Transformation des coordonnées spatiales •  Codage (yc. transformées) •  Voir aussi Vision-Partie 3: reconnaissance de

formes avec méthodes statistiques, telles que corrélation

Robotique et automatisation, JDZ/JDD 20.04.2011 41 Robotique et automatisation, JDZ/JDD 20.04.2011 / 29.01.2016 42

Traitement d’image avec opération sur les coordonnées spatiales (“Pinch”)

Page 8: Filières microtechniques et électronique et automatisation

8

Robotique et automatisation, JDZ/JDD 20.04.2011 43

Traitement d’image avec opération sur les coordonnées spatiales - exemple

Robotique et automatisation, JDZ/JDD 20.04.2011 44

Code de plage - RLE

0 0 0 0 0 0 0

0 0 1 1 1 0 0

0 0 1 1 1 0 0

0 0 1 1 1 0 0

1 0 0 0 0 0 0

0 0 0 0 0 0 0

Code: 7 2,3,2 2,3,2 0,1,6 7

Note: Principe. Conventions: démarre par « 0 » ; codage par ligne.

Robotique et automatisation, JDZ/JDD 20.04.2011 / 29.01.2016

45 Robotique et automatisation, JDZ/JDD 20.04.2011 46

transformée en cosinus

Re-quanti-fication

Code de longueur

variable

8

8

Zigzag

Robotique et automatisation, JDZ/JDD 20.04.2011 / 19.01.2016

47 Robotique et automatisation, JDZ/JDD 20.04.2011 48

Code de Huffman -  VLC (code de longueur variable) -  Code court pour éléments fréquents -  la longueur moyenne du code tend vers la limite théorique (minimum absolu) ABABABABABABACCD 1.  Estimer les fréquences: A B C D

7 6 2 1 2. Ordonner de façon croissante

1  2 6 7 3. Regrouper les deux valeurs les plus basses

1 et 2: 3 6 7 4.  Réorganiser (ordonner à nouveau):

3 et 6: 9 7 7 9 7 et 9: 16

Page 9: Filières microtechniques et électronique et automatisation

9

Robotique et automatisation, JDZ/JDD 20.04.2011 49

5. Construire l’arbre en ordre inverse des changements 16 0 / \ 1 9 7 A 0 / \ 1 3 6 B 0 / \ 1 1 2 C D 6. Conclusion: A:1, B:01, C: 001, D: 000

Robotique et automatisation, JDZ/JDD 20.04.2011 50

Robotique et automatisation, JDZ/JDD 20.04.2011 / 19.01.2016

51 Robotique et automatisation, JDZ/JDD 20.04.2011 52

Transfor- mée en cosinus

Code de longueur variable (Huffman)

Robotique et automatisation, JDZ/JDD 20.04.2011 / 19.01.2016

53 Robotique et automatisation, JDZ/JDD 20.04.2011 54

Code de type LZW

Page 10: Filières microtechniques et électronique et automatisation

10

Robotique et automatisation, JDZ/JDD 20.04.2011 55

Code de type LZW

Robotique et automatisation, JDZ/JDD 20.04.2011 56

•  3 Traitement bidimensionnel d'images •  3.1 Opérations par pixels individuels (point par

point) 28 •  3.2 Modifications des pixels d'après leur

voisinage 29 •  3.3 Opérations globales ou par régions 39 •  3.4 Détection de mouvement 45 •  3.5 Transformée en cosinus 46 •  3.6 Temps de traitement 46

Robotique et automatisation, JDZ/JDD 20.04.2011 57

I I+1

Robotique et automatisation, JDZ/JDD 20.04.2011 58

•  3 Traitement bidimensionnel d'images •  3.1 Opérations par pixels individuels (point par

point) 28 •  3.2 Modifications des pixels d'après leur

voisinage 29 •  3.3 Opérations globales ou par régions 39 •  3.4 Détection de mouvement 45 •  3.5 Transformée en cosinus 46 •  3.6 Temps de traitement 46

Robotique et automatisation, JDZ/JDD 20.04.2011 59

X(m,n)= 4C(m)C(n)N2 k= 0

N −1

∑ x(k,l)cos 2k +1( )mπ2Nl= 0

N −1

∑ cos 2l +1( )nπ2N

x(k,l) =m= 0

N −1

∑ C(m)C(n)X(m, n)cos 2k +1( )mπ2Nn= 0

N −1

∑ cos 2l +1( )nπ2N

3.5 Transformée en cosinus La transformée en cosinus 2D d’une image x(k,l) est donnée par l’équation suivante:

où m,n= 0, ..., N-1, et les coefficients C(m), C(n) valent 1 (sauf si m ou n = 0, auquel cas ils valent 1/√2). La transformée inverse est donnée par l’équation suivante:

Cette transformée s’opère sur des blocs 8x8 dans les normes JPEG et MPEG

Robotique et automatisation, JDZ/JDD 20.04.2011 60

•  3 Traitement bidimensionnel d'images •  3.1 Opérations par pixels individuels (point par

point) 28 •  3.2 Modifications des pixels d'après leur

voisinage 29 •  3.3 Opérations globales ou par régions 39 •  3.4 Détection de mouvement 45 •  3.5 Transformée en cosinus 46 •  3.6 Temps de traitement 46

Page 11: Filières microtechniques et électronique et automatisation

11

Robotique et automatisation, JDZ/JDD 20.04.2011 61

•  3 Traitement bidimensionnel d'images

•  3.1 Opérations par pixels individuels (point par point)

•  3.2 Modifications des pixels d'après leur voisinage

•  3.3 Opérations globales ou par régions

•  3.4 Détection de mouvement

•  3.5 Transformée en cosinus

•  3.6 Temps de traitement

•  3.7 Conclusion concernant le traitement 2D

Robotique et automatisation, JDZ/JDD 20.04.2011 62

3.7 Conclusion concernant le traitement 2D

•  Traitement simple et « parfait » au niveau des pixels indépendamment les uns des autres

•  Traitement très courant et classique en théorie et dans les produits du marché (logiciel, matériel), lorsque des noyaux sont considérés –  Limites:

•  résolution faible si le noyau est grand;

•  variété de traitements faible si le noyau est petit

•  Cas spéciaux: labellisation, codage, travail dans des fenêtres à résolution x-y paramétrable, réorientées