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 <richard-do...@uiowa.edu> 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
>>>>>>>>>> vmtk-users@lists.sourceforge.net
>>>>>>>>>> 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
>>>>>>> vmtk-users@lists.sourceforge.net
>>>>>>> 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
>>>> vmtk-users@lists.sourceforge.net
>>>> 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
vmtk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vmtk-users

Reply via email to