The interpretation of the sigma parameter appears to be inconsistent between different 3D features. In particular, the ImageJ filter features cannot take unequal x/y/z scales into account. Am I missing something? Is there a good workaround?
I have only looked carefully at the Mean and Hessian features, but I assume that the other features using ImageJ filters are similar to Mean, while the features from ImageScience/FeatureJ are similar to Hessian. Note I am working strictly in 3D.
My observations were:
- For Mean, sigma is interpreted as a number of voxels. When using the Mean 3D filter directly, separate x/y/z scales can be specified, but this is not possible within the Trainable Weka GUI, so there is no proper handling of non-isotropic image stacks.
- For the Hessian features, sigma is interpreted as a real distance, and the voxel size specified in the image properties is taken into account. This allows for isotropic features to be calculated (to the extent possible) for a non-isotropic stack. This is good. (Although it doesn’t seem to be the case using these features directly via FeatureJ; instead the sigma parameter is interpreted in voxels, and there is no scope to specify separate values for x/y/z.)
As a result, when correct voxel dimensions are specified in the image properties, it may be impossible to use both ImageJ filter and ImageScience features. For example, I have voxels of approximately 100x100x200nm. If Sigma = 4, Mean is useful but Hessians are all zero. If Sigma = 400, Hessians are useful but the system crashes trying to calculate Mean, which is anyway useless. I can obviously work around this by not specifying voxel size in the image properties, and just working in terms of voxels. But I am stuck with the fact that Mean etc cannot take unequal x/y/z scales into account. The only workaround I can think of is to calculate features outside the GUI.