Skip to content

Extract a scene from a czi file #15

@SNIR-NIMH

Description

@SNIR-NIMH

Hello,
Thank you for the wonderful Matlab interface. I found it very useful and only code that worked on my czi file. Other libraries (aicsimageio, pyCZIutils, aicspylibczi,bioformats) didn't work.

If anyone else is wondering how to get a scene from a czi image, here is what I used

%Inputs:
inputczi=/home/user/myczifile.czi
scenenum=5  %5th scene


h=MEXlibCZI('Open',inputczi);  % inputczi is a SCZXY file,S=scene,C=channel,Z=number of slices
% z = the z slice to use, 0 based
% channelnum = channel number to use, 0 based
ID=['Z' num2str(z) 'C' num2str(channelnum)];
% Use ZzCc format,Z0C1, Z1C1 etc, 0 based
% scenenum = scene index, 1 based because Matlab struct
b1=MEXlibCZI('GetSingleChannelScalingTileComposite',h,info.sceneBoundingBoxes(scenenum).boundingBox,ID,1);  % full zoom=1
% b1 is a YX 2D matrix of uint16. For some reason, GetMultiChannelScalingTileComposite gives uint8.
% b1 dimension is YX as opposed to XY, czi XY is Tif's YX, so need to transpose the file later
MEXlibCZI('Close',h);

Also, it is possible to run this in parallel to obtain multiple channels or scenes (given the disk I/O bound)

% Obtain multiple z slices in parallel and create a 3D volume
temp=cell(1,Z);
scenenum=5;    % get 5th scene (1 based)
channelnum=3; % extract 4th channel, 0 based index
parfor z=1:Z
    fprintf('Reading Z=%d\n',z);
    h=MEXlibCZI('Open',inputczi);
    s1=['Z' num2str(z-1) 'C' num2str(channelnum-1)];  
    % Use ZzCc format,Z1C1,Z2C1 etc, 0 based
    b1=MEXlibCZI('GetSingleChannelScalingTileComposite',h,info.sceneBoundingBoxes(scenenum).boundingBox,s1,1);
    temp{z}=b1;
    MEXlibCZI('Close',h);
end
fprintf('\n');
for z=1:Z
    vol(:,:,z)=temp{z};
end

Thank you and I hope this snippet is useful for someone else.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions