Bioinformatique
Automatisation d’analyse de données biologique
Franck DELAVOIE Université Paul Sabatier Département Biologie et Géosciences Laboratoire de biologie moléculaire eucaryote Bât. IBCG – CNRS
franck.delavoie@biotoul.fr L2S4
AUTOMATISATION D' ANALYSES DE DONNEES BIOLOGIQUES
IMAGES QUANTIFICATION
Nombre
Dimensions
Intensité signal Répétitif
Reproductible Beaucoup
de data
ORDINATEUR ELECTRONIQUE
AUTOMATE Rapidité
Quelle type d’image ? Image matricielle
- Une image matricielle est composée de pixel.
Qu'est ce qu’une image numérique matricielle ?
- Pixel est la contraction de PIcture Element.
- Le pixel est la plus petite unité de surface d’une image.
Carré Taille identique Une couleur valeur(s)
154 200 45 89 87 4 20
10 100 45 122 145 47 45
123 124 156 123 123 123 120
154 147 168 168 220 223 225
226 200 100 50 20 30 35
24 25 26 28 65 69 64
20 52 22 63 123 135 146
Image Matrice
x y
(x,y) = valeur
Exemple : (5,3) = 20
Résolution spatiale : nombre pixel / image
65536 pixels
4096 pixels 1024 pixels
• 16 valeurs : 4 bits
• 256 valeurs : 8 bits
• 65 536 valeurs : 16 bits
Codage d’une image matricielle
Nb de valeur = 2
nb bit=> 256 valeurs = 2
8poids informatique d’un pixel
=> 8 bits = 1 octet/pixel
=> 4 bits = 0.5 octet/pixel
=> 4 bits = 2 octets/pixel
Résolution tonale : nombre couleur / pixel
64 niveaux gris
8 niveaux gris noir ou blanc
• Image binaire donc codage 1 bit => 21= 2 donc soit blanc soit noir
1 0 0 0 0 0 0
1 1 1 1 0 0 0
0 0 0 1 1 1 0
0 0 0 0 0 1 0
0 0 0 0 0 1 0
0 0 0 0 0 1 1
0 0 0 0 0 0 1
= 1
= 0
Image Matrice
3 1 1 1 0 0 0 3 3 3 3 0 0 0 0 0 0 3 3 3 0 0 0 0 2 2 3 0 0 0 0 0 0 3 0 0 0 0 0 0 3 3 2 0 0 0 0 0 3
• Image codée en 2 bits (22 = 4 niveaux de gris).
= 3
= 0 = 2
= 1
• Image en niveaux de gris codée entre 0 et 255 (8 bits = 28 valeurs = 256)
Image Matrice
255 0
Image Matrice
LUT
LUT jaune LUT niveau de gris
LUT ve rte
LUT (Look-Up Table)
Image en fausses couleurs
Image « vraie couleur » ?
• 110 à 125 millions
• Perception achromatique
• Très sensible (1 seul photon)
➔ Responsable de la vision de nuit ou en conditions de faible éclairage
• Responsable de la vision périphérique, perception de plus faible résolution mais sensible au mouvement
Les Bâtonnets Les cônes
• 4 à 7 millions concentrés au centre de la rétine
• Perception chromatique
• 3 types de cellules : Cônes L, M et S
• Responsable de la vision centrale haute résolution et en couleur
• Moins sensibles que les bâtonnets
Proportion des cellules pour chaque gamme de
longueur d'onde Sensibilités spectrales
des cônes L, M et S
Bleu Vert Rouge
Image couleur basée sur la vision humaine
Une image couleur corresponds à une superposition de 3 plans : Rouge / Vert / Bleu (RGB = Red / Green / Blue)
Image couleur = codage RGB
=
8bits
8bits
8bits +
+
RGB = 24bits 24 bits => 224 = 16 777 216 couleurs (TrueColor)
=
(0,0) = (35,35,35) (2,4) = (132,140,140)
Histogramme d’une image
Distribution des niveaux gris de l’image.
➠ Compter le nombre de pixel possédant un même niveau de gris.
Histogramme d’une image
8 bits => 28 niveaux de gris = 256
Dynamique des niveaux de gris
Histogramme d’une image
16 bits => 216 niveaux de gris = 65536
Dynamique des niveaux de gris
Histogramme d’une image RGB ?
AutoFocus
Histogramme
AutoContraste
AutoContraste
+ la différence entre les valeurs des pixels sombres et clairs est importante + l’image est contrastée
• Pour avoir une image bien contrastée, l’histogramme doit présenter une distribution uniforme des niveau gris => grande dynamique
• Pour améliorer le contraste d’une image : étirement de l’histogramme.
AutoContraste
AutoContraste AutoFocus
➔ Plus une image est floue, moins elle est contrastée
154 200 45 89 87 4 20
10 100 45 122 145 47 45
123 124 156 123 123 123 120
154 147 168 168 220 223 225
226 200 100 50 20 30 35
24 25 26 28 65 69 64
20 52 22 63 123 135 146
154 200 45 89 87 4 20
10 100 45 122 145 47 45
123 124 156 123 123 123 120
154 147 168 168 220 223 225
226 200 100 50 20 30 35
24 25 26 28 65 69 64
20 52 22 63 123 135 146
154 200 45 89 87 4 20
10 100 45 122 145 47 45
123 124 156 123 123 123 120
154 147 168 168 220 223 225
226 200 100 50 20 30 35
24 25 26 28 65 69 64
20 52 22 63 123 135 146
154 200 45 89 87 4 20
10 100 45 122 145 47 45
123 124 156 123 123 123 120
154 147 168 168 220 223 225
226 200 100 50 20 30 35
24 25 26 28 65 69 64
20 52 22 63 123 135 146
Segmentation
La segmentation permet de séparer les régions d'intérêt du fond, d'isoler les objets sur lesquels doit porter l'analyse.
Segmentation
Seuillage Texture
La segmentation d'images est l'un des problèmes phares du traitement d'images
Croissance Région Ondelette
Transformée de Hough
Texture Croissance Région
Split & Merge
➲ Segmentation d’image en régions homogènes Segmentation par texture
Segmentation par texture
Segmentation par texture
Segmentation par croissance de région (region growing)
1. On initialise la région R à un pixel un groupe de pixels (seed).
2. On ajoute à R tous les pixels voisins de R qui sont suffisamment semblables à R L'ordre dans lequel les régions sont construites a une grande influence sur le résultat.
Segmentation par croissance de région (region growing)
Segmentation par seuillage
8 bits => 256 niveaux gris
Objets => Pixel noir Fond => Pixel blanc
154 200 45 89 87 4 20
10 100 45 122 145 47 45
123 124 156 123 123 123 120
154 147 168 168 220 223 225
226 200 100 50 20 30 35
24 25 26 28 65 69 64
20 52 22 63 123 135 146
650 X 515 pixels = 334750 pixels
1bit => Noir ou Blanc
Objets ? Fond ?
Segmentation par seuillage
Binarisation
39
• Le seuillage consiste à mettre à zéro tous les pixels ayant un niveau de gris inférieur à une certaine valeur (appelée seuil, en anglais treshold) et à la valeur 1 les pixels ayant une valeur supérieure.
➔ image binaire contenant des pixels noirs et blancs (binarisation).
seuil blanc noir
Segmentation par seuillage Segmentation par seuillage
Pixels « objet » Pixels « fond »
10 143 162 100 45 10 135 200 136 46 122 125 155 135 120
15 111 145 52 33
21 12 133 45 10
Seuil = 50
10 143 162 100 45 10 135 200 136 46 122 125 155 135 120
15 111 145 52 33
21 12 13345 10 Objet Fond Seuil = 40
10 143 162 100 45 10 135 200 136 46 122 125 155 135 120
15 111 145 52 33
21 12 133 45 10
Seuil = 110
10 143 162100 45 10 135 200 136 46 122 125 155 135 120 15 111 14552 33 21 12 13345 10 Segmentation par seuillage
Pixels « objet » Pixels « fond »
Pixels « objet » Pixels
« fond »
138 > Pixel objet > 255
32 > Pixel objet > 255
« Valide » Segmentation par seuillage
Image binaire
➔ Noir = objet
➔ Blanc = fond
Image initiale
Erosion Dilatation
Elimine les pixels isolés et érode les contours des objets Elimine les trous isolés dans les objets et dilate les
contours des objets Filtrage morphologique
Seuillage Binarisation
Erosion
Fill holes Analyse particles
Superposition des masques
Watershed
1) Ultimate eroded points 2) Dilate as far as possible
watershed
Taille du pixel ? Dimensions réelles des objets
Calibration
Taille du pixel
0,1 micron / pixel 10 pixels = 250 nm
Taille du pixel
0,1 micron / pixel 10 pixels = 250 nm
1 micron
Une taille d’objet connue dans l’image
1 micron
Automatisation du traitement d’image
Macro
MACRO
• Automatiser les tâches répétitives
• Documenter ce que vous avez fait
• Partager des procédures communes
MACRO C’est quoi ?
Un script (ou programme) permet d’automatiser l’exécution de plusieurs actions successives à partir d’un logiciel
Exemple : Macro « changement_texte » dans Word
➔ Taille police de 12
➔ Police en gras
➔ Remplacer les points par des virgules
Il pleut. c’est nul. Il pleut, c’est nul,
MACRO : Quelques notions
• Les fonctions => Actions déjà prédéfinis dans le logiciel
Ex: - changement taille police - Appliquer filtre médian
• Les variables : nombre ou texte qui défini un état ou une caractéristique d’une fonction
Ex: - changement taille police (fonction) en 12 (variable)
Les macros ne sont pas écrites à partir de zéro, mais enregistrés en utilisant l'enregistreur de macros
MACRO : Quelques notions
Exemple de macro
run("8-bit");
run("Set Scale...", "distance=240 known=8 pixel=1 unit=micron");
setAutoThreshold("Default dark");
//run("Threshold...");
setThreshold(43, 255);
run("Convert to Mask");
run("Fill Holes");
run(« Watershed");
run("Set Measurements...", "area perimeter decimal=2 »);
run("Analyze Particles...", "size=1-Infinity circularity=0.5-1.00");
Changement codage en 8bits
Bruit fond = pixels noirs donc objet= pixels clairs Segmentation par seuillage pixels « objet » = 43 - 255 et pixel « fond » < 43
binarisation
« remplir trou »
Les mesures seront : l’aire et le périmètre des objets Analyse des objets contenus dans l’image mais uniquement ceux qui ont une surface > 1 micron2 et une circularité > 0.5
Calibration