Within Imaris we have two Surfaces (A and B) which partially overlap. Each Surface contains several objects (connected components). We would now like to measure for each object in Surface A with which objects it overlaps in Surface B (we would need the object label indices as a list). And we would like to solve this within ImarisXT.
Could you give me a hint how to achieve this? Related, is the ImarisXT API somewhere online?
There is a MATLAB XT that does create a new colocalization Surface object, but it does that only on the binary masks.
%Generate surface mask for each surface over time - currently using %GetDataVolumeBytes, as other methods suchas 1DArrayBytes were not working for vTimeIndex= 0:aSizeT-1 vSurfaces1Mask = vSurfaces1.GetMask(aExtendMinX,aExtendMinY,aExtendMinZ,aExtendMaxX,aExtendMaxY,aExtendMaxZ,aSizeX, aSizeY,aSizeZ,vTimeIndex); vSurfaces2Mask = vSurfaces2.GetMask(aExtendMinX,aExtendMinY,aExtendMinZ,aExtendMaxX,aExtendMaxY,aExtendMaxZ,aSizeX, aSizeY,aSizeZ,vTimeIndex); ch1 = vSurfaces1Mask.GetDataVolumeAs1DArrayBytes(0,vTimeIndex); ch2 = vSurfaces2Mask.GetDataVolumeAs1DArrayBytes(0,vTimeIndex); %Determine the Voxels that are colocalized Coloc=ch1+ch2; Coloc(Coloc<2)=0; Coloc(Coloc>1)=1; vDataSet.SetDataVolumeAs1DArrayBytes(Coloc, vLastChannel, vTimeIndex);