La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Images numériques et analyse d’images

Présentations similaires


Présentation au sujet: "Images numériques et analyse d’images"— Transcription de la présentation:

1 Images numériques et analyse d’images
Partie 1 Installation de Image J Structure des images numériques Mesures de distance – calibration Analyse de profil Analyse de densité Luminosité – contraste – LUT Calibration spatiale Décomposition d’une image couleur Types d’images – taille mémoire Seuillage et comptage d’objets Opérations sur images binaires Films

2 Installation de ImageJ
Logiciel de traitement et d’analyse d’images utilisant le langage Java Image J user guide Sites d’information supplémentaires : Macbiophotonics: Wiki: Burger and Burge : Digital Image Processing, An Algorithmic Introduction using Java; Springer Verlag, 2008

3 Structure des images numériques
Image monochrome : tableau de niveaux de gris La valeur des niveaux de gris est comprise entre 0 et 255 = 28 – 1 pour une image 8-bit 1 N° ligne 1 Niveau de gris Pixel 4, 2 N° colonne Ouvrir image : file/open sample « dot blot » Observer l’histogramme des niveaux de gris : analyze/histogram 

4 Luminosité – contraste – facteur gamma
Corrections linéaires : brightness & contrast Avec image/adjust/brightness and contrast , modifier la luminosité et le contraste de l’image Faire de même avec image/adjust/window-level Reset : retour à l’image d’origine Apply : applique les modifications sur l’image Important : les pixels supérieurs à 255 ou inférieurs à 0 sont tronqués à 255 ou 0 à la suite de la transformation Correction non-linéaire : facteur gamma Applies the function f (p) = (p/255)γ × 255 to each pixel (p) in the image or selection, where 0.1 ≤ γ ≤ 5.0. For RGB images, this function is applied to all three color channels. For 16–bit images, the image min and max are used for scaling instead of 255. Process/maths/gamma

5 Pixel intensity transfer function and LUT : Look-up Table
Fonction de transfert : valeur finale du pixel = F(valeur initiale du pixel) Histogramme des niveaux de gris de l’image de départ LUT Valeur finale du pixel Inversion: image/look-up tables/invert LUT Fausses couleurs : image/look-up tables Valeur initiale du pixel

6 Analyse de densité Ouvrir image : file/open samples « dot blot »
Définir un « Area of Interest » circulaire de la taille des spots Sauvegarder l’AOI : edit/selection/add to manager Se familiariser avec l’AOI manager Définir les mesures à effectuer : Analyze/set measurements Sélectionner : area, standard deviation, integrated density, mean grey value Placer l’aire d’intérêt sur les spots et mesurer avec analyze/measure Placer l’aire d’intérêt sur le fond et mesurer avec analyze/measure Sauvegarder le fichier de résultats et créer un histogramme dans Excel de l’intensité spécifique (signal – fond).

7 Analyse de profils Ouvrir image : file/open samples « gel »
Définir un « Area of Interest » rectangulaire de la taille des pistes du el Sauvegarder l’AOI : edit/selection/add to manager Sélectionner la première piste : analyze/gel/select first lane Sélectionner les pistes suivantes : analyze/gel/select next lane Construire les profils : Edit/selection/profile plot : vérifier que « vertical profile » est sélectionné Analyze/gels/gel analyser options : sélectionner « uncalibrated OD » et « invert peaks » Analyze/gels/plot lanes Tracer une ligne de base sous chaque pic Avec la « baguette magique » (magic wand), calculer l’aire sous les pics Sauvegarder le fichier de résultats et créer un histogramme dans Excel de l’intensité des pics principaux.

8 Uncalibrated Optical Density (OD)
Dans une image d’absorbance, les niveaux de gris doivent être convertis en uncalibrated OD pour que le signal mesuré soit proportionnel à la concentration. Attention, ce n’est pas le cas pour des images de fluorescence ou de luminescence. I I0 Loi de Beer-Lambert : I = I0 exp(- e.C.L)  C = constante x ln(I0/I) L C I0 Selecting Uncalibrated OD from the popup menu causes ImageJ to convert gray values to uncalibrated optical density values using the function Uncalibrated OD = log10(255 / PixelValue) You do not need to measure OD standards or enter known OD values to enable this feature.

