Hi David,
from our experience, although it looks like a reasonable "reference point",
the junction point is quite sensitive to minor surface
features. In other words, it could be located differently for surfaces that
look quite similar. Try for instance to smooth the surface,
the junction point will likely move. This is why we came up with the notion of
reference points and bifurcation reference systems.
However, the junction point can be useful in specific situations (see for
instance the last paper from Marina Piccinelli on aneurysm
removal and neck plane definition).
Now, the above is just for your information, but it doesn't change the fact
that you probably need the damned junction point anyway!
Currently there is no script that extracts it, but there is actually code in
vmtk/vmtkApps/CerebralAneurysms/ParentVesselReconstruction/patchandinterpolatecenterlines.py
for it. In particular, take a look at the following:
def FindClippingPointOnParentArtery(centerlines,parentCenterlines,toll):
divergingPointID = -1
divergingPoint = [0.0,0.0,0.0]
divergingPointMISR = -1
clippingPointID = -1
clippingPoint = [0.0,0.0,0.0]
cell0PointIds = vtk.vtkIdList()
cell1PointIds = vtk.vtkIdList()
centerlines.GetCellPoints(0,cell0PointIds) #this is the cl that goes through
the aneurysm
centerlines.GetCellPoints(1,cell1PointIds)
for i in
range(0,min(cell0PointIds.GetNumberOfIds(),cell1PointIds.GetNumberOfIds())):
cell0Point = centerlines.GetPoint(cell0PointIds.GetId(i))
cell1Point = centerlines.GetPoint(cell1PointIds.GetId(i))
distanceBetweenPoints =
math.sqrt(vtk.vtkMath.Distance2BetweenPoints(cell0Point,cell1Point))
if (distanceBetweenPoints>toll):
divergingPointID = cell1PointIds.GetId(i)
divergingPoint = centerlines.GetPoint(cell1PointIds.GetId(i))
divergingPointMISR =
centerlines.GetPointData().GetArray(radiusArrayName).GetTuple1(cell1PointIds.GetId(i))
break
MISphere = vtk.vtkSphere()
MISphere.SetCenter(divergingPoint)
MISphere.SetRadius(divergingPointMISR)
tempPoint = [0.0,0.0,0.0]
for i in range(divergingPointID,0,-1):
value = MISphere.EvaluateFunction(centerlines.GetPoint(i))
if (value>=0.0):
tempPoint = centerlines.GetPoint(i)
break
locator = vtk.vtkPointLocator()
locator.SetDataSet(parentCenterlines)
locator.BuildLocator()
clippingPointID = locator.FindClosestPoint(tempPoint)
clippingPoint = parentCenterlines.GetPoint(clippingPointID)
return clippingPoint,divergingPoint
Hope this helps
Luca
On Jun 12, 2012, at 5:56 PM, David Roy wrote:
> Dear All,
>
> I'm dealing with abdominal aortic aneurysms, and I need to identify the
> centerline and split it
> at the junction point (indicated on the attached image), thus ending with
> exactly three branches.
>
> Following the tutorials, I've been able to draw a composite centerline, as
> shown on the same
> image, however that's not exactly what I need.
>
> Please, could anyone let me know if it is possible to cut the centerline
> exactly at the junction point,
> and if so, how to do it.
>
>
> Thanks in advance
> D. R.
> <AAA_Centerlines.png>------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats.
> http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/_______________________________________________
> vmtk-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/vmtk-users
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
vmtk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vmtk-users