vmtk-users Mailing List for Vascular Modeling Toolkit (Page 11)
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: Luca A. <luc...@or...> - 2013-03-04 12:57:16
|
Hi Elaine, just use an explicit writer script and specify -mode ascii as an option, like vmtksurfacesmoothing -ifle foo.vtp --pipe vmtksurfacewriter -ofile foo.vtk -mode ascii Best, Luca On Mar 3, 2013, at 11:41 PM, Elaine Tang wrote: > Hi, > > I recently installed VMTK on my RHEL 5 linux OS. Everything seems to run smoothly. However, whenever I try to output as ".vtk", it defaults to output as binary files. Is there any way to make it output as ASCII file as default? > > Thanks! > -- > Elaine Tang > ------------------------------------------------------------------------------ > 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...@gm...> - 2013-03-04 12:41:45
|
Hi Regine, indeed my reply to the second message still holds. Since you're already working in Paraview, as per the first message, you'd probably be ok isolating branches directly in Paraview. Load up the split centerlines in Paraview, use the Threshold filter to isolate a GroupId. If you need to save it as vtp, use ExtractSurface to convert the thresholded data to a vtkPolyData, this way you can save it as vtp. Hope this helps Luca On Feb 28, 2013, at 2:55 PM, Regine Schmidt wrote: > Dear all, > > 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 value (I plan to change the radius following this thread, which is working good:http://www.mail-archive.com/vmt...@li.../msg00450.html) > > 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: http://www.mail-archive.com/vmt...@li.../msg00155.html) > > Thank you for any help and idea! > > 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_feb_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Luca A. <luc...@gm...> - 2013-03-04 12:31:30
|
Hi Evan, On Mar 1, 2013, at 7:51 PM, Evan Kao wrote: > Hello Luca, > > Thanks for the quick response and help. Using subdivisions seemed to have fixed the problem of missing patches (I did end up having to use the AbscissaMetric array as the longitudinal axis in vmtkbranchpatching as opposed to StretchedMapping due to issues with Python crashing when trying to compute the bifurcation reference systems from the subdivided surface, but this is probably more of an issue with the system I'm using than one with vmtk). It's possible, but try to use subdivision after the mapping and prior to patching. You'll still see the little hole at the bifurcation center, which shouldn't be that big of a deal (although I don't know your exact application), but you'll be able to use StretchedMapping for the patching, which results in a more regular coverage of the surface. > Why nonsense? The data is all there. > > To clarify, I don't think the data is nonsense, but when I provide the flag -patcheddatafile xxx.vti/png for vmtkbranchpatching, it doesn't seems to visualize the data correctly, as seen in the image files I attached in the previous e-mail (I just see a gray rectangle). But it's probably not a big deal, since I can just export the raw data and visualize it however I want, as you suggested. You are right, there's lots of room for improvement regarding visualization in patching (and in general). Thanks for the suggestion! Luca > Thanks, > Evan Kao > > On Fri, Mar 1, 2013 at 4:01 AM, Luca Antiga <luc...@gm...> wrote: > Hi Evan, > > On Mar 1, 2013, at 1:59 AM, Evan Kao wrote: > >> Hello group, >> >> I am still having some trouble with mapping and patching data. When I created the patched surface and viewed it, I noticed that some patches of the surface were missing (see: missingpatches.png, any011_wss_clipped_patching.vtp). Inspecting the surfaces generated from the previous steps, it seems small pieces of the surface is cut out at the bifurcation (surface after splitting.png, any011_wss_clipped.vtp), although I don't know if that is related to the problem in the surface patching step, or simply a result of the way the centerlines were formed (centerlines,png, any011_wss_cl.vtp). > > Both issues are related to the fact that the surface is probably too coarse in some regions relative to the size of the patch. Also, due to the way clipping is performed, you can have a small missing triangle at the bifurcation, whose size decreases with the increase in the surface density. This is due to the linear interpolation of the cuts on top of the triangulation. > A workaround in these cases is to pass the surface through > vmtksurfacesubdivision -method butterfly -subdivisions 1 > prior to patching. > >> The image files generated with the patched data (both .vti and .png) were nonsense (vmtkimageviewer of patcheddata.png, any011_wss_clipped_patching.png, any011_wss_clipped_patching.vti). > > Why nonsense? The data is all there. It's one image in which all three branches are stored contiguously, this way: > > SECTORS x (SLAB_A + SLAB_B + SLAB_C) > > I attach a couple of screenshots that demonstrate it, obtained using Paraview. > > It's probably not the most practical way to plot the data, though. I suggest you export the vtp patched data this way: > > vmtksurfacewriter -ifile any011_wss_clipped_patching.vtp -ofile foo.dat -celldata > > which will generate a csv-like file in which lines are individual patches, each with its wss value, groupid, slab and sector. > This will allow you to generate plots of the unwrapped surface for your needs using any general purpose plotting software by plotting sector on x, slab on y and wss as the color. > > Hope this helps > > Luca > >> To simplify the issue, I also tried mapping and patching only one branch segment (the aneurysm) by cutting out the other branches with vmtksurfaceclipper before any sort of branch extraction and splitting. There didn't seem to be any issues with missing patches this time around, but the .png file also failed to provide the expected results (the patched 3D surface, and the "unwrapped" 2D surface). >> >> Any idea on what's going wrong? >> >> Thanks, >> Evan Kao >> > > > > > >> On Fri, Feb 22, 2013 at 3:54 PM, Evan Kao <to...@gm...> wrote: >> Thanks, Arjan. That was an extremely helpful explanation. >> >> >> On Wed, Feb 20, 2013 at 4:40 PM, Arjan Geers <aj...@gm...> wrote: >> Hi Evan, >> >> VTK polydata files store the location of points and information on how these points are connected to form cells. Additionally, they can store scalars and vectors at each point or cell. So, indeed, you want the WSS field already included in the surface file before performing any vmtkbranch* operations. >> >> Hopefully, you can export from your CFD solver an ASCII file similar to surface.tec (attached). It contains x,y,z-coordinates of each point, the wss magnitude at each point, and connectivity information. When opening this surface with vmtksurfacereader, VMTK converts it into a VTK polydata, which can then be written with vmtksurfacewriter (see surface.vtp attached). To check what VMTK actually does when converting the ASCII file, go to the function 'ReadTecplotSurfaceFile' in vmtksurfacereader.py. This should provide you with some hints on how to convert your own format to VTP. >> >> Hope this helps, >> >> Arjan >> >> PS: Since the commercial CFD solver Ansys-CFX is quite widely used, the attached script cfx2vtp.py (variation on above-mentioned 'ReadTecplotSurfaceFile') might be useful to some reading this email. Converting surface.csv (attached) should give surface.vtp again. >> >> >> On Wed, Feb 20, 2013 at 9:40 PM, Evan Kao <to...@gm...> wrote: >> Hello, >> >> I am confused about some of the details regarding the matching and patching of data in the tutorial. Specifically, at what stage in the process are we supposed to import the simulation data into vmtk, and how? For instance, in the tutorial, are the WSS and OSI distributions already part of the surface file ("aorta.vtp") before any processing occurs? It doesn't seem like there are any ways to import data in any of the vmtkbranchmetrics, vmtkbranchmapping, or vmtkbranchpatching functions. And what form does the data have to be in? It should be pretty easy to export nodal or cell CFD data as an array, but how would we incorporate that into vmtk? >> >> Thanks for your time, >> Evan Kao >> >> ------------------------------------------------------------------------------ >> 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 >> >> >> >> >> <any011_wss_clipped_patching.png><centerlines.png><missing patches.png><surface after splitting.png><vmtkimageviewer of patched data.png><any011_wss_clipped_patching.vtp><any011_wss_clipped_patching.vti><any011_wss_cl.vtp><any011_wss_clipped.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_feb_______________________________________________ >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users > > |
From: Elaine T. <ela...@ga...> - 2013-03-03 22:42:03
|
Hi, I recently installed VMTK on my RHEL 5 linux OS. Everything seems to run smoothly. However, whenever I try to output as ".vtk", it defaults to output as binary files. Is there any way to make it output as ASCII file as default? Thanks! -- Elaine Tang |
From: Regine S. <ric...@we...> - 2013-03-01 21:32:11
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> <\/o:OfficeDocumentSettings> <\/xml><![endif]--> <p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US">Dear all,</span><br/></p> <p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US">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 lang="EN-US" style="mso-ansi-language:EN-US">value (I plan to change the radius following this thread, which is working good:http://www.mail-archive.com/vmt...@li.../msg00450.html</span><span lang="EN-US" style="mso-ansi-language:EN-US"></span><span lang="EN-US" style="mso-ansi-language:EN-US">)</span><br/></p> <p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US">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: http://www.mail-archive.com/vmt...@li.../msg00155.html)</span><br/></p><p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US">Thank you for any help and idea!</span><br/></p><p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language:EN-US">Regine</span><br/></p> <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal<\/w:View> <w:Zoom>0<\/w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:HyphenationZone>21<\/w:HyphenationZone> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false<\/w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false<\/w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false<\/w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>DE<\/w:LidThemeOther> <w:LidThemeAsian>X-NONE<\/w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE<\/w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> <\/w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> <\/m:mathPr><\/w:WordDocument> <\/xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> <\/w:LatentStyles> <\/xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Normale Tabelle"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-fareast-language:EN-US;} <\/style> <![endif]--><br/></div><div><br/></div></div></body></html> |
From: Luca A. <luc...@gm...> - 2013-03-01 18:53:01
|
Hi Evan, On Mar 1, 2013, at 1:59 AM, Evan Kao wrote: > Hello group, > > I am still having some trouble with mapping and patching data. When I created the patched surface and viewed it, I noticed that some patches of the surface were missing (see: missingpatches.png, any011_wss_clipped_patching.vtp). Inspecting the surfaces generated from the previous steps, it seems small pieces of the surface is cut out at the bifurcation (surface after splitting.png, any011_wss_clipped.vtp), although I don't know if that is related to the problem in the surface patching step, or simply a result of the way the centerlines were formed (centerlines,png, any011_wss_cl.vtp). Both issues are related to the fact that the surface is probably too coarse in some regions relative to the size of the patch. Also, due to the way clipping is performed, you can have a small missing triangle at the bifurcation, whose size decreases with the increase in the surface density. This is due to the linear interpolation of the cuts on top of the triangulation. A workaround in these cases is to pass the surface through vmtksurfacesubdivision -method butterfly -subdivisions 1 prior to patching. > The image files generated with the patched data (both .vti and .png) were nonsense (vmtkimageviewer of patcheddata.png, any011_wss_clipped_patching.png, any011_wss_clipped_patching.vti). Why nonsense? The data is all there. It's one image in which all three branches are stored contiguously, this way: SECTORS x (SLAB_A + SLAB_B + SLAB_C) I attach a couple of screenshots that demonstrate it, obtained using Paraview. It's probably not the most practical way to plot the data, though. I suggest you export the vtp patched data this way: vmtksurfacewriter -ifile any011_wss_clipped_patching.vtp -ofile foo.dat -celldata which will generate a csv-like file in which lines are individual patches, each with its wss value, groupid, slab and sector. This will allow you to generate plots of the unwrapped surface for your needs using any general purpose plotting software by plotting sector on x, slab on y and wss as the color. Hope this helps Luca > To simplify the issue, I also tried mapping and patching only one branch segment (the aneurysm) by cutting out the other branches with vmtksurfaceclipper before any sort of branch extraction and splitting. There didn't seem to be any issues with missing patches this time around, but the .png file also failed to provide the expected results (the patched 3D surface, and the "unwrapped" 2D surface). > > Any idea on what's going wrong? > > Thanks, > Evan Kao > > On Fri, Feb 22, 2013 at 3:54 PM, Evan Kao <to...@gm...> wrote: > Thanks, Arjan. That was an extremely helpful explanation. > > > On Wed, Feb 20, 2013 at 4:40 PM, Arjan Geers <aj...@gm...> wrote: > Hi Evan, > > VTK polydata files store the location of points and information on how these points are connected to form cells. Additionally, they can store scalars and vectors at each point or cell. So, indeed, you want the WSS field already included in the surface file before performing any vmtkbranch* operations. > > Hopefully, you can export from your CFD solver an ASCII file similar to surface.tec (attached). It contains x,y,z-coordinates of each point, the wss magnitude at each point, and connectivity information. When opening this surface with vmtksurfacereader, VMTK converts it into a VTK polydata, which can then be written with vmtksurfacewriter (see surface.vtp attached). To check what VMTK actually does when converting the ASCII file, go to the function 'ReadTecplotSurfaceFile' in vmtksurfacereader.py. This should provide you with some hints on how to convert your own format to VTP. > > Hope this helps, > > Arjan > > PS: Since the commercial CFD solver Ansys-CFX is quite widely used, the attached script cfx2vtp.py (variation on above-mentioned 'ReadTecplotSurfaceFile') might be useful to some reading this email. Converting surface.csv (attached) should give surface.vtp again. > > > On Wed, Feb 20, 2013 at 9:40 PM, Evan Kao <to...@gm...> wrote: > Hello, > > I am confused about some of the details regarding the matching and patching of data in the tutorial. Specifically, at what stage in the process are we supposed to import the simulation data into vmtk, and how? For instance, in the tutorial, are the WSS and OSI distributions already part of the surface file ("aorta.vtp") before any processing occurs? It doesn't seem like there are any ways to import data in any of the vmtkbranchmetrics, vmtkbranchmapping, or vmtkbranchpatching functions. And what form does the data have to be in? It should be pretty easy to export nodal or cell CFD data as an array, but how would we incorporate that into vmtk? > > Thanks for your time, > Evan Kao > > ------------------------------------------------------------------------------ > 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 > > > > > <any011_wss_clipped_patching.png><centerlines.png><missing patches.png><surface after splitting.png><vmtkimageviewer of patched data.png><any011_wss_clipped_patching.vtp><any011_wss_clipped_patching.vti><any011_wss_cl.vtp><any011_wss_clipped.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_feb_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users |
From: Evan K. <to...@gm...> - 2013-03-01 18:52:26
|
Hello Luca, Thanks for the quick response and help. Using subdivisions seemed to have fixed the problem of missing patches (I did end up having to use the AbscissaMetric array as the longitudinal axis in vmtkbranchpatching as opposed to StretchedMapping due to issues with Python crashing when trying to compute the bifurcation reference systems from the subdivided surface, but this is probably more of an issue with the system I'm using than one with vmtk). Why nonsense? The data is all there. > To clarify, I don't think the data is nonsense, but when I provide the flag -patcheddatafile xxx.vti/png for vmtkbranchpatching, it doesn't seems to visualize the data correctly, as seen in the image files I attached in the previous e-mail (I just see a gray rectangle). But it's probably not a big deal, since I can just export the raw data and visualize it however I want, as you suggested. Thanks, Evan Kao On Fri, Mar 1, 2013 at 4:01 AM, Luca Antiga <luc...@gm...> wrote: > Hi Evan, > > On Mar 1, 2013, at 1:59 AM, Evan Kao wrote: > > Hello group, > > I am still having some trouble with mapping and patching data. When I > created the patched surface and viewed it, I noticed that some patches of > the surface were missing (see: missingpatches.png, > any011_wss_clipped_patching.vtp). Inspecting the surfaces generated from > the previous steps, it seems small pieces of the surface is cut out at the > bifurcation (surface after splitting.png, any011_wss_clipped.vtp), although > I don't know if that is related to the problem in the surface patching > step, or simply a result of the way the centerlines were formed > (centerlines,png, any011_wss_cl.vtp). > > > Both issues are related to the fact that the surface is probably too > coarse in some regions relative to the size of the patch. Also, due to the > way clipping is performed, you can have a small missing triangle at the > bifurcation, whose size decreases with the increase in the surface density. > This is due to the linear interpolation of the cuts on top of the > triangulation. > A workaround in these cases is to pass the surface through > vmtksurfacesubdivision -method butterfly -subdivisions 1 > prior to patching. > > The image files generated with the patched data (both .vti and .png) were > nonsense (vmtkimageviewer of patcheddata.png, > any011_wss_clipped_patching.png, any011_wss_clipped_patching.vti). > > > Why nonsense? The data is all there. It's one image in which all three > branches are stored contiguously, this way: > > SECTORS x (SLAB_A + SLAB_B + SLAB_C) > > I attach a couple of screenshots that demonstrate it, obtained using > Paraview. > > It's probably not the most practical way to plot the data, though. I > suggest you export the vtp patched data this way: > > vmtksurfacewriter -ifile any011_wss_clipped_patching.vtp -ofile foo.dat > -celldata > > which will generate a csv-like file in which lines are individual patches, > each with its wss value, groupid, slab and sector. > This will allow you to generate plots of the unwrapped surface for your > needs using any general purpose plotting software by plotting sector on x, > slab on y and wss as the color. > > Hope this helps > > Luca > > To simplify the issue, I also tried mapping and patching only one branch > segment (the aneurysm) by cutting out the other branches with > vmtksurfaceclipper before any sort of branch extraction and splitting. > There didn't seem to be any issues with missing patches this time around, > but the .png file also failed to provide the expected results (the patched > 3D surface, and the "unwrapped" 2D surface). > > Any idea on what's going wrong? > > Thanks, > Evan Kao > > > > > > On Fri, Feb 22, 2013 at 3:54 PM, Evan Kao <to...@gm...> wrote: > >> Thanks, Arjan. That was an extremely helpful explanation. >> >> >> On Wed, Feb 20, 2013 at 4:40 PM, Arjan Geers <aj...@gm...> wrote: >> >>> Hi Evan, >>> >>> VTK polydata files store the location of points and information on how >>> these points are connected to form cells. Additionally, they can store >>> scalars and vectors at each point or cell. So, indeed, you want the WSS >>> field already included in the surface file before performing any >>> vmtkbranch* operations. >>> >>> Hopefully, you can export from your CFD solver an ASCII file similar to >>> surface.tec (attached). It contains x,y,z-coordinates of each point, the >>> wss magnitude at each point, and connectivity information. When opening >>> this surface with vmtksurfacereader, VMTK converts it into a VTK polydata, >>> which can then be written with vmtksurfacewriter (see surface.vtp >>> attached). To check what VMTK actually does when converting the ASCII file, >>> go to the function 'ReadTecplotSurfaceFile' in vmtksurfacereader.py. This >>> should provide you with some hints on how to convert your own format to >>> VTP. >>> >>> Hope this helps, >>> >>> Arjan >>> >>> PS: Since the commercial CFD solver Ansys-CFX is quite widely used, the >>> attached script cfx2vtp.py (variation on above-mentioned >>> 'ReadTecplotSurfaceFile') might be useful to some reading this email. >>> Converting surface.csv (attached) should give surface.vtp again. >>> >>> >>> On Wed, Feb 20, 2013 at 9:40 PM, Evan Kao <to...@gm...> wrote: >>> >>>> Hello, >>>> >>>> I am confused about some of the details regarding the matching and >>>> patching of data in the tutorial. Specifically, at what stage in the >>>> process are we supposed to import the simulation data into vmtk, and how? >>>> For instance, in the tutorial, are the WSS and OSI distributions already >>>> part of the surface file ("aorta.vtp") before any processing occurs? It >>>> doesn't seem like there are any ways to import data in any of the >>>> vmtkbranchmetrics, vmtkbranchmapping, or vmtkbranchpatching functions. And >>>> what form does the data have to be in? It should be pretty easy to export >>>> nodal or cell CFD data as an array, but how would we incorporate that into >>>> vmtk? >>>> >>>> Thanks for your time, >>>> Evan Kao >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> 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 >>>> >>>> >>> >> > <any011_wss_clipped_patching.png><centerlines.png><missing patches.png><surface > after splitting.png><vmtkimageviewer of patched data.png> > <any011_wss_clipped_patching.vtp><any011_wss_clipped_patching.vti> > <any011_wss_cl.vtp><any011_wss_clipped.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_feb_______________________________________________ > vmtk-users mailing list > vmt...@li... > https://lists.sourceforge.net/lists/listinfo/vmtk-users > > > |
From: Jan H. <jan...@ho...> - 2013-02-27 13:33:19
|
Hi Luca, There is indeed a boundary layer that is hiding from me:) Thanks a lot! Jan On 02/27/2013 02:01 PM, Luca Antiga wrote: > Hi Jan, > are you sure that no boundary layer is generated? Note that in the > current release > version you can't see the boundary layer from outside, you have to > inspect the inner > mesh to see it, since a boundary layer is generated at the endcaps as > well. > Try to cut the mesh using, for instance, Paraview and see if you can > see the prismatic layer. > > Thanks to David Steinman's support I'm currently working on a boundary > layer > code that avoids the boundary layers at the endcaps and that allows > for much thicker > boundary layers. The code is currently at https://github.com/lantiga/vmtk, > "bl" branch. It will be merged to master as soon as it's stable and > tested. > > Hope this helps > > Luca > > > On Feb 27, 2013, at 12:59 PM, Jan Helmig wrote: > >> Hi Arjan, >> >> thanks, but I have already tried vmtksurfaceremeshing with different >> options but it does not work as well. >> >> Jan >> >> On 02/27/2013 11:41 AM, Arjan Geers wrote: >>> Hi Jan, >>> >>> Try vmtksurfaceremeshing instead of vmtksurfacetriangle before >>> generating the volumetric mesh. The large aspect ratio of the >>> triangles is likely what throws off vmtkmeshgenerator. >>> >>> Arjan >>> >>> >>> On Wed, Feb 27, 2013 at 9:31 AM, Jan Helmig <jan...@ho... >>> <mailto:jan...@ho...>> wrote: >>> >>> Hi, >>> >>> I am trying to create a cylinder mesh with boundary layer cells. >>> The created mesh looks fine except the fact that there is no >>> boundary layer created. As a starting point I use an open, >>> non-capped cylinder surface created with DOLFIN (attached to the >>> mail). Then I use the following commands. >>> >>> vmtk = [] >>> >>> outfile = "cylinder.xml" >>> outfiles.append(outfile) >>> >>> vmtk.append("vmtksurfacetransform -ifile cylinder.vtp >>> -rotation 0.0 0.0 90.0 -translation 0.0 %f 0.0" %float(height/2)) >>> #vmtk.append("vmtksurfaceviewer") >>> vmtk.append("vmtksurfacetriangle") >>> >>> # Mesh generator (comment out unwanted lines) >>> cmd = "vmtkmeshgenerator" >>> cmd += " -edgelength %f" %0.11 >>> cmd += " -maxedgelength %f" %(1.2*0.12) >>> cmd += " -minedgelength %f" %(0.8*0.12) >>> cmd += " -boundarylayer 1" >>> cmd += " -thicknessfactor 0.1" >>> cmd += " -tetrahedralize 1" >>> >>> vmtk.append(cmd) >>> >>> vmtk.append("vmtkmeshwriter -entityidsarray CellEntityIds") >>> >>> vmtk = " --pipe ".join(vmtk) >>> vmtk = vmtk+" -ofile %s" %outfile >>> print vmtk >>> subprocess.call(vmtk, shell=True) >>> >>> >>> Does anybody understand why there is no boundary layer created? >>> Maybe it has something to do that the surface consists out of >>> very stretched triangles after the command "vmtksurfacetriangle". >>> >>> Thanks a lot in advance, >>> Jan >>> >>> >>> ------------------------------------------------------------------------------ >>> 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... >>> <mailto:vmt...@li...> >>> https://lists.sourceforge.net/lists/listinfo/vmtk-users >>> >>> >> >> ------------------------------------------------------------------------------ >> Everyone hates slow websites. So do we. >> Make your web apps faster with AppDynamics >> Download AppDynamics Lite for free today: >> http://p.sf.net/sfu/appdyn_d2d_feb_______________________________________________ >> vmtk-users mailing list >> vmt...@li... >> https://lists.sourceforge.net/lists/listinfo/vmtk-users > |
From: Luca A. <luc...@or...> - 2013-02-27 13:02:51
|
Hi Jan, are you sure that no boundary layer is generated? Note that in the current release version you can't see the boundary layer from outside, you have to inspect the inner mesh to see it, since a boundary layer is generated at the endcaps as well. Try to cut the mesh using, for instance, Paraview and see if you can see the prismatic layer. Thanks to David Steinman's support I'm currently working on a boundary layer code that avoids the boundary layers at the endcaps and that allows for much thicker boundary layers. The code is currently at https://github.com/lantiga/vmtk, "bl" branch. It will be merged to master as soon as it's stable and tested. Hope this helps Luca On Feb 27, 2013, at 12:59 PM, Jan Helmig wrote: > Hi Arjan, > > thanks, but I have already tried vmtksurfaceremeshing with different options but it does not work as well. > > Jan > > On 02/27/2013 11:41 AM, Arjan Geers wrote: >> Hi Jan, >> >> Try vmtksurfaceremeshing instead of vmtksurfacetriangle before generating the volumetric mesh. The large aspect ratio of the triangles is likely what throws off vmtkmeshgenerator. >> >> Arjan >> >> >> On Wed, Feb 27, 2013 at 9:31 AM, Jan Helmig <jan...@ho...> wrote: >> Hi, >> >> I am trying to create a cylinder mesh with boundary layer cells. The created mesh looks fine except the fact that there is no boundary layer created. As a starting point I use an open, non-capped cylinder surface created with DOLFIN (attached to the mail). Then I use the following commands. >> >> vmtk = [] >> >> outfile = "cylinder.xml" >> outfiles.append(outfile) >> >> vmtk.append("vmtksurfacetransform -ifile cylinder.vtp -rotation 0.0 0.0 90.0 -translation 0.0 %f 0.0" %float(height/2)) >> #vmtk.append("vmtksurfaceviewer") >> vmtk.append("vmtksurfacetriangle") >> >> # Mesh generator (comment out unwanted lines) >> cmd = "vmtkmeshgenerator" >> cmd += " -edgelength %f" %0.11 >> cmd += " -maxedgelength %f" %(1.2*0.12) >> cmd += " -minedgelength %f" %(0.8*0.12) >> cmd += " -boundarylayer 1" >> cmd += " -thicknessfactor 0.1" >> cmd += " -tetrahedralize 1" >> >> vmtk.append(cmd) >> >> vmtk.append("vmtkmeshwriter -entityidsarray CellEntityIds") >> >> vmtk = " --pipe ".join(vmtk) >> vmtk = vmtk+" -ofile %s" %outfile >> print vmtk >> subprocess.call(vmtk, shell=True) >> >> >> Does anybody understand why there is no boundary layer created? >> Maybe it has something to do that the surface consists out of very stretched triangles after the command "vmtksurfacetriangle". >> >> Thanks a lot in advance, >> Jan >> >> >> ------------------------------------------------------------------------------ >> 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 >> >> > > ------------------------------------------------------------------------------ > 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: Jan H. <jan...@ho...> - 2013-02-27 12:00:04
|
Hi Arjan, thanks, but I have already tried vmtksurfaceremeshing with different options but it does not work as well. Jan On 02/27/2013 11:41 AM, Arjan Geers wrote: > Hi Jan, > > Try vmtksurfaceremeshing instead of vmtksurfacetriangle before > generating the volumetric mesh. The large aspect ratio of the > triangles is likely what throws off vmtkmeshgenerator. > > Arjan > > > On Wed, Feb 27, 2013 at 9:31 AM, Jan Helmig <jan...@ho... > <mailto:jan...@ho...>> wrote: > > Hi, > > I am trying to create a cylinder mesh with boundary layer cells. > The created mesh looks fine except the fact that there is no > boundary layer created. As a starting point I use an open, > non-capped cylinder surface created with DOLFIN (attached to the > mail). Then I use the following commands. > > vmtk = [] > > outfile = "cylinder.xml" > outfiles.append(outfile) > > vmtk.append("vmtksurfacetransform -ifile cylinder.vtp > -rotation 0.0 0.0 90.0 -translation 0.0 %f 0.0" %float(height/2)) > #vmtk.append("vmtksurfaceviewer") > vmtk.append("vmtksurfacetriangle") > > # Mesh generator (comment out unwanted lines) > cmd = "vmtkmeshgenerator" > cmd += " -edgelength %f" %0.11 > cmd += " -maxedgelength %f" %(1.2*0.12) > cmd += " -minedgelength %f" %(0.8*0.12) > cmd += " -boundarylayer 1" > cmd += " -thicknessfactor 0.1" > cmd += " -tetrahedralize 1" > > vmtk.append(cmd) > > vmtk.append("vmtkmeshwriter -entityidsarray CellEntityIds") > > vmtk = " --pipe ".join(vmtk) > vmtk = vmtk+" -ofile %s" %outfile > print vmtk > subprocess.call(vmtk, shell=True) > > > Does anybody understand why there is no boundary layer created? > Maybe it has something to do that the surface consists out of very > stretched triangles after the command "vmtksurfacetriangle". > > Thanks a lot in advance, > Jan > > > ------------------------------------------------------------------------------ > 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... > <mailto:vmt...@li...> > https://lists.sourceforge.net/lists/listinfo/vmtk-users > > |
From: Arjan G. <aj...@gm...> - 2013-02-27 10:42:51
|
Hi Jan, Try vmtksurfaceremeshing instead of vmtksurfacetriangle before generating the volumetric mesh. The large aspect ratio of the triangles is likely what throws off vmtkmeshgenerator. Arjan On Wed, Feb 27, 2013 at 9:31 AM, Jan Helmig <jan...@ho...> wrote: > Hi, > > I am trying to create a cylinder mesh with boundary layer cells. The > created mesh looks fine except the fact that there is no boundary layer > created. As a starting point I use an open, non-capped cylinder surface > created with DOLFIN (attached to the mail). Then I use the following > commands. > > vmtk = [] > > outfile = "cylinder.xml" > outfiles.append(outfile) > > vmtk.append("**vmtksurfacetransform -ifile cylinder.vtp -rotation 0.0 > 0.0 90.0 -translation 0.0 %f 0.0" %float(height/2)) > #vmtk.append("**vmtksurfaceviewer") > vmtk.append("**vmtksurfacetriangle") > > # Mesh generator (comment out unwanted lines) > cmd = "vmtkmeshgenerator" > cmd += " -edgelength %f" %0.11 > cmd += " -maxedgelength %f" %(1.2*0.12) > cmd += " -minedgelength %f" %(0.8*0.12) > cmd += " -boundarylayer 1" > cmd += " -thicknessfactor 0.1" > cmd += " -tetrahedralize 1" > > vmtk.append(cmd) > > vmtk.append("vmtkmeshwriter -entityidsarray CellEntityIds") > > vmtk = " --pipe ".join(vmtk) > vmtk = vmtk+" -ofile %s" %outfile > print vmtk > subprocess.call(vmtk, shell=True) > > > Does anybody understand why there is no boundary layer created? > Maybe it has something to do that the surface consists out of very > stretched triangles after the command "vmtksurfacetriangle". > > Thanks a lot in advance, > Jan > > > > ------------------------------------------------------------------------------ > 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: Jan H. <jan...@ho...> - 2013-02-27 08:32:33
|
Hi, I am trying to create a cylinder mesh with boundary layer cells. The created mesh looks fine except the fact that there is no boundary layer created. As a starting point I use an open, non-capped cylinder surface created with DOLFIN (attached to the mail). Then I use the following commands. vmtk = [] outfile = "cylinder.xml" outfiles.append(outfile) vmtk.append("vmtksurfacetransform -ifile cylinder.vtp -rotation 0.0 0.0 90.0 -translation 0.0 %f 0.0" %float(height/2)) #vmtk.append("vmtksurfaceviewer") vmtk.append("vmtksurfacetriangle") # Mesh generator (comment out unwanted lines) cmd = "vmtkmeshgenerator" cmd += " -edgelength %f" %0.11 cmd += " -maxedgelength %f" %(1.2*0.12) cmd += " -minedgelength %f" %(0.8*0.12) cmd += " -boundarylayer 1" cmd += " -thicknessfactor 0.1" cmd += " -tetrahedralize 1" vmtk.append(cmd) vmtk.append("vmtkmeshwriter -entityidsarray CellEntityIds") vmtk = " --pipe ".join(vmtk) vmtk = vmtk+" -ofile %s" %outfile print vmtk subprocess.call(vmtk, shell=True) Does anybody understand why there is no boundary layer created? Maybe it has something to do that the surface consists out of very stretched triangles after the command "vmtksurfacetriangle". Thanks a lot in advance, Jan |
From: Luca A. <luc...@or...> - 2013-02-23 12:56:25
|
Hi Roman, you have an interesting case here. As I wrote in another message a couple of minutes ago, vmtkcenterlines can't handle loops, but this is not the case here. What happens is that the internal delaunay diagram is not extracted correctly. A few elongated tetrahedra in correspondence of some of the outlets that are considered "internal" (although they are not) and this creates artifactual shortest paths from the inlet to some of the outlets that run through those external tetrahedra (the paths you showed in gray). These paths are chosen as optimal, so the corresponding true inner paths are lost. 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 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 ... 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 |
From: Luca A. <luc...@gm...> - 2013-02-23 12:43:56
|
Dear Ahmed, really thanks a lot for getting back to the list and posting the solution, this is highly appreciated. I'm happy you found the solution and can proceed with your OsiriX integration. Actually, it would be really interesting to see it running, feel free to keep me posted. Best, Luca On Feb 23, 2013, at 6:43 AM, Ahmed Harouni wrote: > Dear Luca > > I managed to solve my problem. I don't want to wast your time responding. I converted the point co-ordinates from RAS to IJK. Also I wasn't passing the point correctly. Now it is working great. > > Thanks > > int VMTKseed1[3],VMTKseed2[3]; // fill it with points in IJK coordinates > > vtkIdList *my_VTKseedIdList1=vtkIdList::New(); > vtkIdList *my_VTKseedIdList2=vtkIdList::New(); > vtkIdType pttyp1,pttyp2; > pttyp1=myVTKspeedImage->ComputePointId(VMTKseed1); > pttyp2=myVTKspeedImage->ComputePointId(VMTKseed2); > /**************/ > my_VTKseedIdList1->InsertNextId(pttyp1); > my_VTKseedIdList2->InsertNextId(pttyp2); > vtkvmtkCollidingFrontsImageFilter *myVMTKcollidingFronts = vtkvmtkCollidingFrontsImageFilter::New(); > myVMTKcollidingFronts->SetInput(myVTKspeedImage); > myVMTKcollidingFronts->SetSeeds1(my_VTKseedIdList1); > myVMTKcollidingFronts->SetSeeds2(my_VTKseedIdList2); > myVMTKcollidingFronts->ApplyConnectivityOn(); > myVMTKcollidingFronts->StopOnTargetsOn(); > myVMTKcollidingFronts->Update(); > > Ahmed A. Harouni > > > On Thu, Feb 21, 2013 at 12:30 PM, Ahmed Harouni <ahm...@gm...> wrote: > Dear Luca > > Thanks for your previous help. I have managed to use vtkvmtkVesselnessMeasureImageFilter class and am displaying the results successfully to Osirix output. Now I trying to use vtkvmtkCollidingFrontsImageFilter. I am following the pythons scripts and getting the expected results. > I can't determine ow to pass the two seed points to the vtkvmtkCollidingFrontsImageFilter class using the SetSeeds1. I think I am using the wrong co-ordinate system. I capture the ROI from Osirix which is given to me in RAS system in mm. My understanding that VMTK uses IJK system but it already has the origin and spacing values in the vtkImageData. > Should I convert my point coordinate manually using matrix transformation or am I missing something? (Bellow is my code for vtkvmtkCollidingFrontsImageFilter) > > Thanks for your help. > > > vtkIdList *my_VTKseedIdList1=vtkIdList::New(); > vtkIdList *my_VTKseedIdList2=vtkIdList::New(); > // vtkSmartPointer<vtkPoints> point11 =vtkSmartPointer<vtkPoints>::New(); > vtkPoints *point11 =vtkPoints::New(); > vtkPoints *points22=vtkPoints::New(); > vtkIdType pttyp1,pttyp2; > > pttyp1=point11->InsertNextPoint(5,5,5);//(15.3,110.8,946.2);//{0,90,922};//{283,242,251};// {18.5,-148.0,115}; > pttyp2=points22->InsertNextPoint(15,15,15);//(-10.8,95.8,931);// {80,146,951};//{ 338,276, 218};//{44.0, -155.0, 110.5}; > my_VTKseedIdList1->InsertNextId(pttyp1); > my_VTKseedIdList2->InsertNextId(pttyp2); > > vtkvmtkCollidingFrontsImageFilter *myVMTKcollidingFronts = vtkvmtkCollidingFrontsImageFilter::New(); > myVMTKcollidingFronts->SetInput(myVTKspeedImage); //myVTKspeedImage is: vtkImageData * myVTKspeedImage and I call it's update function and I see the expected results when displaying it. > myVMTKcollidingFronts->SetSeeds1(my_VTKseedIdList1); > myVMTKcollidingFronts->SetSeeds2(my_VTKseedIdList2); > myVMTKcollidingFronts->ApplyConnectivityOn(); > myVMTKcollidingFronts->StopOnTargetsOn(); > myVMTKcollidingFronts->Update(); // I get an empty image ! > > > Ahmed A. Harouni > > ------------------------------------------------------------------------------ > 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-02-23 12:40:46
|
Hello Yong, thanks for the informative message (I particularly liked the metal wire!). Indeed the centerlines filter doesn't catch loops, which is usually ok for arterial trees, but it can be limiting in other situations such as yours. The reason is that the algorithm searches for some sort of shortest path from the inlet to the outlet, thus is will only choose one of the two arms of the loop. There are a couple of things you can do: 1) This is a hack: a) generate one centerline and save it to a file b) use vmtksurfaceclipper to make a cut in the branch in which the centerline was generated c) run vmtkcenterlines again; it will extract the other branch (since the former is not continuous due to the cut); save it to another file d) use vmtksurfaceappend to have the two centerlines in one dataset, if you need this 2) use vmtknetworkextractor; make sure the surface has at least one opening and run the script; this algorithm is less accurate in tracing the centerline, although it might be enough for your needs; however, it handles loops correclty Hope this helps Luca On Feb 22, 2013, at 9:54 AM, Leong Yong Shin wrote: > Hello everyone, I am an user of VMTK on 3D Slicer. I am working on a project that requires me to trace the centerline of a liver fibrosis structure. I have developed phantoms (that mimic the fibrosis structure) and imaged it using X-ray CT. My desired outcome is the centerline tracing of the loop, shown in the figure below: > > <image.png> > > However, I have only been able to trace a single branch of the loop, shown below: > > <image.png> > > I need advice on how to perform centerline tracing on both branches using one start point and one target point. Note: both centerlines should intersect each other at the opposite end of the loop. > > Any help is greatly appreciated. Thanks. > > -- > Take Care! > Leong Yong Shin > School of Chemical & Biomedical Engineering > m: +6596809912 > e: leo...@gm... > > ------------------------------------------------------------------------------ > 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...@gm...> - 2013-02-23 12:33:46
|
Hi Roman, it's possible that centerlines generated from a surface whose points are arranged in a very regular lattice might fail due to degeneracies, but this doesn't happen often at all. Try to process your discrete marching cubes surface using, e.g. vmtksurfacetriangles -ifile discretemc.vtp --pipe vmtksurfacesmoothing -iterations 30 -passband 0.01 --pipe vmtksurfacenormals -ofile out.vtp this should fix it. Best, Luca On Feb 21, 2013, at 3:33 PM, Dr. Roman Grothausmann wrote: > Dear Luca, > > > Is it possible that vmtkcenterlines has problems with surfaces originating from > discrete marching cubes? The surface I had problems with was generated from a > manual segmentation and therefore had no smoothing from normals. I regenerated a > similar surface from a tomogram with grey-levels so normals could be calculated > for smoothing and this surface now works. > > Many thanks for Your help > Roman > > On 15/02/13 15:09, Luca Antiga wrote: >> Hi Roman, >> can you please send me the incriminated surface? >> Thanks >> >> Luca >> >> >> On Feb 13, 2013, at 3:36 PM, Dr. Roman Grothausmann wrote: >> >>> Dear mailing list members, >>> >>> >>> vmtkcenterlines segfaults with a specific data-set of mine. It works all fine >>> with similar data-sets. I generally get a lot of >>> >>> Generic Warning: In >>> /home/grothama/programme/vmtk-1.0.1/build_iana0_130211/VTK/Common/vtkMath.cxx, >>> line 553 >>> Unable to factor linear system >>> >>> but then it segfaults with: >>> >>> *** glibc detected *** python: corrupted double-linked list: >> 0x000000000ea4f9c0 *** >>> ======= Backtrace: ========= >>> /lib/x86_64-linux-gnu/libc.so.6(+0x76d76)[0x7fe2488ddd76] >>> /lib/x86_64-linux-gnu/libc.so.6(+0x7880c)[0x7fe2488df80c] >>> /lib/x86_64-linux-gnu/libc.so.6(cfree+0x6c)[0x7fe2488e2aac] >>> /usr/lib/x86_64-linux-gnu/tls/libnvidia-tls.so.304.64(+0x1cc1)[0x7fe23f628cc1] >>> ======= Memory map: ======== >>> . >>> . >>> . >>> >>> How could I solve this problem? >>> >>> 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 >>> >>> ------------------------------------------------------------------------------ >>> Free Next-Gen Firewall Hardware Offer >>> Buy your Sophos next-gen firewall before the end March 2013 >>> and get the hardware for free! Learn more. >>> http://p.sf.net/sfu/sophos-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 |
From: Ahmed H. <ahm...@gm...> - 2013-02-23 05:43:28
|
Dear Luca I managed to solve my problem. I don't want to wast your time responding. I converted the point co-ordinates from RAS to IJK. Also I wasn't passing the point correctly. Now it is working great. Thanks int VMTKseed1[3],VMTKseed2[3]; // fill it with points in IJK coordinates vtkIdList *my_VTKseedIdList1=vtkIdList::New(); vtkIdList *my_VTKseedIdList2=vtkIdList::New(); vtkIdType pttyp1,pttyp2; pttyp1=myVTKspeedImage->ComputePointId(VMTKseed1); pttyp2=myVTKspeedImage->ComputePointId(VMTKseed2); /**************/ my_VTKseedIdList1->InsertNextId(pttyp1); my_VTKseedIdList2->InsertNextId(pttyp2); vtkvmtkCollidingFrontsImageFilter *myVMTKcollidingFronts = vtkvmtkCollidingFrontsImageFilter::New(); myVMTKcollidingFronts->SetInput(myVTKspeedImage); myVMTKcollidingFronts->SetSeeds1(my_VTKseedIdList1); myVMTKcollidingFronts->SetSeeds2(my_VTKseedIdList2); myVMTKcollidingFronts->ApplyConnectivityOn(); myVMTKcollidingFronts->StopOnTargetsOn(); myVMTKcollidingFronts->Update(); Ahmed A. Harouni On Thu, Feb 21, 2013 at 12:30 PM, Ahmed Harouni <ahm...@gm...>wrote: > Dear Luca > > Thanks for your previous help. I have managed to use > vtkvmtkVesselnessMeasureImageFilter class and am displaying the > results successfully to Osirix output. Now I trying to use > vtkvmtkCollidingFrontsImageFilter. I am following the pythons scripts and > getting the expected results. > I can't determine ow to pass the two seed points to the > vtkvmtkCollidingFrontsImageFilter class using the SetSeeds1. I think I am > using the wrong co-ordinate system. I capture the ROI from Osirix which is > given to me in RAS system in mm. My understanding that VMTK uses IJK system > but it already has the origin and spacing values in the vtkImageData. > Should I convert my point coordinate manually using matrix transformation > or am I missing something? (Bellow is my code for > vtkvmtkCollidingFrontsImageFilter) > > Thanks for your help. > > > vtkIdList *my_VTKseedIdList1=vtkIdList::New(); > vtkIdList *my_VTKseedIdList2=vtkIdList::New(); > // vtkSmartPointer<vtkPoints> point11 > =vtkSmartPointer<vtkPoints>::New(); > vtkPoints *point11 =vtkPoints::New(); > vtkPoints *points22=vtkPoints::New(); > vtkIdType pttyp1,pttyp2; > > > pttyp1=point11->InsertNextPoint(5,5,5);//(15.3,110.8,946.2);//{0,90,922};//{283,242,251};// > {18.5,-148.0,115}; > pttyp2=points22->InsertNextPoint(15,15,15);//(-10.8,95.8,931);// > {80,146,951};//{ 338,276, 218};//{44.0, -155.0, 110.5}; > my_VTKseedIdList1->InsertNextId(pttyp1); > my_VTKseedIdList2->InsertNextId(pttyp2); > > vtkvmtkCollidingFrontsImageFilter *myVMTKcollidingFronts = > vtkvmtkCollidingFrontsImageFilter::New(); > myVMTKcollidingFronts->SetInput(myVTKspeedImage); > //myVTKspeedImage is: vtkImageData * myVTKspeedImage and I call it's > update function and I see the expected results when displaying it. > myVMTKcollidingFronts->SetSeeds1(my_VTKseedIdList1); > myVMTKcollidingFronts->SetSeeds2(my_VTKseedIdList2); > myVMTKcollidingFronts->ApplyConnectivityOn(); > myVMTKcollidingFronts->StopOnTargetsOn(); > myVMTKcollidingFronts->Update(); // I get an empty image ! > > > Ahmed A. Harouni > |
From: Evan K. <to...@gm...> - 2013-02-22 23:54:32
|
Thanks, Arjan. That was an extremely helpful explanation. On Wed, Feb 20, 2013 at 4:40 PM, Arjan Geers <aj...@gm...> wrote: > Hi Evan, > > VTK polydata files store the location of points and information on how > these points are connected to form cells. Additionally, they can store > scalars and vectors at each point or cell. So, indeed, you want the WSS > field already included in the surface file before performing any > vmtkbranch* operations. > > Hopefully, you can export from your CFD solver an ASCII file similar to > surface.tec (attached). It contains x,y,z-coordinates of each point, the > wss magnitude at each point, and connectivity information. When opening > this surface with vmtksurfacereader, VMTK converts it into a VTK polydata, > which can then be written with vmtksurfacewriter (see surface.vtp > attached). To check what VMTK actually does when converting the ASCII file, > go to the function 'ReadTecplotSurfaceFile' in vmtksurfacereader.py. This > should provide you with some hints on how to convert your own format to > VTP. > > Hope this helps, > > Arjan > > PS: Since the commercial CFD solver Ansys-CFX is quite widely used, the > attached script cfx2vtp.py (variation on above-mentioned > 'ReadTecplotSurfaceFile') might be useful to some reading this email. > Converting surface.csv (attached) should give surface.vtp again. > > > On Wed, Feb 20, 2013 at 9:40 PM, Evan Kao <to...@gm...> wrote: > >> Hello, >> >> I am confused about some of the details regarding the matching and >> patching of data in the tutorial. Specifically, at what stage in the >> process are we supposed to import the simulation data into vmtk, and how? >> For instance, in the tutorial, are the WSS and OSI distributions already >> part of the surface file ("aorta.vtp") before any processing occurs? It >> doesn't seem like there are any ways to import data in any of the >> vmtkbranchmetrics, vmtkbranchmapping, or vmtkbranchpatching functions. And >> what form does the data have to be in? It should be pretty easy to export >> nodal or cell CFD data as an array, but how would we incorporate that into >> vmtk? >> >> Thanks for your time, >> Evan Kao >> >> >> ------------------------------------------------------------------------------ >> 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-02-22 12:46:16
|
Dear Leong, Yong, you posted three messages in a short time. I hope you understand that support on the vmtk mailing list is performed on a free, voluntary basis. Today there are several questions that need a reply on the list and I'll try to address them as soon as my time allows. If you need timely responses, please consider purchasing professional support. Best regards. Luca On Feb 22, 2013, at 1:10 PM, Leong Yong Shin wrote: > > > ---------- Forwarded message ---------- > From: Leong Yong Shin <leo...@gm...> > Date: Fri, Feb 22, 2013 at 7:01 PM > Subject: Centerline Tracing of a loop > To: vmt...@li... > > > Dear vmtk-users, > > I am using VMTK on 3D slicer and I have encountered a problem. I have a model which is a solid straight line with a open loop in the middle. > > I wanted to trace the centerline of the loop, however, the VMTK centerline module can only trace the centerline of a single branch (of the loop). (FYI: the seed and the target fiducials are at both ends of the straight line). I have attached an image of my result in the mail for illustration. > > What I wish to achieve: > > The tracing of the entire loop with a single seed and a single target point. The centerline must branch at the bifurcation and rejoin at the opposite end of the loop. > > Is there anyway to achieve this? Any help is deeply appreciated. Thanks! > > > Take Care! > Leong Yong Shin > > > > > > -- > Take Care! > Leong Yong Shin > School of Chemical & Biomedical Engineering > > > ------------------------------------------------------------------------------ > 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: Leong Y. S. <leo...@gm...> - 2013-02-22 12:10:25
|
---------- Forwarded message ---------- From: Leong Yong Shin <leo...@gm...> Date: Fri, Feb 22, 2013 at 7:01 PM Subject: Centerline Tracing of a loop To: vmt...@li... Dear vmtk-users, I am using VMTK on 3D slicer and I have encountered a problem. I have a model which is a solid straight line with a open loop in the middle. I wanted to trace the centerline of the loop, however, the VMTK centerline module can only trace the centerline of a single branch (of the loop). (FYI: the seed and the target fiducials are at both ends of the straight line). I have attached an image of my result in the mail for illustration. What I wish to achieve: The tracing of the entire loop with a single seed and a single target point. The centerline must branch at the bifurcation and rejoin at the opposite end of the loop. Is there anyway to achieve this? Any help is deeply appreciated. Thanks! Take Care! *Leong Yong Shin* * * -- Take Care! *Leong Yong Shin* * School of Chemical & Biomedical Engineering * |
From: Dr. R. G. <gro...@mh...> - 2013-02-22 08:34:03
|
(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 |
From: Ahmed H. <ahm...@gm...> - 2013-02-21 17:30:09
|
Dear Luca Thanks for your previous help. I have managed to use vtkvmtkVesselnessMeasureImageFilter class and am displaying the results successfully to Osirix output. Now I trying to use vtkvmtkCollidingFrontsImageFilter. I am following the pythons scripts and getting the expected results. I can't determine ow to pass the two seed points to the vtkvmtkCollidingFrontsImageFilter class using the SetSeeds1. I think I am using the wrong co-ordinate system. I capture the ROI from Osirix which is given to me in RAS system in mm. My understanding that VMTK uses IJK system but it already has the origin and spacing values in the vtkImageData. Should I convert my point coordinate manually using matrix transformation or am I missing something? (Bellow is my code for vtkvmtkCollidingFrontsImageFilter) Thanks for your help. vtkIdList *my_VTKseedIdList1=vtkIdList::New(); vtkIdList *my_VTKseedIdList2=vtkIdList::New(); // vtkSmartPointer<vtkPoints> point11 =vtkSmartPointer<vtkPoints>::New(); vtkPoints *point11 =vtkPoints::New(); vtkPoints *points22=vtkPoints::New(); vtkIdType pttyp1,pttyp2; pttyp1=point11->InsertNextPoint(5,5,5);//(15.3,110.8,946.2);//{0,90,922};//{283,242,251};// {18.5,-148.0,115}; pttyp2=points22->InsertNextPoint(15,15,15);//(-10.8,95.8,931);// {80,146,951};//{ 338,276, 218};//{44.0, -155.0, 110.5}; my_VTKseedIdList1->InsertNextId(pttyp1); my_VTKseedIdList2->InsertNextId(pttyp2); vtkvmtkCollidingFrontsImageFilter *myVMTKcollidingFronts = vtkvmtkCollidingFrontsImageFilter::New(); myVMTKcollidingFronts->SetInput(myVTKspeedImage); //myVTKspeedImage is: vtkImageData * myVTKspeedImage and I call it's update function and I see the expected results when displaying it. myVMTKcollidingFronts->SetSeeds1(my_VTKseedIdList1); myVMTKcollidingFronts->SetSeeds2(my_VTKseedIdList2); myVMTKcollidingFronts->ApplyConnectivityOn(); myVMTKcollidingFronts->StopOnTargetsOn(); myVMTKcollidingFronts->Update(); // I get an empty image ! Ahmed A. Harouni |
From: Dr. R. G. <gro...@mh...> - 2013-02-21 14:51:07
|
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 |
From: Dr. R. G. <gro...@mh...> - 2013-02-21 14:35:26
|
Dear Luca, Is it possible that vmtkcenterlines has problems with surfaces originating from discrete marching cubes? The surface I had problems with was generated from a manual segmentation and therefore had no smoothing from normals. I regenerated a similar surface from a tomogram with grey-levels so normals could be calculated for smoothing and this surface now works. Many thanks for Your help Roman On 15/02/13 15:09, Luca Antiga wrote: > Hi Roman, > can you please send me the incriminated surface? > Thanks > > Luca > > > On Feb 13, 2013, at 3:36 PM, Dr. Roman Grothausmann wrote: > > > Dear mailing list members, > > > > > > vmtkcenterlines segfaults with a specific data-set of mine. It works all fine > > with similar data-sets. I generally get a lot of > > > > Generic Warning: In > > /home/grothama/programme/vmtk-1.0.1/build_iana0_130211/VTK/Common/vtkMath.cxx, > > line 553 > > Unable to factor linear system > > > > but then it segfaults with: > > > > *** glibc detected *** python: corrupted double-linked list: > 0x000000000ea4f9c0 *** > > ======= Backtrace: ========= > > /lib/x86_64-linux-gnu/libc.so.6(+0x76d76)[0x7fe2488ddd76] > > /lib/x86_64-linux-gnu/libc.so.6(+0x7880c)[0x7fe2488df80c] > > /lib/x86_64-linux-gnu/libc.so.6(cfree+0x6c)[0x7fe2488e2aac] > > /usr/lib/x86_64-linux-gnu/tls/libnvidia-tls.so.304.64(+0x1cc1)[0x7fe23f628cc1] > > ======= Memory map: ======== > > . > > . > > . > > > > How could I solve this problem? > > > > 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 > > > > ------------------------------------------------------------------------------ > > Free Next-Gen Firewall Hardware Offer > > Buy your Sophos next-gen firewall before the end March 2013 > > and get the hardware for free! Learn more. > > http://p.sf.net/sfu/sophos-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 |
From: Evan K. <to...@gm...> - 2013-02-20 20:40:51
|
Hello, I am confused about some of the details regarding the matching and patching of data in the tutorial. Specifically, at what stage in the process are we supposed to import the simulation data into vmtk, and how? For instance, in the tutorial, are the WSS and OSI distributions already part of the surface file ("aorta.vtp") before any processing occurs? It doesn't seem like there are any ways to import data in any of the vmtkbranchmetrics, vmtkbranchmapping, or vmtkbranchpatching functions. And what form does the data have to be in? It should be pretty easy to export nodal or cell CFD data as an array, but how would we incorporate that into vmtk? Thanks for your time, Evan Kao |