9 Décomposition d’une image couleur
Une image couleur est composée de trois images en niveau de gris superposées : Vert, rouge, bleue Hue, saturation, brightness (teinte, saturation, luminosité) Ouvrir image : file/open sample « fluorescent cell » Image/color/make composite : sélectionner l’image superposée ou les couleurs séparées Avec Image/B&C : ajuster luminosité et contraste pour chaque couleur Superposer les couleurs et sauvegarder l’image obtenue

10 Mesure de distances – calibration
Ouvrir image : file/open samples « leaf » Séparer les images en niveau de gris : image/color/split channels Créer les histogrammes en niveau de gris des trois images rouge, vert, bleu Quelle est l’image non saturée la plus contrastée ? Créer de nouvelles images couleur en combinant les images séparées avec image/color/merge channels Avec l’image en niveau de gris la plus contrastée, utiliser l’échelle et « profile plot » pour déterminer la calibration spatiale de l’image (mm par pixel) Ou bien utiliser analyze/set scale Puis mesurer la hauteur et l’angle au sommet de la feuille Avec image/transform, on peut changer l’orientation Avec image/crop, on peut enlever une partie de l’image

11 Type d’images – taille mémoire
Types de pixels : 2-bit images (black and white) 8–bit Images that can display 256 (28) gray levels (integers only). 16–bit Images that can display 65,536 (216) gray levels (integers only). 32–bit Images that can display 4, 294, 967, 296 (232) gray levels (real numbers). In 32–bit images, pixels are described by floating point values and can have any intensity value. RGB Color Color Images that can display 256 values in the Red, Green and Blue channel. These are 24–bit (23×8) images. RGB color images can also be 32–bit color images (24–bit color images with additional eight bits coding alpha blending values, i.e., transparency). Taille mémoire (8-bit = 1 octet = 1 byte) Formats d’images : TIFF: pas de compression ou compression sans perte d’information JPEG: les images sont compressées, généralement à 1/10 de leur taille. La perte d’information est invisible GIF; PNG : couleurs compressées; transparence AVI, MOV : format de films

