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 <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


------------------------------------------------------------------------------
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