vmtk-users Mailing List for Vascular Modeling Toolkit (Page 9)
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: Evan K. <to...@gm...> - 2013-03-22 20:49:05
|
Hello, I am trying to segment a particular set of 3D-cine images with vmtklevelsetsegmentation, but the perhaps due to the shape of the vessel and/or quality of the images, the suggested settings of 300 0 0 1 isn't working well. I've tried playing around with the level set deformation parameters, but the resultant shapes feel just as arbitrary as if I had simply used thresholds directly. Can you recommend any guides or references that can explain in more depth (i.e. quantitatively) how the parameters affect the deformation, and/or also provide an explanation of the additional options available in vmtklevelsetsegmentation that weren't covered in the tutorials? Thank you, Evan Kao |
From: Luca A. <luc...@or...> - 2013-03-21 17:16:04
|
Hi Qiang, the script works, I'm attaching the result and a Paraview screenshot where the Glyph filter has been applied to the Frenet normals. Note that I specified a higher number of iterations and factor than the default, to diminish the effect of noise on the finite difference approximation of derivatives. vmtkcenterlinegeometry -ifile wf2011.8.31-20080918-L-3-1-3.18_centerlines.vtp -smoothing 1 -ofile foobar.vtp -iterations 1000 -factor 0.5 Luca On Mar 20, 2013, at 11:47 AM, qiang zeng wrote: > Dear all, > When I am following the script "vmtkcenterlinegeometry -ifile foo_cl.vtp -smoothing 1 -ofile foo_clgm.vtp", I cannot get any centerline geometry. But I am dealing with split centerlines, the script "vmtkcenterlines -ifile foo.vtp -seedselector openprofiles --pipe vmtkbranchextractor --pipe vmtkbranchgeometry -ofile foo_clcg.vtp" is OK for the same vessel (as an attachment). > Did anybody have the same problem and could tell me how he/she solved it? > Thanks. > > Qiang > <wf2011.8.31-20080918-L-3-1-3.18_centerlines.vtp><wf2011.8.31-20080918-L-3-1-3.18_model_cl.vtp>------------------------------------------------------------------------------ > 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_d2d_mar_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@gm...> - 2013-03-21 17:03:59
|
Hi Regine, did you try inverting with vmtkimageshiftscale? vmtkimageshiftscale -ifile input.mha -scale -1.0 If you need to re-obtain positive intensity levels for some reason, you need to pipe another shift scale for the shift part: vmtkimageshiftscale -ifile input.mha -scale -1.0 --pipe vmtkimageshiftscale -shift 4000 Hope this helps. Luca On Mar 18, 2013, at 10:39 PM, Ric...@we... wrote: > Dear all, > > a friend of mine came up with a dicom data set of the lung. She wants to extract the trachea which is represented with a lower intensity as compared to their environment (since it is filled with air). We tried to use vmtklevelsetsegmentation, but it didn't work due to the inverted intensity distribution, I guess. I tried to invert the dicom data set and read it into vmtk afterwards, but I wasn't successful. > Did anybody have the same problem and could tell me how he/she solved it? > Thank you for any help! > Bye, > Regine > ------------------------------------------------------------------------------ > 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_d2d_mar_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Greg F. <gre...@gm...> - 2013-03-21 00:44:25
|
Hello everyone, I just came across vmtk and was wondering if I could you it for my work. My question is this: I have a tubular 3d surface ( length of colon) similar to the vessels you show in the tutorials except that there is not branching only bending. I would like to map this 3D surface to a plane (or regular cylinder) using VMTK so that I can then create try to subdivide my tubular 3d surface ( volume) in to sections ( alond the central axis direction) of equal volume based on mapping uniform strips on the mapped plane back to the 3D surface. I see a two step procedure: 1) first create a mapping from the 3D surface to a plane ( or in fact a regular cylinder such that volume is conserved) 2) cut sections of the cylinder and relate them to sections on the mesh. Is that possible with tools in VMTK ? If not please help me with some suggestions. I can send a sample of my mesh in wrl/vrml format. thank you GT |
From: qiang z. <zen...@ya...> - 2013-03-20 10:48:11
|
<?xml version="1.0"?> <VTKFile type="PolyData" version="0.1" byte_order="LittleEndian" compressor="vtkZLibDataCompressor"> <PolyData> <Piece NumberOfPoints="2774" NumberOfVerts="0" NumberOfLines="2" NumberOfStrips="0" NumberOfPolys="0" > <PointData Scalars="MaximumInscribedSphereRadius"> <DataArray type="Float64" Name="MaximumInscribedSphereRadius" format="appended" RangeMin="1.0984209042" RangeMax="3.8847895018" offset="0" /> <DataArray type="Int32" Name="EdgeArray" NumberOfComponents="2" format="appended" RangeMin="6724.5854891" RangeMax="799384.92324" offset="21068" /> <DataArray type="Float64" Name="EdgePCoordArray" format="appended" RangeMin="0" RangeMax="0.996" offset="31360" /> </PointData> <CellData> </CellData> <Points> <DataArray type="Float32" Name="Points" NumberOfComponents="3" format="appended" RangeMin="23.140236021" RangeMax="58.438364275" offset="36396" /> </Points> <Verts> <DataArray type="Int32" Name="connectivity" format="appended" RangeMin="" RangeMax="" offset="66416" /> <DataArray type="Int32" Name="offsets" format="appended" RangeMin="" RangeMax="" offset="66432" /> </Verts> <Lines> <DataArray type="Int32" Name="connectivity" format="appended" RangeMin="" RangeMax="" offset="66448" /> <DataArray type="Int32" Name="offsets" format="appended" RangeMin="" RangeMax="" offset="71676" /> </Lines> <Strips> <DataArray type="Int32" Name="connectivity" format="appended" RangeMin="" RangeMax="" offset="71724" /> <DataArray type="Int32" Name="offsets" format="appended" RangeMin="" RangeMax="" offset="71740" /> </Strips> <Polys> <DataArray type="Int32" Name="connectivity" format="appended" RangeMin="" RangeMax="" offset="71756" /> <DataArray type="Int32" Name="offsets" format="appended" RangeMin="" RangeMax="" offset="71772" /> </Polys> </Piece> </PolyData> <AppendedData encoding="base64"> _AQAAAACAAACwVgAApz0AAA==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AQAAAACAAACwVgAArQ4AAA==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AgAAAACAAAAIAgAA7FUAAPABAAA=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... [truncated message content] |
From: <ric...@we...> - 2013-03-18 21:39:17
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>Dear all,<br/></div><div><br/></div><div>a friend of mine came up with a dicom data set of the lung. She wants to extract the trachea which is represented with a lower intensity as compared to their environment (since it is filled with air). We tried to use vmtklevelsetsegmentation, but it didn't work due to the inverted intensity distribution, I guess. I tried to invert the dicom data set and read it into vmtk afterwards, but I wasn't successful.<br/></div><div>Did anybody have the same problem and could tell me how he/she solved it?<br/></div><div>Thank you for any help!<br/></div><div>Bye,<br/></div><div>Regine<br/></div></div></body></html> |
From: <ric...@we...> - 2013-03-14 13:09:10
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>Dear all,<br/></div><div><br/></div><div>I installed version 1.0.1 (Windows, 64 bit) and for any reason cannot run the vmtksurfacekiteremoval script there. It just freezes, the last output is: "Executing vmtksurfacekiteremoval ...". <br/></div><div><br/></div><div>The script worked fine with previous version I used (0.9.0). I already compared the codes and could not find any difference.<br/></div><div>Does anybody have the same problem and/or knows how to solve it?<br/></div><div>Thank you for any idea!<br/></div><div>Regine<br/></div></div></body></html> |
From: Kitslaar, P.H. (LKEB) <p.h...@lu...> - 2013-03-14 12:43:07
|
I already figured out how to do this myself. On Thu, Mar 14, 2013 at 9:32 AM, Kitslaar, P.H. (LKEB) <p.h...@lu...> wrote: > Hello All, > > I have a bunch of centerline points with corresponding radii that I > wish to use with some vmtk classes, in particular > vtkvmtkCenterlineBranchExtractor. > The centerline points all start at the the same root position and each > centerline traces a particular branch in the vessel tree. > For example: > > Line 1 (x, y z radius) > ------------------------------ > 1.0 1.0. 3.0 0.5 > 1.0 1.0. 4.0 0.5 > 1.0 1.0. 5.0 0.7 > > Line 2 (x, y z radius) > ------------------------------ > 1.0 1.0. 3.0 0.5 > 1.0 1.0. 4.0 0.5 <- last common point with line 1 > 1.0 2.0. 5.0 0.3 > > Etc... > > How should I fill the vtkPolyData object with this data? > Which DataArrays should be filled, I think at least the radius. > > Maybe there are some code examples (Python or C++) that could point me > in the right direction. > > Best regards, > > Pieter Kitslaar |
From: <ric...@we...> - 2013-03-14 12:35:45
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div><br/> Dear Luca,<br/></div><div><br/></div><div>thank you! It's working fine!<br/></div><div>I see, I still have to learn a lot about using Paraview as well...<br/></div><div><br/></div><div>Bye<br/></div><div>Regine<br/></div><div name="quote" style="margin:10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left:2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"> <div style="margin:0 0 10px 0;"> <b>Gesendet:</b> Montag, 04. März 2013 um 13:41 Uhr<br/> <b>Von:</b> "Luca Antiga" <luc...@gm...><br/> <b>An:</b> "Regine Schmidt" <Ric...@we...><br/> <b>Cc:</b> vmt...@li...<br/> <b>Betreff:</b> Re: [vmtk-users] centerline: points/radius of single branches </div> <div name="quoted-content"> <div>Hi Regine,<div> indeed my reply to the second message still holds.</div><div><br/></div><div>Since you're already working in Paraview, as per the first message, you'd</div><div>probably be ok isolating branches directly in Paraview. Load up the split</div><div>centerlines in Paraview, use the Threshold filter to isolate a GroupId. If </div><div>you need to save it as vtp, use ExtractSurface to convert the thresholded </div><div>data to a vtkPolyData, this way you can save it as vtp.</div><div><br/></div><div>Hope this helps</div><div><br/></div><div>Luca</div><div><br/></div><div><br/><div><div>On Feb 28, 2013, at 2:55 PM, Regine Schmidt wrote:</div><br class="Apple-interchange-newline"/><blockquote><div><div style="font-family: Verdana;font-size: 12.0px;"><div><p class="MsoNormal"><span>Dear all,</span><br/></p><p class="MsoNormal"><span>I am generating the centerlines of my vessel geometry and want to average the radius for each single branch and create a geometry via vmtkcenterlinemodeller afterwards. At this geometry the radius of each branch should have a single averaged </span><span>value (I plan to change the radius following this thread, which is working good:<a href="http://www.mail-archive.com/vmt...@li.../msg00450.html" target="_blank">http://www.mail-archive.com/vmt...@li.../msg00450.html</a></span><span></span><span>)</span><br/></p><p class="MsoNormal"><span>My problem is: how can I assign the centerline points to the single branches? I would like save the centerline as a *.dat file and seperate the points of the single branches to average the radius for each branch. (I thought this thread would help me, but I haven't been successful yet: <a href="http://www.mail-archive.com/vmt...@li.../msg00155.html" target="_blank">http://www.mail-archive.com/vmt...@li.../msg00155.html</a>)</span><br/></p><p class="MsoNormal"><span>Thank you for any help and idea!</span><br/></p><p class="MsoNormal"><span>Regine</span><br/></p> <br/></div><div><br/></div></div></div> ------------------------------------------------------------------------------<br/>Everyone hates slow websites. So do we.<br/>Make your web apps faster with AppDynamics<br/>Download AppDynamics Lite for free today:<br/><a href="http://p.sf.net/sfu/appdyn_d2d_feb_______________________________________________" target="_blank">http://p.sf.net/sfu/appdyn_d2d_feb_______________________________________________</a><br/>vmtk-users mailing list<br/>vmt...@li...<br/>https://lists.sourceforge.net/lists/listinfo/vmtk-users<br/></blockquote></div><br/></div></div> </div> </div><div><br/><br/></div></div></body></html> |
From: Kitslaar, P.H. (LKEB) <p.h...@lu...> - 2013-03-14 08:32:20
|
Hello All, I have a bunch of centerline points with corresponding radii that I wish to use with some vmtk classes, in particular vtkvmtkCenterlineBranchExtractor. The centerline points all start at the the same root position and each centerline traces a particular branch in the vessel tree. For example: Line 1 (x, y z radius) ------------------------------ 1.0 1.0. 3.0 0.5 1.0 1.0. 4.0 0.5 1.0 1.0. 5.0 0.7 Line 2 (x, y z radius) ------------------------------ 1.0 1.0. 3.0 0.5 1.0 1.0. 4.0 0.5 <- last common point with line 1 1.0 2.0. 5.0 0.3 Etc... How should I fill the vtkPolyData object with this data? Which DataArrays should be filled, I think at least the radius. Maybe there are some code examples (Python or C++) that could point me in the right direction. Best regards, Pieter Kitslaar |
From: Luca A. <luc...@or...> - 2013-03-12 17:05:34
|
Hi Chiara, out of curiosity, can you open the same file using, say, Paraview? Also, can you check how many python executables you have on your machine? Thanks Luca On Mar 12, 2013, at 1:40 PM, Chiara Trentin wrote: > Hello Luca & VMTK Users, > > I checked out...in Ubuntu I do not have any .bashrc profile, effectively the first file it is gonna read is the .profile. > The fact that I have to make explicit source .profile is still...at least for me a mistery. > > Going on for the STLReader, I verified and giving the command write below I got: > > >>> import vtk > >>> reader=vtk.vtkSTLReader() > >>> reader.SetFileName('PRE_INNER_WALL.stl') > >>> reader.Update() > ERROR: In /opt/vmtk-build/VTK/IO/vtkSTLReader.cxx, line 446 > vtkSTLReader (0x85e2058): STLReader error reading file: PRE_INNER_WALL.stl Premature EOF while reading end solid. > > *** glibc detected *** python: double free or corruption (!prev): 0x087dc820 *** > ======= Backtrace: ========= > /lib/i386-linux-gnu/libc.so.6(+0x75ee2)[0xb75d3ee2] > /lib/i386-linux-gnu/libc.so.6(fclose+0x154)[0xb75c3424] > /opt/vmtk-build/Install/lib/vtk-5.10/libvtkIO.so.5.10(_ZN12vtkSTLReader11RequestDataEP14vtkInformationPP20vtkInformationVectorS3_+0x297)[0xb61f0c57] > /opt/vmtk-build/Install/lib/vtk-5.10/libvtkFiltering.so.5.10(_ZN20vtkPolyDataAlgorithm14ProcessRequestEP14vtkInformationPP20vtkInformationVectorS3_+0xe7)[0xb671b987] > /opt/vmtk-build/Install/lib/vtk-5.10/libvtkFiltering.so.5.10(_ZN12vtkExecutive13CallAlgorithmEP14vtkInformationiPP20vtkInformationVectorS3_+0x6f)[0xb660aebf] > /opt/vmtk-build/Install/lib/vtk-5.10/libvtkFiltering.so.5.10(_ZN23vtkDemandDrivenPipeline11ExecuteDataEP14vtkInformationPP20vtkInformationVectorS3_+0x56)[0xb65ff116] > /opt/vmtk-build/Install/lib/vtk-5.10/libvtkFiltering.so.5.10(_ZN23vtkDemandDrivenPipeline14ProcessRequestEP14vtkInformationPP20vtkInformationVectorS3_+0x23b)[0xb660255b] > /opt/vmtk-build/Install/lib/vtk-5.10/libvtkFiltering.so.5.10(_ZN32vtkStreamingDemandDrivenPipeline14ProcessRequestEP14vtkInformationPP20vtkInformationVectorS3_+0xcc)[0xb6788e7c] > /opt/vmtk-build/Install/lib/vtk-5.10/libvtkFiltering.so.5.10(_ZN23vtkDemandDrivenPipeline10UpdateDataEi+0xaa)[0xb6600bea] > /opt/vmtk-build/Install/lib/vtk-5.10/libvtkFiltering.so.5.10(_ZN32vtkStreamingDemandDrivenPipeline6UpdateEi+0x9f)[0xb678a98f] > /opt/vmtk-build/Install/lib/vtk-5.10/libvtkFiltering.so.5.10(_ZN12vtkExecutive6UpdateEv+0x56)[0xb660b346] > /opt/vmtk-build/Install/lib/vtk-5.10/libvtkFiltering.so.5.10(_ZN23vtkDemandDrivenPipeline6UpdateEv+0x1b)[0xb65ffdab] > etc... > > Thanks > Chiara > > > > > > 2013/3/5 Luca Antiga <luc...@or...> > Hello Chiara, > from the final error you get, apparently you got all the installation right. > I wonder why you have to explicitly source .profile (any Ubuntu users out > there?). Maybe you have a .bashrc in your home that takes over the .profile? > Give it a check, and if you have a .bashrc move the lines you added to .profile > to .bashrc, open a new terminal window (it has to be new) and try again. > > Anyway, the final error means that your system loaded VTK ok, but you're > apparently trying to load a vtp file using the STL reader (in VTK you have to > use different classes for different formats). > > Can you please post the exact lines you're using to read the file? > > Cheers > > > Luca > > > On Mar 5, 2013, at 3:54 PM, Chiara Trentin wrote: > >> Dear Luca and VTK/VMTK Users, >> >> sorry for the delay in my answer. >> I installed again Ubuntu on my PC for being sure I canceled a bad vmtk/vtk >> installation done in the past. >> I followed the Install from source guide in vmtk.org/Main/Installation step by >> step verifying that git, python an cmake are of the required version. >> I installed also build-essential. >> Afterwards I followed the Installation list, first git repository then mkdir cd >> into it, run cmake create Unix Makefile and sun the compiler. >> >> Finally I set the PATH. >> Restart the pc an tryed a python script. >> First I obtained an error: >> >> >> >>> import vtk >> Traceback (most recent call last): >> File "<stdin>", line 1, in <module> >> File "/opt/vmtk-build/Install/bin/Python/vtk/__init__.py", line 41, in <module> >> from vtkCommonPython import * >> ImportError: libvtkCommonPythonD.so.5.10: cannot open shared object file: No >> such file or directory >> >> I went through it with source .profile. >> >> But running a script in which I am reading an STL File I got: >> >> ERROR: In /opt/vmtk-build/VTK/IO/vtkSTLReader.cxx, line 378 >> vtkSTLReader (0xa2304b8): STLReader error reading file: PRE_INNER_WALL.vtp >> Premature EOF while reading point. >> >> Do you have any suggestion? >> Thanks a lot >> >> Chiara >> >> 2012/12/4 Chiara Trentin <chi...@iu...> >> 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 >> >> >> >> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> 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_d2d_feb_______________________________________________ >> >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users > > |
From: Luca A. <luc...@or...> - 2013-03-12 09:07:34
|
Hi Richard, good to hear that you found a way. I'm inspecting the centerlines, they look pretty legit to me, so it must be some issue with the merge script. Thanks for the data, by the way. Luca On Mar 11, 2013, at 11:43 PM, Richard Downe wrote: > Well, not sure why vmtkmergecenterlines was crashing, but if I pass the output of vmtkbranchextractor through vmtkcenterlinesmoothing, and simply use that, I get a decent result, and in point of fact, a much higher quality mesh than I got simply using target/source seed points with vmtkcenterlines, so...I'm probably satisfied. > -rd > > On 03/11/2013 01:07 PM, Richard Downe wrote: >> Attached is a .vtp file for a set of centerlines that crashes vmtkcenterlinemerge. This file is the immediate output of vmtkbranchextractor. >> -rd >> >> On 03/11/2013 11:32 AM, Richard Downe wrote: >>> The interesting thing I've noticed is that the vessels where I had the >>> "detached outlet" issue segfault, and the ones that meshed correctly don't. >>> >>> I'll see if I can capture the centerlines of one of these problematic >>> vessels into a .vtp, and post the vtp and the surface stl on dropbox >>> later today. >>> -rd >>> >>> On 03/11/2013 06:36 AM, Luca Antiga wrote: >>>> Hi Richard, >>>> I need to see the data in order to tell you something sensible. >>>> Best, >>>> >>>> Luca >>>> >>>> >>>> On Mar 11, 2013, at 1:48 AM, Richard Downe wrote: >>>> >>>>> So, when I finally teased all the typos out of the source file I sent >>>>> you the other night, I got a single, main vessel centerline with none of >>>>> the branches. >>>>> >>>>> So today, I attempted to sue vmtkbranchextractor. >>>>> >>>>> If I fed the vmtkbranchextractor output directly into >>>>> vmtkcenterlineviewer, things looked more or less as they should (e.g., >>>>> as a tree). >>>>> >>>>> When I tried to pass that result into vmtkmergecenterlines, I get a >>>>> segfault. >>>>> >>>>> Thoughts? >>>>> >>>>> -rd >>>>> >>>>> On 03/08/2013 05:24 AM, Luca Antiga wrote: >>>>>> Hi Richard, >>>>>> >>>>>> On Mar 7, 2013, at 11:42 PM, Richard Downe wrote: >>>>>> >>>>>>> On 03/07/2013 04:26 PM, Luca Antiga wrote: >>>>>>>> On Mar 7, 2013, at 9:44 PM, Richard Downe wrote: >>>>>>>> >>>>>>>>> Well...I'm not using vmtkbranchextractor. >>>>>>>>> >>>>>>>>> My branches and vessel are defined separately, and I merge them in a >>>>>>>>> pre-vmtk process. I have centerlines a priori, but it is not a unified >>>>>>>>> centerline tree. (I have until now been using source and target >>>>>>>>> points. This works well in most vessels, but heavily branched ones >>>>>>>>> frequently drop a branch, often the largest one, during the run of >>>>>>>>> vmtkcenterlines, so after reading this thread, I concluded I wasn't >>>>>>>>> alone, and set about trying to reengineer it.) >>>>>>>> I'm not sure I fully understand. A screenshot would help. >>>>>>> I mean that the branches and vessel are segmented separately in different tools, and then projected into 3-d space using a variation on Frenet-Serret analysis. I build a triangulated surface using CGAL from this point set, and using a python module I wrote myself, slurp this, along with the centerlines of the individual surfaces, into vmtk. >>>>>> I see now, thanks for the clarification. >>>>>> >>>>>>> The reason for this is that I work with coronary ultrasound. The segmentation of both the vessel and the branches are each less straightforward than they are for, say, pulmonary CT. >>>>>>> >>>>>>> vmtkmeshgenerator failed outright until I began using vmtkcenterlines to help it calibrate the triangle and tetrahedral density. (The ultimate goal is CFD analysis using Ansys Fluent). >>>>>> You could potentially specify a small absolute -edgelength, but surely making the mesh density adapted to the radius is better. >>>>>> >>>>>>> In some heavily branched vessels, the outflow surface of one the branches shows up as unconnected to the rest of the mesh when I load it into fluent. These are also generally vessels where vmtkcenterlines has convergence issues. >>>>>> Not sure I'm giving a sensible suggestion here, but consider using vmtksurfacesubdivision before computing centerlines. Sounds you're experiencing Voronoi degeneracy issues here. >>>>>> >>>>>>> So...I'm not sure how I would use vmtkbranchextractor here, unless I could feed my initial triangulation into it? >>>>>> Don't confuse vmtkbranchextractor with vmtkbranchclipper. The former just splits centerlines (into branches and assignes GroupIds, TractIds, Blanking and so on) based on the unsplit centerlines, it doesn't need a surface. The latter splits the surface based on the split centerlines. >>>>>> vmtkbranchextractor should work with any set of polylines, as long as they're arranged in a tree-like fashion (not as a network, rather with each line running from the root to an outlet) and as long as a radius array is provided on top of centerlines. >>>>>> >>>>>>> As such, I'm attempting what I realize is something of a hack, feeding centerlines and radius information that I have a priori into vtkvmtkMergeCenterlines in an attempt to get a proper vessel tree without having to rely upon vmtkcenterlines' procedure. >>>>>>> >>>>>>> I don't have the "blanking regions" stored anywhere, because it's not part of the workflow that leads up to this, but would be fairly trivial to surmise, as I could simply test each branch centerline point to see if it lies closer than vesselRadius[i] to vesselCenterline[i], for all i. >>>>>>> >>>>>>> Thus, my centerline *is* already broken into branches, but not using vmtkbranchextractor. >>>>>> Ok. >>>>>> >>>>>>> Attached is a screenshot of the result of running it with what were clearly mistaken group/tract ids. It clearly tried to connect all segments, but with no knowledge of where bifurcations were, simply tacked them all end-to-end to form 1 centerline. >>>>>>> >>>>>>> So really...I'm trying to figure out, if I must synthesize group and tract ids, how do I do so in a way that will correctly inform the merging of my branch centerline segments? >>>>>> Try to see if vmtkbranchextractor (since it only relies on centerlines). Just a suggestion, I don't want to complicate things but you might have not been aware that vmtkbranchextractor is purely centerline-based. >>>>>> >>>>>> >>>>>> Luca >>>>>> >>>>>> >>>>>>> -rd >>>>>>>>> I just tried running it with groupID==centerlineID for all centerlines, >>>>>>>>> and tractID = uniformly 1, and blanking = uniformly 0. >>>>>>>>> >>>>>>>>> The result was an unruly knot that suggested that it didn't know what to >>>>>>>>> connect to what. >>>>>>>> Yes, the centerline has to be first split into branches using vmtkbranchextractor >>>>>>>> (which will identify bifurcations, split and group) and then vmtkcenterlinemerge >>>>>>>> will generate one centerline per group and create a proper network. >>>>>>>> >>>>>>>>> I suspect, after digging through the vtkVmtk source code and looking at >>>>>>>>> this http://www.vmtk.org/Tutorials/BranchSplitting/ example, I need to >>>>>>>>> actually annotate the bifurcation regions by setting group and tract id, >>>>>>>>> and blanking, correctly. >>>>>>>> Yes, but you also need to split centerline cells in chunks, as depicted in >>>>>>>> the branch splitting tutorial. >>>>>>>> >>>>>>>>> If I understand this correctly, I can create a bifurcation region by >>>>>>>>> identifying where the branch departs the vessel, and appending 1 >>>>>>>>> location on the vessel centerline to the branch centerline at the >>>>>>>>> proximal-most location. And then, groupID increments at and after each >>>>>>>>> bifurcation region, and blanking is set to 1 in each bifurcation region. >>>>>>>>> >>>>>>>>> I'm less clear on tract ID. Is it always either 1 or 2, depending >>>>>>>>> whether before or after the bifurcation point? Or does it get set to a >>>>>>>>> unique value for each chunk vis a vis group id? >>>>>>>> Consider the individual centerline cell originally running between >>>>>>>> inlet and outlet. Now that you have split it in chunks, number each >>>>>>>> chunk from 0 to n. That's the tract id. >>>>>>>> >>>>>>>>> I won't be able to get to it until this evening, but I believe that's >>>>>>>>> the next logical step. >>>>>>>> Keep us posted. However, I'd also like to understand more of your approach, >>>>>>>> so if you could clarify your first paragraph that would be great. >>>>>>>> >>>>>>>> Thanks >>>>>>>> >>>>>>>> Luca >>>>>>>> >>>>>>>>> -rd >>>>>>>>> >>>>>>>>> On 03/07/2013 10:35 AM, Luca Antiga wrote: >>>>>>>>>> Hi Richard, >>>>>>>>>> just pipe vmtkcenterlinemerge after vmtkbranchextractor and use -ofile to write the file out, that's the quickest. >>>>>>>>>> What is your exact issue? >>>>>>>>>> >>>>>>>>>> Roman: I haven't got an answer for you yet - I've been taking care of the quick messages but yours requires a free slot of time. Thanks for your patience. >>>>>>>>>> >>>>>>>>>> Luca >>>>>>>>>> >>>>>>>>>> On 06/mar/2013, at 18:31, Richard Downe <ric...@ui...> wrote: >>>>>>>>>> >>>>>>>>>>> Luca-- >>>>>>>>>>> I've been vexed by a similar situation for awhile that I'm just now getting around to tackling. >>>>>>>>>>> One thing I *do* have, however, is centerlines for my main vessel an all branches. >>>>>>>>>>> I've noticed a vmtkcenterlinemerge.py/vtkvmtkMergeCenterlines.h/cxx that don't appear to be used anywhere, so I can't find a usage example. >>>>>>>>>>> >>>>>>>>>>> What do I need to pass in for the tract ids and blanking ids to make this work, or do you have a usage example somewhere? >>>>>>>>>>> -rd >>>>>>>>>>> >>>>>>>>>>> On 03/04/2013 07:00 AM, Luca Antiga wrote: >>>>>>>>>>>> Hi Roman, >>>>>>>>>>>> I'll really need to take a closer look to the data you sent, I'm planning to do it in the next few days. >>>>>>>>>>>> Thanks >>>>>>>>>>>> >>>>>>>>>>>> Luca >>>>>>>>>>>> >>>>>>>>>>>> On Mar 4, 2013, at 1:54 PM, Dr. Roman Grothausmann wrote: >>>>>>>>>>>> >>>>>>>>>>>>> On 23/02/13 13:56, Luca Antiga wrote: >>>>>>>>>>>>>> Possible workarounds: >>>>>>>>>>>>>> >>>>>>>>>>>>>> 1. Try to use Tetgen to generate the internal Delaunay tessellation, instead of the default algorithm. This can be easily >>>>>>>>>>>>>> done by specifying -usetetgen 1 in the vmtkcenterlines command line >>>>>>>>>>>>> Using tetgen I get an error and the resulting VTP-file is empty (second workaround is still running): >>>>>>>>>>>>> >>>>>>>>>>>>> Reading VTK XML surface file. >>>>>>>>>>>>> Executing vmtkcenterlines ... >>>>>>>>>>>>> Cleaning surface. >>>>>>>>>>>>> Triangulating surface. >>>>>>>>>>>>> Computing centerlines. >>>>>>>>>>>>> Computing centerlines...Running TetGen. >>>>>>>>>>>>> TetGen command line options: pT1.000000e-08dzQ >>>>>>>>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkNonManifoldFastMarching.cxx, line 667 >>>>>>>>>>>>> vtkvmtkNonManifoldFastMarching (0xe6fdac0): Cost function array with name specified does not exist! >>>>>>>>>>>>> >>>>>>>>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkSteepestDescentLineTracer.cxx, line 318 >>>>>>>>>>>>> vtkvmtkSteepestDescentLineTracer (0xe6f9210): Descent array with name specified does not exist! >>>>>>>>>>>>> >>>>>>>>>>>>> Done executing vmtkcenterlines. >>>>>>>>>>>>> Writing VTK XML surface file. >>>>>>>>>>>>> Output vmtkcenterlines members: >>>>>>>>>>>>> >>>>>>>>>>>>>> 2. Compute the Delaunay tessellation on the closed surface (prior to cutting the endcaps open) using vmtkdelaunayvoronoi >>>>>>>>>>>>>> and feed it to vmtkcenterlines, this way: >>>>>>>>>>>>>> >>>>>>>>>>>>>> vmtkdelaunayvoronoi -ifile unclipped.vtp --pipe vmtkcenterlines -ifile clipped.vtp ... >>>>>>>>>>>>> Using this command causes no errors but the resulting file is also empty. >>>>>>>>>>>>> >>>>>>>>>>>>> Any ideas what else I could try? >>>>>>>>>>>>> >>>>>>>>>>>>> Many thanks for any help or hints. >>>>>>>>>>>>> Roman >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> This will allow you to take advantage of the clipped endcaps for the seedselector (since you feed clipped.vtp as input to vmtkcenterlines) >>>>>>>>>>>>>> but use the Delaunay tessellation computed from the unclipped one, which shouldn't have the issue with the artifactual inner tets. >>>>>>>>>>>>>> >>>>>>>>>>>>>> In any case, it would be good for me to have the surface so I can use it to fix the internal delaunay tet selection issue. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Best, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Luca >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Feb 22, 2013, at 9:32 AM, Dr. Roman Grothausmann wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> (now with images) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Dear mailing list members, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Another problem I have is that not all end-points that I extract from the output of vmtknetwork (magenta lines in attached image) are tracked by vmtkcenterlines (grey/blue lines), most are but some are not. See the end points of the magenta lines of which a grey line stretches like a cobweb string. After removing these cobweb lines I end up with the blue lines which are OK except for the lacking branches. >>>>>>>>>>>>>>> What could be the reason for that and how could I avoid it? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Any help or hints are very much appreciated >>>>>>>>>>>>>>> Roman >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> Dr. Roman Grothausmann >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>>>>>>>> D-30625 Hannover >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Tel. +49 511 532-9574 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> <KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_03.gif><KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_05.gif>------------------------------------------------------------------------------ >>>>>>>>>>>>>>> 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_d2d_feb_______________________________________________ >>>>>>>>>>>>>>> vmtk-users mailing list >>>>>>>>>>>>>>> vmt...@li... >>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>>>>>>>>> -- >>>>>>>>>>>>> Dr. Roman Grothausmann >>>>>>>>>>>>> >>>>>>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>>>>>> >>>>>>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>>>>>> D-30625 Hannover >>>>>>>>>>>>> >>>>>>>>>>>>> Tel. +49 511 532-9574 >>>>>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>>>>> 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_d2d_feb >>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>> vmtk-users mailing list >>>>>>>>>>>> vmt...@li... >>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >>>>>>>>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >>>>>>>>> endpoint security space. For insight on selecting the right partner to >>>>>>>>> tackle endpoint security challenges, access the full report. >>>>>>>>> http://p.sf.net/sfu/symantec-dev2dev >>>>>>>>> _______________________________________________ >>>>>>>>> vmtk-users mailing list >>>>>>>>> vmt...@li... >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>>> <centerlines.png> >>>>> ------------------------------------------------------------------------------ >>>>> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >>>>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >>>>> endpoint security space. For insight on selecting the right partner to >>>>> tackle endpoint security challenges, access the full report. >>>>> http://p.sf.net/sfu/symantec-dev2dev >>>>> _______________________________________________ >>>>> vmtk-users mailing list >>>>> vmt...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>> >>> ------------------------------------------------------------------------------ >>> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >>> endpoint security space. For insight on selecting the right partner to >>> tackle endpoint security challenges, access the full report. >>> http://p.sf.net/sfu/symantec-dev2dev >>> _______________________________________________ >>> vmtk-users mailing list >>> vmt...@li... >>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >> >> >> >> ------------------------------------------------------------------------------ >> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >> endpoint security space. For insight on selecting the right partner to >> tackle endpoint security challenges, access the full report. >> http://p.sf.net/sfu/symantec-dev2dev >> >> >> _______________________________________________ >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users > > ------------------------------------------------------------------------------ > Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester > Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the > endpoint security space. For insight on selecting the right partner to > tackle endpoint security challenges, access the full report. > http://p.sf.net/sfu/symantec-dev2dev_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Richard D. <ric...@ui...> - 2013-03-11 22:43:37
|
Well, not sure why vmtkmergecenterlines was crashing, but if I pass the output of vmtkbranchextractor through vmtkcenterlinesmoothing, and simply use that, I get a decent result, and in point of fact, a much higher quality mesh than I got simply using target/source seed points with vmtkcenterlines, so...I'm probably satisfied. -rd On 03/11/2013 01:07 PM, Richard Downe wrote: > Attached is a .vtp file for a set of centerlines that crashes > vmtkcenterlinemerge. This file is the immediate output of > vmtkbranchextractor. > -rd > > On 03/11/2013 11:32 AM, Richard Downe wrote: >> The interesting thing I've noticed is that the vessels where I had the >> "detached outlet" issue segfault, and the ones that meshed correctly >> don't. >> >> I'll see if I can capture the centerlines of one of these problematic >> vessels into a .vtp, and post the vtp and the surface stl on dropbox >> later today. >> -rd >> >> On 03/11/2013 06:36 AM, Luca Antiga wrote: >>> Hi Richard, >>> I need to see the data in order to tell you something sensible. >>> Best, >>> >>> Luca >>> >>> >>> On Mar 11, 2013, at 1:48 AM, Richard Downe wrote: >>> >>>> So, when I finally teased all the typos out of the source file I sent >>>> you the other night, I got a single, main vessel centerline with >>>> none of >>>> the branches. >>>> >>>> So today, I attempted to sue vmtkbranchextractor. >>>> >>>> If I fed the vmtkbranchextractor output directly into >>>> vmtkcenterlineviewer, things looked more or less as they should (e.g., >>>> as a tree). >>>> >>>> When I tried to pass that result into vmtkmergecenterlines, I get a >>>> segfault. >>>> >>>> Thoughts? >>>> >>>> -rd >>>> >>>> On 03/08/2013 05:24 AM, Luca Antiga wrote: >>>>> Hi Richard, >>>>> >>>>> On Mar 7, 2013, at 11:42 PM, Richard Downe wrote: >>>>> >>>>>> On 03/07/2013 04:26 PM, Luca Antiga wrote: >>>>>>> On Mar 7, 2013, at 9:44 PM, Richard Downe wrote: >>>>>>> >>>>>>>> Well...I'm not using vmtkbranchextractor. >>>>>>>> >>>>>>>> My branches and vessel are defined separately, and I merge them >>>>>>>> in a >>>>>>>> pre-vmtk process. I have centerlines a priori, but it is not a >>>>>>>> unified >>>>>>>> centerline tree. (I have until now been using source and target >>>>>>>> points. This works well in most vessels, but heavily branched >>>>>>>> ones >>>>>>>> frequently drop a branch, often the largest one, during the run of >>>>>>>> vmtkcenterlines, so after reading this thread, I concluded I >>>>>>>> wasn't >>>>>>>> alone, and set about trying to reengineer it.) >>>>>>> I'm not sure I fully understand. A screenshot would help. >>>>>> I mean that the branches and vessel are segmented separately in >>>>>> different tools, and then projected into 3-d space using a >>>>>> variation on Frenet-Serret analysis. I build a triangulated >>>>>> surface using CGAL from this point set, and using a python module >>>>>> I wrote myself, slurp this, along with the centerlines of the >>>>>> individual surfaces, into vmtk. >>>>> I see now, thanks for the clarification. >>>>> >>>>>> The reason for this is that I work with coronary ultrasound. The >>>>>> segmentation of both the vessel and the branches are each less >>>>>> straightforward than they are for, say, pulmonary CT. >>>>>> >>>>>> vmtkmeshgenerator failed outright until I began using >>>>>> vmtkcenterlines to help it calibrate the triangle and tetrahedral >>>>>> density. (The ultimate goal is CFD analysis using Ansys Fluent). >>>>> You could potentially specify a small absolute -edgelength, but >>>>> surely making the mesh density adapted to the radius is better. >>>>> >>>>>> In some heavily branched vessels, the outflow surface of one the >>>>>> branches shows up as unconnected to the rest of the mesh when I >>>>>> load it into fluent. These are also generally vessels where >>>>>> vmtkcenterlines has convergence issues. >>>>> Not sure I'm giving a sensible suggestion here, but consider using >>>>> vmtksurfacesubdivision before computing centerlines. Sounds you're >>>>> experiencing Voronoi degeneracy issues here. >>>>> >>>>>> So...I'm not sure how I would use vmtkbranchextractor here, >>>>>> unless I could feed my initial triangulation into it? >>>>> Don't confuse vmtkbranchextractor with vmtkbranchclipper. The >>>>> former just splits centerlines (into branches and assignes >>>>> GroupIds, TractIds, Blanking and so on) based on the unsplit >>>>> centerlines, it doesn't need a surface. The latter splits the >>>>> surface based on the split centerlines. >>>>> vmtkbranchextractor should work with any set of polylines, as long >>>>> as they're arranged in a tree-like fashion (not as a network, >>>>> rather with each line running from the root to an outlet) and as >>>>> long as a radius array is provided on top of centerlines. >>>>> >>>>>> As such, I'm attempting what I realize is something of a hack, >>>>>> feeding centerlines and radius information that I have a priori >>>>>> into vtkvmtkMergeCenterlines in an attempt to get a proper vessel >>>>>> tree without having to rely upon vmtkcenterlines' procedure. >>>>>> >>>>>> I don't have the "blanking regions" stored anywhere, because it's >>>>>> not part of the workflow that leads up to this, but would be >>>>>> fairly trivial to surmise, as I could simply test each branch >>>>>> centerline point to see if it lies closer than vesselRadius[i] to >>>>>> vesselCenterline[i], for all i. >>>>>> >>>>>> Thus, my centerline *is* already broken into branches, but not >>>>>> using vmtkbranchextractor. >>>>> Ok. >>>>> >>>>>> Attached is a screenshot of the result of running it with what >>>>>> were clearly mistaken group/tract ids. It clearly tried to >>>>>> connect all segments, but with no knowledge of where bifurcations >>>>>> were, simply tacked them all end-to-end to form 1 centerline. >>>>>> >>>>>> So really...I'm trying to figure out, if I must synthesize group >>>>>> and tract ids, how do I do so in a way that will correctly inform >>>>>> the merging of my branch centerline segments? >>>>> Try to see if vmtkbranchextractor (since it only relies on >>>>> centerlines). Just a suggestion, I don't want to complicate things >>>>> but you might have not been aware that vmtkbranchextractor is >>>>> purely centerline-based. >>>>> >>>>> >>>>> Luca >>>>> >>>>> >>>>>> -rd >>>>>>>> I just tried running it with groupID==centerlineID for all >>>>>>>> centerlines, >>>>>>>> and tractID = uniformly 1, and blanking = uniformly 0. >>>>>>>> >>>>>>>> The result was an unruly knot that suggested that it didn't >>>>>>>> know what to >>>>>>>> connect to what. >>>>>>> Yes, the centerline has to be first split into branches using >>>>>>> vmtkbranchextractor >>>>>>> (which will identify bifurcations, split and group) and then >>>>>>> vmtkcenterlinemerge >>>>>>> will generate one centerline per group and create a proper network. >>>>>>> >>>>>>>> I suspect, after digging through the vtkVmtk source code and >>>>>>>> looking at >>>>>>>> this http://www.vmtk.org/Tutorials/BranchSplitting/ example, I >>>>>>>> need to >>>>>>>> actually annotate the bifurcation regions by setting group and >>>>>>>> tract id, >>>>>>>> and blanking, correctly. >>>>>>> Yes, but you also need to split centerline cells in chunks, as >>>>>>> depicted in >>>>>>> the branch splitting tutorial. >>>>>>> >>>>>>>> If I understand this correctly, I can create a bifurcation >>>>>>>> region by >>>>>>>> identifying where the branch departs the vessel, and appending 1 >>>>>>>> location on the vessel centerline to the branch centerline at the >>>>>>>> proximal-most location. And then, groupID increments at and >>>>>>>> after each >>>>>>>> bifurcation region, and blanking is set to 1 in each >>>>>>>> bifurcation region. >>>>>>>> >>>>>>>> I'm less clear on tract ID. Is it always either 1 or 2, depending >>>>>>>> whether before or after the bifurcation point? Or does it get >>>>>>>> set to a >>>>>>>> unique value for each chunk vis a vis group id? >>>>>>> Consider the individual centerline cell originally running between >>>>>>> inlet and outlet. Now that you have split it in chunks, number each >>>>>>> chunk from 0 to n. That's the tract id. >>>>>>> >>>>>>>> I won't be able to get to it until this evening, but I believe >>>>>>>> that's >>>>>>>> the next logical step. >>>>>>> Keep us posted. However, I'd also like to understand more of >>>>>>> your approach, >>>>>>> so if you could clarify your first paragraph that would be great. >>>>>>> >>>>>>> Thanks >>>>>>> >>>>>>> Luca >>>>>>> >>>>>>>> -rd >>>>>>>> >>>>>>>> On 03/07/2013 10:35 AM, Luca Antiga wrote: >>>>>>>>> Hi Richard, >>>>>>>>> just pipe vmtkcenterlinemerge after vmtkbranchextractor and >>>>>>>>> use -ofile to write the file out, that's the quickest. >>>>>>>>> What is your exact issue? >>>>>>>>> >>>>>>>>> Roman: I haven't got an answer for you yet - I've been taking >>>>>>>>> care of the quick messages but yours requires a free slot of >>>>>>>>> time. Thanks for your patience. >>>>>>>>> >>>>>>>>> Luca >>>>>>>>> >>>>>>>>> On 06/mar/2013, at 18:31, Richard Downe >>>>>>>>> <ric...@ui...> wrote: >>>>>>>>> >>>>>>>>>> Luca-- >>>>>>>>>> I've been vexed by a similar situation for awhile that I'm >>>>>>>>>> just now getting around to tackling. >>>>>>>>>> One thing I *do* have, however, is centerlines for my main >>>>>>>>>> vessel an all branches. >>>>>>>>>> I've noticed a >>>>>>>>>> vmtkcenterlinemerge.py/vtkvmtkMergeCenterlines.h/cxx that >>>>>>>>>> don't appear to be used anywhere, so I can't find a usage >>>>>>>>>> example. >>>>>>>>>> >>>>>>>>>> What do I need to pass in for the tract ids and blanking ids >>>>>>>>>> to make this work, or do you have a usage example somewhere? >>>>>>>>>> -rd >>>>>>>>>> >>>>>>>>>> On 03/04/2013 07:00 AM, Luca Antiga wrote: >>>>>>>>>>> Hi Roman, >>>>>>>>>>> I'll really need to take a closer look to the data you >>>>>>>>>>> sent, I'm planning to do it in the next few days. >>>>>>>>>>> Thanks >>>>>>>>>>> >>>>>>>>>>> Luca >>>>>>>>>>> >>>>>>>>>>> On Mar 4, 2013, at 1:54 PM, Dr. Roman Grothausmann wrote: >>>>>>>>>>> >>>>>>>>>>>> On 23/02/13 13:56, Luca Antiga wrote: >>>>>>>>>>>>> Possible workarounds: >>>>>>>>>>>>> >>>>>>>>>>>>> 1. Try to use Tetgen to generate the internal Delaunay >>>>>>>>>>>>> tessellation, instead of the default algorithm. This can >>>>>>>>>>>>> be easily >>>>>>>>>>>>> done by specifying -usetetgen 1 in the vmtkcenterlines >>>>>>>>>>>>> command line >>>>>>>>>>>> Using tetgen I get an error and the resulting VTP-file is >>>>>>>>>>>> empty (second workaround is still running): >>>>>>>>>>>> >>>>>>>>>>>> Reading VTK XML surface file. >>>>>>>>>>>> Executing vmtkcenterlines ... >>>>>>>>>>>> Cleaning surface. >>>>>>>>>>>> Triangulating surface. >>>>>>>>>>>> Computing centerlines. >>>>>>>>>>>> Computing centerlines...Running TetGen. >>>>>>>>>>>> TetGen command line options: pT1.000000e-08dzQ >>>>>>>>>>>> ERROR: In >>>>>>>>>>>> /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkNonManifoldFastMarching.cxx, >>>>>>>>>>>> line 667 >>>>>>>>>>>> vtkvmtkNonManifoldFastMarching (0xe6fdac0): Cost function >>>>>>>>>>>> array with name specified does not exist! >>>>>>>>>>>> >>>>>>>>>>>> ERROR: In >>>>>>>>>>>> /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkSteepestDescentLineTracer.cxx, >>>>>>>>>>>> line 318 >>>>>>>>>>>> vtkvmtkSteepestDescentLineTracer (0xe6f9210): Descent array >>>>>>>>>>>> with name specified does not exist! >>>>>>>>>>>> >>>>>>>>>>>> Done executing vmtkcenterlines. >>>>>>>>>>>> Writing VTK XML surface file. >>>>>>>>>>>> Output vmtkcenterlines members: >>>>>>>>>>>> >>>>>>>>>>>>> 2. Compute the Delaunay tessellation on the closed surface >>>>>>>>>>>>> (prior to cutting the endcaps open) using vmtkdelaunayvoronoi >>>>>>>>>>>>> and feed it to vmtkcenterlines, this way: >>>>>>>>>>>>> >>>>>>>>>>>>> vmtkdelaunayvoronoi -ifile unclipped.vtp --pipe >>>>>>>>>>>>> vmtkcenterlines -ifile clipped.vtp ... >>>>>>>>>>>> Using this command causes no errors but the resulting file >>>>>>>>>>>> is also empty. >>>>>>>>>>>> >>>>>>>>>>>> Any ideas what else I could try? >>>>>>>>>>>> >>>>>>>>>>>> Many thanks for any help or hints. >>>>>>>>>>>> Roman >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> This will allow you to take advantage of the clipped >>>>>>>>>>>>> endcaps for the seedselector (since you feed clipped.vtp >>>>>>>>>>>>> as input to vmtkcenterlines) >>>>>>>>>>>>> but use the Delaunay tessellation computed from the >>>>>>>>>>>>> unclipped one, which shouldn't have the issue with the >>>>>>>>>>>>> artifactual inner tets. >>>>>>>>>>>>> >>>>>>>>>>>>> In any case, it would be good for me to have the surface >>>>>>>>>>>>> so I can use it to fix the internal delaunay tet selection >>>>>>>>>>>>> issue. >>>>>>>>>>>>> >>>>>>>>>>>>> Best, >>>>>>>>>>>>> >>>>>>>>>>>>> Luca >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Feb 22, 2013, at 9:32 AM, Dr. Roman Grothausmann wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> (now with images) >>>>>>>>>>>>>> >>>>>>>>>>>>>> Dear mailing list members, >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Another problem I have is that not all end-points that I >>>>>>>>>>>>>> extract from the output of vmtknetwork (magenta lines in >>>>>>>>>>>>>> attached image) are tracked by vmtkcenterlines (grey/blue >>>>>>>>>>>>>> lines), most are but some are not. See the end points of >>>>>>>>>>>>>> the magenta lines of which a grey line stretches like a >>>>>>>>>>>>>> cobweb string. After removing these cobweb lines I end up >>>>>>>>>>>>>> with the blue lines which are OK except for the lacking >>>>>>>>>>>>>> branches. >>>>>>>>>>>>>> What could be the reason for that and how could I avoid it? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Any help or hints are very much appreciated >>>>>>>>>>>>>> Roman >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> Dr. Roman Grothausmann >>>>>>>>>>>>>> >>>>>>>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>>>>>>> >>>>>>>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>>>>>>> D-30625 Hannover >>>>>>>>>>>>>> >>>>>>>>>>>>>> Tel. +49 511 532-9574 >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> <KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 >>>>>>>>>>>>>> orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_03.gif><KO4_01_08_12_002_PD >>>>>>>>>>>>>> PMT_seg-8bit_fh0_obs_d1 >>>>>>>>>>>>>> orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_05.gif>------------------------------------------------------------------------------ >>>>>>>>>>>>>> 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_d2d_feb_______________________________________________ >>>>>>>>>>>>>> >>>>>>>>>>>>>> vmtk-users mailing list >>>>>>>>>>>>>> vmt...@li... >>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>>>>>>>> -- >>>>>>>>>>>> Dr. Roman Grothausmann >>>>>>>>>>>> >>>>>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>>>>> >>>>>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>>>>> D-30625 Hannover >>>>>>>>>>>> >>>>>>>>>>>> Tel. +49 511 532-9574 >>>>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>>>> >>>>>>>>>>> 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_d2d_feb >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> vmtk-users mailing list >>>>>>>>>>> vmt...@li... >>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>>>> ------------------------------------------------------------------------------ >>>>>>>> >>>>>>>> Symantec Endpoint Protection 12 positioned as A LEADER in The >>>>>>>> Forrester >>>>>>>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good >>>>>>>> choice" in the >>>>>>>> endpoint security space. For insight on selecting the right >>>>>>>> partner to >>>>>>>> tackle endpoint security challenges, access the full report. >>>>>>>> http://p.sf.net/sfu/symantec-dev2dev >>>>>>>> _______________________________________________ >>>>>>>> vmtk-users mailing list >>>>>>>> vmt...@li... >>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>> <centerlines.png> >>>> ------------------------------------------------------------------------------ >>>> >>>> Symantec Endpoint Protection 12 positioned as A LEADER in The >>>> Forrester >>>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in >>>> the >>>> endpoint security space. For insight on selecting the right partner to >>>> tackle endpoint security challenges, access the full report. >>>> http://p.sf.net/sfu/symantec-dev2dev >>>> _______________________________________________ >>>> vmtk-users mailing list >>>> vmt...@li... >>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >> >> ------------------------------------------------------------------------------ >> >> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >> endpoint security space. For insight on selecting the right partner to >> tackle endpoint security challenges, access the full report. >> http://p.sf.net/sfu/symantec-dev2dev >> _______________________________________________ >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users > > > > ------------------------------------------------------------------------------ > Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester > Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the > endpoint security space. For insight on selecting the right partner to > tackle endpoint security challenges, access the full report. > http://p.sf.net/sfu/symantec-dev2dev > > > _______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Richard D. <ric...@ui...> - 2013-03-11 18:07:43
|
Attached is a .vtp file for a set of centerlines that crashes vmtkcenterlinemerge. This file is the immediate output of vmtkbranchextractor. -rd On 03/11/2013 11:32 AM, Richard Downe wrote: > The interesting thing I've noticed is that the vessels where I had the > "detached outlet" issue segfault, and the ones that meshed correctly don't. > > I'll see if I can capture the centerlines of one of these problematic > vessels into a .vtp, and post the vtp and the surface stl on dropbox > later today. > -rd > > On 03/11/2013 06:36 AM, Luca Antiga wrote: >> Hi Richard, >> I need to see the data in order to tell you something sensible. >> Best, >> >> Luca >> >> >> On Mar 11, 2013, at 1:48 AM, Richard Downe wrote: >> >>> So, when I finally teased all the typos out of the source file I sent >>> you the other night, I got a single, main vessel centerline with none of >>> the branches. >>> >>> So today, I attempted to sue vmtkbranchextractor. >>> >>> If I fed the vmtkbranchextractor output directly into >>> vmtkcenterlineviewer, things looked more or less as they should (e.g., >>> as a tree). >>> >>> When I tried to pass that result into vmtkmergecenterlines, I get a >>> segfault. >>> >>> Thoughts? >>> >>> -rd >>> >>> On 03/08/2013 05:24 AM, Luca Antiga wrote: >>>> Hi Richard, >>>> >>>> On Mar 7, 2013, at 11:42 PM, Richard Downe wrote: >>>> >>>>> On 03/07/2013 04:26 PM, Luca Antiga wrote: >>>>>> On Mar 7, 2013, at 9:44 PM, Richard Downe wrote: >>>>>> >>>>>>> Well...I'm not using vmtkbranchextractor. >>>>>>> >>>>>>> My branches and vessel are defined separately, and I merge them in a >>>>>>> pre-vmtk process. I have centerlines a priori, but it is not a unified >>>>>>> centerline tree. (I have until now been using source and target >>>>>>> points. This works well in most vessels, but heavily branched ones >>>>>>> frequently drop a branch, often the largest one, during the run of >>>>>>> vmtkcenterlines, so after reading this thread, I concluded I wasn't >>>>>>> alone, and set about trying to reengineer it.) >>>>>> I'm not sure I fully understand. A screenshot would help. >>>>> I mean that the branches and vessel are segmented separately in different tools, and then projected into 3-d space using a variation on Frenet-Serret analysis. I build a triangulated surface using CGAL from this point set, and using a python module I wrote myself, slurp this, along with the centerlines of the individual surfaces, into vmtk. >>>> I see now, thanks for the clarification. >>>> >>>>> The reason for this is that I work with coronary ultrasound. The segmentation of both the vessel and the branches are each less straightforward than they are for, say, pulmonary CT. >>>>> >>>>> vmtkmeshgenerator failed outright until I began using vmtkcenterlines to help it calibrate the triangle and tetrahedral density. (The ultimate goal is CFD analysis using Ansys Fluent). >>>> You could potentially specify a small absolute -edgelength, but surely making the mesh density adapted to the radius is better. >>>> >>>>> In some heavily branched vessels, the outflow surface of one the branches shows up as unconnected to the rest of the mesh when I load it into fluent. These are also generally vessels where vmtkcenterlines has convergence issues. >>>> Not sure I'm giving a sensible suggestion here, but consider using vmtksurfacesubdivision before computing centerlines. Sounds you're experiencing Voronoi degeneracy issues here. >>>> >>>>> So...I'm not sure how I would use vmtkbranchextractor here, unless I could feed my initial triangulation into it? >>>> Don't confuse vmtkbranchextractor with vmtkbranchclipper. The former just splits centerlines (into branches and assignes GroupIds, TractIds, Blanking and so on) based on the unsplit centerlines, it doesn't need a surface. The latter splits the surface based on the split centerlines. >>>> vmtkbranchextractor should work with any set of polylines, as long as they're arranged in a tree-like fashion (not as a network, rather with each line running from the root to an outlet) and as long as a radius array is provided on top of centerlines. >>>> >>>>> As such, I'm attempting what I realize is something of a hack, feeding centerlines and radius information that I have a priori into vtkvmtkMergeCenterlines in an attempt to get a proper vessel tree without having to rely upon vmtkcenterlines' procedure. >>>>> >>>>> I don't have the "blanking regions" stored anywhere, because it's not part of the workflow that leads up to this, but would be fairly trivial to surmise, as I could simply test each branch centerline point to see if it lies closer than vesselRadius[i] to vesselCenterline[i], for all i. >>>>> >>>>> Thus, my centerline *is* already broken into branches, but not using vmtkbranchextractor. >>>> Ok. >>>> >>>>> Attached is a screenshot of the result of running it with what were clearly mistaken group/tract ids. It clearly tried to connect all segments, but with no knowledge of where bifurcations were, simply tacked them all end-to-end to form 1 centerline. >>>>> >>>>> So really...I'm trying to figure out, if I must synthesize group and tract ids, how do I do so in a way that will correctly inform the merging of my branch centerline segments? >>>> Try to see if vmtkbranchextractor (since it only relies on centerlines). Just a suggestion, I don't want to complicate things but you might have not been aware that vmtkbranchextractor is purely centerline-based. >>>> >>>> >>>> Luca >>>> >>>> >>>>> -rd >>>>>>> I just tried running it with groupID==centerlineID for all centerlines, >>>>>>> and tractID = uniformly 1, and blanking = uniformly 0. >>>>>>> >>>>>>> The result was an unruly knot that suggested that it didn't know what to >>>>>>> connect to what. >>>>>> Yes, the centerline has to be first split into branches using vmtkbranchextractor >>>>>> (which will identify bifurcations, split and group) and then vmtkcenterlinemerge >>>>>> will generate one centerline per group and create a proper network. >>>>>> >>>>>>> I suspect, after digging through the vtkVmtk source code and looking at >>>>>>> this http://www.vmtk.org/Tutorials/BranchSplitting/ example, I need to >>>>>>> actually annotate the bifurcation regions by setting group and tract id, >>>>>>> and blanking, correctly. >>>>>> Yes, but you also need to split centerline cells in chunks, as depicted in >>>>>> the branch splitting tutorial. >>>>>> >>>>>>> If I understand this correctly, I can create a bifurcation region by >>>>>>> identifying where the branch departs the vessel, and appending 1 >>>>>>> location on the vessel centerline to the branch centerline at the >>>>>>> proximal-most location. And then, groupID increments at and after each >>>>>>> bifurcation region, and blanking is set to 1 in each bifurcation region. >>>>>>> >>>>>>> I'm less clear on tract ID. Is it always either 1 or 2, depending >>>>>>> whether before or after the bifurcation point? Or does it get set to a >>>>>>> unique value for each chunk vis a vis group id? >>>>>> Consider the individual centerline cell originally running between >>>>>> inlet and outlet. Now that you have split it in chunks, number each >>>>>> chunk from 0 to n. That's the tract id. >>>>>> >>>>>>> I won't be able to get to it until this evening, but I believe that's >>>>>>> the next logical step. >>>>>> Keep us posted. However, I'd also like to understand more of your approach, >>>>>> so if you could clarify your first paragraph that would be great. >>>>>> >>>>>> Thanks >>>>>> >>>>>> Luca >>>>>> >>>>>>> -rd >>>>>>> >>>>>>> On 03/07/2013 10:35 AM, Luca Antiga wrote: >>>>>>>> Hi Richard, >>>>>>>> just pipe vmtkcenterlinemerge after vmtkbranchextractor and use -ofile to write the file out, that's the quickest. >>>>>>>> What is your exact issue? >>>>>>>> >>>>>>>> Roman: I haven't got an answer for you yet - I've been taking care of the quick messages but yours requires a free slot of time. Thanks for your patience. >>>>>>>> >>>>>>>> Luca >>>>>>>> >>>>>>>> On 06/mar/2013, at 18:31, Richard Downe <ric...@ui...> wrote: >>>>>>>> >>>>>>>>> Luca-- >>>>>>>>> I've been vexed by a similar situation for awhile that I'm just now getting around to tackling. >>>>>>>>> One thing I *do* have, however, is centerlines for my main vessel an all branches. >>>>>>>>> I've noticed a vmtkcenterlinemerge.py/vtkvmtkMergeCenterlines.h/cxx that don't appear to be used anywhere, so I can't find a usage example. >>>>>>>>> >>>>>>>>> What do I need to pass in for the tract ids and blanking ids to make this work, or do you have a usage example somewhere? >>>>>>>>> -rd >>>>>>>>> >>>>>>>>> On 03/04/2013 07:00 AM, Luca Antiga wrote: >>>>>>>>>> Hi Roman, >>>>>>>>>> I'll really need to take a closer look to the data you sent, I'm planning to do it in the next few days. >>>>>>>>>> Thanks >>>>>>>>>> >>>>>>>>>> Luca >>>>>>>>>> >>>>>>>>>> On Mar 4, 2013, at 1:54 PM, Dr. Roman Grothausmann wrote: >>>>>>>>>> >>>>>>>>>>> On 23/02/13 13:56, Luca Antiga wrote: >>>>>>>>>>>> Possible workarounds: >>>>>>>>>>>> >>>>>>>>>>>> 1. Try to use Tetgen to generate the internal Delaunay tessellation, instead of the default algorithm. This can be easily >>>>>>>>>>>> done by specifying -usetetgen 1 in the vmtkcenterlines command line >>>>>>>>>>> Using tetgen I get an error and the resulting VTP-file is empty (second workaround is still running): >>>>>>>>>>> >>>>>>>>>>> Reading VTK XML surface file. >>>>>>>>>>> Executing vmtkcenterlines ... >>>>>>>>>>> Cleaning surface. >>>>>>>>>>> Triangulating surface. >>>>>>>>>>> Computing centerlines. >>>>>>>>>>> Computing centerlines...Running TetGen. >>>>>>>>>>> TetGen command line options: pT1.000000e-08dzQ >>>>>>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkNonManifoldFastMarching.cxx, line 667 >>>>>>>>>>> vtkvmtkNonManifoldFastMarching (0xe6fdac0): Cost function array with name specified does not exist! >>>>>>>>>>> >>>>>>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkSteepestDescentLineTracer.cxx, line 318 >>>>>>>>>>> vtkvmtkSteepestDescentLineTracer (0xe6f9210): Descent array with name specified does not exist! >>>>>>>>>>> >>>>>>>>>>> Done executing vmtkcenterlines. >>>>>>>>>>> Writing VTK XML surface file. >>>>>>>>>>> Output vmtkcenterlines members: >>>>>>>>>>> >>>>>>>>>>>> 2. Compute the Delaunay tessellation on the closed surface (prior to cutting the endcaps open) using vmtkdelaunayvoronoi >>>>>>>>>>>> and feed it to vmtkcenterlines, this way: >>>>>>>>>>>> >>>>>>>>>>>> vmtkdelaunayvoronoi -ifile unclipped.vtp --pipe vmtkcenterlines -ifile clipped.vtp ... >>>>>>>>>>> Using this command causes no errors but the resulting file is also empty. >>>>>>>>>>> >>>>>>>>>>> Any ideas what else I could try? >>>>>>>>>>> >>>>>>>>>>> Many thanks for any help or hints. >>>>>>>>>>> Roman >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> This will allow you to take advantage of the clipped endcaps for the seedselector (since you feed clipped.vtp as input to vmtkcenterlines) >>>>>>>>>>>> but use the Delaunay tessellation computed from the unclipped one, which shouldn't have the issue with the artifactual inner tets. >>>>>>>>>>>> >>>>>>>>>>>> In any case, it would be good for me to have the surface so I can use it to fix the internal delaunay tet selection issue. >>>>>>>>>>>> >>>>>>>>>>>> Best, >>>>>>>>>>>> >>>>>>>>>>>> Luca >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Feb 22, 2013, at 9:32 AM, Dr. Roman Grothausmann wrote: >>>>>>>>>>>> >>>>>>>>>>>>> (now with images) >>>>>>>>>>>>> >>>>>>>>>>>>> Dear mailing list members, >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Another problem I have is that not all end-points that I extract from the output of vmtknetwork (magenta lines in attached image) are tracked by vmtkcenterlines (grey/blue lines), most are but some are not. See the end points of the magenta lines of which a grey line stretches like a cobweb string. After removing these cobweb lines I end up with the blue lines which are OK except for the lacking branches. >>>>>>>>>>>>> What could be the reason for that and how could I avoid it? >>>>>>>>>>>>> >>>>>>>>>>>>> Any help or hints are very much appreciated >>>>>>>>>>>>> Roman >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> Dr. Roman Grothausmann >>>>>>>>>>>>> >>>>>>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>>>>>> >>>>>>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>>>>>> D-30625 Hannover >>>>>>>>>>>>> >>>>>>>>>>>>> Tel. +49 511 532-9574 >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> <KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_03.gif><KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_05.gif>------------------------------------------------------------------------------ >>>>>>>>>>>>> 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_d2d_feb_______________________________________________ >>>>>>>>>>>>> vmtk-users mailing list >>>>>>>>>>>>> vmt...@li... >>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>>>>>>> -- >>>>>>>>>>> Dr. Roman Grothausmann >>>>>>>>>>> >>>>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>>>> >>>>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>>>> D-30625 Hannover >>>>>>>>>>> >>>>>>>>>>> Tel. +49 511 532-9574 >>>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>>> 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_d2d_feb >>>>>>>>>> _______________________________________________ >>>>>>>>>> vmtk-users mailing list >>>>>>>>>> vmt...@li... >>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>>> ------------------------------------------------------------------------------ >>>>>>> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >>>>>>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >>>>>>> endpoint security space. For insight on selecting the right partner to >>>>>>> tackle endpoint security challenges, access the full report. >>>>>>> http://p.sf.net/sfu/symantec-dev2dev >>>>>>> _______________________________________________ >>>>>>> vmtk-users mailing list >>>>>>> vmt...@li... >>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>> <centerlines.png> >>> ------------------------------------------------------------------------------ >>> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >>> endpoint security space. For insight on selecting the right partner to >>> tackle endpoint security challenges, access the full report. >>> http://p.sf.net/sfu/symantec-dev2dev >>> _______________________________________________ >>> vmtk-users mailing list >>> vmt...@li... >>> https://lists.sourceforge.net/lists/listinfo/vmtk-users > > ------------------------------------------------------------------------------ > Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester > Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the > endpoint security space. For insight on selecting the right partner to > tackle endpoint security challenges, access the full report. > http://p.sf.net/sfu/symantec-dev2dev > _______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Richard D. <ric...@ui...> - 2013-03-11 16:32:50
|
The interesting thing I've noticed is that the vessels where I had the "detached outlet" issue segfault, and the ones that meshed correctly don't. I'll see if I can capture the centerlines of one of these problematic vessels into a .vtp, and post the vtp and the surface stl on dropbox later today. -rd On 03/11/2013 06:36 AM, Luca Antiga wrote: > Hi Richard, > I need to see the data in order to tell you something sensible. > Best, > > Luca > > > On Mar 11, 2013, at 1:48 AM, Richard Downe wrote: > >> So, when I finally teased all the typos out of the source file I sent >> you the other night, I got a single, main vessel centerline with none of >> the branches. >> >> So today, I attempted to sue vmtkbranchextractor. >> >> If I fed the vmtkbranchextractor output directly into >> vmtkcenterlineviewer, things looked more or less as they should (e.g., >> as a tree). >> >> When I tried to pass that result into vmtkmergecenterlines, I get a >> segfault. >> >> Thoughts? >> >> -rd >> >> On 03/08/2013 05:24 AM, Luca Antiga wrote: >>> Hi Richard, >>> >>> On Mar 7, 2013, at 11:42 PM, Richard Downe wrote: >>> >>>> On 03/07/2013 04:26 PM, Luca Antiga wrote: >>>>> On Mar 7, 2013, at 9:44 PM, Richard Downe wrote: >>>>> >>>>>> Well...I'm not using vmtkbranchextractor. >>>>>> >>>>>> My branches and vessel are defined separately, and I merge them in a >>>>>> pre-vmtk process. I have centerlines a priori, but it is not a unified >>>>>> centerline tree. (I have until now been using source and target >>>>>> points. This works well in most vessels, but heavily branched ones >>>>>> frequently drop a branch, often the largest one, during the run of >>>>>> vmtkcenterlines, so after reading this thread, I concluded I wasn't >>>>>> alone, and set about trying to reengineer it.) >>>>> I'm not sure I fully understand. A screenshot would help. >>>> I mean that the branches and vessel are segmented separately in different tools, and then projected into 3-d space using a variation on Frenet-Serret analysis. I build a triangulated surface using CGAL from this point set, and using a python module I wrote myself, slurp this, along with the centerlines of the individual surfaces, into vmtk. >>> I see now, thanks for the clarification. >>> >>>> The reason for this is that I work with coronary ultrasound. The segmentation of both the vessel and the branches are each less straightforward than they are for, say, pulmonary CT. >>>> >>>> vmtkmeshgenerator failed outright until I began using vmtkcenterlines to help it calibrate the triangle and tetrahedral density. (The ultimate goal is CFD analysis using Ansys Fluent). >>> You could potentially specify a small absolute -edgelength, but surely making the mesh density adapted to the radius is better. >>> >>>> In some heavily branched vessels, the outflow surface of one the branches shows up as unconnected to the rest of the mesh when I load it into fluent. These are also generally vessels where vmtkcenterlines has convergence issues. >>> Not sure I'm giving a sensible suggestion here, but consider using vmtksurfacesubdivision before computing centerlines. Sounds you're experiencing Voronoi degeneracy issues here. >>> >>>> So...I'm not sure how I would use vmtkbranchextractor here, unless I could feed my initial triangulation into it? >>> Don't confuse vmtkbranchextractor with vmtkbranchclipper. The former just splits centerlines (into branches and assignes GroupIds, TractIds, Blanking and so on) based on the unsplit centerlines, it doesn't need a surface. The latter splits the surface based on the split centerlines. >>> vmtkbranchextractor should work with any set of polylines, as long as they're arranged in a tree-like fashion (not as a network, rather with each line running from the root to an outlet) and as long as a radius array is provided on top of centerlines. >>> >>>> As such, I'm attempting what I realize is something of a hack, feeding centerlines and radius information that I have a priori into vtkvmtkMergeCenterlines in an attempt to get a proper vessel tree without having to rely upon vmtkcenterlines' procedure. >>>> >>>> I don't have the "blanking regions" stored anywhere, because it's not part of the workflow that leads up to this, but would be fairly trivial to surmise, as I could simply test each branch centerline point to see if it lies closer than vesselRadius[i] to vesselCenterline[i], for all i. >>>> >>>> Thus, my centerline *is* already broken into branches, but not using vmtkbranchextractor. >>> Ok. >>> >>>> Attached is a screenshot of the result of running it with what were clearly mistaken group/tract ids. It clearly tried to connect all segments, but with no knowledge of where bifurcations were, simply tacked them all end-to-end to form 1 centerline. >>>> >>>> So really...I'm trying to figure out, if I must synthesize group and tract ids, how do I do so in a way that will correctly inform the merging of my branch centerline segments? >>> Try to see if vmtkbranchextractor (since it only relies on centerlines). Just a suggestion, I don't want to complicate things but you might have not been aware that vmtkbranchextractor is purely centerline-based. >>> >>> >>> Luca >>> >>> >>>> -rd >>>>>> I just tried running it with groupID==centerlineID for all centerlines, >>>>>> and tractID = uniformly 1, and blanking = uniformly 0. >>>>>> >>>>>> The result was an unruly knot that suggested that it didn't know what to >>>>>> connect to what. >>>>> Yes, the centerline has to be first split into branches using vmtkbranchextractor >>>>> (which will identify bifurcations, split and group) and then vmtkcenterlinemerge >>>>> will generate one centerline per group and create a proper network. >>>>> >>>>>> I suspect, after digging through the vtkVmtk source code and looking at >>>>>> this http://www.vmtk.org/Tutorials/BranchSplitting/ example, I need to >>>>>> actually annotate the bifurcation regions by setting group and tract id, >>>>>> and blanking, correctly. >>>>> Yes, but you also need to split centerline cells in chunks, as depicted in >>>>> the branch splitting tutorial. >>>>> >>>>>> If I understand this correctly, I can create a bifurcation region by >>>>>> identifying where the branch departs the vessel, and appending 1 >>>>>> location on the vessel centerline to the branch centerline at the >>>>>> proximal-most location. And then, groupID increments at and after each >>>>>> bifurcation region, and blanking is set to 1 in each bifurcation region. >>>>>> >>>>>> I'm less clear on tract ID. Is it always either 1 or 2, depending >>>>>> whether before or after the bifurcation point? Or does it get set to a >>>>>> unique value for each chunk vis a vis group id? >>>>> Consider the individual centerline cell originally running between >>>>> inlet and outlet. Now that you have split it in chunks, number each >>>>> chunk from 0 to n. That's the tract id. >>>>> >>>>>> I won't be able to get to it until this evening, but I believe that's >>>>>> the next logical step. >>>>> Keep us posted. However, I'd also like to understand more of your approach, >>>>> so if you could clarify your first paragraph that would be great. >>>>> >>>>> Thanks >>>>> >>>>> Luca >>>>> >>>>>> -rd >>>>>> >>>>>> On 03/07/2013 10:35 AM, Luca Antiga wrote: >>>>>>> Hi Richard, >>>>>>> just pipe vmtkcenterlinemerge after vmtkbranchextractor and use -ofile to write the file out, that's the quickest. >>>>>>> What is your exact issue? >>>>>>> >>>>>>> Roman: I haven't got an answer for you yet - I've been taking care of the quick messages but yours requires a free slot of time. Thanks for your patience. >>>>>>> >>>>>>> Luca >>>>>>> >>>>>>> On 06/mar/2013, at 18:31, Richard Downe <ric...@ui...> wrote: >>>>>>> >>>>>>>> Luca-- >>>>>>>> I've been vexed by a similar situation for awhile that I'm just now getting around to tackling. >>>>>>>> One thing I *do* have, however, is centerlines for my main vessel an all branches. >>>>>>>> I've noticed a vmtkcenterlinemerge.py/vtkvmtkMergeCenterlines.h/cxx that don't appear to be used anywhere, so I can't find a usage example. >>>>>>>> >>>>>>>> What do I need to pass in for the tract ids and blanking ids to make this work, or do you have a usage example somewhere? >>>>>>>> -rd >>>>>>>> >>>>>>>> On 03/04/2013 07:00 AM, Luca Antiga wrote: >>>>>>>>> Hi Roman, >>>>>>>>> I'll really need to take a closer look to the data you sent, I'm planning to do it in the next few days. >>>>>>>>> Thanks >>>>>>>>> >>>>>>>>> Luca >>>>>>>>> >>>>>>>>> On Mar 4, 2013, at 1:54 PM, Dr. Roman Grothausmann wrote: >>>>>>>>> >>>>>>>>>> On 23/02/13 13:56, Luca Antiga wrote: >>>>>>>>>>> Possible workarounds: >>>>>>>>>>> >>>>>>>>>>> 1. Try to use Tetgen to generate the internal Delaunay tessellation, instead of the default algorithm. This can be easily >>>>>>>>>>> done by specifying -usetetgen 1 in the vmtkcenterlines command line >>>>>>>>>> Using tetgen I get an error and the resulting VTP-file is empty (second workaround is still running): >>>>>>>>>> >>>>>>>>>> Reading VTK XML surface file. >>>>>>>>>> Executing vmtkcenterlines ... >>>>>>>>>> Cleaning surface. >>>>>>>>>> Triangulating surface. >>>>>>>>>> Computing centerlines. >>>>>>>>>> Computing centerlines...Running TetGen. >>>>>>>>>> TetGen command line options: pT1.000000e-08dzQ >>>>>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkNonManifoldFastMarching.cxx, line 667 >>>>>>>>>> vtkvmtkNonManifoldFastMarching (0xe6fdac0): Cost function array with name specified does not exist! >>>>>>>>>> >>>>>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkSteepestDescentLineTracer.cxx, line 318 >>>>>>>>>> vtkvmtkSteepestDescentLineTracer (0xe6f9210): Descent array with name specified does not exist! >>>>>>>>>> >>>>>>>>>> Done executing vmtkcenterlines. >>>>>>>>>> Writing VTK XML surface file. >>>>>>>>>> Output vmtkcenterlines members: >>>>>>>>>> >>>>>>>>>>> 2. Compute the Delaunay tessellation on the closed surface (prior to cutting the endcaps open) using vmtkdelaunayvoronoi >>>>>>>>>>> and feed it to vmtkcenterlines, this way: >>>>>>>>>>> >>>>>>>>>>> vmtkdelaunayvoronoi -ifile unclipped.vtp --pipe vmtkcenterlines -ifile clipped.vtp ... >>>>>>>>>> Using this command causes no errors but the resulting file is also empty. >>>>>>>>>> >>>>>>>>>> Any ideas what else I could try? >>>>>>>>>> >>>>>>>>>> Many thanks for any help or hints. >>>>>>>>>> Roman >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> This will allow you to take advantage of the clipped endcaps for the seedselector (since you feed clipped.vtp as input to vmtkcenterlines) >>>>>>>>>>> but use the Delaunay tessellation computed from the unclipped one, which shouldn't have the issue with the artifactual inner tets. >>>>>>>>>>> >>>>>>>>>>> In any case, it would be good for me to have the surface so I can use it to fix the internal delaunay tet selection issue. >>>>>>>>>>> >>>>>>>>>>> Best, >>>>>>>>>>> >>>>>>>>>>> Luca >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Feb 22, 2013, at 9:32 AM, Dr. Roman Grothausmann wrote: >>>>>>>>>>> >>>>>>>>>>>> (now with images) >>>>>>>>>>>> >>>>>>>>>>>> Dear mailing list members, >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Another problem I have is that not all end-points that I extract from the output of vmtknetwork (magenta lines in attached image) are tracked by vmtkcenterlines (grey/blue lines), most are but some are not. See the end points of the magenta lines of which a grey line stretches like a cobweb string. After removing these cobweb lines I end up with the blue lines which are OK except for the lacking branches. >>>>>>>>>>>> What could be the reason for that and how could I avoid it? >>>>>>>>>>>> >>>>>>>>>>>> Any help or hints are very much appreciated >>>>>>>>>>>> Roman >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Dr. Roman Grothausmann >>>>>>>>>>>> >>>>>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>>>>> >>>>>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>>>>> D-30625 Hannover >>>>>>>>>>>> >>>>>>>>>>>> Tel. +49 511 532-9574 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> <KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_03.gif><KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_05.gif>------------------------------------------------------------------------------ >>>>>>>>>>>> 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_d2d_feb_______________________________________________ >>>>>>>>>>>> vmtk-users mailing list >>>>>>>>>>>> vmt...@li... >>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>>>>>> -- >>>>>>>>>> Dr. Roman Grothausmann >>>>>>>>>> >>>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>>> >>>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>>> D-30625 Hannover >>>>>>>>>> >>>>>>>>>> Tel. +49 511 532-9574 >>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>> 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_d2d_feb >>>>>>>>> _______________________________________________ >>>>>>>>> vmtk-users mailing list >>>>>>>>> vmt...@li... >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>> ------------------------------------------------------------------------------ >>>>>> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >>>>>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >>>>>> endpoint security space. For insight on selecting the right partner to >>>>>> tackle endpoint security challenges, access the full report. >>>>>> http://p.sf.net/sfu/symantec-dev2dev >>>>>> _______________________________________________ >>>>>> vmtk-users mailing list >>>>>> vmt...@li... >>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>> <centerlines.png> >> >> ------------------------------------------------------------------------------ >> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >> endpoint security space. For insight on selecting the right partner to >> tackle endpoint security challenges, access the full report. >> http://p.sf.net/sfu/symantec-dev2dev >> _______________________________________________ >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@or...> - 2013-03-11 13:21:06
|
Dear Robert, I don't think it's a matter of Python not being recognized or located. Apparently Python starts correctly, but it then crashes for whatever reason. Have you tried with the 32bit version? Any hard core Windows users out there that can help with this one? Thanks! Luca On Mar 8, 2013, at 6:40 PM, Robert Damiano wrote: > Dear VMTK users, > > I am having an issue running commands in this build of VMTK. I installed vmtk-1.0.1-win7-64bit.exe on our new computer. The previous version we were using was 0.9.0 on Windows XP systems and that build seemed to work fine. I tried to run similar commands in version 1.0.1 on our new computer such as: > > vmtkimagereader -ifile HL.dcm --pipe vmtkimagemipviewer > > but I keep getting this error: > > Runtime Error! > > Program: C:\Python27\pythonw.exe > > This application has requested the Runtime to terminate it in an unusual way. > Please contact the applications support team for more information. > > Has anyone else experienced this issue? It seems that VMTK cannot recognize Python or where it is located. > > Thanks for the help! > > Rob D. > ------------------------------------------------------------------------------ > Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester > Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the > endpoint security space. For insight on selecting the right partner to > tackle endpoint security challenges, access the full report. > http://p.sf.net/sfu/symantec-dev2dev_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@or...> - 2013-03-11 11:36:39
|
Hi Richard, I need to see the data in order to tell you something sensible. Best, Luca On Mar 11, 2013, at 1:48 AM, Richard Downe wrote: > So, when I finally teased all the typos out of the source file I sent > you the other night, I got a single, main vessel centerline with none of > the branches. > > So today, I attempted to sue vmtkbranchextractor. > > If I fed the vmtkbranchextractor output directly into > vmtkcenterlineviewer, things looked more or less as they should (e.g., > as a tree). > > When I tried to pass that result into vmtkmergecenterlines, I get a > segfault. > > Thoughts? > > -rd > > On 03/08/2013 05:24 AM, Luca Antiga wrote: >> Hi Richard, >> >> On Mar 7, 2013, at 11:42 PM, Richard Downe wrote: >> >>> On 03/07/2013 04:26 PM, Luca Antiga wrote: >>>> On Mar 7, 2013, at 9:44 PM, Richard Downe wrote: >>>> >>>>> Well...I'm not using vmtkbranchextractor. >>>>> >>>>> My branches and vessel are defined separately, and I merge them in a >>>>> pre-vmtk process. I have centerlines a priori, but it is not a unified >>>>> centerline tree. (I have until now been using source and target >>>>> points. This works well in most vessels, but heavily branched ones >>>>> frequently drop a branch, often the largest one, during the run of >>>>> vmtkcenterlines, so after reading this thread, I concluded I wasn't >>>>> alone, and set about trying to reengineer it.) >>>> I'm not sure I fully understand. A screenshot would help. >>> I mean that the branches and vessel are segmented separately in different tools, and then projected into 3-d space using a variation on Frenet-Serret analysis. I build a triangulated surface using CGAL from this point set, and using a python module I wrote myself, slurp this, along with the centerlines of the individual surfaces, into vmtk. >> I see now, thanks for the clarification. >> >>> The reason for this is that I work with coronary ultrasound. The segmentation of both the vessel and the branches are each less straightforward than they are for, say, pulmonary CT. >>> >>> vmtkmeshgenerator failed outright until I began using vmtkcenterlines to help it calibrate the triangle and tetrahedral density. (The ultimate goal is CFD analysis using Ansys Fluent). >> You could potentially specify a small absolute -edgelength, but surely making the mesh density adapted to the radius is better. >> >>> In some heavily branched vessels, the outflow surface of one the branches shows up as unconnected to the rest of the mesh when I load it into fluent. These are also generally vessels where vmtkcenterlines has convergence issues. >> Not sure I'm giving a sensible suggestion here, but consider using vmtksurfacesubdivision before computing centerlines. Sounds you're experiencing Voronoi degeneracy issues here. >> >>> So...I'm not sure how I would use vmtkbranchextractor here, unless I could feed my initial triangulation into it? >> Don't confuse vmtkbranchextractor with vmtkbranchclipper. The former just splits centerlines (into branches and assignes GroupIds, TractIds, Blanking and so on) based on the unsplit centerlines, it doesn't need a surface. The latter splits the surface based on the split centerlines. >> vmtkbranchextractor should work with any set of polylines, as long as they're arranged in a tree-like fashion (not as a network, rather with each line running from the root to an outlet) and as long as a radius array is provided on top of centerlines. >> >>> As such, I'm attempting what I realize is something of a hack, feeding centerlines and radius information that I have a priori into vtkvmtkMergeCenterlines in an attempt to get a proper vessel tree without having to rely upon vmtkcenterlines' procedure. >>> >>> I don't have the "blanking regions" stored anywhere, because it's not part of the workflow that leads up to this, but would be fairly trivial to surmise, as I could simply test each branch centerline point to see if it lies closer than vesselRadius[i] to vesselCenterline[i], for all i. >>> >>> Thus, my centerline *is* already broken into branches, but not using vmtkbranchextractor. >> Ok. >> >>> Attached is a screenshot of the result of running it with what were clearly mistaken group/tract ids. It clearly tried to connect all segments, but with no knowledge of where bifurcations were, simply tacked them all end-to-end to form 1 centerline. >>> >>> So really...I'm trying to figure out, if I must synthesize group and tract ids, how do I do so in a way that will correctly inform the merging of my branch centerline segments? >> Try to see if vmtkbranchextractor (since it only relies on centerlines). Just a suggestion, I don't want to complicate things but you might have not been aware that vmtkbranchextractor is purely centerline-based. >> >> >> Luca >> >> >>> -rd >>>>> I just tried running it with groupID==centerlineID for all centerlines, >>>>> and tractID = uniformly 1, and blanking = uniformly 0. >>>>> >>>>> The result was an unruly knot that suggested that it didn't know what to >>>>> connect to what. >>>> Yes, the centerline has to be first split into branches using vmtkbranchextractor >>>> (which will identify bifurcations, split and group) and then vmtkcenterlinemerge >>>> will generate one centerline per group and create a proper network. >>>> >>>>> I suspect, after digging through the vtkVmtk source code and looking at >>>>> this http://www.vmtk.org/Tutorials/BranchSplitting/ example, I need to >>>>> actually annotate the bifurcation regions by setting group and tract id, >>>>> and blanking, correctly. >>>> Yes, but you also need to split centerline cells in chunks, as depicted in >>>> the branch splitting tutorial. >>>> >>>>> If I understand this correctly, I can create a bifurcation region by >>>>> identifying where the branch departs the vessel, and appending 1 >>>>> location on the vessel centerline to the branch centerline at the >>>>> proximal-most location. And then, groupID increments at and after each >>>>> bifurcation region, and blanking is set to 1 in each bifurcation region. >>>>> >>>>> I'm less clear on tract ID. Is it always either 1 or 2, depending >>>>> whether before or after the bifurcation point? Or does it get set to a >>>>> unique value for each chunk vis a vis group id? >>>> Consider the individual centerline cell originally running between >>>> inlet and outlet. Now that you have split it in chunks, number each >>>> chunk from 0 to n. That's the tract id. >>>> >>>>> I won't be able to get to it until this evening, but I believe that's >>>>> the next logical step. >>>> Keep us posted. However, I'd also like to understand more of your approach, >>>> so if you could clarify your first paragraph that would be great. >>>> >>>> Thanks >>>> >>>> Luca >>>> >>>>> -rd >>>>> >>>>> On 03/07/2013 10:35 AM, Luca Antiga wrote: >>>>>> Hi Richard, >>>>>> just pipe vmtkcenterlinemerge after vmtkbranchextractor and use -ofile to write the file out, that's the quickest. >>>>>> What is your exact issue? >>>>>> >>>>>> Roman: I haven't got an answer for you yet - I've been taking care of the quick messages but yours requires a free slot of time. Thanks for your patience. >>>>>> >>>>>> Luca >>>>>> >>>>>> On 06/mar/2013, at 18:31, Richard Downe <ric...@ui...> wrote: >>>>>> >>>>>>> Luca-- >>>>>>> I've been vexed by a similar situation for awhile that I'm just now getting around to tackling. >>>>>>> One thing I *do* have, however, is centerlines for my main vessel an all branches. >>>>>>> I've noticed a vmtkcenterlinemerge.py/vtkvmtkMergeCenterlines.h/cxx that don't appear to be used anywhere, so I can't find a usage example. >>>>>>> >>>>>>> What do I need to pass in for the tract ids and blanking ids to make this work, or do you have a usage example somewhere? >>>>>>> -rd >>>>>>> >>>>>>> On 03/04/2013 07:00 AM, Luca Antiga wrote: >>>>>>>> Hi Roman, >>>>>>>> I'll really need to take a closer look to the data you sent, I'm planning to do it in the next few days. >>>>>>>> Thanks >>>>>>>> >>>>>>>> Luca >>>>>>>> >>>>>>>> On Mar 4, 2013, at 1:54 PM, Dr. Roman Grothausmann wrote: >>>>>>>> >>>>>>>>> On 23/02/13 13:56, Luca Antiga wrote: >>>>>>>>>> Possible workarounds: >>>>>>>>>> >>>>>>>>>> 1. Try to use Tetgen to generate the internal Delaunay tessellation, instead of the default algorithm. This can be easily >>>>>>>>>> done by specifying -usetetgen 1 in the vmtkcenterlines command line >>>>>>>>> Using tetgen I get an error and the resulting VTP-file is empty (second workaround is still running): >>>>>>>>> >>>>>>>>> Reading VTK XML surface file. >>>>>>>>> Executing vmtkcenterlines ... >>>>>>>>> Cleaning surface. >>>>>>>>> Triangulating surface. >>>>>>>>> Computing centerlines. >>>>>>>>> Computing centerlines...Running TetGen. >>>>>>>>> TetGen command line options: pT1.000000e-08dzQ >>>>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkNonManifoldFastMarching.cxx, line 667 >>>>>>>>> vtkvmtkNonManifoldFastMarching (0xe6fdac0): Cost function array with name specified does not exist! >>>>>>>>> >>>>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkSteepestDescentLineTracer.cxx, line 318 >>>>>>>>> vtkvmtkSteepestDescentLineTracer (0xe6f9210): Descent array with name specified does not exist! >>>>>>>>> >>>>>>>>> Done executing vmtkcenterlines. >>>>>>>>> Writing VTK XML surface file. >>>>>>>>> Output vmtkcenterlines members: >>>>>>>>> >>>>>>>>>> 2. Compute the Delaunay tessellation on the closed surface (prior to cutting the endcaps open) using vmtkdelaunayvoronoi >>>>>>>>>> and feed it to vmtkcenterlines, this way: >>>>>>>>>> >>>>>>>>>> vmtkdelaunayvoronoi -ifile unclipped.vtp --pipe vmtkcenterlines -ifile clipped.vtp ... >>>>>>>>> Using this command causes no errors but the resulting file is also empty. >>>>>>>>> >>>>>>>>> Any ideas what else I could try? >>>>>>>>> >>>>>>>>> Many thanks for any help or hints. >>>>>>>>> Roman >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>> This will allow you to take advantage of the clipped endcaps for the seedselector (since you feed clipped.vtp as input to vmtkcenterlines) >>>>>>>>>> but use the Delaunay tessellation computed from the unclipped one, which shouldn't have the issue with the artifactual inner tets. >>>>>>>>>> >>>>>>>>>> In any case, it would be good for me to have the surface so I can use it to fix the internal delaunay tet selection issue. >>>>>>>>>> >>>>>>>>>> Best, >>>>>>>>>> >>>>>>>>>> Luca >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Feb 22, 2013, at 9:32 AM, Dr. Roman Grothausmann wrote: >>>>>>>>>> >>>>>>>>>>> (now with images) >>>>>>>>>>> >>>>>>>>>>> Dear mailing list members, >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Another problem I have is that not all end-points that I extract from the output of vmtknetwork (magenta lines in attached image) are tracked by vmtkcenterlines (grey/blue lines), most are but some are not. See the end points of the magenta lines of which a grey line stretches like a cobweb string. After removing these cobweb lines I end up with the blue lines which are OK except for the lacking branches. >>>>>>>>>>> What could be the reason for that and how could I avoid it? >>>>>>>>>>> >>>>>>>>>>> Any help or hints are very much appreciated >>>>>>>>>>> Roman >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Dr. Roman Grothausmann >>>>>>>>>>> >>>>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>>>> >>>>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>>>> D-30625 Hannover >>>>>>>>>>> >>>>>>>>>>> Tel. +49 511 532-9574 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> <KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_03.gif><KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_05.gif>------------------------------------------------------------------------------ >>>>>>>>>>> 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_d2d_feb_______________________________________________ >>>>>>>>>>> vmtk-users mailing list >>>>>>>>>>> vmt...@li... >>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>>>>> -- >>>>>>>>> Dr. Roman Grothausmann >>>>>>>>> >>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>> >>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>> D-30625 Hannover >>>>>>>>> >>>>>>>>> Tel. +49 511 532-9574 >>>>>>>> ------------------------------------------------------------------------------ >>>>>>>> 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_d2d_feb >>>>>>>> _______________________________________________ >>>>>>>> vmtk-users mailing list >>>>>>>> vmt...@li... >>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>> ------------------------------------------------------------------------------ >>>>> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >>>>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >>>>> endpoint security space. For insight on selecting the right partner to >>>>> tackle endpoint security challenges, access the full report. >>>>> http://p.sf.net/sfu/symantec-dev2dev >>>>> _______________________________________________ >>>>> vmtk-users mailing list >>>>> vmt...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>> <centerlines.png> > > > ------------------------------------------------------------------------------ > Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester > Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the > endpoint security space. For insight on selecting the right partner to > tackle endpoint security challenges, access the full report. > http://p.sf.net/sfu/symantec-dev2dev > _______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@gm...> - 2013-03-11 10:57:05
|
Dear Emilie, this is great news for a Monday morning :-) Thanks for letting us know. Luca On Mar 11, 2013, at 10:01 AM, Emilie Sauvage wrote: > Dear Luca, > > please forget about my previous email. I was not selecting correct > options during the vmtk segmentation. Everything works as it should. > > Best regards, > > Emilie Sauvage > > > ------------------------------------------------------------------------------ > Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester > Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the > endpoint security space. For insight on selecting the right partner to > tackle endpoint security challenges, access the full report. > http://p.sf.net/sfu/symantec-dev2dev > _______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Emilie S. <emi...@uc...> - 2013-03-11 09:01:51
|
Dear Luca, please forget about my previous email. I was not selecting correct options during the vmtk segmentation. Everything works as it should. Best regards, Emilie Sauvage |
From: Richard D. <ric...@ui...> - 2013-03-11 00:48:34
|
So, when I finally teased all the typos out of the source file I sent you the other night, I got a single, main vessel centerline with none of the branches. So today, I attempted to sue vmtkbranchextractor. If I fed the vmtkbranchextractor output directly into vmtkcenterlineviewer, things looked more or less as they should (e.g., as a tree). When I tried to pass that result into vmtkmergecenterlines, I get a segfault. Thoughts? -rd On 03/08/2013 05:24 AM, Luca Antiga wrote: > Hi Richard, > > On Mar 7, 2013, at 11:42 PM, Richard Downe wrote: > >> On 03/07/2013 04:26 PM, Luca Antiga wrote: >>> On Mar 7, 2013, at 9:44 PM, Richard Downe wrote: >>> >>>> Well...I'm not using vmtkbranchextractor. >>>> >>>> My branches and vessel are defined separately, and I merge them in a >>>> pre-vmtk process. I have centerlines a priori, but it is not a unified >>>> centerline tree. (I have until now been using source and target >>>> points. This works well in most vessels, but heavily branched ones >>>> frequently drop a branch, often the largest one, during the run of >>>> vmtkcenterlines, so after reading this thread, I concluded I wasn't >>>> alone, and set about trying to reengineer it.) >>> I'm not sure I fully understand. A screenshot would help. >> I mean that the branches and vessel are segmented separately in different tools, and then projected into 3-d space using a variation on Frenet-Serret analysis. I build a triangulated surface using CGAL from this point set, and using a python module I wrote myself, slurp this, along with the centerlines of the individual surfaces, into vmtk. > I see now, thanks for the clarification. > >> The reason for this is that I work with coronary ultrasound. The segmentation of both the vessel and the branches are each less straightforward than they are for, say, pulmonary CT. >> >> vmtkmeshgenerator failed outright until I began using vmtkcenterlines to help it calibrate the triangle and tetrahedral density. (The ultimate goal is CFD analysis using Ansys Fluent). > You could potentially specify a small absolute -edgelength, but surely making the mesh density adapted to the radius is better. > >> In some heavily branched vessels, the outflow surface of one the branches shows up as unconnected to the rest of the mesh when I load it into fluent. These are also generally vessels where vmtkcenterlines has convergence issues. > Not sure I'm giving a sensible suggestion here, but consider using vmtksurfacesubdivision before computing centerlines. Sounds you're experiencing Voronoi degeneracy issues here. > >> So...I'm not sure how I would use vmtkbranchextractor here, unless I could feed my initial triangulation into it? > Don't confuse vmtkbranchextractor with vmtkbranchclipper. The former just splits centerlines (into branches and assignes GroupIds, TractIds, Blanking and so on) based on the unsplit centerlines, it doesn't need a surface. The latter splits the surface based on the split centerlines. > vmtkbranchextractor should work with any set of polylines, as long as they're arranged in a tree-like fashion (not as a network, rather with each line running from the root to an outlet) and as long as a radius array is provided on top of centerlines. > >> As such, I'm attempting what I realize is something of a hack, feeding centerlines and radius information that I have a priori into vtkvmtkMergeCenterlines in an attempt to get a proper vessel tree without having to rely upon vmtkcenterlines' procedure. >> >> I don't have the "blanking regions" stored anywhere, because it's not part of the workflow that leads up to this, but would be fairly trivial to surmise, as I could simply test each branch centerline point to see if it lies closer than vesselRadius[i] to vesselCenterline[i], for all i. >> >> Thus, my centerline *is* already broken into branches, but not using vmtkbranchextractor. > Ok. > >> Attached is a screenshot of the result of running it with what were clearly mistaken group/tract ids. It clearly tried to connect all segments, but with no knowledge of where bifurcations were, simply tacked them all end-to-end to form 1 centerline. >> >> So really...I'm trying to figure out, if I must synthesize group and tract ids, how do I do so in a way that will correctly inform the merging of my branch centerline segments? > Try to see if vmtkbranchextractor (since it only relies on centerlines). Just a suggestion, I don't want to complicate things but you might have not been aware that vmtkbranchextractor is purely centerline-based. > > > Luca > > >> -rd >>>> I just tried running it with groupID==centerlineID for all centerlines, >>>> and tractID = uniformly 1, and blanking = uniformly 0. >>>> >>>> The result was an unruly knot that suggested that it didn't know what to >>>> connect to what. >>> Yes, the centerline has to be first split into branches using vmtkbranchextractor >>> (which will identify bifurcations, split and group) and then vmtkcenterlinemerge >>> will generate one centerline per group and create a proper network. >>> >>>> I suspect, after digging through the vtkVmtk source code and looking at >>>> this http://www.vmtk.org/Tutorials/BranchSplitting/ example, I need to >>>> actually annotate the bifurcation regions by setting group and tract id, >>>> and blanking, correctly. >>> Yes, but you also need to split centerline cells in chunks, as depicted in >>> the branch splitting tutorial. >>> >>>> If I understand this correctly, I can create a bifurcation region by >>>> identifying where the branch departs the vessel, and appending 1 >>>> location on the vessel centerline to the branch centerline at the >>>> proximal-most location. And then, groupID increments at and after each >>>> bifurcation region, and blanking is set to 1 in each bifurcation region. >>>> >>>> I'm less clear on tract ID. Is it always either 1 or 2, depending >>>> whether before or after the bifurcation point? Or does it get set to a >>>> unique value for each chunk vis a vis group id? >>> Consider the individual centerline cell originally running between >>> inlet and outlet. Now that you have split it in chunks, number each >>> chunk from 0 to n. That's the tract id. >>> >>>> I won't be able to get to it until this evening, but I believe that's >>>> the next logical step. >>> Keep us posted. However, I'd also like to understand more of your approach, >>> so if you could clarify your first paragraph that would be great. >>> >>> Thanks >>> >>> Luca >>> >>>> -rd >>>> >>>> On 03/07/2013 10:35 AM, Luca Antiga wrote: >>>>> Hi Richard, >>>>> just pipe vmtkcenterlinemerge after vmtkbranchextractor and use -ofile to write the file out, that's the quickest. >>>>> What is your exact issue? >>>>> >>>>> Roman: I haven't got an answer for you yet - I've been taking care of the quick messages but yours requires a free slot of time. Thanks for your patience. >>>>> >>>>> Luca >>>>> >>>>> On 06/mar/2013, at 18:31, Richard Downe <ric...@ui...> wrote: >>>>> >>>>>> Luca-- >>>>>> I've been vexed by a similar situation for awhile that I'm just now getting around to tackling. >>>>>> One thing I *do* have, however, is centerlines for my main vessel an all branches. >>>>>> I've noticed a vmtkcenterlinemerge.py/vtkvmtkMergeCenterlines.h/cxx that don't appear to be used anywhere, so I can't find a usage example. >>>>>> >>>>>> What do I need to pass in for the tract ids and blanking ids to make this work, or do you have a usage example somewhere? >>>>>> -rd >>>>>> >>>>>> On 03/04/2013 07:00 AM, Luca Antiga wrote: >>>>>>> Hi Roman, >>>>>>> I'll really need to take a closer look to the data you sent, I'm planning to do it in the next few days. >>>>>>> Thanks >>>>>>> >>>>>>> Luca >>>>>>> >>>>>>> On Mar 4, 2013, at 1:54 PM, Dr. Roman Grothausmann wrote: >>>>>>> >>>>>>>> On 23/02/13 13:56, Luca Antiga wrote: >>>>>>>>> Possible workarounds: >>>>>>>>> >>>>>>>>> 1. Try to use Tetgen to generate the internal Delaunay tessellation, instead of the default algorithm. This can be easily >>>>>>>>> done by specifying -usetetgen 1 in the vmtkcenterlines command line >>>>>>>> Using tetgen I get an error and the resulting VTP-file is empty (second workaround is still running): >>>>>>>> >>>>>>>> Reading VTK XML surface file. >>>>>>>> Executing vmtkcenterlines ... >>>>>>>> Cleaning surface. >>>>>>>> Triangulating surface. >>>>>>>> Computing centerlines. >>>>>>>> Computing centerlines...Running TetGen. >>>>>>>> TetGen command line options: pT1.000000e-08dzQ >>>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkNonManifoldFastMarching.cxx, line 667 >>>>>>>> vtkvmtkNonManifoldFastMarching (0xe6fdac0): Cost function array with name specified does not exist! >>>>>>>> >>>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkSteepestDescentLineTracer.cxx, line 318 >>>>>>>> vtkvmtkSteepestDescentLineTracer (0xe6f9210): Descent array with name specified does not exist! >>>>>>>> >>>>>>>> Done executing vmtkcenterlines. >>>>>>>> Writing VTK XML surface file. >>>>>>>> Output vmtkcenterlines members: >>>>>>>> >>>>>>>>> 2. Compute the Delaunay tessellation on the closed surface (prior to cutting the endcaps open) using vmtkdelaunayvoronoi >>>>>>>>> and feed it to vmtkcenterlines, this way: >>>>>>>>> >>>>>>>>> vmtkdelaunayvoronoi -ifile unclipped.vtp --pipe vmtkcenterlines -ifile clipped.vtp ... >>>>>>>> Using this command causes no errors but the resulting file is also empty. >>>>>>>> >>>>>>>> Any ideas what else I could try? >>>>>>>> >>>>>>>> Many thanks for any help or hints. >>>>>>>> Roman >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> This will allow you to take advantage of the clipped endcaps for the seedselector (since you feed clipped.vtp as input to vmtkcenterlines) >>>>>>>>> but use the Delaunay tessellation computed from the unclipped one, which shouldn't have the issue with the artifactual inner tets. >>>>>>>>> >>>>>>>>> In any case, it would be good for me to have the surface so I can use it to fix the internal delaunay tet selection issue. >>>>>>>>> >>>>>>>>> Best, >>>>>>>>> >>>>>>>>> Luca >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Feb 22, 2013, at 9:32 AM, Dr. Roman Grothausmann wrote: >>>>>>>>> >>>>>>>>>> (now with images) >>>>>>>>>> >>>>>>>>>> Dear mailing list members, >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Another problem I have is that not all end-points that I extract from the output of vmtknetwork (magenta lines in attached image) are tracked by vmtkcenterlines (grey/blue lines), most are but some are not. See the end points of the magenta lines of which a grey line stretches like a cobweb string. After removing these cobweb lines I end up with the blue lines which are OK except for the lacking branches. >>>>>>>>>> What could be the reason for that and how could I avoid it? >>>>>>>>>> >>>>>>>>>> Any help or hints are very much appreciated >>>>>>>>>> Roman >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Dr. Roman Grothausmann >>>>>>>>>> >>>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>>> >>>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>>> D-30625 Hannover >>>>>>>>>> >>>>>>>>>> Tel. +49 511 532-9574 >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> <KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_03.gif><KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_05.gif>------------------------------------------------------------------------------ >>>>>>>>>> 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_d2d_feb_______________________________________________ >>>>>>>>>> vmtk-users mailing list >>>>>>>>>> vmt...@li... >>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>>>> -- >>>>>>>> Dr. Roman Grothausmann >>>>>>>> >>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>> Tomography and Digital Image Analysis >>>>>>>> >>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>> Medizinische Hochschule Hannover >>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>> D-30625 Hannover >>>>>>>> >>>>>>>> Tel. +49 511 532-9574 >>>>>>> ------------------------------------------------------------------------------ >>>>>>> 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_d2d_feb >>>>>>> _______________________________________________ >>>>>>> vmtk-users mailing list >>>>>>> vmt...@li... >>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>> ------------------------------------------------------------------------------ >>>> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >>>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >>>> endpoint security space. For insight on selecting the right partner to >>>> tackle endpoint security challenges, access the full report. >>>> http://p.sf.net/sfu/symantec-dev2dev >>>> _______________________________________________ >>>> vmtk-users mailing list >>>> vmt...@li... >>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >> <centerlines.png> |
From: Emilie S. <emi...@uc...> - 2013-03-10 22:01:52
|
Dear Luca, levelset segmentation in my computer does not work anymore. When I launch the following command: vmtklevelsetsegmentation -ifile image_volume_voi.vti -ofile level_sets.vti everything goes fine until the moment when I would like to save the segmented geometry. The last thing I see in the terminal is: Accept result? (y/n): Merge branch? (y/n): Segment another branch? (y/n): Done executing vmtklevelsetsegmentation. Error: no Image. Error from pype: I freshly recompiled vmtk hoping the error would go away, but unfortunately it did not help. Do you have an idea how to fix this? Best regards, Emilie Sauvage |
From: Luca A. <luc...@or...> - 2013-03-10 08:39:30
|
Hello Haibin, the -f dicom -d expects a directory name. To specify a single dicom file (the rest of the files in the series will be loaded automatically) use vmtkimagereader -ifile C:\\Aorta_voi\\hai.dcm --pipe vmtkimageviewer Best, Luca On Mar 9, 2013, at 9:48 AM, Haibin Cai wrote: > dear Luca and vmtk-users, > Thanks for your help, I can use vmtk to open .mha and .vtk files in windows7.But a new problem comes out today.I type > vmtkimagereader -f dicom -d C:\\Aorta_voi\\hai.dcm --pipe vmtkimageviewer > in my pypepad. An error comes out that says: > ERROR: In C:\Users\orobix\Documents\VMTK\vmtk-build\VTK\IO\vtkDICOMImageReader.cxx, line 158 > vtkvmtkDICOMImageReader (01E25CC0): Couldn't open C:\Aorta_voi\hai.dcm > > ERROR: In C:\Users\orobix\Documents\VMTK\vmtk-build\VTK\IO\vtkDICOMImageReader.cxx, line 256 > vtkvmtkDICOMImageReader (01E25CC0): Either a filename was not specified or the specified directory does not contain any DICOM images. > I am sure that I have a hai.dcm in C:\Aorta_voi. > Thanks > haibin > ------------------------------------------------------------------------------ > Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester > Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the > endpoint security space. For insight on selecting the right partner to > tackle endpoint security challenges, access the full report. > http://p.sf.net/sfu/symantec-dev2dev_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Haibin C. <jlc...@gm...> - 2013-03-09 08:48:40
|
dear Luca and vmtk-users, Thanks for your help, I can use vmtk to open .mha and .vtk files in windows7.But a new problem comes out today.I type vmtkimagereader -f dicom -d C:\\Aorta_voi\\hai.dcm --pipe vmtkimageviewer in my pypepad. An error comes out that says: ERROR: In C:\Users\orobix\Documents\VMTK\vmtk-build\VTK\IO\vtkDICOMImageReader.cxx, line 158 vtkvmtkDICOMImageReader (01E25CC0): Couldn't open C:\Aorta_voi\hai.dcm ERROR: In C:\Users\orobix\Documents\VMTK\vmtk-build\VTK\IO\vtkDICOMImageReader.cxx, line 256 vtkvmtkDICOMImageReader (01E25CC0): Either a filename was not specified or the specified directory does not contain any DICOM images. I am sure that I have a hai.dcm in C:\Aorta_voi. Thanks haibin |
From: Robert D. <rjd...@bu...> - 2013-03-08 17:40:53
|
Dear VMTK users, I am having an issue running commands in this build of VMTK. I installed vmtk-1.0.1-win7-64bit.exe on our new computer. The previous version we were using was 0.9.0 on Windows XP systems and that build seemed to work fine. I tried to run similar commands in version 1.0.1 on our new computer such as: * vmtkimagereader -ifile HL.dcm --pipe vmtkimagemipviewer* but I keep getting this error: *Runtime Error!* * * *Program: C:\Python27\pythonw.exe* * * *This application has requested the Runtime to terminate it in an unusual way.* *Please contact the applications support team for more information. * Has anyone else experienced this issue? It seems that VMTK cannot recognize Python or where it is located. Thanks for the help! Rob D. |
From: Luca A. <luc...@or...> - 2013-03-08 11:24:38
|
Hi Richard, On Mar 7, 2013, at 11:42 PM, Richard Downe wrote: > On 03/07/2013 04:26 PM, Luca Antiga wrote: >> On Mar 7, 2013, at 9:44 PM, Richard Downe wrote: >> >>> Well...I'm not using vmtkbranchextractor. >>> >>> My branches and vessel are defined separately, and I merge them in a >>> pre-vmtk process. I have centerlines a priori, but it is not a unified >>> centerline tree. (I have until now been using source and target >>> points. This works well in most vessels, but heavily branched ones >>> frequently drop a branch, often the largest one, during the run of >>> vmtkcenterlines, so after reading this thread, I concluded I wasn't >>> alone, and set about trying to reengineer it.) >> I'm not sure I fully understand. A screenshot would help. > I mean that the branches and vessel are segmented separately in different tools, and then projected into 3-d space using a variation on Frenet-Serret analysis. I build a triangulated surface using CGAL from this point set, and using a python module I wrote myself, slurp this, along with the centerlines of the individual surfaces, into vmtk. I see now, thanks for the clarification. > The reason for this is that I work with coronary ultrasound. The segmentation of both the vessel and the branches are each less straightforward than they are for, say, pulmonary CT. > > vmtkmeshgenerator failed outright until I began using vmtkcenterlines to help it calibrate the triangle and tetrahedral density. (The ultimate goal is CFD analysis using Ansys Fluent). You could potentially specify a small absolute -edgelength, but surely making the mesh density adapted to the radius is better. > In some heavily branched vessels, the outflow surface of one the branches shows up as unconnected to the rest of the mesh when I load it into fluent. These are also generally vessels where vmtkcenterlines has convergence issues. Not sure I'm giving a sensible suggestion here, but consider using vmtksurfacesubdivision before computing centerlines. Sounds you're experiencing Voronoi degeneracy issues here. > So...I'm not sure how I would use vmtkbranchextractor here, unless I could feed my initial triangulation into it? Don't confuse vmtkbranchextractor with vmtkbranchclipper. The former just splits centerlines (into branches and assignes GroupIds, TractIds, Blanking and so on) based on the unsplit centerlines, it doesn't need a surface. The latter splits the surface based on the split centerlines. vmtkbranchextractor should work with any set of polylines, as long as they're arranged in a tree-like fashion (not as a network, rather with each line running from the root to an outlet) and as long as a radius array is provided on top of centerlines. > As such, I'm attempting what I realize is something of a hack, feeding centerlines and radius information that I have a priori into vtkvmtkMergeCenterlines in an attempt to get a proper vessel tree without having to rely upon vmtkcenterlines' procedure. > > I don't have the "blanking regions" stored anywhere, because it's not part of the workflow that leads up to this, but would be fairly trivial to surmise, as I could simply test each branch centerline point to see if it lies closer than vesselRadius[i] to vesselCenterline[i], for all i. > > Thus, my centerline *is* already broken into branches, but not using vmtkbranchextractor. Ok. > Attached is a screenshot of the result of running it with what were clearly mistaken group/tract ids. It clearly tried to connect all segments, but with no knowledge of where bifurcations were, simply tacked them all end-to-end to form 1 centerline. > > So really...I'm trying to figure out, if I must synthesize group and tract ids, how do I do so in a way that will correctly inform the merging of my branch centerline segments? Try to see if vmtkbranchextractor (since it only relies on centerlines). Just a suggestion, I don't want to complicate things but you might have not been aware that vmtkbranchextractor is purely centerline-based. Luca > -rd >> >>> I just tried running it with groupID==centerlineID for all centerlines, >>> and tractID = uniformly 1, and blanking = uniformly 0. >>> >>> The result was an unruly knot that suggested that it didn't know what to >>> connect to what. >> Yes, the centerline has to be first split into branches using vmtkbranchextractor >> (which will identify bifurcations, split and group) and then vmtkcenterlinemerge >> will generate one centerline per group and create a proper network. >> >>> I suspect, after digging through the vtkVmtk source code and looking at >>> this http://www.vmtk.org/Tutorials/BranchSplitting/ example, I need to >>> actually annotate the bifurcation regions by setting group and tract id, >>> and blanking, correctly. >> Yes, but you also need to split centerline cells in chunks, as depicted in >> the branch splitting tutorial. >> >>> If I understand this correctly, I can create a bifurcation region by >>> identifying where the branch departs the vessel, and appending 1 >>> location on the vessel centerline to the branch centerline at the >>> proximal-most location. And then, groupID increments at and after each >>> bifurcation region, and blanking is set to 1 in each bifurcation region. >>> >>> I'm less clear on tract ID. Is it always either 1 or 2, depending >>> whether before or after the bifurcation point? Or does it get set to a >>> unique value for each chunk vis a vis group id? >> Consider the individual centerline cell originally running between >> inlet and outlet. Now that you have split it in chunks, number each >> chunk from 0 to n. That's the tract id. >> >>> I won't be able to get to it until this evening, but I believe that's >>> the next logical step. >> Keep us posted. However, I'd also like to understand more of your approach, >> so if you could clarify your first paragraph that would be great. >> >> Thanks >> >> Luca >> >>> -rd >>> >>> On 03/07/2013 10:35 AM, Luca Antiga wrote: >>>> Hi Richard, >>>> just pipe vmtkcenterlinemerge after vmtkbranchextractor and use -ofile to write the file out, that's the quickest. >>>> What is your exact issue? >>>> >>>> Roman: I haven't got an answer for you yet - I've been taking care of the quick messages but yours requires a free slot of time. Thanks for your patience. >>>> >>>> Luca >>>> >>>> On 06/mar/2013, at 18:31, Richard Downe <ric...@ui...> wrote: >>>> >>>>> Luca-- >>>>> I've been vexed by a similar situation for awhile that I'm just now getting around to tackling. >>>>> One thing I *do* have, however, is centerlines for my main vessel an all branches. >>>>> I've noticed a vmtkcenterlinemerge.py/vtkvmtkMergeCenterlines.h/cxx that don't appear to be used anywhere, so I can't find a usage example. >>>>> >>>>> What do I need to pass in for the tract ids and blanking ids to make this work, or do you have a usage example somewhere? >>>>> -rd >>>>> >>>>> On 03/04/2013 07:00 AM, Luca Antiga wrote: >>>>>> Hi Roman, >>>>>> I'll really need to take a closer look to the data you sent, I'm planning to do it in the next few days. >>>>>> Thanks >>>>>> >>>>>> Luca >>>>>> >>>>>> On Mar 4, 2013, at 1:54 PM, Dr. Roman Grothausmann wrote: >>>>>> >>>>>>> On 23/02/13 13:56, Luca Antiga wrote: >>>>>>>> Possible workarounds: >>>>>>>> >>>>>>>> 1. Try to use Tetgen to generate the internal Delaunay tessellation, instead of the default algorithm. This can be easily >>>>>>>> done by specifying -usetetgen 1 in the vmtkcenterlines command line >>>>>>> Using tetgen I get an error and the resulting VTP-file is empty (second workaround is still running): >>>>>>> >>>>>>> Reading VTK XML surface file. >>>>>>> Executing vmtkcenterlines ... >>>>>>> Cleaning surface. >>>>>>> Triangulating surface. >>>>>>> Computing centerlines. >>>>>>> Computing centerlines...Running TetGen. >>>>>>> TetGen command line options: pT1.000000e-08dzQ >>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkNonManifoldFastMarching.cxx, line 667 >>>>>>> vtkvmtkNonManifoldFastMarching (0xe6fdac0): Cost function array with name specified does not exist! >>>>>>> >>>>>>> ERROR: In /home/grr/programme/vmtk-1.0.1/vtkVmtk/ComputationalGeometry/vtkvmtkSteepestDescentLineTracer.cxx, line 318 >>>>>>> vtkvmtkSteepestDescentLineTracer (0xe6f9210): Descent array with name specified does not exist! >>>>>>> >>>>>>> Done executing vmtkcenterlines. >>>>>>> Writing VTK XML surface file. >>>>>>> Output vmtkcenterlines members: >>>>>>> >>>>>>>> 2. Compute the Delaunay tessellation on the closed surface (prior to cutting the endcaps open) using vmtkdelaunayvoronoi >>>>>>>> and feed it to vmtkcenterlines, this way: >>>>>>>> >>>>>>>> vmtkdelaunayvoronoi -ifile unclipped.vtp --pipe vmtkcenterlines -ifile clipped.vtp ... >>>>>>> Using this command causes no errors but the resulting file is also empty. >>>>>>> >>>>>>> Any ideas what else I could try? >>>>>>> >>>>>>> Many thanks for any help or hints. >>>>>>> Roman >>>>>>> >>>>>>> >>>>>>> >>>>>>>> This will allow you to take advantage of the clipped endcaps for the seedselector (since you feed clipped.vtp as input to vmtkcenterlines) >>>>>>>> but use the Delaunay tessellation computed from the unclipped one, which shouldn't have the issue with the artifactual inner tets. >>>>>>>> >>>>>>>> In any case, it would be good for me to have the surface so I can use it to fix the internal delaunay tet selection issue. >>>>>>>> >>>>>>>> Best, >>>>>>>> >>>>>>>> Luca >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Feb 22, 2013, at 9:32 AM, Dr. Roman Grothausmann wrote: >>>>>>>> >>>>>>>>> (now with images) >>>>>>>>> >>>>>>>>> Dear mailing list members, >>>>>>>>> >>>>>>>>> >>>>>>>>> Another problem I have is that not all end-points that I extract from the output of vmtknetwork (magenta lines in attached image) are tracked by vmtkcenterlines (grey/blue lines), most are but some are not. See the end points of the magenta lines of which a grey line stretches like a cobweb string. After removing these cobweb lines I end up with the blue lines which are OK except for the lacking branches. >>>>>>>>> What could be the reason for that and how could I avoid it? >>>>>>>>> >>>>>>>>> Any help or hints are very much appreciated >>>>>>>>> Roman >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Dr. Roman Grothausmann >>>>>>>>> >>>>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>>>> Tomography and Digital Image Analysis >>>>>>>>> >>>>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>>>> Medizinische Hochschule Hannover >>>>>>>>> Carl-Neuberg-Str. 1 >>>>>>>>> D-30625 Hannover >>>>>>>>> >>>>>>>>> Tel. +49 511 532-9574 >>>>>>>>> >>>>>>>>> >>>>>>>>> <KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_03.gif><KO4_01_08_12_002_PD PMT_seg-8bit_fh0_obs_d1 orig_fh0_obs_mc50_lmp_nw-skel1.05_ep_s2t0_mo004_ep_cl_01_05.gif>------------------------------------------------------------------------------ >>>>>>>>> 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_d2d_feb_______________________________________________ >>>>>>>>> vmtk-users mailing list >>>>>>>>> vmt...@li... >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>>>>>> -- >>>>>>> Dr. Roman Grothausmann >>>>>>> >>>>>>> Tomographie und Digitale Bildverarbeitung >>>>>>> Tomography and Digital Image Analysis >>>>>>> >>>>>>> Institut für Funktionelle und Angewandte Anatomie, OE 4120 >>>>>>> Medizinische Hochschule Hannover >>>>>>> Carl-Neuberg-Str. 1 >>>>>>> D-30625 Hannover >>>>>>> >>>>>>> Tel. +49 511 532-9574 >>>>>> ------------------------------------------------------------------------------ >>>>>> 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_d2d_feb >>>>>> _______________________________________________ >>>>>> vmtk-users mailing list >>>>>> vmt...@li... >>>>>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>> >>> ------------------------------------------------------------------------------ >>> Symantec Endpoint Protection 12 positioned as A LEADER in The Forrester >>> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in the >>> endpoint security space. For insight on selecting the right partner to >>> tackle endpoint security challenges, access the full report. >>> http://p.sf.net/sfu/symantec-dev2dev >>> _______________________________________________ >>> vmtk-users mailing list >>> vmt...@li... >>> https://lists.sourceforge.net/lists/listinfo/vmtk-users > > <centerlines.png> |