1 / 32

Images numériques et analyse d’images

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

ray
Download Presentation

Images numériques et analyse d’images

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 http://rsb.info.nih.gov/ij/ Logiciel de traitement et d’analyse d’images utilisant le langage Java Image J user guide Sites d’informationsupplémentaires : Macbiophotonics: http://www.macbiophotonics.ca/imagej/ Wiki: http://imagejdocu.tudor.lu/ 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 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 Appliesthe function f (p) = (p/255)γ × 255 to each pixel (p) in the image or selection, where 0.1 ≤ γ ≤ 5.0. For RGB images, thisfunctionisapplied to all threecolorchannels. For 16–bit images, the image min and max are used for scalinginstead of 255. Process/maths/gamma

  5. Pixel intensitytransferfunction 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, integrateddensity, meangrey 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 nextlane • 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 « invertpeaks » • Analyze/gels/plot lanes • Tracer une ligne de base sous chaque pic • Avec la « baguette magique » (magicwand), 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) Dansune image d’absorbance, les niveaux de grisdoiventêtreconvertis en uncalibrated OD pour que le signal mesurésoitproportionnelà la concentration. Attention, cen’est pas le cas pour des images de fluorescence ou de luminescence. I I0 Loi de Beer-Lambert : I = I0exp(- 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/mergechannels • 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). • Taillemémoire(8-bit = 1 octet = 1 byte) • Formats d’images : • TIFF: pas de compression ou compression sans perted’information • JPEG: les images sontcompressées, généralementà 1/10 de leurtaille. La perted’informationest invisible • GIF; PNG : couleurscompressé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, http://imagej.nih.gov/ij/images/baboon.jpg), 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/analyzeparticle • size : > 50 pixels • exclude on edges • includeholes • 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 • ImageJpeut 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 « confocalseries» • Générer les vues xz et yz (orthogonal views) • Evaluer le volume du noyau images to stack stackto image makemontage 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 • Macros • 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 Unefenêtres’ouvre, qui enregistretoutes les commandes Sauvegarde de la macro : fichier .ijm (macro3.ijm) Installation de la macro La macro s’appliqueàl’imagesélectionnée On peutaussi 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”. Icion n'est pas dansImageJ, 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’espacedans les noms de macro, seulement _. La première lettreesttoujoursunelettre 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 fonctionsrenvoientunevaleur, iln’y a pas d’espacedans les noms de fonction. La première lettreesttoujoursunelettre en minuscule. Les commentairessontentourés de /* et */ Uneligne de commentaireestpré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 testbloc de codebreak;…etc… • }default :Bloc de code siaucun case n'estvrai • 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 • { • bloc de code pour la condition juste • } • while(condition à tester) Note : le bloc estéxécuté au moinsunefois 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/confocalseries • A l’aide d’une boucle « for » appliquer la macro aux 25 images du stack Ecrireune macro qui sépare les canaux rouge et vert, et calculel’airetotale de l’aireverte, sur 1 image Enregistrerl’aire du noyau en fonction de z. Sachantque les coupes sontsé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/CellColony (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 pathis an empty string or if thereis no argument. • Use the File>Open command with the command recorder running to generate calls to thisfunction. • Sauvegarder un fichier : • saveAs("nom de la fenêtre à sauver", "/chemin + nom complet du fichier") • Savesthe active image, lookup table, selection, measurementresults, selection XY coordinates or textwindow 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", "xyCoordinates" or "text". • Use saveAs(format) to have a "Save As" dialogdisplayed. • Fermer une image : • close() • Closes the active image. This function has the advantage of not closing the "Log" or "Results" windowwhenyoumeant 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"]) • Executesan ImageJ menu command. The optional second argument contains values that are automaticallyenteredintodialog boxes (must beGenericDialog or OpenDialog). • Use the Command Recorder (Plugins>Macros>Record) to generaterun() function calls. Use string concatentation to pass a variable as an argument. For examples, see the ArgumentPassingDemo macro. • Exécuter une macro: • runMacro(name) • Runsthe specified macro file, whichisassumed to be in the Image macros folder. A full file pathmayalsobeused. The ".txt" extension isoptional. Returnsany string argument returned by the macro. May have an optional second string argument thatispassed to macro. For an example, see the CalculateMean macro. Seealso: eval and getArgument. • Utiliser un programme préenregistré dans ImageJ • call("class.method", arg1, arg2, ...) • Calls a public staticmethod in a Java class, passing an arbitrarynumber 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) • Addsan entry to the ImageJresults table or modifies an existing entry. The first argument specifies a column in the table. If the specifiedcolumndoes not exist, itisadded. The second argument specifies the row, where 0<=row<=nResults. (nResultsis a predefined variable.) A rowisadded to the table if row=nResults. The third argument is the value to beadded 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 thisfunction to update the "Results" windowafter 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) • Returnsa measurementfrom the ImageJresults table or NaN if the specifiedcolumnis not found. The first argument specifies a column in the table. It must be a "Results" windowcolumn label, such as "Area", "Mean" or "Circ.". The second argument specifies the row, where 0<=row<nResults. nResultsis a predefined variable thatcontains the currentmeasurement count. (Actually, it's a built-in functionwith the "()" optional.) WithImageJ 1.34g and later, youcan omit the second argument and have the row default to nResults-1 (the last row in the results table). Seealso: nResults, isNaN, getResultLabel.

  29. Infos supplémentaires Documentation et téléchargement de macros : http://rsb.info.nih.gov/ij/ Commandes d’imageJ : « Image-J user guide.pdf» Programmation des macros d’imageJ : « ImageJMacroLanguage.pdf » Langage Java pour ImageJ : « javapourimagej_final » Analyse de colocalisation : http://www.uhnresearch.ca/facilities/wcif/imagej/colour_analysis.htm

  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 « propidiumiodide.jpg » et « fluoresceindiacetate.jpg ». Les marquages fluoresceindiacetateet propidiumiodide 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 http://www.markergene.com/Newsletters/2009/WebNewsletter9.9.php Yeast Live:Dead Assay

More Related