vmtk-users Mailing List for Vascular Modeling Toolkit (Page 13)
Brought to you by:
davidsteinman,
lucantiga
You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(4) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(7) |
2007 |
Jan
(13) |
Feb
(3) |
Mar
(8) |
Apr
(8) |
May
(4) |
Jun
(12) |
Jul
(1) |
Aug
(1) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
2008 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
(7) |
Jun
(1) |
Jul
(27) |
Aug
(3) |
Sep
|
Oct
(35) |
Nov
(17) |
Dec
(4) |
2009 |
Jan
(14) |
Feb
(13) |
Mar
(41) |
Apr
(20) |
May
(12) |
Jun
(24) |
Jul
(6) |
Aug
(25) |
Sep
|
Oct
(42) |
Nov
(33) |
Dec
(17) |
2010 |
Jan
(6) |
Feb
(11) |
Mar
(24) |
Apr
(13) |
May
(18) |
Jun
(32) |
Jul
(8) |
Aug
(10) |
Sep
(12) |
Oct
(33) |
Nov
(40) |
Dec
(4) |
2011 |
Jan
(6) |
Feb
(32) |
Mar
(12) |
Apr
(7) |
May
(18) |
Jun
(8) |
Jul
(16) |
Aug
(10) |
Sep
(37) |
Oct
(16) |
Nov
(21) |
Dec
(43) |
2012 |
Jan
(30) |
Feb
(22) |
Mar
(42) |
Apr
(39) |
May
(56) |
Jun
(47) |
Jul
(42) |
Aug
(10) |
Sep
(45) |
Oct
(21) |
Nov
(14) |
Dec
(11) |
2013 |
Jan
(15) |
Feb
(33) |
Mar
(74) |
Apr
(50) |
May
(57) |
Jun
(21) |
Jul
(27) |
Aug
(35) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
2014 |
Jan
(3) |
Feb
(2) |
Mar
|
Apr
|
May
(1) |
Jun
(1) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2015 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
(2) |
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Brian D. <bit...@gm...> - 2013-01-03 23:07:29
|
Is the current build of VMTK from source supposed to have the INSTALL target. When the project is opend in visual studio the install target is not there and in attempts to use VMTK "superbuild" in a "super-e-duper-superbuild" (my build that uses ExternalProject_Add to download, build, and install fails due to what I belive is a lack of the intall target in VMTK and I must make INSTALL_COMMAND "" to skip the install command. I would expect INSTALL target to work and for INSTALL_DIR or -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} to put the output wherever I want to put it. ExternalProject_Add( ${VMTK_PACKAGE} GIT_REPOSITORY ${GIT_URL} UPDATE_COMMAND "" SOURCE_DIR ${THIRD_PARTY_SRC_DIR}/${VMTK_PACKAGE} BINARY_DIR ${BUILD_DIR}/ouput/bin/${VMTK_PACKAGE} INSTALL_DIR ${INSTALL_PREFIX} INSTALL_COMMAND "" CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} -DINSTALL_PREFIX=${INSTALL_PREFIX} -DPYTHON_INCLUDE_DIR=${PYTHON_INCLUDE_DIR} ) As far as python I have installed every flavor x64 for 2.6, 2.7, and 3.0 where 2.7 (I belive) was installed by the binary package from vmtk-1.0.0-win7-64bit.exe. This version seemed to fail on vmtknetworkextraction so I gave up on that version and went back to the source build, through I was able to get Marching Cubes and centerline extraction to work. I have tried the forcing of the CMakeCache.txt as described in http://www.vmtk.org/Main/Installation/ , which I may add is a superawesome hack which makes the super-e-duper build impossible as vmtk requires vtk which is not downloaded for patching before ExternalProject_Add on the vmtk project. A Nice chicken in the egg problem. Though I do not think I have this issue when 3.0 is build, but at this point I am so confused trying to get anything to work. |
From: Miguel S. <mso...@gm...> - 2012-12-21 11:13:03
|
Hi Luca, I'm trying to cut an open triangulated surface (polydata) using the wrapped version of vtkvmtkPolyDataScissors. I've managed to correctly create the 'CutLine' polydata (with the corresponding points, cells and idArray in the correct polydata locations where I want to perform the cutting). Then I use vtkvmtkPolyDataScissors in this way: scissor=vmtk.vtkvmtk.vtkvmtkPolyDataScissors() scissor.SetCutLine(CutLine) scissor.SetCutLinePointIdsArrayName('idArray') scissor.SetInput(Surface) scissor.Update() where 'Surface' is the polydata I want to cut. I use the method GetOutput() from 'scissor' to obtain the result of cutting (is this right?); when rendering this output I'm getting the same input polydata ('Surface'), i.e. no cutting has been performed. Am I missing something? Is this the correct use of vtkvmtkPolyDataScissors? Thanks for your suggestions, Miguel |
From: Luca A. <luc...@gm...> - 2012-12-17 09:37:01
|
Hi Carlos, you're right, I scrambled the expression for G, things are indeed the way you describe them. The bounded reciprocal would work with any > 0 epsilon added to the | grad I |, so 1 is as good as others. For citing the pipeline you can use Antiga L, Piccinelli M, Botti L, Ene-Iordache B, Remuzzi A and Steinman DA. An image-based modeling framework for patient-specific computational hemodynamics. Medical and Biological Engineering and Computing, 46: 1097-1112, Nov 2008. Thanks Luca On Dec 16, 2012, at 12:36 PM, Carlos Alberto Bulant wrote: > Hi Luca, > Thanks for your replay, it has been very helpful. > Never the less it is note clear to me, yet, the current implementations of G and P functions, you explained: > > "In the current implementation, G is the bounded inverse of the intensity gradient magnitude (1 / (epsilon + del G)). > P is the vector gradient of the bounded inverse of the intensity gradient magnitued, where the gradient is computed with finite differences... " > > so, you said > G = 1 / (epsilon + del G) > I don't understand it, did you mean? > > G = 1 / (1 + | grad I |) // here "grad ." is the gradient operator, and "|.|" the absolute value > and > P = -G > // This two forms will be the definitions on http://www.itk.org/Doxygen/html/classitk_1_1GeodesicActiveContourLevelSetFunction.html > > remembering that the PDE is > > (2.22) -w1 G(x) | grad F | + 2 w2 G(x) H(x) | grad F | + w3 <[grad P(x)] , grad F > > > > finally, i would like to ask you how i should cite the use of the level set segmentation pipeline, is there any paper or just the vmtk website? > > Thank you in advance! > > > > > 2012/12/12 Luca Antiga <luc...@gm...> > Hi Carlos, > > On Dec 3, 2012, at 3:12 PM, Carlos Alberto Bulant wrote: > >> Hello Luca, >> thanks for the answers, i would like to do more questions related to the subject. >> >> i would like to summarize (in the form of pseudo-code) how i understand the level set segmentation works, and then ask you some questions >> >> // pseudo-code begin------------------------------------------------------------------------------------------------------------- >> image iI(x) // the -ifile >> >> image lvlSet_t0(x) <--- initialization procedure over the iI(x) image (no pre-processing is used on iI(x)) > > correct > >> image I(x) // the featured image >> if -featureimagefile fI(x) NOT NULL { >> I = fI >> }else { >> I = smooth(iI, -smoothingiterations, -smoothingtimestep, -smoothingconductance) >> } > > Not really. The feature image can be provided (-featureimagefile) or it can be computed by the > script. In which case it will be generated using the method specified by -featureimagetype, > which can be "vtkgradient","gradient","upwind","fwhm". See the vmtkimagefeatures script > for details on the feature images. > > Smoothing only comes into play for a particular level set type. There are currently three > level set types available, which differ by the terms in the evolution equation: > > "geodesic": the equation we mentioned in the last email > "curves": same as above but the curvature term does not contain mean curvature, but minimum curvature (see > L. Lorigo, O. Faugeras, W.E.L. Grimson, R. Keriven, R. Kikinis, A. Nabavi, and C.-F. Westin, Curves: Curve evolution for vessel segmentation. Medical Image Analysis, 5:195-206, 2001. > for details) > "threshold": the level set will evolve towards a particular intensity level (as opposed to gradient magnitude ridges), and in addition you can include a Laplacian term; smoothing works here for building the Laplacian of the feature image > "laplacian": the level set will evolve towards zeros of the Laplacian image as an advection term > >> // calculates the G and P >> // Where grad operator is defined by -featureimagetype parameter. >> image g(x) = G( grad(I) ) // using equation 2.20 from the thesis >> image p(x) = P( grad(I) ) // using equation 2.21 from the thesis > > Yes (grad here is the intensity gradient magnitude) > >> // Where -levelsetstype defines the type levelsetFunction to be used > > See above. > >> image levelset = levelsetFunction (lvlSet_t0, g, p, -iterations, -propagation, -curvature, -advection) > > Yes > >> // pseudo-code end-------------------------------------------------------------------------------------------------------------- >> >> Questions: >> * Which smoothing function is used? (i.e. gradient anisotropic diffusion, curvature anisotropic diffusion, etc) > > It's a gradient anisotropic diffusion filter (itkGradientAnisotropicDiffusionImageFilter), used internally by itkThresholdSegmentationLevelSetFunction, as mentioned above. > Take a look here: ITK/Code/Algorithms/itkThresholdSegmentationLevelSetFunction.h and ITK/Code/Algorithms/itkThresholdSegmentationLevelSetFunction.txx for details. > >> * Are G and P functions the ones defined on the thesis? (on http://www.itk.org/Doxygen/html/classitk_1_1GeodesicActiveContourLevelSetFunction.html P is P(G), and in the thesis there is another definition P(I), besides on the link there are suggestions on the most commonly definition of G, but i'm not sure on which is really used) > > In the current implementation, G is the bounded inverse of the intensity gradient magnitude (1 / (epsilon + del G)). > P is the vector gradient of the bounded inverse of the intensity gradient magnitued, where the gradient is computed with finite differences if > featurederivativesigma is 0, and using Gaussian derivative convolution with sigma = featurederivativesigma if the latter is greater than zero. > > Cheers > > Luca > >> Thanks in advance! >> Best of regards >> Carlos >> >> >> 2012/12/3 Luca Antiga <luc...@gm...> >> Hello Carlos, >> welcome to vmtk and sorry for the wait. I hope the timing won't stop you from sending more questions in the future. >> >> The level set code I used during my PhD was written by me, then ITK came along and I was very happy to fully embrace it :-) >> So right now level set implementation in vmtk is the one provided by ITK: >> http://www.itk.org/Doxygen/html/classitk_1_1GeodesicActiveContourLevelSetFunction.html >> which is a specialization of this general formulation >> http://www.itk.org/Doxygen/html/classitk_1_1LevelSetFunction.html >> >> As you see, the latter link includes a spatial modifier for the mean curvature term (Z), which in the actually code is >> returned by the CurvatureSpeed method. In the GeodesicActiveContourLevelSetFunction such term is set equal to >> G (the edge potential image). >> >> So, long story short, yes, the current implementation follows equation 2.22. >> >>> Correct me if i'm wrong: G and P depend on the so called featured Image ( | grad I(x) | on Luca's thesis), if executing the vmtklevelsetsegmentation filter as before (without specifying a -featureimagefile image) Is the featured image used by G and P calculated automatically (depending on the -featureimagetype parameter with gradient as default)? >> >> >> Exactly. Good job! >> >> >> Luca >> >> >> On Nov 27, 2012, at 10:19 PM, Carlos Alberto Bulant wrote: >> >>> Hi VMTK users, >>> this is my first post in this mailing list (probably there will be more), i'm a new user just starting to use the toolkit. >>> Now to my questions: >>> >>> When using the level set segmentation filter in the form of : >>> vmtklevelsetsegmentation -ifile image_volume_voi.vti -ofile level_sets.vti >>> assuming none-zero PropagationScaling (w1), CurvatureScaling (w2) and AdvectionScaling (w3) parameters, which of the Level Set formulation (proposed on Luca Antiga's PhD thesis) does the implementation use? >>> >>> (2.19) -w1 G(x) | grad F | + 2 w2 H(x) | grad F | + w3 <[grad P(x)] , grad F > >>> (2.22) -w1 G(x) | grad F | + 2 w2 G(x) H(x) | grad F | + w3 <[grad P(x)] , grad F > >>> >>> >>> In the current implementation, are G(x) and P(x) the one proposed on Luca's thesis? >>> >>> >>> Correct me if i'm wrong: G and P depend on the so called featured Image ( | grad I(x) | on Luca's thesis), if executing the vmtklevelsetsegmentation filter as before (without specifying a -featureimagefile image) Is the featured image used by G and P calculated automatically (depending on the -featureimagetype parameter with gradient as default)? >>> >>> Sorry for my English, >>> Best of regards >>> Carlos >>> ------------------------------------------------------------------------------ >>> Keep yourself connected to Go Parallel: >>> DESIGN Expert tips on starting your parallel project right. >>> http://goparallel.sourceforge.net_______________________________________________ >>> vmtk-users mailing list >>> vmt...@li... >>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >> >> > > |
From: Carlos A. B. <car...@gm...> - 2012-12-16 11:36:48
|
Hi Luca, Thanks for your replay, it has been very helpful. Never the less it is note clear to me, yet, the current implementations of G and P functions, you explained: "In the current implementation, G is the bounded inverse of the intensity gradient magnitude (1 / (epsilon + del G)). P is the vector gradient of the bounded inverse of the intensity gradient magnitued, where the gradient is computed with finite differences... " so, you said G = 1 / (epsilon + del G) I don't understand it, did you mean? G = 1 / (1 + | grad I |) // here "grad ." is the gradient operator, and "|.|" the absolute value and P = -G // This two forms will be the definitions on http://www.itk.org/Doxygen/html/classitk_1_1GeodesicActiveContourLevelSetFunction.html remembering that the PDE is (2.22) -w1 G(x) | grad F | + 2 w2 G(x) H(x) | grad F | + w3 <[grad P(x)] , grad F > finally, i would like to ask you how i should cite the use of the level set segmentation pipeline, is there any paper or just the vmtk website? Thank you in advance! 2012/12/12 Luca Antiga <luc...@gm...> > Hi Carlos, > > On Dec 3, 2012, at 3:12 PM, Carlos Alberto Bulant wrote: > > Hello Luca, > thanks for the answers, i would like to do more questions related to the > subject. > > i would like to summarize (in the form of pseudo-code) how i understand > the level set segmentation works, and then ask you some questions > > // pseudo-code > begin------------------------------------------------------------------------------------------------------------- > image iI(x) // the -ifile > > image lvlSet_t0(x) <--- initialization procedure over the iI(x) image (no > pre-processing is used on iI(x)) > > > correct > > image I(x) // the featured image > if -featureimagefile fI(x) NOT NULL { > I = fI > }else { > I = smooth(iI, -smoothingiterations, -smoothingtimestep, - > smoothingconductance) > } > > > Not really. The feature image can be provided (-featureimagefile) or it > can be computed by the > script. In which case it will be generated using the method specified by > -featureimagetype, > which can be "vtkgradient","gradient","upwind","fwhm". See the > vmtkimagefeatures script > for details on the feature images. > > Smoothing only comes into play for a particular level set type. There are > currently three > level set types available, which differ by the terms in the evolution > equation: > > "geodesic": the equation we mentioned in the last email > "curves": same as above but the curvature term does not contain mean > curvature, but minimum curvature (see > L. Lorigo, O. Faugeras, W.E.L. Grimson, R. Keriven, R. Kikinis, A. > Nabavi, and C.-F. Westin, Curves: Curve evolution for vessel > segmentation. Medical Image Analysis, 5:195-206, 2001. > for details) > "threshold": the level set will evolve towards a particular intensity > level (as opposed to gradient magnitude ridges), and in addition you can > include a Laplacian term; smoothing works here for building the Laplacian > of the feature image > "laplacian": the level set will evolve towards zeros of the Laplacian > image as an advection term > > // calculates the G and P > // Where grad operator is defined by -featureimagetype parameter. > image g(x) = G( grad(I) ) // using equation 2.20 from the thesis > image p(x) = P( grad(I) ) // using equation 2.21 from the thesis > > > Yes (grad here is the intensity gradient magnitude) > > // Where -levelsetstype defines the type levelsetFunction to be used > > > See above. > > image levelset = levelsetFunction (lvlSet_t0, g, p, -iterations, -propagation, > -curvature, -advection) > > > Yes > > // pseudo-code > end-------------------------------------------------------------------------------------------------------------- > > Questions: > * Which smoothing function is used? (i.e. gradient anisotropic diffusion, > curvature anisotropic diffusion, etc) > > > It's a gradient anisotropic diffusion filter > (itkGradientAnisotropicDiffusionImageFilter), used internally > by itkThresholdSegmentationLevelSetFunction, as mentioned above. > Take a look > here: ITK/Code/Algorithms/itkThresholdSegmentationLevelSetFunction.h > and ITK/Code/Algorithms/itkThresholdSegmentationLevelSetFunction.txx for > details. > > * Are G and P functions the ones defined on the thesis? (on > http://www.itk.org/Doxygen/html/classitk_1_1GeodesicActiveContourLevelSetFunction.html P > is P(G), and in the thesis there is another definition P(I), besides on the > link there are suggestions on the most commonly definition of G, but i'm > not sure on which is really used) > > > In the current implementation, G is the bounded inverse of the intensity > gradient magnitude (1 / (epsilon + del G)). > P is the vector gradient of the bounded inverse of the intensity gradient > magnitued, where the gradient is computed with finite differences if > featurederivativesigma is 0, and using Gaussian derivative convolution > with sigma = featurederivativesigma if the latter is greater than zero. > > Cheers > > Luca > > Thanks in advance! > Best of regards > Carlos > > > 2012/12/3 Luca Antiga <luc...@gm...> > >> Hello Carlos, >> welcome to vmtk and sorry for the wait. I hope the timing won't stop you >> from sending more questions in the future. >> >> The level set code I used during my PhD was written by me, then ITK came >> along and I was very happy to fully embrace it :-) >> So right now level set implementation in vmtk is the one provided by ITK: >> >> http://www.itk.org/Doxygen/html/classitk_1_1GeodesicActiveContourLevelSetFunction.html >> which is a specialization of this general formulation >> http://www.itk.org/Doxygen/html/classitk_1_1LevelSetFunction.html >> >> As you see, the latter link includes a spatial modifier for the mean >> curvature term (Z), which in the actually code is >> returned by the CurvatureSpeed method. In the >> GeodesicActiveContourLevelSetFunction such term is set equal to >> G (the edge potential image). >> >> So, long story short, yes, the current implementation follows equation >> 2.22. >> >> Correct me if i'm wrong: G and P depend on the so called featured Image >> ( | grad I(x) | on Luca's thesis), if executing the >> vmtklevelsetsegmentation filter as before (without specifying a - >> featureimagefile image) Is the featured image used by G and P >> calculated automatically (depending on the -featureimagetype parameter >> with gradient as default)? >> >> >> Exactly. Good job! >> >> >> Luca >> >> >> On Nov 27, 2012, at 10:19 PM, Carlos Alberto Bulant wrote: >> >> Hi VMTK users, >> this is my first post in this mailing list (probably there will be more), >> i'm a new user just starting to use the toolkit. >> Now to my questions: >> >> When using the level set segmentation filter in the form of : >> >> vmtklevelsetsegmentation -ifile image_volume_voi.vti -ofile level_sets.vti >> >> assuming none-zero PropagationScaling (w1), CurvatureScaling (w2) and >> AdvectionScaling (w3) parameters, which of the Level Set formulation >> (proposed on Luca Antiga's PhD thesis) does the implementation use? >> >> (2.19) -w1 G(x) | grad F | + 2 w2 H(x) | grad F | + w3 <[grad P(x)] , >> grad F > >> (2.22) -w1 G(x) | grad F | + 2 w2 G(x) H(x) | grad F | + w3 <[grad >> P(x)] , grad F > >> >> >> In the current implementation, are G(x) and P(x) the one proposed on >> Luca's thesis? >> >> >> Correct me if i'm wrong: G and P depend on the so called featured Image >> ( | grad I(x) | on Luca's thesis), if executing the >> vmtklevelsetsegmentation filter as before (without specifying a - >> featureimagefile image) Is the featured image used by G and P >> calculated automatically (depending on the -featureimagetype parameter >> with gradient as default)? >> >> Sorry for my English, >> Best of regards >> Carlos >> >> ------------------------------------------------------------------------------ >> Keep yourself connected to Go Parallel: >> DESIGN Expert tips on starting your parallel project right. >> >> http://goparallel.sourceforge.net_______________________________________________ >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users >> >> >> > > |
From: Luca A. <luc...@or...> - 2012-12-12 16:48:44
|
Dear Chiara, there has to be an issue with a library being there but not being the same version of the one used to build VTK. I need some more information: - what's the complete backtrace - what you compiled from source vs used as a binary package - whether or not you have other versions of VTK or python on your system. Best, Luca On Dec 4, 2012, at 11:12 AM, Chiara Trentin wrote: > Dear all, > I have successfully installed vmtk/VTK/ITK using the instructions of the VMTK website. > Unfortunately, when I try to run some module (e.g., vmtksurfacereader) the following error message appears: > > ERROR: In /opt/vmtk-build/VTK/IO/vtkSTLReader.cxx, line 446 > vtkSTLReader (0xa709548): STLReader error reading file: Gamba_Piegata_lumen.stl Premature EOF while reading end solid. > > *** glibc detected *** python: double free or corruption (!prev): 0x0a70b030 *** > ======= Backtrace: ========= > /lib/i386-linux-gnu/libc.so.6(+0x75ee2)[0xb737eee2] > bla bla bla > > I have a similar issue when using VTK python scripts... > Is there anyone who can help me? > > In the following some useful info about the software version. > > Ubuntu 12.04.1 LTS (release 12.04, precise) > git 1.7.9.5 > python 2.7.3 > cmake 2.8.7 > linux-libc-dev 3.2.0-34.53 > > > Thanks a lot > > Chiara > > > > > > > > > ------------------------------------------------------------------------------ > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial > Remotely access PCs and mobile devices and provide instant support > Improve your efficiency, and focus on delivering more value-add services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@gm...> - 2012-12-12 15:30:21
|
Hi Carlos, On Dec 3, 2012, at 3:12 PM, Carlos Alberto Bulant wrote: > Hello Luca, > thanks for the answers, i would like to do more questions related to the subject. > > i would like to summarize (in the form of pseudo-code) how i understand the level set segmentation works, and then ask you some questions > > // pseudo-code begin------------------------------------------------------------------------------------------------------------- > image iI(x) // the -ifile > > image lvlSet_t0(x) <--- initialization procedure over the iI(x) image (no pre-processing is used on iI(x)) correct > image I(x) // the featured image > if -featureimagefile fI(x) NOT NULL { > I = fI > }else { > I = smooth(iI, -smoothingiterations, -smoothingtimestep, -smoothingconductance) > } Not really. The feature image can be provided (-featureimagefile) or it can be computed by the script. In which case it will be generated using the method specified by -featureimagetype, which can be "vtkgradient","gradient","upwind","fwhm". See the vmtkimagefeatures script for details on the feature images. Smoothing only comes into play for a particular level set type. There are currently three level set types available, which differ by the terms in the evolution equation: "geodesic": the equation we mentioned in the last email "curves": same as above but the curvature term does not contain mean curvature, but minimum curvature (see L. Lorigo, O. Faugeras, W.E.L. Grimson, R. Keriven, R. Kikinis, A. Nabavi, and C.-F. Westin, Curves: Curve evolution for vessel segmentation. Medical Image Analysis, 5:195-206, 2001. for details) "threshold": the level set will evolve towards a particular intensity level (as opposed to gradient magnitude ridges), and in addition you can include a Laplacian term; smoothing works here for building the Laplacian of the feature image "laplacian": the level set will evolve towards zeros of the Laplacian image as an advection term > // calculates the G and P > // Where grad operator is defined by -featureimagetype parameter. > image g(x) = G( grad(I) ) // using equation 2.20 from the thesis > image p(x) = P( grad(I) ) // using equation 2.21 from the thesis Yes (grad here is the intensity gradient magnitude) > // Where -levelsetstype defines the type levelsetFunction to be used See above. > image levelset = levelsetFunction (lvlSet_t0, g, p, -iterations, -propagation, -curvature, -advection) Yes > // pseudo-code end-------------------------------------------------------------------------------------------------------------- > > Questions: > * Which smoothing function is used? (i.e. gradient anisotropic diffusion, curvature anisotropic diffusion, etc) It's a gradient anisotropic diffusion filter (itkGradientAnisotropicDiffusionImageFilter), used internally by itkThresholdSegmentationLevelSetFunction, as mentioned above. Take a look here: ITK/Code/Algorithms/itkThresholdSegmentationLevelSetFunction.h and ITK/Code/Algorithms/itkThresholdSegmentationLevelSetFunction.txx for details. > * Are G and P functions the ones defined on the thesis? (on http://www.itk.org/Doxygen/html/classitk_1_1GeodesicActiveContourLevelSetFunction.html P is P(G), and in the thesis there is another definition P(I), besides on the link there are suggestions on the most commonly definition of G, but i'm not sure on which is really used) In the current implementation, G is the bounded inverse of the intensity gradient magnitude (1 / (epsilon + del G)). P is the vector gradient of the bounded inverse of the intensity gradient magnitued, where the gradient is computed with finite differences if featurederivativesigma is 0, and using Gaussian derivative convolution with sigma = featurederivativesigma if the latter is greater than zero. Cheers Luca > Thanks in advance! > Best of regards > Carlos > > > 2012/12/3 Luca Antiga <luc...@gm...> > Hello Carlos, > welcome to vmtk and sorry for the wait. I hope the timing won't stop you from sending more questions in the future. > > The level set code I used during my PhD was written by me, then ITK came along and I was very happy to fully embrace it :-) > So right now level set implementation in vmtk is the one provided by ITK: > http://www.itk.org/Doxygen/html/classitk_1_1GeodesicActiveContourLevelSetFunction.html > which is a specialization of this general formulation > http://www.itk.org/Doxygen/html/classitk_1_1LevelSetFunction.html > > As you see, the latter link includes a spatial modifier for the mean curvature term (Z), which in the actually code is > returned by the CurvatureSpeed method. In the GeodesicActiveContourLevelSetFunction such term is set equal to > G (the edge potential image). > > So, long story short, yes, the current implementation follows equation 2.22. > >> Correct me if i'm wrong: G and P depend on the so called featured Image ( | grad I(x) | on Luca's thesis), if executing the vmtklevelsetsegmentation filter as before (without specifying a -featureimagefile image) Is the featured image used by G and P calculated automatically (depending on the -featureimagetype parameter with gradient as default)? > > > Exactly. Good job! > > > Luca > > > On Nov 27, 2012, at 10:19 PM, Carlos Alberto Bulant wrote: > >> Hi VMTK users, >> this is my first post in this mailing list (probably there will be more), i'm a new user just starting to use the toolkit. >> Now to my questions: >> >> When using the level set segmentation filter in the form of : >> vmtklevelsetsegmentation -ifile image_volume_voi.vti -ofile level_sets.vti >> assuming none-zero PropagationScaling (w1), CurvatureScaling (w2) and AdvectionScaling (w3) parameters, which of the Level Set formulation (proposed on Luca Antiga's PhD thesis) does the implementation use? >> >> (2.19) -w1 G(x) | grad F | + 2 w2 H(x) | grad F | + w3 <[grad P(x)] , grad F > >> (2.22) -w1 G(x) | grad F | + 2 w2 G(x) H(x) | grad F | + w3 <[grad P(x)] , grad F > >> >> >> In the current implementation, are G(x) and P(x) the one proposed on Luca's thesis? >> >> >> Correct me if i'm wrong: G and P depend on the so called featured Image ( | grad I(x) | on Luca's thesis), if executing the vmtklevelsetsegmentation filter as before (without specifying a -featureimagefile image) Is the featured image used by G and P calculated automatically (depending on the -featureimagetype parameter with gradient as default)? >> >> Sorry for my English, >> Best of regards >> Carlos >> ------------------------------------------------------------------------------ >> Keep yourself connected to Go Parallel: >> DESIGN Expert tips on starting your parallel project right. >> http://goparallel.sourceforge.net_______________________________________________ >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users > > |
From: Chiara T. <chi...@iu...> - 2012-12-04 11:13:21
|
Dear all, I have successfully installed vmtk/VTK/ITK using the instructions of the VMTK website. Unfortunately, when I try to run some module (e.g., vmtksurfacereader) the following error message appears: ERROR: In /opt/vmtk-build/VTK/IO/vtkSTLReader.cxx, line 446 vtkSTLReader (0xa709548): STLReader error reading file: Gamba_Piegata_lumen.stl Premature EOF while reading end solid. *** glibc detected *** python: double free or corruption (!prev): 0x0a70b030 *** ======= Backtrace: ========= /lib/i386-linux-gnu/libc.so.6(+0x75ee2)[0xb737eee2] bla bla bla I have a similar issue when using VTK python scripts... Is there anyone who can help me? In the following some useful info about the software version. Ubuntu 12.04.1 LTS (release 12.04, precise) git 1.7.9.5 python 2.7.3 cmake 2.8.7 linux-libc-dev 3.2.0-34.53 Thanks a lot Chiara |
From: Carlos A. B. <car...@gm...> - 2012-12-03 14:12:29
|
Hello Luca, thanks for the answers, i would like to do more questions related to the subject. i would like to summarize (in the form of pseudo-code) how i understand the level set segmentation works, and then ask you some questions // pseudo-code begin------------------------------------------------------------------------------------------------------------- image iI(x) // the -ifile image lvlSet_t0(x) <--- initialization procedure over the iI(x) image (no pre-processing is used on iI(x)) image I(x) // the featured image if -featureimagefile fI(x) NOT NULL { I = fI }else { I = smooth(iI, -smoothingiterations, -smoothingtimestep, - smoothingconductance) } // calculates the G and P // Where grad operator is defined by -featureimagetype parameter. image g(x) = G( grad(I) ) // using equation 2.20 from the thesis image p(x) = P( grad(I) ) // using equation 2.21 from the thesis // Where -levelsetstype defines the type levelsetFunction to be used image levelset = levelsetFunction (lvlSet_t0, g, p, -iterations, -propagation, -curvature, -advection) // pseudo-code end-------------------------------------------------------------------------------------------------------------- Questions: * Which smoothing function is used? (i.e. gradient anisotropic diffusion, curvature anisotropic diffusion, etc) * Are G and P functions the ones defined on the thesis? (on http://www.itk.org/Doxygen/html/classitk_1_1GeodesicActiveContourLevelSetFunction.html P is P(G), and in the thesis there is another definition P(I), besides on the link there are suggestions on the most commonly definition of G, but i'm not sure on which is really used) Thanks in advance! Best of regards Carlos 2012/12/3 Luca Antiga <luc...@gm...> > Hello Carlos, > welcome to vmtk and sorry for the wait. I hope the timing won't stop you > from sending more questions in the future. > > The level set code I used during my PhD was written by me, then ITK came > along and I was very happy to fully embrace it :-) > So right now level set implementation in vmtk is the one provided by ITK: > > http://www.itk.org/Doxygen/html/classitk_1_1GeodesicActiveContourLevelSetFunction.html > which is a specialization of this general formulation > http://www.itk.org/Doxygen/html/classitk_1_1LevelSetFunction.html > > As you see, the latter link includes a spatial modifier for the mean > curvature term (Z), which in the actually code is > returned by the CurvatureSpeed method. In the > GeodesicActiveContourLevelSetFunction such term is set equal to > G (the edge potential image). > > So, long story short, yes, the current implementation follows equation > 2.22. > > Correct me if i'm wrong: G and P depend on the so called featured Image > ( | grad I(x) | on Luca's thesis), if executing the > vmtklevelsetsegmentation filter as before (without specifying a - > featureimagefile image) Is the featured image used by G and P calculated > automatically (depending on the -featureimagetype parameter with gradient > as default)? > > > Exactly. Good job! > > > Luca > > > On Nov 27, 2012, at 10:19 PM, Carlos Alberto Bulant wrote: > > Hi VMTK users, > this is my first post in this mailing list (probably there will be more), > i'm a new user just starting to use the toolkit. > Now to my questions: > > When using the level set segmentation filter in the form of : > > vmtklevelsetsegmentation -ifile image_volume_voi.vti -ofile level_sets.vti > > assuming none-zero PropagationScaling (w1), CurvatureScaling (w2) and > AdvectionScaling (w3) parameters, which of the Level Set formulation > (proposed on Luca Antiga's PhD thesis) does the implementation use? > > (2.19) -w1 G(x) | grad F | + 2 w2 H(x) | grad F | + w3 <[grad P(x)] , > grad F > > (2.22) -w1 G(x) | grad F | + 2 w2 G(x) H(x) | grad F | + w3 <[grad > P(x)] , grad F > > > > In the current implementation, are G(x) and P(x) the one proposed on > Luca's thesis? > > > Correct me if i'm wrong: G and P depend on the so called featured Image > ( | grad I(x) | on Luca's thesis), if executing the > vmtklevelsetsegmentation filter as before (without specifying a - > featureimagefile image) Is the featured image used by G and P calculated > automatically (depending on the -featureimagetype parameter with gradient > as default)? > > Sorry for my English, > Best of regards > Carlos > > ------------------------------------------------------------------------------ > Keep yourself connected to Go Parallel: > DESIGN Expert tips on starting your parallel project right. > > http://goparallel.sourceforge.net_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users > > > |
From: Luca A. <luc...@gm...> - 2012-12-03 10:15:54
|
Dear Miguel, indeed this is weird. Can you run the model through a cleaner and a connectivity, this way: vmtksurfacetriangle -ifile yoursurface.vtp --pipe vmtksurfaceconnectivity -ofile yoursurface_c.vtp and then run the algorithm on it? If all else fails, can you make the model available to me for a quick test? BTW, cool work Luca On Nov 30, 2012, at 3:23 PM, Bernabeu Llinares, Miguel wrote: > Dear VMTK users, > > I continued working on the project I described in my e-mail on 30 Sep 2012 (see below). Following Arjan's advice I managed to get vmtkcenterlinemodeller to accurately resolve the vascular network. > > I'm currently processing a new image I obtained from my experimental collaborators and the same workflow I used in the past is failing at the vmtknetworkextraction step. I'm attaching two Paraview snapshots: one with the surface mesh from which I'm trying to obtain centrelines and a second one with the output generated by vmtknetworkextraction. > > I guess there's some singularity in the surface mesh that is making the vmtknetworkextraction algorithm fail (given that it has worked in the past for similar models). I'm unfortunately pretty clueless about what might be the culprit. Note that I've tried opening the surface mesh at the different points to no improvement. > > Any help would be greatly appreciated! > > Best wishes, > Miguel > > <network.png> > <centrelines.png> > > On 30 Sep 2012, at 13:03, Arjan Geers wrote: > >> Dear Miguel, >> >> It seems that the output image of vmtkcenterlinemodeller doesn't resolve all the details of the vascular network. You can improve the resolution of this image by changing the 'dimensions' parameter. Example with default values: >> >> vmtkcenterlinemodeller -ifile surface_decimated095_clipped_centerlines.vtp -radiusarray Radius -dimensions 64 64 64 --pipe vmtkmarchingcubes -ofile surface_decimated095_clipped_centerlines_tubed.vtp >> >> Since the centerlines lie in the xy-plane, you'll probably need less voxels in the z-direction. >> >> Hope this helps, >> >> Arjan >> >> On Sun, Sep 30, 2012 at 11:18 AM, Bernabeu Llinares, Miguel <mig...@uc...> wrote: >> Dear VMTK users, >> >> I'm using VTMK 1.0.0 to generate a 3D surface mesh from a single 2D image of a complex vascular network. A similar application was previously discussed in the mailing list: >> >> http://sourceforge.net/mailarchive/forum.php?thread_name=6DEB2248-5927-48CC-AB2F-E24662DF4A05%40orobix.com&forum_name=vmtk-users >> >> I followed Luca's advice of replicating the image to generate a volume. From then, I used a combination of marching cubes and vmtknetworkextraction to obtain the centrelines of the model and its associated maximum inscribed sphere radius. What I would like to do next is to use vmtkcenterlinemodeller and marching cubes to fit tubes around the centrelines to obtain a network of cylindrical section (as opposite to the network of square ducts coming out of the first marching cubes step). Something like: >> >> vmtknetworkextraction -ifile surface_decimated095_clipped.vtp -ofile surface_decimated095_clipped_centerlines.vtp >> >> vmtkcenterlinemodeller -ifile surface_decimated095_clipped_centerlines.vtp -radiusarray Radius --pipe vmtkmarchingcubes -ofile surface_decimated095_clipped_centerlines_tubed.vtp >> >> Unfortunately the result is not what I expected: many vessels collapsed together and the rich topology is mostly lost. Please see the two images attached with the results of the two previous commands. >> >> Any input is very much appreciated! >> >> Best wishes, >> Miguel >> >> >> <centerlines_with_radius.png> >> >> <tubes_around_centerlines.png> >> -- >> Dr Miguel O. Bernabeu >> 2020 Science Research Fellow (http://www.2020science.net) >> Centre for Computational Science, University College London >> CoMPLEX, University College London >> >> >> ------------------------------------------------------------------------------ >> Everyone hates slow websites. So do we. >> Make your web apps faster with AppDynamics >> Download AppDynamics Lite for free today: >> http://ad.doubleclick.net/clk;258768047;13503038;j? >> http://info.appdynamics.com/FreeJavaPerformanceDownload.html >> _______________________________________________ >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users >> >> > > -- > Dr Miguel O. Bernabeu > 2020 Science Research Fellow (http://www.2020science.net) > Centre for Computational Science, University College London > CoMPLEX, University College London > > ------------------------------------------------------------------------------ > Keep yourself connected to Go Parallel: > TUNE You got it built. Now make it sing. Tune shows you how. > http://goparallel.sourceforge.net_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@or...> - 2012-12-03 10:02:57
|
Hi Edwin, you should a look at this first: http://www.vmtk.org/Tutorials/ParentVesselReconstruction/ It's likely that it won't do exactly what you need, but it will get you 90% of the way on this challenging problem. Feel free to get back to us with more questions. Hope this helps Luca PS: you come from the university where Lua (http://www.lua.org) was created. Very cool :-) On Nov 30, 2012, at 5:20 PM, ed...@el... wrote: > Hello vmtk users, well i'am new in vmtk so i need to isolate an aneurysm > from its parent vessel and i want to know if exist any routine already > implemented to do that. > > Thaks a lot for your help. > > Best Regards, > > Edwin Maldonado Tavara. > Pontificia Universidade Catholica > Rio de Janeiro - Brasil. > > > > ------------------------------------------------------------------------------ > Keep yourself connected to Go Parallel: > TUNE You got it built. Now make it sing. Tune shows you how. > http://goparallel.sourceforge.net > _______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@gm...> - 2012-12-03 09:56:46
|
Hi Nancy, I think I know what it is. In any case, this is how it should work: A) in general vmtk will use ITK to read images, and it will do so unless you manually specify -useitk 0 on the vmtkimagereader. The syntax for reading in the standard way is vmtkimagereader -ifile E:\VTK\VTK-5.8\vtkdata-5.8.0\Data\BlueCircle.png --pipe vmtkimageviewer ITK will take care of recognizing the format automatically. In this case you can shorten it simply to vmtkimageviewer -ifile E:\VTK\VTK-5.8\vtkdata-5.8.0\Data\BlueCircle.png There's a but: ITK, although it's a better choice for medical image formats, can only read 1 channel png's so if you want to read a 3 channel image you have to use B) B) the alternative is to use VTK to read image files. This is how you do it: vmtkimagereader -useitk 0 -f png -ifile E:\VTK\VTK-5.8\vtkdata-5.8.0\Data\BlueCircle.png -d --pipe vmtkimageviewer Note that in the pipes above I haven't used the -d option at all: the filename should be complete with the full path (E:\VTK...). This is very likely the issue you were having with your script. Now, the syntax for reading DICOM is the following vmtkimagereader -ifile E:\DICOM\SERIES_1\IM0001 --pipe vmtkimageviewer where I just made up a path. The path should specify the first file in the DICOM series you're interested in. A clarification with the -d option: it's for reading file series (DICOM, png, etc) using the VTK readers. You should use it coupled with the -prefix and -pattern options for non-DICOM data. For DICOM data, -f dicom -d E:\DICOM\SERIES_1 suffices, no need of -prefix and -pattern. However, using the VTK DICOM reader is discouraged in favor of ITK, as shown above. Hope this helps Luca PS: one unrelated suggestion, you can omit the .py at the end of script names (vmtkimagereader -ifile ... instead of vmtkimagereader.py -ifile ...). On Nov 28, 2012, at 2:26 AM, Nancy wrote: > Hi , > i had installated vmtk and pythonxy ,now i want to take a test,but i met some problems.For example: > 1、 i want to open E:\VTK\VTK-5.8\vtkdata-5.8.0\Data\BlueCircle.png > <截图1.png> > 、 > i type in cmd : > vmtkimagereader.py -f png -ifile BlueCircle.png -d E:\VTK\VTK-5.8\vtkdata-5.8.0\Data --pipe vmtkimageviewer.py > get result : > <截图2.png> > > 2、if i try to open dicom picture ,there are also errors like this: > <截图3.png> > <截图4.png> > > Do you know this is why? > how do i do? > > Regards, > > > ------------------------------------------------------------------------------ > Keep yourself connected to Go Parallel: > INSIGHTS What's next for parallel hardware, programming and related areas? > Interviews and blogs by thought leaders keep you ahead of the curve. > http://goparallel.sourceforge.net_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@gm...> - 2012-12-03 09:22:30
|
Hello Carlos, welcome to vmtk and sorry for the wait. I hope the timing won't stop you from sending more questions in the future. The level set code I used during my PhD was written by me, then ITK came along and I was very happy to fully embrace it :-) So right now level set implementation in vmtk is the one provided by ITK: http://www.itk.org/Doxygen/html/classitk_1_1GeodesicActiveContourLevelSetFunction.html which is a specialization of this general formulation http://www.itk.org/Doxygen/html/classitk_1_1LevelSetFunction.html As you see, the latter link includes a spatial modifier for the mean curvature term (Z), which in the actually code is returned by the CurvatureSpeed method. In the GeodesicActiveContourLevelSetFunction such term is set equal to G (the edge potential image). So, long story short, yes, the current implementation follows equation 2.22. > Correct me if i'm wrong: G and P depend on the so called featured Image ( | grad I(x) | on Luca's thesis), if executing the vmtklevelsetsegmentation filter as before (without specifying a -featureimagefile image) Is the featured image used by G and P calculated automatically (depending on the -featureimagetype parameter with gradient as default)? Exactly. Good job! Luca On Nov 27, 2012, at 10:19 PM, Carlos Alberto Bulant wrote: > Hi VMTK users, > this is my first post in this mailing list (probably there will be more), i'm a new user just starting to use the toolkit. > Now to my questions: > > When using the level set segmentation filter in the form of : > vmtklevelsetsegmentation -ifile image_volume_voi.vti -ofile level_sets.vti > assuming none-zero PropagationScaling (w1), CurvatureScaling (w2) and AdvectionScaling (w3) parameters, which of the Level Set formulation (proposed on Luca Antiga's PhD thesis) does the implementation use? > > (2.19) -w1 G(x) | grad F | + 2 w2 H(x) | grad F | + w3 <[grad P(x)] , grad F > > (2.22) -w1 G(x) | grad F | + 2 w2 G(x) H(x) | grad F | + w3 <[grad P(x)] , grad F > > > > In the current implementation, are G(x) and P(x) the one proposed on Luca's thesis? > > > Correct me if i'm wrong: G and P depend on the so called featured Image ( | grad I(x) | on Luca's thesis), if executing the vmtklevelsetsegmentation filter as before (without specifying a -featureimagefile image) Is the featured image used by G and P calculated automatically (depending on the -featureimagetype parameter with gradient as default)? > > Sorry for my English, > Best of regards > Carlos > ------------------------------------------------------------------------------ > Keep yourself connected to Go Parallel: > DESIGN Expert tips on starting your parallel project right. > http://goparallel.sourceforge.net_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: <ed...@el...> - 2012-11-30 16:20:51
|
Hello vmtk users, well i'am new in vmtk so i need to isolate an aneurysm from its parent vessel and i want to know if exist any routine already implemented to do that. Thaks a lot for your help. Best Regards, Edwin Maldonado Tavara. Pontificia Universidade Catholica Rio de Janeiro - Brasil. |
From: Carlos A. B. <car...@gm...> - 2012-11-27 21:20:13
|
Hi VMTK users, this is my first post in this mailing list (probably there will be more), i'm a new user just starting to use the toolkit. Now to my questions: When using the level set segmentation filter in the form of : vmtklevelsetsegmentation -ifile image_volume_voi.vti -ofile level_sets.vti assuming none-zero PropagationScaling (w1), CurvatureScaling (w2) and AdvectionScaling (w3) parameters, which of the Level Set formulation (proposed on Luca Antiga's PhD thesis) does the implementation use? (2.19) -w1 G(x) | grad F | + 2 w2 H(x) | grad F | + w3 <[grad P(x)] , grad F > (2.22) -w1 G(x) | grad F | + 2 w2 G(x) H(x) | grad F | + w3 <[grad P(x)] , grad F > In the current implementation, are G(x) and P(x) the one proposed on Luca's thesis? Correct me if i'm wrong: G and P depend on the so called featured Image ( | grad I(x) | on Luca's thesis), if executing the vmtklevelsetsegmentation filter as before (without specifying a - featureimagefile image) Is the featured image used by G and P calculated automatically (depending on the -featureimagetype parameter with gradient as default)? Sorry for my English, Best of regards Carlos |
From: Luca A. <luc...@or...> - 2012-11-25 19:40:15
|
Hi Nancy, it looks like you have multiple versions of VTK on your machine and that your system finds the ones not shipped with vmtk first. Can you try to remove those - even just renaming the folder should suffice. Let us know Luca On 25/nov/2012, at 14:20, Nancy <dar...@16...> wrote: > hi all, > i met a problem ,when i type vmtkmarchingcubes --help in PypePad, i type other any module,for example :vmtkimagereader --help or vmtkimageviewer --help and so on,it display :no module named vmtkimagereader.... > > <截图1.png> > i push vmtkmarchingcubes.py in cmd.exe it show this: > <截图2.png> > > Who anyone knows? i need you help~ > Thanks in advance. > > > ------------------------------------------------------------------------------ > Monitor your physical, virtual and cloud infrastructure from a single > web console. Get in-depth insight into apps, servers, databases, vmware, > SAP, cloud infrastructure, etc. Download 30-day Free Trial. > Pricing starts from $795 for 25 servers or applications! > http://p.sf.net/sfu/zoho_dev2dev_nov > _______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@gm...> - 2012-11-20 15:54:32
|
Hi Miguel, thanks for the future citation! Usually there are two ways: - the website: The Vascular Modeling Toolkit website, www.vmtk.org, last accessed 20 Dec 2012 - this paper: Antiga L, Piccinelli M, Botti L, Ene-Iordache B, Remuzzi A and Steinman DA. An image-based modeling framework for patient-specific computational hemodynamics. Medical and Biological Engineering and Computing, 46: 1097-1112, Nov 2008. Best wishes for your paper Luca On Nov 19, 2012, at 3:59 PM, Bernabeu Llinares, Miguel wrote: > Dear VMTK developers, > > What's the preferred way of citing VMTK in scientific papers? > > Best wishes, > Miguel > > -- > Dr Miguel O. Bernabeu > 2020 Science Research Fellow (http://www.2020science.net) > Centre for Computational Science, University College London > CoMPLEX, University College London > > ------------------------------------------------------------------------------ > Monitor your physical, virtual and cloud infrastructure from a single > web console. Get in-depth insight into apps, servers, databases, vmware, > SAP, cloud infrastructure, etc. Download 30-day Free Trial. > Pricing starts from $795 for 25 servers or applications! > http://p.sf.net/sfu/zoho_dev2dev_nov_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Bernabeu L. M. <mig...@uc...> - 2012-11-19 15:00:15
|
Dear VMTK developers, What's the preferred way of citing VMTK in scientific papers? Best wishes, Miguel -- Dr Miguel O. Bernabeu 2020 Science Research Fellow (http://www.2020science.net) Centre for Computational Science, University College London CoMPLEX, University College London |
From: Richard D. <ric...@ui...> - 2012-11-15 04:28:35
|
So...things are largely proceeding well with my meshing workflow. However, on some surfaces (generally Left Anterior Descending coronary arteries (LADs), which often have 5+ branches), 1 outlet will wind up excluded when I get to the point of running fluent for analysis on the vessel. Specifically, when it is initially cataloging the surfaces at the start, it will state that it is "Skipping zone surface10 (not referenced by grid)." (or some other number). Does anyone have any experience with this/idea what might cause it? I've seen this with fixed edge length, and with radius-adaptive meshes, so I'm not even sure I can blame one or the other. My triangulations that I feed into vmtkmeshgenerator are smooth manifolds, so that would seem an unlikely culprit. Not sure what I can do to resolve this, but any insight would be very much appreciated; I should have time to dig into this in a couple days, but could use some help in figuring it all out. -rd |
From: Luca A. <luc...@or...> - 2012-11-02 09:31:48
|
Hi everyone, about the STL thing, the vtk writer used in vmtk supports ASCII files out of the box, only I haven't exposed that option at the script level until today. I just pushed a commit on the source code repository to allow this: ... --pipe vmtksurfacewriter -ofile foo.stl -mode ascii It works for stl, vtu, vtk, vtp, ply. If you're in a rush, get these two files https://raw.github.com/vmtk/vmtk/master/vmtkScripts/vmtksurfacewriter.py https://raw.github.com/vmtk/vmtk/master/vmtkScripts/vmtkmeshwriter.py and copy them over to your {installpath}/lib/vmtk/vmtk folder, replacing the old ones. Note, it's the lib folder, not the bin folder (you'll find two files called vmtksurfacewriter and vmtkmeshwriter, without the py extension: they're not the right ones to replace). Luca PS: Richard, thanks a lot for sharing the script, very much appreciated. On Nov 1, 2012, at 8:19 PM, Richard Downe wrote: > Personally, I write my stl files myself, because I build my surfaces in another program. Attached is a perl script I've used for converting .off files to .stl -- should be trivial to adapt it to python/iterate over a vtkPolyData instead of .off input. > -rd > > On 11/01/2012 01:40 PM, Vikram Mehta wrote: >> Hi Arjan, >> >> Thanks alot for your response. I seem to have got all the data I needed. >> >> >> On a separate note, >> >> Does anyone know how to save your surface file as an ASCII STL and not a binary one. >> >> Thanks alot ! >> >> Vikram. >> >> >> >> On Tue, Oct 16, 2012 at 9:47 PM, Arjan Geers <aj...@gm...> wrote: >> Hi Vikram, >> >> You could try this: >> >> vmtksurfacereader -ifile /home/vm308/catheter.vtp --pipe vmtkcenterlines -seedselector openprofiles -ofile catheter_cl.dat >> >> It should give you the coordinates of the centerline points in a human-readable format. >> >> Good luck with it, >> >> Arjan >> >> On Tue, Oct 16, 2012 at 7:58 PM, Vikram Mehta <vv...@gm...> wrote: >> Dear VMTK users, >> >> I have a surface reconstruction of a catheter within a coronary artery and have also generated the centerlines for it. >> However, for further processing, I need the coordinates of the catheter centerline and was wondering if you all had any idea to do this ? >> I tried using vmtkcenterlinegeometry but I might be doing something wrong, >> >> vmtksurfacereader -ifile /home/vm308/catheter.vtp --pipe vmtkcenterlines -seedselector openprofiles --pipe vmtkcenterlinegeometry -ofile catheter_clg.vtp >> >> Ideally I would like a .txt file (basically a point cloud) - is this achievable ? >> >> Please advise. >> >> Looking forward to your replies >> >> Thanks in advance, >> Vikram. >> >> >> ------------------------------------------------------------------------------ >> Don't let slow site performance ruin your business. Deploy New Relic APM >> Deploy New Relic app performance management and know exactly >> what is happening inside your Ruby, Python, PHP, Java, and .NET app >> Try New Relic at no cost today and get our sweet Data Nerd shirt too! >> http://p.sf.net/sfu/newrelic-dev2dev >> _______________________________________________ >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users >> >> >> >> >> >> ------------------------------------------------------------------------------ >> Everyone hates slow websites. So do we. >> Make your web apps faster with AppDynamics >> Download AppDynamics Lite for free today: >> http://p.sf.net/sfu/appdyn_sfd2d_oct >> >> >> _______________________________________________ >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users > > <stlBuilder.pl>------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_sfd2d_oct_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Vikram M. <vv...@gm...> - 2012-11-01 18:40:35
|
Hi Arjan, Thanks alot for your response. I seem to have got all the data I needed. On a separate note, Does anyone know how to save your surface file as an ASCII STL and not a binary one. Thanks alot ! Vikram. On Tue, Oct 16, 2012 at 9:47 PM, Arjan Geers <aj...@gm...> wrote: > Hi Vikram, > > You could try this: > > vmtksurfacereader -ifile /home/vm308/catheter.vtp --pipe vmtkcenterlines > -seedselector openprofiles -ofile catheter_cl.dat > > It should give you the coordinates of the centerline points in a > human-readable format. > > Good luck with it, > > Arjan > > On Tue, Oct 16, 2012 at 7:58 PM, Vikram Mehta <vv...@gm...> wrote: > >> Dear VMTK users, >> >> I have a surface reconstruction of a catheter within a coronary artery >> and have also generated the centerlines for it. >> However, for further processing, I need the coordinates of the catheter >> centerline and was wondering if you all had any idea to do this ? >> I tried using vmtkcenterlinegeometry but I might be doing something wrong, >> >> vmtksurfacereader -ifile /home/vm308/catheter.vtp --pipe vmtkcenterlines >> -seedselector openprofiles --pipe vmtkcenterlinegeometry -ofile >> catheter_clg.vtp >> >> Ideally I would like a .txt file (basically a point cloud) - is this >> achievable ? >> >> Please advise. >> >> Looking forward to your replies >> >> Thanks in advance, >> Vikram. >> >> >> >> ------------------------------------------------------------------------------ >> Don't let slow site performance ruin your business. Deploy New Relic APM >> Deploy New Relic app performance management and know exactly >> what is happening inside your Ruby, Python, PHP, Java, and .NET app >> Try New Relic at no cost today and get our sweet Data Nerd shirt too! >> http://p.sf.net/sfu/newrelic-dev2dev >> _______________________________________________ >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users >> >> > |
From: Richard D. <ric...@ui...> - 2012-10-23 16:45:48
|
That sounds good. The whole process will be described in detail in my dissertation, which is due in a couple weeks. If you send me directions on how to document it on the website, I'd be happy to add that in then. -rd On 10/22/2012 10:03 AM, Luca Antiga wrote: > Hi Richard, > excellent, it's always nice to have good feedback about vmtk. > Thanks a lot for offering to share. In fact, I think even documenting the experience > in a short page on the vmtk website with a few images would be great. Sharing > code would be invaluable. > Just think about it and let me know, in case you decide for it I'll give you directions > for contributing. > Thanks a lot again > > Luca > > > On Oct 22, 2012, at 4:54 PM, Richard Downe wrote: > >> Luca, thanks. >> In the meantime, I noticed, digging around in the code, that I could pass source/target points into vmtkcenterlines, and get the same result; I might explore passing my own in at some point in the future, but the mesh generation is a tiny slice of the running time, so I may be satisfied where I am now. (Moreover, my centerlines never actually meet, so using your code provides me with the necessary guarantee of intersections in appropriate places.) >> >> Adding the centerlines, however, has a) drastically reduced the odds of tetgen failures (previously on some of the more difficult meshes, tetgen would have to run 2 or 3 times before it got a convergence), and the nominal running time in fluent has dropped from 36 hours to 6. >> >> I did have to change edgelengthfactor to 0.2 (at 0.3, the mesh was a bit too coarse; when I tried 0.1 I got massive meshes that caused fluent to consume 24G ram), but at this point things are running very smoothly. >> >> Thanks again, if you think anything from my pipeline may be useful to others in the future, let me know and I'd be happy to share. >> -rd >> >> On 10/22/2012 08:54 AM, Luca Antiga wrote: >>> Hi Richard, >>> sorry for the long wait. >>> >>> Your pipeline looks good, but you'll need the radius at each point >>> (you seem proficient in Python and VTK so I won't provide you with >>> details on how to add a vtkDoubleArray to PointData, but let me know >>> if you need directions). >>> >>> In any case, the mesh generator needs a scalar field over the input >>> surface to be remeshed. That scalar field will be used (multiplied by >>> a factor) as the nominal size of the triangle edges in the remeshed >>> surface (as demonstrated in the mesh generation tutorial on the vmtk >>> website). >>> >>> The way you generate that scalar field is really up to you, you could >>> do it through curvatures or by evaluating the distance of the surface >>> from centerlines, or the closest centerline radius. The latter is probably >>> what you're aiming at now, so as soon as you have your dataset with >>> centerlines and radii (in a point array named, say, Radius), you can do >>> >>> vmtkdistancetocenterlines -ifile surface.vtp -centerlinesfile centerlines.vtp >>> -radiusarray Radius -useradius 1 -centerlineradius 1 --pipe >>> vmtkmeshgenerator -elementsizemode edgelengtharray -edgelengtharray >>> Radius -edgelengthfactor 0.3 -ofile foo.vtu >>> >>> The first script will generate the centerline radius field on the surface >>> and the second will remesh the surface taking that field into account for >>> the local triangle size. >>> >>> Hope this helps >>> >>> >>> Luca >>> >>> >>> On Oct 12, 2012, at 6:43 PM, Richard Downe wrote: >>> >>>> Upon observing the behavior of my automated setup for a week, I do think >>>> I'm going to have to include the centerlines. >>>> I'm reasonably confident in the quality of my triangulated surfaces, but >>>> I do think the fixed edge length passed to vmtkmeshgenerator is overly >>>> limiting. >>>> >>>> My question is this: what arguments to I need to feed into >>>> vmtkcenterlinemerge if I want to have an appropriate vtkPolyData for use >>>> as such in subsequent processing? >>>> >>>> I have the code sample below for simply putting the centerlines into a >>>> vtkPolyData; I have radius information available, but I'm curious what >>>> it needs to look like internally for the rest of the vmtkpipeline to be >>>> happy with it. >>>> Thanks. >>>> -rd >>>> >>>> def ComputeCenterlinePolyData(self, fusmesher): >>>> vesselPoints = vtk.vtkPoints() >>>> vesselLines = vtk.vtkCellArray() >>>> vesselPoly = vtk.vtkPolyData() >>>> >>>> vesselCenterline = fusmesher.GetVesselCenterline() >>>> vesselPoints.SetNumberOfPoints(len(vesselCenterline)) >>>> vesselLines.InsertNextCell(len(vesselCenterline)) >>>> >>>> for i in range(len(vesselCenterline)): >>>> p = vesselCenterline[i] >>>> vesselPoints.SetPoint(i, p['x'], p['y'], p['z']) >>>> vesselLines.InsertCellPoint(i) >>>> >>>> vesselPoly.SetPoints(vesselPoints) >>>> vesselPoly.SetLines(vesselLines) >>>> >>>> branchPolys = [] >>>> >>>> for i in range(fusmesher.GetBranchCount()): >>>> branchPoints = vtk.vtkPoints() >>>> branchLines = vtk.vtkCellArray() >>>> branchPoly = vtk.vtkPolyData() >>>> >>>> branchCenterline = fusmesher.GetBranchCenterline(i) >>>> branchPoints.SetNumberOfPoints(len(branchCenterline)) >>>> branchLines.InsertNextCell(len(branchCenterline)) >>>> >>>> for j in range(len(branchCenterline)): >>>> p = branchCenterline[j] >>>> branchPoints.SetPoint(j, p['x'], p['y'], p['z']) >>>> branchLines.InsertCellPoint(j) >>>> >>>> branchPoly.SetPoints(branchPoints) >>>> branchPoly.SetLines(branchLines) >>>> branchPolys.append(branchPoly) >>>> >>>> appender = vtk.vtkAppendPolyData() >>>> appender.AddInput(vesselPoly) >>>> >>>> for i in range(fusmesher.GetBranchCount()): >>>> appender.AddInput(branchPolys[i]) >>>> >>>> return appender.GetOutput() >>>> >>>> On 10/09/2012 05:41 AM, Luca Antiga wrote: >>>>> Hi Richard, >>>>> >>>>> On Oct 2, 2012, at 5:08 PM, Richard Downe wrote: >>>>> >>>>>> I have been attempting to use vmtk to generate meshes for use with fluent. >>>>>> Because the nature of my workflow involves geometric transformations of >>>>>> segmented borders, my starting point is a point set (well, more >>>>>> accurately, several disjoint structured grids). >>>>>> I have a program that generates a topologically sound triangular surface >>>>>> with minimal triangle angle of 24 degrees, flow extensions added, and >>>>>> caps removed at boundaries. >>>>>> >>>>>> My coordinates are also spaced in meters, so my edge lengths are >>>>>> typically on the order of 0.0002. >>>>>> After a few false starts, I have successfully been able to run >>>>>> vmtkmeshgenerator on the STL file output by my initial triangulation, >>>>>> and pipe it into vmtkmeshwriter to create a fluent file, and use a pipe >>>>>> I wrote myself to identify the inlets based on proximity of the entities >>>>>> to known locations of centerlines at boundaries. >>>>> Sounds like great work. >>>>> >>>>>> The first surface I attempted ran in fluent fine. 2 subsequent, more >>>>>> complex surfaces are causing fluent to fail in mysterious ways that are >>>>>> almost certainly related to mesh quality. I am invoking >>>>>> vmtkmeshgenerator with -edgelength 0.0002 as the only argument. Are >>>>>> there known steps I can take to alleviate this/improve mesh quality? >>>>>> There are clearly a large number of people using vmtk successfully, so I >>>>>> can only assume I could be doing something better. (When I examine the >>>>>> mesh, fluent's quality rating is typically between 10 and 20, with a >>>>>> maximum aspect ratio value of around 35). >>>>> I'd really need to look into the mesh, would it be possible for you to send >>>>> me the stl file? >>>>> >>>>>> My current tack is to attempt to add the centerlines into the flow using >>>>>> vmtkdistancetocenterlines, on the assumption that this will cause the >>>>>> sizing function to generate more useful information, and thereby give me >>>>>> better shaped tetrahedra -- but I could use advice, as I do somewhat >>>>>> feel like I'm swinging in the dark. >>>>> Depending on the nature of your domain, it is possible that 0.0002 as an >>>>> element size ends up being inadequate for certain regions and overkill >>>>> for others, so the use of centerline information almost certainly helps. >>>>> >>>>> However, I'd first take a look at the surface to see if it rings any bell. >>>>> >>>>> Best, >>>>> >>>>> >>>>> Luca >>>>> >>>>> >>>>>> Thanks. >>>>>> --Richard >>>>>> >>>>>> ------------------------------------------------------------------------------ >>>>>> Don't let slow site performance ruin your business. Deploy New Relic APM >>>>>> Deploy New Relic app performance management and know exactly >>>>>> what is happening inside your Ruby, Python, PHP, Java, and .NET app >>>>>> Try New Relic at no cost today and get our sweet Data Nerd shirt too! >>>>>> http://p.sf.net/sfu/newrelic-dev2dev >>>>>> _______________________________________________ >>>>>> vmtk-users mailing list >>>>>> vmt...@li... >>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>> ------------------------------------------------------------------------------ >>>> Don't let slow site performance ruin your business. Deploy New Relic APM >>>> Deploy New Relic app performance management and know exactly >>>> what is happening inside your Ruby, Python, PHP, Java, and .NET app >>>> Try New Relic at no cost today and get our sweet Data Nerd shirt too! >>>> http://p.sf.net/sfu/newrelic-dev2dev >>>> _______________________________________________ >>>> vmtk-users mailing list >>>> vmt...@li... >>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@gm...> - 2012-10-22 15:04:42
|
Hi Richard, excellent, it's always nice to have good feedback about vmtk. Thanks a lot for offering to share. In fact, I think even documenting the experience in a short page on the vmtk website with a few images would be great. Sharing code would be invaluable. Just think about it and let me know, in case you decide for it I'll give you directions for contributing. Thanks a lot again Luca On Oct 22, 2012, at 4:54 PM, Richard Downe wrote: > Luca, thanks. > In the meantime, I noticed, digging around in the code, that I could pass source/target points into vmtkcenterlines, and get the same result; I might explore passing my own in at some point in the future, but the mesh generation is a tiny slice of the running time, so I may be satisfied where I am now. (Moreover, my centerlines never actually meet, so using your code provides me with the necessary guarantee of intersections in appropriate places.) > > Adding the centerlines, however, has a) drastically reduced the odds of tetgen failures (previously on some of the more difficult meshes, tetgen would have to run 2 or 3 times before it got a convergence), and the nominal running time in fluent has dropped from 36 hours to 6. > > I did have to change edgelengthfactor to 0.2 (at 0.3, the mesh was a bit too coarse; when I tried 0.1 I got massive meshes that caused fluent to consume 24G ram), but at this point things are running very smoothly. > > Thanks again, if you think anything from my pipeline may be useful to others in the future, let me know and I'd be happy to share. > -rd > > On 10/22/2012 08:54 AM, Luca Antiga wrote: >> Hi Richard, >> sorry for the long wait. >> >> Your pipeline looks good, but you'll need the radius at each point >> (you seem proficient in Python and VTK so I won't provide you with >> details on how to add a vtkDoubleArray to PointData, but let me know >> if you need directions). >> >> In any case, the mesh generator needs a scalar field over the input >> surface to be remeshed. That scalar field will be used (multiplied by >> a factor) as the nominal size of the triangle edges in the remeshed >> surface (as demonstrated in the mesh generation tutorial on the vmtk >> website). >> >> The way you generate that scalar field is really up to you, you could >> do it through curvatures or by evaluating the distance of the surface >> from centerlines, or the closest centerline radius. The latter is probably >> what you're aiming at now, so as soon as you have your dataset with >> centerlines and radii (in a point array named, say, Radius), you can do >> >> vmtkdistancetocenterlines -ifile surface.vtp -centerlinesfile centerlines.vtp >> -radiusarray Radius -useradius 1 -centerlineradius 1 --pipe >> vmtkmeshgenerator -elementsizemode edgelengtharray -edgelengtharray >> Radius -edgelengthfactor 0.3 -ofile foo.vtu >> >> The first script will generate the centerline radius field on the surface >> and the second will remesh the surface taking that field into account for >> the local triangle size. >> >> Hope this helps >> >> >> Luca >> >> >> On Oct 12, 2012, at 6:43 PM, Richard Downe wrote: >> >>> Upon observing the behavior of my automated setup for a week, I do think >>> I'm going to have to include the centerlines. >>> I'm reasonably confident in the quality of my triangulated surfaces, but >>> I do think the fixed edge length passed to vmtkmeshgenerator is overly >>> limiting. >>> >>> My question is this: what arguments to I need to feed into >>> vmtkcenterlinemerge if I want to have an appropriate vtkPolyData for use >>> as such in subsequent processing? >>> >>> I have the code sample below for simply putting the centerlines into a >>> vtkPolyData; I have radius information available, but I'm curious what >>> it needs to look like internally for the rest of the vmtkpipeline to be >>> happy with it. >>> Thanks. >>> -rd >>> >>> def ComputeCenterlinePolyData(self, fusmesher): >>> vesselPoints = vtk.vtkPoints() >>> vesselLines = vtk.vtkCellArray() >>> vesselPoly = vtk.vtkPolyData() >>> >>> vesselCenterline = fusmesher.GetVesselCenterline() >>> vesselPoints.SetNumberOfPoints(len(vesselCenterline)) >>> vesselLines.InsertNextCell(len(vesselCenterline)) >>> >>> for i in range(len(vesselCenterline)): >>> p = vesselCenterline[i] >>> vesselPoints.SetPoint(i, p['x'], p['y'], p['z']) >>> vesselLines.InsertCellPoint(i) >>> >>> vesselPoly.SetPoints(vesselPoints) >>> vesselPoly.SetLines(vesselLines) >>> >>> branchPolys = [] >>> >>> for i in range(fusmesher.GetBranchCount()): >>> branchPoints = vtk.vtkPoints() >>> branchLines = vtk.vtkCellArray() >>> branchPoly = vtk.vtkPolyData() >>> >>> branchCenterline = fusmesher.GetBranchCenterline(i) >>> branchPoints.SetNumberOfPoints(len(branchCenterline)) >>> branchLines.InsertNextCell(len(branchCenterline)) >>> >>> for j in range(len(branchCenterline)): >>> p = branchCenterline[j] >>> branchPoints.SetPoint(j, p['x'], p['y'], p['z']) >>> branchLines.InsertCellPoint(j) >>> >>> branchPoly.SetPoints(branchPoints) >>> branchPoly.SetLines(branchLines) >>> branchPolys.append(branchPoly) >>> >>> appender = vtk.vtkAppendPolyData() >>> appender.AddInput(vesselPoly) >>> >>> for i in range(fusmesher.GetBranchCount()): >>> appender.AddInput(branchPolys[i]) >>> >>> return appender.GetOutput() >>> >>> On 10/09/2012 05:41 AM, Luca Antiga wrote: >>>> Hi Richard, >>>> >>>> On Oct 2, 2012, at 5:08 PM, Richard Downe wrote: >>>> >>>>> I have been attempting to use vmtk to generate meshes for use with fluent. >>>>> Because the nature of my workflow involves geometric transformations of >>>>> segmented borders, my starting point is a point set (well, more >>>>> accurately, several disjoint structured grids). >>>>> I have a program that generates a topologically sound triangular surface >>>>> with minimal triangle angle of 24 degrees, flow extensions added, and >>>>> caps removed at boundaries. >>>>> >>>>> My coordinates are also spaced in meters, so my edge lengths are >>>>> typically on the order of 0.0002. >>>>> After a few false starts, I have successfully been able to run >>>>> vmtkmeshgenerator on the STL file output by my initial triangulation, >>>>> and pipe it into vmtkmeshwriter to create a fluent file, and use a pipe >>>>> I wrote myself to identify the inlets based on proximity of the entities >>>>> to known locations of centerlines at boundaries. >>>> Sounds like great work. >>>> >>>>> The first surface I attempted ran in fluent fine. 2 subsequent, more >>>>> complex surfaces are causing fluent to fail in mysterious ways that are >>>>> almost certainly related to mesh quality. I am invoking >>>>> vmtkmeshgenerator with -edgelength 0.0002 as the only argument. Are >>>>> there known steps I can take to alleviate this/improve mesh quality? >>>>> There are clearly a large number of people using vmtk successfully, so I >>>>> can only assume I could be doing something better. (When I examine the >>>>> mesh, fluent's quality rating is typically between 10 and 20, with a >>>>> maximum aspect ratio value of around 35). >>>> I'd really need to look into the mesh, would it be possible for you to send >>>> me the stl file? >>>> >>>>> My current tack is to attempt to add the centerlines into the flow using >>>>> vmtkdistancetocenterlines, on the assumption that this will cause the >>>>> sizing function to generate more useful information, and thereby give me >>>>> better shaped tetrahedra -- but I could use advice, as I do somewhat >>>>> feel like I'm swinging in the dark. >>>> Depending on the nature of your domain, it is possible that 0.0002 as an >>>> element size ends up being inadequate for certain regions and overkill >>>> for others, so the use of centerline information almost certainly helps. >>>> >>>> However, I'd first take a look at the surface to see if it rings any bell. >>>> >>>> Best, >>>> >>>> >>>> Luca >>>> >>>> >>>>> Thanks. >>>>> --Richard >>>>> >>>>> ------------------------------------------------------------------------------ >>>>> Don't let slow site performance ruin your business. Deploy New Relic APM >>>>> Deploy New Relic app performance management and know exactly >>>>> what is happening inside your Ruby, Python, PHP, Java, and .NET app >>>>> Try New Relic at no cost today and get our sweet Data Nerd shirt too! >>>>> http://p.sf.net/sfu/newrelic-dev2dev >>>>> _______________________________________________ >>>>> vmtk-users mailing list >>>>> vmt...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>> >>> ------------------------------------------------------------------------------ >>> Don't let slow site performance ruin your business. Deploy New Relic APM >>> Deploy New Relic app performance management and know exactly >>> what is happening inside your Ruby, Python, PHP, Java, and .NET app >>> Try New Relic at no cost today and get our sweet Data Nerd shirt too! >>> http://p.sf.net/sfu/newrelic-dev2dev >>> _______________________________________________ >>> vmtk-users mailing list >>> vmt...@li... >>> https://lists.sourceforge.net/lists/listinfo/vmtk-users > |
From: Luca A. <luc...@gm...> - 2012-10-22 13:56:00
|
Hi Richard, sorry for the long wait. Your pipeline looks good, but you'll need the radius at each point (you seem proficient in Python and VTK so I won't provide you with details on how to add a vtkDoubleArray to PointData, but let me know if you need directions). In any case, the mesh generator needs a scalar field over the input surface to be remeshed. That scalar field will be used (multiplied by a factor) as the nominal size of the triangle edges in the remeshed surface (as demonstrated in the mesh generation tutorial on the vmtk website). The way you generate that scalar field is really up to you, you could do it through curvatures or by evaluating the distance of the surface from centerlines, or the closest centerline radius. The latter is probably what you're aiming at now, so as soon as you have your dataset with centerlines and radii (in a point array named, say, Radius), you can do vmtkdistancetocenterlines -ifile surface.vtp -centerlinesfile centerlines.vtp -radiusarray Radius -useradius 1 -centerlineradius 1 --pipe vmtkmeshgenerator -elementsizemode edgelengtharray -edgelengtharray Radius -edgelengthfactor 0.3 -ofile foo.vtu The first script will generate the centerline radius field on the surface and the second will remesh the surface taking that field into account for the local triangle size. Hope this helps Luca On Oct 12, 2012, at 6:43 PM, Richard Downe wrote: > Upon observing the behavior of my automated setup for a week, I do think > I'm going to have to include the centerlines. > I'm reasonably confident in the quality of my triangulated surfaces, but > I do think the fixed edge length passed to vmtkmeshgenerator is overly > limiting. > > My question is this: what arguments to I need to feed into > vmtkcenterlinemerge if I want to have an appropriate vtkPolyData for use > as such in subsequent processing? > > I have the code sample below for simply putting the centerlines into a > vtkPolyData; I have radius information available, but I'm curious what > it needs to look like internally for the rest of the vmtkpipeline to be > happy with it. > Thanks. > -rd > > def ComputeCenterlinePolyData(self, fusmesher): > vesselPoints = vtk.vtkPoints() > vesselLines = vtk.vtkCellArray() > vesselPoly = vtk.vtkPolyData() > > vesselCenterline = fusmesher.GetVesselCenterline() > vesselPoints.SetNumberOfPoints(len(vesselCenterline)) > vesselLines.InsertNextCell(len(vesselCenterline)) > > for i in range(len(vesselCenterline)): > p = vesselCenterline[i] > vesselPoints.SetPoint(i, p['x'], p['y'], p['z']) > vesselLines.InsertCellPoint(i) > > vesselPoly.SetPoints(vesselPoints) > vesselPoly.SetLines(vesselLines) > > branchPolys = [] > > for i in range(fusmesher.GetBranchCount()): > branchPoints = vtk.vtkPoints() > branchLines = vtk.vtkCellArray() > branchPoly = vtk.vtkPolyData() > > branchCenterline = fusmesher.GetBranchCenterline(i) > branchPoints.SetNumberOfPoints(len(branchCenterline)) > branchLines.InsertNextCell(len(branchCenterline)) > > for j in range(len(branchCenterline)): > p = branchCenterline[j] > branchPoints.SetPoint(j, p['x'], p['y'], p['z']) > branchLines.InsertCellPoint(j) > > branchPoly.SetPoints(branchPoints) > branchPoly.SetLines(branchLines) > branchPolys.append(branchPoly) > > appender = vtk.vtkAppendPolyData() > appender.AddInput(vesselPoly) > > for i in range(fusmesher.GetBranchCount()): > appender.AddInput(branchPolys[i]) > > return appender.GetOutput() > > On 10/09/2012 05:41 AM, Luca Antiga wrote: >> Hi Richard, >> >> On Oct 2, 2012, at 5:08 PM, Richard Downe wrote: >> >>> I have been attempting to use vmtk to generate meshes for use with fluent. >>> Because the nature of my workflow involves geometric transformations of >>> segmented borders, my starting point is a point set (well, more >>> accurately, several disjoint structured grids). >>> I have a program that generates a topologically sound triangular surface >>> with minimal triangle angle of 24 degrees, flow extensions added, and >>> caps removed at boundaries. >>> >>> My coordinates are also spaced in meters, so my edge lengths are >>> typically on the order of 0.0002. >>> After a few false starts, I have successfully been able to run >>> vmtkmeshgenerator on the STL file output by my initial triangulation, >>> and pipe it into vmtkmeshwriter to create a fluent file, and use a pipe >>> I wrote myself to identify the inlets based on proximity of the entities >>> to known locations of centerlines at boundaries. >> Sounds like great work. >> >>> The first surface I attempted ran in fluent fine. 2 subsequent, more >>> complex surfaces are causing fluent to fail in mysterious ways that are >>> almost certainly related to mesh quality. I am invoking >>> vmtkmeshgenerator with -edgelength 0.0002 as the only argument. Are >>> there known steps I can take to alleviate this/improve mesh quality? >>> There are clearly a large number of people using vmtk successfully, so I >>> can only assume I could be doing something better. (When I examine the >>> mesh, fluent's quality rating is typically between 10 and 20, with a >>> maximum aspect ratio value of around 35). >> I'd really need to look into the mesh, would it be possible for you to send >> me the stl file? >> >>> My current tack is to attempt to add the centerlines into the flow using >>> vmtkdistancetocenterlines, on the assumption that this will cause the >>> sizing function to generate more useful information, and thereby give me >>> better shaped tetrahedra -- but I could use advice, as I do somewhat >>> feel like I'm swinging in the dark. >> Depending on the nature of your domain, it is possible that 0.0002 as an >> element size ends up being inadequate for certain regions and overkill >> for others, so the use of centerline information almost certainly helps. >> >> However, I'd first take a look at the surface to see if it rings any bell. >> >> Best, >> >> >> Luca >> >> >>> Thanks. >>> --Richard >>> >>> ------------------------------------------------------------------------------ >>> Don't let slow site performance ruin your business. Deploy New Relic APM >>> Deploy New Relic app performance management and know exactly >>> what is happening inside your Ruby, Python, PHP, Java, and .NET app >>> Try New Relic at no cost today and get our sweet Data Nerd shirt too! >>> http://p.sf.net/sfu/newrelic-dev2dev >>> _______________________________________________ >>> vmtk-users mailing list >>> vmt...@li... >>> https://lists.sourceforge.net/lists/listinfo/vmtk-users > > > ------------------------------------------------------------------------------ > Don't let slow site performance ruin your business. Deploy New Relic APM > Deploy New Relic app performance management and know exactly > what is happening inside your Ruby, Python, PHP, Java, and .NET app > Try New Relic at no cost today and get our sweet Data Nerd shirt too! > http://p.sf.net/sfu/newrelic-dev2dev > _______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@gm...> - 2012-10-22 13:46:15
|
Hi Laurentiu, it's kind of hard for me to tell. It looks like there is an install prefix (which should be prepended to /lib/InsightToolkit, like /usr/local/lib/InsightToolkit, or somepath/Install/lib/InsightToolkit) that is not recognized by cmake (e.g. not passed from SuperBuild to the specific ITK build), so that the resulting install destination is /lib/InsightToolkit, i.e. an absolute path. Usually this passing of values between project is performed in SuperBuild.txt. Overall it's quite strange that you have this issue now and didn't have it earlier, plus I don't recall having this issue in the past. Maybe an idea would be trying with an older CMake version? Hope this helps somehow... Luca On Oct 15, 2012, at 6:56 PM, Lipsa Laurentiu Mihai wrote: > Hello Luca, > I tried to compile a last year vmtk version and I receive this error: > > Filter ZLIB is ON > -- Configuring done > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "itksys" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "itkvcl" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "itkv3p_netlib" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "itkv3p_lsqr" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "itkvnl" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "itkvnl_algo" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKVNLInstantiation" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKCommon" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "itkNetlibSlatec" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKStatistics" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKIOImageBase" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKMesh" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "itkzlib" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKMetaIO" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKSpatialObjects" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKPath" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKLabelMap" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKQuadEdgeMesh" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKOptimizers" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKPolynomials" which has relative DESTINATION "lib". > CMake Error: INSTALL(EXPORT "ITKTargets") given absolute DESTINATION "/lib/InsightToolkit" but the export references an installation of target "ITKBiasCorrection" which has relative DESTINATION "lib". > ..................... > ..................... > and finishing like that: > > as relative DESTINATION "lib". > -- Generating done > CMake Warning: > Manually-specified variables were not used by the project: > > ITK_USE_OPTIMIZED_REGISTRATION_METHODS > git_EXECUTABLE > > > -- Build files have been written to: /home/lau/vmtk-build/ITK-Build > make[2]: *** [Stamp/ITK/ITK-configure] Error 1 > make[1]: *** [CMakeFiles/ITK.dir/all] Error 2 > make: *** [all] Error 2 > > In a most recent version(in other computer) doesn' t give this problems. Which can be the problem? > > > Best regards, > Laurentiu > ------------------------------------------------------------------------------ > Don't let slow site performance ruin your business. Deploy New Relic APM > Deploy New Relic app performance management and know exactly > what is happening inside your Ruby, Python, PHP, Java, and .NET app > Try New Relic at no cost today and get our sweet Data Nerd shirt too! > http://p.sf.net/sfu/newrelic-dev2dev_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@or...> - 2012-10-22 13:34:02
|
Just to add a comment on top of my last email: since the mesh is not *that* coarse, it could be that there are issues with the mapping. In case, to speed things up, just send over the model_clipped_mapping.vtp file and I'll take a look. Luca On Oct 22, 2012, at 3:26 PM, Luca Antiga wrote: > Dear Emilie, > what could be happening is that the surface mesh is coarse and patches > are comparable in size to the underlying mesh, which might create issues > with the patch clipping. > > I suggest you subdivide your surface prior to patching (or prior to mapping > altogether), using > vmtksurfacesubdivision -subdivisions 1 -method loop -ifile ... -ofile ... > > You could also try with -subdivisions 2, if the surface mesh is very coarse. > > Hope this helps > > Luca > > On Oct 15, 2012, at 7:24 PM, Emilie Sauvage wrote: > >> Dear Luca, >> >> thank you very much for your help. Your advice about clipping the short >> branch indeed solved my problem. Unfortunately, I am stuck with the >> following step as well. I ran this command: >> >> vmtkbranchpatching -ifile model_clipped_mapping.vtp -groupidsarray >> GroupIds -longitudinalmappingarray StretchedMapping -circularmappingarray >> AngularMetric -longitudinalpatchsize 0.5 -circularpatches 12 -ofile >> model_clipped_patching.vtp >> >> The surface that I obtained has holes in it. I tried to change the >> longitudinal patch size and number of circular patches, but this does not >> remove the holes. Do you know what am I doing wrong? Vmtk does not issue >> any error message. >> >> Thank you very much. >> >> Emilie >> >> >>> Dear Emilie, >>> I'm finally getting back to you. >>> So, the splitting is very reasonable, it actually worked well. The small >>> gaps are >>> due to the finite resolution of the mesh, if you want to make them >>> smaller, you'll >>> have to subdivide the surface using vmtksurfacesubdivision. >>> >>> What was actually creating problems is the very short open branch in the >>> attached >>> figure: the branch was not long enough to represent a real branch on its >>> own, so >>> the parent vessel was not a topologically a tube, because it contained >>> that hole. >>> >>> The solution is easy: run vmtksurfacecapper and close off that small >>> branch. Then >>> run the mapping script. I did and it worked well. >>> >>> Best, >>> >>> Luca >>> >>> >>> >>> >>> On Sep 25, 2012, at 6:12 PM, Emilie Sauvage wrote: >>> >>>> Dear Luca, >>>> >>>> I'm sending you the file you requested and also the input file with >>>> which >>>> I started the whole tutorial (model.vtp.tar.gz). There are holes between >>>> the split branches (I attached two screenshots) and I don't know if this >>>> is normal or not. I'd be grateful for any hint for solution of this >>>> problem. >>>> >>>> Thank you very much. >>>> >>>> Emilie Sauvage >>>> >>>>> Dear Emilie, >>>>> >>>>> I currently don't have time to reproduce the pipe on the data (but >>>>> thanks >>>>> for >>>>> the pointers to the data so I can get to it as soon as I can). >>>>> >>>>> In the meantime, can you share your model_clipped_metrics.vtp file? In >>>>> that >>>>> model, the branches are already split, and the problem should manifest >>>>> itself >>>>> by looking at where the split lines are located. Probably >>>>> vmtkbranchclipper >>>>> has produced an invalid clipping of the surface, so I'd like to take a >>>>> look. >>>>> >>>>> Thank you and best regards >>>>> >>>>> >>>>> Luca >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Luca Antiga, PhD >>>>> Cofounder and Principal Scientist, Orobix Srl >>>>> via L.A. Muratori 3, 24123 Bergamo, Italy >>>>> >>>>> orobix: www.orobix.com >>>>> home: lantiga.github.com >>>>> twitter: twitter.com/lantiga >>>>> >>>>> On Sep 20, 2012, at 4:34 PM, Emilie Sauvage wrote: >>>>> >>>>>> Dear VMTK users and developers, >>>>>> >>>>>> I'm trying to reproduce the tutorial "Mapping and Patching" on a >>>>>> vascular >>>>>> geometry. But I'm facing a problem during the process. >>>>>> Everything goes well until I reach to step where the code is >>>>>> "Executing >>>>>> vmtkbranchmapping". >>>>>> There I got a first a warning saying :"Input poly data is not >>>>>> topologically a cylinder" then an error saying: "Branch not >>>>>> topologically >>>>>> a cylinder". >>>>>> >>>>>> Here is the complete command line I used: >>>>>> vmtkbranchmapping -ifile model_clipped_metrics.vtp -centerlinesfile >>>>>> model_cl.vtp -referencesystemsfile model_cl_rs.vtp -normalsarray >>>>>> ParallelTransportNormals -abscissasarray Abscissas -groupidsarray >>>>>> GroupIds >>>>>> -centerlineidsarray CenterlineIds -tractidsarray TractIds >>>>>> -referencesystemsnormalarray Normal -radiusarray >>>>>> MaximumInscribedSphereRadius -blankingarray Blanking >>>>>> -angularmetricarray >>>>>> AngularMetric -abscissametricarray AbscissaMetric -ofile >>>>>> model_clipped_mapping.vtp >>>>>> >>>>>> In fact the geometry I use is globally a tortuous pipe with some >>>>>> outlets >>>>>> (to my opinion), and has the particularity to show an aneurysm. I took >>>>>> the >>>>>> geometry from the AneuriskWeb. The geometry is precisely called C0016. >>>>>> >>>>>> Has anyone experienced the same problem? Is there something wrong with >>>>>> this geometry? Is it the fact that there is an aneurysm on the way? >>>>>> >>>>>> Thanks in advance for your answer. >>>>>> >>>>>> Emilie Sauvage. >>>>>> >>>>>> >>>>>> >>>>>> ------------------------------------------------------------------------------ >>>>>> Everyone hates slow websites. So do we. >>>>>> Make your web apps faster with AppDynamics >>>>>> Download AppDynamics Lite for free today: >>>>>> http://ad.doubleclick.net/clk;258768047;13503038;j? >>>>>> http://info.appdynamics.com/FreeJavaPerformanceDownload.html >>>>>> _______________________________________________ >>>>>> vmtk-users mailing list >>>>>> vmt...@li... >>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>> >>>>> >>>> <model.vtp.tar.gz><model_clipped_metrics.vtp.tar.gz><clipped_metrics1.png><clipped_metrics2.png>------------------------------------------------------------------------------ >>>> Live Security Virtual Conference >>>> Exclusive live event will cover all the ways today's security and >>>> threat landscape has changed and how IT managers can respond. >>>> Discussions >>>> will include endpoint security, mobile security and the latest in >>>> malware >>>> threats. >>>> http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________ >>>> vmtk-users mailing list >>>> vmt...@li... >>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>> >>> >> <stretched_mapping.jpg> > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_sfd2d_oct_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |