filières microtechniques et électronique et automatisation
Post on 20-Jun-2022
4 Views
Preview:
TRANSCRIPT
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)
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:
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
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
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).
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)
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”)
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
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
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
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
top related