Re: [vmtk-users] not all end-points tracked by vmtkcenterlines
Brought to you by:
davidsteinman,
lucantiga
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 |