python-3.xmatlabimage-processingfiji

Convert image datatype from uint16 to uint8


I have a tiff image stack in uint16 datatype and I’d like to convert this to uint8 datatype. I’m not sure how to do this in Fiji.

I have loaded the stack in Fiji and I tried to change the datatype while exporting. But I couldn’t find any tab in Fiji export options for specifying the datatype.

Suggestions on how to do this in Fiji or alternatively in Python/MATLAB will be really helpful.


Solution

  • The im2uint8() function can be used to convert the image from uint16 (unsigned integer 16) to uint8 (unsigned integer 8) in MATLAB.

    For .tiff Files with a Single Image :

    Image = imread("Test_Image.tiff");
    Image = im2uint8(Image);
    imshow(Image);
    

    For .tiff Files with Multiple Images and Saving Transformed/Converted Images:

    Reading the images in a loop using the imread() function with second argument being the Image_Index corresponding to the image number within the .tiff image collection can be used to grab the entire image data stored in the file. Using imwrite() in append and WriteMode will allow each converted image to be saved into one file named in this example as Converted_Image.tiff.

    %Multiple image tiff conversion%
    
    File_Name = "Test_Image.tiff";
    Image_Data = imfinfo(File_Name);
    Number_Of_Images = length(Image_Data);
    
    
    Tiff_Structure = struct('Image_File',[]);  
    
    for Image_Index = 1: Number_Of_Images
        
          Image = imread(File_Name,Image_Index);
          Uint8_Image = im2uint8(Image);
    
          %For more information and plotting individual images%
          Tiff_Structure(Image_Index).Image_File = Uint8_Image;
          
          %Saving the converted images to one tiff file%
          imwrite(Uint8_Image,'Converted_Image.tiff','WriteMode','append');
    
    end
    

    Using MATLAB version: R2019b