Hi,I had a chance to try what Alan did and can verify that by changing the vowel spacing in the nrrd file from 0.1 to 1 the optimize process did seem to work in terms of placing the samples. The resulting surface though was not what I would expect, probably because there are not enough samples. However, it does remind me of a medieval hammer shield that has seen a few battles. Complete with holes. Might be museum quality :-))).Before I try with more samples, how does one change the verbosity level? I would like to leave it at zero but I am not finding that as a command line args.Cheers,Allen
On Jun 3, 2020, at 10:11 AM, Allen Sanderson <allen@sci.utah.edu> wrote:Alan,
If I am understanding correctly, instead of saying the voxel size is 0.1 or 0.01 you made it an order or two of magnitude larger and that seemed to solve the issue. If that is correct then I would agree that to be odd as I would not expect issues like round off to come into play.
Could you provide me with what changes you made (I assume in the resulting nerd files) and I will try on my end. Thanks.
Cheers,
AllenOn Jun 3, 2020, at 9:59 AM, Alan Morris <amorris@sci.utah.edu> wrote:
Hi Shireen,
It seems that they've been successfully rasterized, but there was a
problem when running the optimization.
I've dug into it and it appears that the structures are just too
(physically) thin, regardless of the number of pixels wide. By
fiddling with the spacing, it seems to be happy to run just fine. I'm
not sure I understand the sensitivity to the spacing. Of course some
filters and operations are probably operating in physical coordinates.
But it seems like everything should just scale appropriately.
Alan
On Wed, Jun 3, 2020 at 9:51 AM Shireen Elhabian <shireen@sci.utah.edu> wrote:<studio.png>
Hi Alan,
Is this related to Allen’s issue with converting mesh to binary image (rasterization)?Shireen, do you know of a tool to better visualize a 3D image
gradient?
itk-snap can visualize vector valued images as RBG.
thanks and best regards
Shireen
------------------------------------------
Shireen Elhabian, M.Sc., Ph.D.
Research Assistant Professor
School of Computing
Scientific Computing and Imaging Institute
University of Utah
WEB 2815
72 Central Campus Drive, Salt Lake City, UT, 84112
Phone (801) 587-3206
Fax (801) 585-6513
Home Page: http://www.sci.utah.edu/~shireenOn Jun 3, 2020, at 8:57 AM, Alan Morris <amorris@sci.utah.edu> wrote:
I'm working with the data that Jadie sent me. I'm not quite sure what
the problem is yet. Somehow it seems the image gradient is wrong and
the initial point placement is driven off the image. This is the case
for both OpenVDB's (1e10 narrow band) and ITK's gradient computation.
Shireen, do you know of a tool to better visualize a 3D image
gradient? At the moment, I'm looking at the X, Y, and Z components
separately in Paraview. In any case, I don't see anything obviously
wrong with it for these images. Yet the "ApplyVectorConstraints"
takes the gradient from the position starting at the zero crossing and
follows it away from the surface and off the image.
Alan
On Tue, Jun 2, 2020 at 3:01 PM Jadie Adams <jadieraeadams@gmail.com> wrote:
Hi Allen,
Sounds like you figured it out before I got to trouble shooting. Please let me know if the distance transform isn't as expected or if you could use any more help.
@Shireen Would you like me to make a github issue to address Allen suggestions? I agree that min and max may be more clear than origin and size,. But origin and size are used in commands across ShapeWorks, not just in rastorization so we will have to be careful about making such changes.
Thanks,
Jadie
On Tue, Jun 2, 2020 at 2:25 PM Allen Sanderson <allen@sci.utah.edu> wrote:
Hi Shireen,
I figured out the issue. The help message is not clear.
% /Projects/ShapeWorks/ShapeWorks/bin/GenerateBinaryAndDTImagesFromMeshes
-------------------------------
GenerateBinaryAndDTImagesFromMeshes
-------------------------------
Compute binary images (i.e. segmentation) and their distance transforms of a given set of meshes (ply format)
It uses a parameter file with the following tags
- mesh: a list of ply file names for meshes to be processed
- origin_x, origin_y, origin_z: the origin in physical units of the resulting distance transform
- spacing_x, spacing_y, spacing_z: voxel spacing of the resulting distance transform
- size_x, size_y, size_z: the size (rows,cols,slices) of the resulting distance transform
When I read size I think measurement, as in the bounding box size (physical units). Which is what I was providing, 11,6,16. Especially because the other two inputs are in physical units. However, what is wanted the number of rows, cols, slices in the resulting image, 1100, 600, 1600. So there is a clarity issue.
I think because the other inputs are physical units it would be better to have one supply everything in physical units. It could be either relative:
origin_x, origin_y, origin_z
size_x, size_y, size_z
absolute:
min_x, min_y, min_z
max_x, max_y, max_z
But for both is physical units (and in reality the origin and min are interchangeable). This does a couple of things, assures that all of the geometry is included as one typically knows the extents. Then internally the number of rows, columns, and slices are determined based on the spacing. Further, one can change the spacing and not need to calculate the number of rows, columns, and slices (and risk missing some geometry cause they were off by a decimal place).
The other part that is confusing is stating “of the resulting distance transform” so it is for the output which if true then really the user has the ability to subsample a specific area of the mesh. Which is a nice feature but here again is not clear because at least for me I want all of the mesh sampled. Perhaps having something to this affect in the help but also the output message would be helpful.
I have one rasterized image and waiting the DT to finish as my resulting image is 1100 x 600 x 1600.
Cheers,
Allen
Allen Sanderson
SCI Institute
University of Utah
On Jun 2, 2020, at 9:47 AM, Shireen Elhabian <shireen@sci.utah.edu> wrote:
Hi Jadie,
Could you help out with trouble shooting converting the attached mesh to distance transform / binary segmentation? In principle, should be similar to rasterizing femur meshes but it is not obvious what is different about this mesh expect not having triangular faces.
thanks and best regards
Shireen
------------------------------------------
Shireen Elhabian, M.Sc., Ph.D.
Research Assistant Professor
School of Computing
Scientific Computing and Imaging Institute
University of Utah
WEB 2815
72 Central Campus Drive, Salt Lake City, UT, 84112
Phone (801) 587-3206
Fax (801) 585-6513
Home Page: http://www.sci.utah.edu/~shireen
<example_surface_1_00.ply>
<example_surface_1_00.vtk>
On Jun 1, 2020, at 3:17 PM, Allen Sanderson <allen@sci.utah.edu> wrote:
Hi Shireen,
I did not use the center of mass to determine the origin as I know the bounding box. I even tried to make the BB slightly larger a some of the polygons are likely on the boundary. That resulted in no voxels.
Cheers,
Allen
On May 30, 2020, at 10:38 PM, Shireen Elhabian <shireen@sci.utah.edu> wrote:
Hi Allen,
The rasterization uses the vtkPolyDataToImageStencil filter. I don’t an obvious reason to restricting it to triangular mesh. How about the origin? Did you use the mesh’s center of mass to determine it?
Regards
Shireen
------------------------------------------
Shireen Elhabian, M.Sc., Ph.D.
Research Assistant Professor
School of Computing
Scientific Computing and Imaging Institute
University of Utah
WEB 2815
72 Central Campus Drive, Salt Lake City, UT, 84112
Phone (801) 587-3206
Fax (801) 585-6513
Home Page: http://www.sci.utah.edu/~shireen
On May 29, 2020, at 2:54 PM, Allen Sanderson <allen@sci.utah.edu> wrote:
Attached are the original vtk and ply file if anyone wants to look at them.
<example_surface_1_00.ply>
<example_surface_1_00.vtk>
On May 29, 2020, at 2:41 PM, Allen Sanderson <allen@sci.utah.edu> wrote:
Hi Shireen,
My VTK files contains polydata which I have converted over to ply files. See the image below from VIsIt of the ply data. However, the rasterization does not seen to be working correctly. I created an xml file based on the extents of the data :
<?xml version="1.0" ?>
<mesh>
example_surface_1_00.ply
</mesh>
<origin_x> -5.2</origin_x>
<origin_y> 0.0</origin_y>
<origin_z>-15.0</origin_z>
<size_x>10.4</size_x>
<size_y> 5.2</size_y>
<size_z>15.0</size_z>
<spacing_x>0.01</spacing_x>
<spacing_y>0.01</spacing_y>
<spacing_z>0.01</spacing_z>
I have tried different spacings, but that did not really change anything. I checked all of the surface normals and they are correct (pointing out of the volume). Does the rasterization strictly want triangles??? There were no complaints.
Cheers,
Allen
<Screen Shot 2020-05-29 at 2.17.06 PM.png>
<Screen Shot 2020-05-29 at 2.33.02 PM.png>
On May 28, 2020, at 3:58 PM, Shireen Elhabian <shireen@sci.utah.edu> wrote:
Hi Allen,
Are your VTK files contain surface (triangular) meshes? Or volumetric meshes? As of now, ShapeWorks tools only support surface meshes. The femur use case (links below) should be a good starting point to see how you could groom/prep surface meshes to compute signed distance transforms as input to the Optimize phase.
https://github.com/SCIInstitute/ShapeWorks/blob/master/Examples/Python/femur.py
https://github.com/SCIInstitute/ShapeWorks/blob/master/Documentation/UseCases.md#Femur-Use-Case
Though a bit late, happy Eid-ul-Fitr. Years ago I was in Egypt for Eid-ul-Fitr, then spent three weeks traveling around. I had a great time as it was the start of a three month tour around the Mediterranean Sea.
Thanks for your greeting! Hope you and your family are safe and healthy.
thanks and best regards
Shireen
------------------------------------------
Shireen Elhabian, M.Sc., Ph.D.
Research Assistant Professor
School of Computing
Scientific Computing and Imaging Institute
University of Utah
WEB 2815
72 Central Campus Drive, Salt Lake City, UT, 84112
Phone (801) 587-3206
Fax (801) 585-6513
Home Page: http://www.sci.utah.edu/~shireen
On May 28, 2020, at 3:13 PM, Allen Sanderson <allen@sci.utah.edu> wrote:
Hi,
It seems this script will process VTK data.
ShapeWorks/Examples/Scripts/FullPrepPipeline/FullPipelinePrepRunMeshtoDT.sh
However this sub script:
RasterizationVolumeOriginAndSize.sh
Does not spit out the two files needed next:
# convert meshes to distance transforms
if [ $doMeshesToVolumes -eq 1 ]
then
origin_filename=${parentDir}origin_size/origin_sp${spacing}_nb${narrow_band}.txt
size_filename=${parentDir}origin_size/size_sp${spacing}_nb${narrow_band}.txt
I see the names in an xml file but not sure what to make of that.
So at this point I am pretty lost. As such it would be really good to have a zoom chat so I can understand the pipeline. Especially as parts of the pipeline are not going to be needed - the data is located and oriented. But the bounding box is different. But for now I would just like to have and understand a working pipeline.
I can supply two VTK files that can be used for the initial setup. I have time tomorrow anytime to meet.
Cheers,
Allen
Allen Sanderson
SCI Institute
University of Utah
On May 27, 2020, at 2:49 PM, Allen Sanderson <allen@sci.utah.edu> wrote:
Hi Shireen,
Though a bit late, happy Eid-ul-Fitr. Years ago I was in Egypt for Eid-ul-Fitr, then spent three weeks traveling around. I had a great time as it was the start of a three month tour around the Mediterranean Sea.
I am finally working through all of the parts of ShapeWorks. I went through the ellipse example and now working with some of my VTK data. But I am not seeing documentation on starting with VTK files. Just nrrd data. I have files that describe a closed surface (and as a volume elements) that I wanted to use for some initial testing and to familiarize myself with all the tools and steps.
I pinged Cam and Alan but they did not reply or did not know. Any pointers??
Cheers,
Allen
Archive powered by MHonArc 2.6.18.