% % % Get Image from Imaris % % Copyright Bitplane AG 2006 % % % Description: % % Get and returns the Imaris DataSet. % This function can be used as utility for other functions; It is not % called directly by Imaris. % % function [aImage, aVoxelSize] = BPGetImarisImage(aImarisApplication, aTimeIndex, aChannelIndex) vImarisDataSet = aImarisApplication.mDataSet; vExtendMin = [vImarisDataSet.mExtendMinX, vImarisDataSet.mExtendMinY, ... vImarisDataSet.mExtendMinZ]; vExtendMax = [vImarisDataSet.mExtendMaxX, vImarisDataSet.mExtendMaxY, ... vImarisDataSet.mExtendMaxZ]; vDataSize = [vImarisDataSet.mSizeX, vImarisDataSet.mSizeY, ... vImarisDataSet.mSizeZ, vImarisDataSet.mSizeC, vImarisDataSet.mSizeT]; aVoxelSize = (vExtendMax - vExtendMin) ./ vDataSize(1:3); vMinT = 0; vMinC = 0; if nargin == 3 && aChannelIndex<=vDataSize(4) && aTimeIndex<=vDataSize(5) vMinT = aTimeIndex-1; vDataSize(5) = 1; vMinC = aChannelIndex-1; vDataSize(4) = 1; elseif nargin == 2 && aTimeIndex<=vDataSize(5) vMinT = aTimeIndex-1; vDataSize(5) = 1; end vSize = [1, prod(vDataSize(1:3)), vDataSize(4:5)]; if strcmp(vImarisDataSet.mType,'eTypeUInt8') aImage = zeros(vSize, 'uint8'); elseif strcmp(vImarisDataSet.mType,'eTypeUInt16') aImage = zeros(vSize, 'uint16'); else aImage = zeros(vSize, 'single'); end for vTimeIndex = vMinT + (1:vDataSize(5)) for vChannelIndex = vMinC + (1:vDataSize(4)) aImage(1, :, vTimeIndex, vChannelIndex) = vImarisDataSet.GetDataVolumeAs1DArray( ... vChannelIndex-1, vTimeIndex-1); end end aImage = reshape(aImage, vDataSize);