2

I have various point clouds defining RT-STRUCTs called ROI from DICOM files. DICOM files are formed by tomographic scanners. Each ROI is formed by point cloud and it represents some 3D object.

The goal is to get 2D curve which is formed by plane, cutting ROI's cloud point. The problem is that I can't just use points which were intersected by plane. What I probably need is to intersect 3D concave hull with some plane and get resulting intersection contour.

Is there any libraries which have already implemented these operations? I've found PCL library and probably it should be able to solve my problem, but I can't figure out how to achieve it with PCL. In addition I can use Matlab as well - we use it through its runtime from C++.

Has anyone stumbled with this problem already?

P.S. As I've mentioned above, I need to use a solution from my C++ code - so it should be some library or matlab solution which I'll use through Matlab Runtime.

P.P.S. Accuracy in such kind of calculations is really important - it will be used in a medical software intended for work with brain tumors, so you can imagine consequences of an error (:

Roman Kruglov
  • 3,375
  • 2
  • 40
  • 46
  • I am lost with this question:( RT_STRUCT? ROI? DICOM? plain == plane? Where is the 3D concave hull coming from? Is it part of ROI? I thought ROI consists of points only? – CygnusX1 Dec 10 '11 at 17:06
  • 1
    @CygnusX1 Sorry about plane.. It's just a typo. I was in a hurry and just haven't notice that. As for DICOM and other it's just a guiding information. I thought that maybe someone who used to work with this stuff could stumbled with something similar. – Roman Kruglov Dec 12 '11 at 08:22

2 Answers2

1

You first need to form a surface from the point set.

If it's possible to pick a 2d direction for the points (ie they form a convexhull in one view) you can use a simple 2D Delaunay triangluation in those 2 coordinates. otherwise you need a full 3D surfacing function (marching cubes or Poisson)

Then once you have the triangles it's simple to calculate the contour line that a plane cuts them.

See links in Mesh generation from points with x, y and z coordinates

Paul Floyd
  • 5,530
  • 5
  • 29
  • 43
Martin Beckett
  • 94,801
  • 28
  • 188
  • 263
1

Perhaps you could just discard the points that are far from the plane and project the remaining ones onto the plane. You'll still need to reconstruct the curve in the plane but there are several good methods for that. See for instance http://www.cse.ohio-state.edu/~tamaldey/curverecon.htm and http://valis.cs.uiuc.edu/~sariel/research/CG/applets/Crust/Crust.html.

lhf
  • 70,581
  • 9
  • 108
  • 149
  • That can work out, but there can be points, which compose some surface's side which is almost parallel to the view plane and lies on a small distance from it. So in this case we won't get a contour. – Roman Kruglov Feb 10 '12 at 15:40