12 Warning on JPEG Compression
The JPEG format uses lossy compression that leads to severe artifacts that are not compatible with quantitative analyses. As such, it should only be used for presentation purposes (if file size is an issue), but even then a lossless format such as PNG is probably more suitable. The illustration below exemplifies the consequences of saving images in a lossy format. To replicate it, open the Mandrill sample image (by drag and drop, or alternatively using File ◃ Import ◃ URL. . . and typing the image’s path, duplicate it (Image ◃ Duplicate. . . [D]), save the duplicate as JPEG (File ◃ Save As ◃ Jpeg. . . ), run File ◃ Revert [r] (so that the saved version is reloaded by ImageJ) and calculate the difference between the two images using Process ◃ Image Calculator. . . By adjusting the Brightness/Contrast. . . [C], you will notice that the imperceptible JPEG artifacts are most pronounced along regions of higher contrast changes. In addition to this edge artifact, the JPEG algorithm may shift colors to improve compression which may lead to artificial colocalization. These artifacts are intrinsic to the format and may persist even if JPEG Quality has been increased to 100 in Edit◃Options◃Input/Output... Once an image has been lossy compressed there is no way of reverting it to the original. Given all this, and since Metadata is poorly supported in lossy formats, it is unreasonable to use JPEG in image processing.

13 Seuillage et comptage d’objets
LUT Valeur finale du pixel Intensité du pixel Position du pixel Valeur initiale du pixel

14 Seuillage et comptage d’objets
Ouvrir image : file/open samples « embryo » Séparer les images en niveau de gris : image/color/split channels Créer les histogrammes en niveau de gris des trois images rouge, vert, bleu Choisir l’image en niveau de gris la plus contrastée Faire varier le seuil sur : image/adjust/threshold  que se passe-t-il lorsqu’on augmente le seuil Uniformiser le fond : process/subtract background Choisir le seuil : image/adjust/threshold Sélectionner les mesures : analyze/set measurements Analyser l’image : analyze/analyze particle size : > 50 pixels exclude on edges include holes Sauvegarder les résultats dans Excel Remarquer que certains embryons sont fusionnés Appliquer : process/binary/erode Et recommencer Ouvrir l’image : file/open samples « cell colonies »  compter les colonies

15 Erosion, dilatation, et autres opérations
Ces transformations s’appliquent sur des images binaires (noir et blanc) La valeur finale d’un pixel dépend de la valeur initiale de plusieurs pixels Ouvrir Files/Open sample/Blobs Image/Adjust/Threshold enlever “dark background” puis Apply Save as “blobs mask” Sur l’image “blobs mask” essayer les transformations suivantes : Process/Binary/ Erode : érosion (enlève 1 pixel sur les contours) Dilate : dilatation (ajoute 1 pixel sur les contours) Open : érosion + dilatation (arrondit les objets et enlève les petits objets) Close : dilatation + érosion (arrondit les objets et remplit les trous) Outline : génère les contours (ligne de 1 pixel) Watershed : sépare des objets attachés Voronoi : sépare des zones autour des objets Utiliser aussi Process/ImageCalculator pour faire des opérations sur les images (pixel à pixel)

16 Films ImageJ peut représenter plusieurs images successives en temps ou en volume dans la même fenêtre : ce type de fichier est appelé ‘stacks’ (pile). Les images d’une pile sont appelées ‘slice’ ou ‘frame’. On appelle voxel (volumetric pixel) un élément d’une pile d’image 3D. Commandes disponibles : Image/stacks : add slice delete slice next slice previous slice set slice Ouvrir image : file/open samples « confocal series » Générer les vues xz et yz (orthogonal views) Evaluer le volume du noyau images to stack stack to image make montage reslice orthogonal views z project 3D project plot z axis profile label tools

17 Images numériques et analyse d’images
Partie 2 Macros, plugins et scripts Enregistrement et exécution de macros Langage de programmation Java Ecriture de macros Conditions, itérations et boucles Utiliser une macro existante Gestion des fichiers Appeler une macro dans un programme Gestion des résultats dans un tableau Informations supplémentaires

18 Macros, plugins et scripts
The easiest way to execute a series of ImageJ commands. The ImageJ macro language – a Java-like language – contains a set of control structures, operators and built-in functions and can be used to call built-in commands and other macros. Macro code is stored in text files ( .txt and .ijm extensions). A macro is a simple program that automates a series of ImageJ commands. The easiest way to create a macro is to record a sequence of commands using the command recorder (Plugins ◃ Macros ◃ Record. . . ). Plugins Much more powerful, flexible and faster than macros (most of ImageJ’s built-in menu commands are actually plugins) but harder to write and debug. Plugins are written in the Java programming language ( .java source files) and compiled to .class files. Scripts ImageJ uses the Mozilla Rhino interpreter to run JavaScripts. Similarly to plugins, scripts have full access to all ImageJ and Java APIs (Application Programming Interfaces) but do not need to be compiled (scripts and macros run interpretively). On the other hand, scripts lack the simplicity of macro language and feel less integrated in ImageJ.

19 Enregistrement de macros
Exemple n°1 : Ouvrir : file/open samples/blobs Plugins/macros/record Image/adjust/threshold Apply Analyze/analyze particles Size > 20 pixel2 ; outlines Save “result” sur le bureau Dans la fenêtre “macro” : create Enregistrer la macro dans le dossier “macro” Fermer la fenêtre “macro” Rouvrir : file/open samples/blobs Plugins/macros/install Sélectionner la macro enregistrée Plugins/macros/ nom de la macro Plugins/macros/edit  nom de la macro Une fenêtre s’ouvre, qui enregistre toutes les commandes Sauvegarde de la macro : fichier .ijm (macro3.ijm) Installation de la macro La macro s’applique à l’image sélectionnée On peut aussi faire plugins/macros/run Lire le texte de la macro. Les instructions qui appellent les commandes des menus sont : run(“commande”,paramètres);

20 Ecrire une macro Exemple n°2 :
/* Code source de la macro “input print out calc”. Ici on n'est pas dans ImageJ, pas besoin de « _ » dans le nom de la classe */ macro "input_print_out_calc" { a = getNumber("a?", 10); b = getNumber("b?", 5); c = a*b; print("\\Clear"); print(c); //Affichage du texte } Plugins/new/macro Écrire le texte de la macro : Syntaxe : Il n’y a pas d’espace dans les noms de macro, seulement _. La première lettre est toujours une lettre en minuscule. { et } entourent les instructions de la macro (bloc) Chaque instruction se termine par ; Il n’est pas nécessaire de définir les variables Les fonctions renvoient une valeur, il n’y a pas d’espace dans les noms de fonction. La première lettre est toujours une lettre en minuscule. Les commentaires sont entourés de /* et */ Une ligne de commentaire est précédée de // Sauvegarder la macro : format txt macro1.txt

21 Faire fonctionner une macro
Plugins/Macro/Install Charger la macro sauvegardée précédemment Une ligne “input_print_out_calc” apparait en bas de la fenêtre Plugins/Macro Exécuter la macro en cliquant sur Plugins/Macro/“input_print_out_calc” On peut modifier la macro en utilisant Plugins/Edit Modifier la macro pour qu’elle calcule (a-b)/(a+b) au lieu de ab et qu’elle écrive « (a-b)/(a+b)  = » puis la valeur calculée.

22 Conditions Condition unique : if
if(la_condition) {bloc de code pour la condition juste} else {bloc de code pour la condition fausse} Pour plus d’une condition : switch switch(variable_a_tester) { case 1 : valeur n°1 du test bloc de code Break; case 2 : valeur n° du test bloc de code break; …etc… } default : Bloc de code si aucun case n'est vrai break ; } Dans la macro précédente, écrire une condition sur le signe de a et b Syntaxe : L'égalité entre deux nombres a et b se teste comme ceci : a == b != : différent > : supérieur < : inférieur >= : supérieur ou égal <= : inférieur ou égal Note : « case » doit toujours être un entier

23 Itérations et boucles Itérations : for
for(init_compteur;valeur_de_fin;incrementation_du_compteur) { bloc de code à répéter } Boucles : while et do while(condition à tester) { bloc de code pour la condition juste } do Note : le bloc est éxécuté au moins une fois Application : écrire une macro qui calcule n! = n.(n-1).(n-2)…3.2.1, pour n>0

24 Ecrire une macro Exemple n°3 :
Ouvrir : file/open samples/confocal series A l’aide d’une boucle « for » appliquer la macro aux 25 images du stack Ecrire une macro qui sépare les canaux rouge et vert, et calcule l’aire totale de l’aire verte, sur 1 image Enregistrer l’aire du noyau en fonction de z. Sachant que les coupes sont séparées de Dz = 1 µm, calculer le volume du noyau.

25 Utiliser une macro existante
Exemple n°4 : Charger la macro « ParticleLabelingExample » : plugins/macros/install et choisir la macro correspondante Exécuter la macro : cliquer sur le nom de la macro dans plugins/macros Observer ce qu’elle fait Visualiser le texte de la macro : plugins.macros/edit Pour bien comprendre les instructions, ouvrir « Image-J user guide.pdf » et « ImageJMacroLanguage.pdf », la liste des fonctions est page 8 Réutiliser cette macro pour analyser les colonies de l’image File/Open samples/Cell Colony (31K) - Réajuster le « threshold » - Inclure une instruction « Subtract background » - Colorer les colonies avec « Image/Lookup table/3-3-2 RGD - Sauvegarder la macro sous « ParticleLabelingExample2 »

26 Gestion des fichiers Ouvrir un fichier :
open("/chemin + nom complet du fichier") Opens and displays a tiff, dicom, fits, pgm, jpeg, bmp, gif, lut, roi, or text file. Displays an error message and aborts the macro if the specified file is not in one of the supported formats, or if the file is not found. Displays a file open dialog box if path is an empty string or if there is no argument. Use the File>Open command with the command recorder running to generate calls to this function. Sauvegarder un fichier : saveAs("nom de la fenêtre à sauver", "/chemin + nom complet du fichier") Saves the active image, lookup table, selection, measurement results, selection XY coordinates or text window to the specified file path. The format argument must be "tiff", "jpeg", "gif", "zip", "raw", "avi", "bmp", "fits", "png", "pgm", "text image", "lut", "selection", "measurements", "xy Coordinates" or "text". Use saveAs(format) to have a "Save As" dialog displayed. Fermer une image : close() Closes the active image. This function has the advantage of not closing the "Log" or "Results" window when you meant to close the active image. Note : il est commode de travailler sur un ensemble d’images en utilisant « stack »

27 Appeler une macro existante dans un programme
Exécuter une commande : run("command"[, "options"]) Executes an ImageJ menu command. The optional second argument contains values that are automatically entered into dialog boxes (must be GenericDialog or OpenDialog). Use the Command Recorder (Plugins>Macros>Record) to generate run() function calls. Use string concatentation to pass a variable as an argument. For examples, see the ArgumentPassingDemo macro. Exécuter une macro: runMacro(name) Runs the specified macro file, which is assumed to be in the Image macros folder. A full file path may also be used. The ".txt" extension is optional. Returns any string argument returned by the macro. May have an optional second string argument that is passed to macro. For an example, see the CalculateMean macro. See also: eval and getArgument. Utiliser un programme préenregistré dans ImageJ call("class.method", arg1, arg2, ...) Calls a public static method in a Java class, passing an arbitrary number of string arguments, and returning a string. Refer to CallJavaDemo for an example.

28 Gestion des résultats dans un tableau
Ajouter des data à un tableau existant : setResult("Column", row, value) Adds an entry to the ImageJ results table or modifies an existing entry. The first argument specifies a column in the table. If the specified column does not exist, it is added. The second argument specifies the row, where 0<=row<=nResults. (nResults is a predefined variable.) A row is added to the table if row=nResults. The third argument is the value to be added or modified. Call setResult("Label", row, string) to set the row label. Call updateResults() to display the updated table in the "Results" window. For examples, see the SineCosineTable and ConvexitySolidarity macros. Mettre à jour un tableau existant : updateResults() Call this function to update the "Results" window after the results table has been modified by calls to the setResult() function. Récupérer une valeur du tableau de résultats : getResult("Column", row) Returns a measurement from the ImageJ results table or NaN if the specified column is not found. The first argument specifies a column in the table. It must be a "Results" window column label, such as "Area", "Mean" or "Circ.". The second argument specifies the row, where 0<=row<nResults. nResults is a predefined variable that contains the current measurement count. (Actually, it's a built-in function with the "()" optional.) With ImageJ 1.34g and later, you can omit the second argument and have the row default to nResults-1 (the last row in the results table). See also: nResults, isNaN, getResultLabel.

29 Infos supplémentaires
Documentation et téléchargement de macros : Commandes d’imageJ : « Image-J user guide.pdf » Programmation des macros d’imageJ : « ImageJMacroLanguage.pdf » Langage Java pour ImageJ : « javapourimagej_final » Analyse de colocalisation :

30 Images numériques et analyse d’images
Partie 3 : auto-entraînement Recherche de colonies Comptage de cellules

31 1. Recherche de colonies Ouvrir l’image : « spots »
Chercher les colonies sombres sur les images rouges et vertes Créer une image composite avec les images binaires obtenues Conserver les colonies qui sont visibles à la fois en rouge et en vert dans une image binaire et les compter

32 2. Comptage de cellules Lire la notice des lames de numération Quick Read A l’aide du microscope, définir la taille d’un champ de prise de vue du microscope à l’objectif 5x et 10x. En déduire la relation entre le nombre de cellules comptées et la densité de cellules initiale. Ouvrir les images « propidium iodide.jpg » et « fluorescein diacetate.jpg ». Les marquages fluorescein diacetate et propidium iodide correspondent aux cellules dont la membrane plasmique est intacte ou perméable, respectivement. Ecrire une macro qui : - demande à l’utilisateur si l’image est 5x ou 10x - crée une image composite - compte le nombre de cellules rouges et vertes - calcule la densité cellulaire (nombre de cellules par mL) - calcule le pourcentage de cellules vivantes (viabilité) - affiche ces résultats dans un tableau Yeast Live:Dead Assay


Télécharger ppt "Images numériques et analyse d’images"

Présentations similaires


Annonces Google