Ouverture des données d’image#
La première bibliothèque à utiliser pour ouvrir des données d’image est la bibliothèque scikit-image. Elle propose deux fonctions, imread et imshow, pour lire et visualiser les données d’image. Elle traite divers formats de fichiers tels que .tif. Si elle ne parvient pas à ouvrir correctement vos données d’image, vous devrez chercher des solutions personnalisées.
from skimage.io import imread, imshow
import numpy as np
image = imread('../../data/blobs.tif')
image.shape
(254, 256)
imshow(image)
<matplotlib.image.AxesImage at 0x196702bc280>
Lecture des métadonnées#
Lors du traitement des données d’images de microscopie, il est très important de respecter la taille des voxels des données d’image. En particulier, lorsque les volumes doivent être calculés en microns cubes, il est essentiel de connaître la taille d’un voxel en X, Y et Z.
filename = "../../data/EM_C_6_c0.tif"
image_3d = imread(filename)
image_3d.shape
(256, 256, 256)
La fonction d’aide suivante a été écrite pour les images Tif d’ImageJ. Elle nous permet de lire la taille des voxels à partir des métadonnées du fichier TIF. Source.
def get_voxel_size_from_imagej_tiff(filename):
""" Opens the metadata of a tiff file and returns the voxels size as (z,y,x)"""
from PIL import Image
from PIL.ExifTags import TAGS
# format the meta data so that we can read it easily
with Image.open(filename) as img:
meta_dict = {}
for key in img.tag.keys():
if key in TAGS.keys():
meta_dict[TAGS[key]] = img.tag[key]
# read out voxel size from meta data
z = [w[8:] for w in meta_dict['ImageDescription'][0].split("\n") if w.startswith('spacing')]
x = 1/ (meta_dict["XResolution"][0][0]/meta_dict["XResolution"][0][1])
y = 1/ (meta_dict["YResolution"][0][0]/meta_dict["YResolution"][0][1])
return float(z[0]), float("%.4f" % y), float("%.4f" % x)
get_voxel_size_from_imagej_tiff(filename)
(0.16784672897196262, 0.1678, 0.1678)