You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We naively believe there could be a chance to get fissure completeness quantification using CIP and Slicer filters without needing particles. Let me explain:
Pulmonary Fissure Completeness quantification
1. Lung lobes labels from TotalSegmentator
The resulting labelmap appears to have good quality (i.e. maximum error is less than 10mm) even in this case with severe emphysema. Please see picture below.
On 2D views (axial, coronal and sagittal) label outlines are visible, in the 3D view algorithmically reconstructed 3D models were created from the labels. The yellow crosshair marks the same point in the 2D views.
2. Compute RidgeSurface feature strength
I masked all that's outside lungs (it may be optional) and then I computed the feature-strength as suggested by you. Please see picture below
Labelmap overlay on the fissures is not perfect, but appears good enough
3. Convert to binary the probability image of feature strength
With a threshold of 0.3 (i.e. 30%), the image was thresholded with the result below.
4. Get VoxelDistanceToLabelmap image
Using SignedMaurerDistanceMapImageFilter, we got a new image from the earlier one. Please see picture below (darker values are near, whiter values are far)
5. Get the fissure mesh
Threshold the left upper lung lobe mesh to keep the parts nearest to the left lower lung lobe so the resulting mesh mostly corresponds to the left oblique fissure surface. This is done with the meshes created from the labelmaps that TotalSegmentator provided. And thresholding with values from ModelToModelDistance filter.
See pictures of left lobes below:
6. Probe the distance image with the fissure mesh
Probe the distance image (from step 4) with the fissure mesh (of step 5). Then scalars from the distance image are assigned to the fissure mesh that can be used for thresholding it, effectively reducing the area of the fissure mesh. Ideally, the threshold would delete parts of the mesh that have a big distance to the labelmap created from thresholding the RidgeSurface feature strength image (that highlights the real fissures).
Fissure mesh before threshold (with area=A0):
Fissure mesh after threshold (with area=A1):
(The appropriate threshold value must be decided yet )
7. Calculate fissure completeness percentage
Then the fissure completeness could be calculated as (A1/A0)*100
What do you think of this workflow Raul? Do you consider at first glance it could be accurate or robust?
The text was updated successfully, but these errors were encountered:
Hi @rjosest
We naively believe there could be a chance to get fissure completeness quantification using CIP and Slicer filters without needing particles. Let me explain:
Pulmonary Fissure Completeness quantification
1. Lung lobes labels from TotalSegmentator
The resulting labelmap appears to have good quality (i.e. maximum error is less than 10mm) even in this case with severe emphysema. Please see picture below.
On 2D views (axial, coronal and sagittal) label outlines are visible, in the 3D view algorithmically reconstructed 3D models were created from the labels. The yellow crosshair marks the same point in the 2D views.
2. Compute RidgeSurface feature strength
I masked all that's outside lungs (it may be optional) and then I computed the feature-strength as suggested by you. Please see picture below
Labelmap overlay on the fissures is not perfect, but appears good enough
3. Convert to binary the probability image of feature strength
With a threshold of 0.3 (i.e. 30%), the image was thresholded with the result below.
4. Get VoxelDistanceToLabelmap image
Using SignedMaurerDistanceMapImageFilter, we got a new image from the earlier one. Please see picture below (darker values are near, whiter values are far)
5. Get the fissure mesh
Threshold the left upper lung lobe mesh to keep the parts nearest to the left lower lung lobe so the resulting mesh mostly corresponds to the left oblique fissure surface. This is done with the meshes created from the labelmaps that TotalSegmentator provided. And thresholding with values from ModelToModelDistance filter.
See pictures of left lobes below:
6. Probe the distance image with the fissure mesh
Probe the distance image (from step 4) with the fissure mesh (of step 5). Then scalars from the distance image are assigned to the fissure mesh that can be used for thresholding it, effectively reducing the area of the fissure mesh. Ideally, the threshold would delete parts of the mesh that have a big distance to the labelmap created from thresholding the RidgeSurface feature strength image (that highlights the real fissures).
Fissure mesh before threshold (with area=A0):
Fissure mesh after threshold (with area=A1):
(The appropriate threshold value must be decided yet )
7. Calculate fissure completeness percentage
Then the fissure completeness could be calculated as (A1/A0)*100
What do you think of this workflow Raul? Do you consider at first glance it could be accurate or robust?
The text was updated successfully, but these errors were encountered: