I got shape results (such as MajorAxisLength, LeastriAxisLength) through Radiomics analysis. Can I visualize it on model with 3Dslicer?
Currently, no. Maximum diameter features are calculated as scalar values inside the C extension of PyRadiomics, which does not store the mask points that represent that value.
If you want to determine those points (and draw a line), you’d need to implement that algorithm yourself, though due to high number of iteration, it was moved to the C extension for performance in PyRadiomics, so be aware when you implement it in Python, it’ll be quite slow.
In short it works like this:
let mask
be an array containing all indices of segmented voxels (i.e. part of the ROI)
for (int i = 0; i < len(mask); i ++)
{
for (int j = i + 1; j < len(mask); j++)
{
distance = euclidean_distance(mask[i], mask[j])
if (distance > max_distance)
{
max_distance = distance
max_i = i
max_j = j
}
}
}
Don’t forget to take pixel spacing into account when calculating the distance.
The above snippet calculates a 3D max distance. If you want the maximum distance in the axial, saggital or coronal plane, add another constraint that forces the x, y or z components of i
and j
to be equal (equal x yields saggital, y yields coronal and z yields axial max distances).
Major and Least axis length are calculated using the eigenvalues (see here). You can use the same bit of code to also calculate the associated eigen vectors, which are the axes you are looking for.
So, like maximum diameters, not currently implemented. But it should be easy enough to implement yourself.
See also the documentation on these features. If you use the eigenvectors and calculated feature values, you can generate the ROI enclosing ellipsoid and visualize it as a slicer model.