I have written a synthetic LiDAR scanner in c++ using VTK and VXL (it could easily be converted to use ITK data structures). That
is, rather than setting up a collection of objects in real life and
actually sending lasers into the scene, one can simply create a scene
out of 3d models and "scan" it by casting rays at the models. This
seems like something that could be a huge help to any researchers that
work with 3D model/surface/point data and LiDAR data. I'm sure many
researchers have their own implementations - after all it is a very
straightforward process (simply a bunch of ray triangle intersections -
which I have sped up using VTK's octree) but I think it would be very
useful to someone starting out in the field and to attempt to unify
some datasets. I've used it to produce data sets for which a ground
truth is known in order to ensure algorithms are behaving properly
before moving to "real" LiDAR scans. Also, noise can be added to the
points to attempt to simulate a real LiDAR scan for researchers who do
not have access to the very expensive equipment required to obtain real
scans.<br>
<br>The inputs are:<br><br>Scanner position (3D coordinate)<br>Min/Max phi angle (how far &quot;up and down&quot; the scanner should scan)<br>Min/Max theta angle (how far &quot;left and right&quot; the scanner should scan)<br>

Scanner &quot;forward&quot; (the phi=0, theta=0 direction)<br>Angular
sample spacing or number of points to acquire in the theta and phi
directions (so the &quot;grid&quot; is a total of (num_theta x num_phi) points)<br><br>
The outputs are:<br>A
.ptx file that maintains implicitly the structure of the scan (points
are ordered as they were taken in &quot;strips&quot;). This is the output given
by a real Leica scanner.<br>A .vtp file that is simply an unorganized point cloud of the scan returns.<br><br>Can I get some feedback on if this is a reasonable extension to ITK or VXL capabilities?<br><br clear="all">Thanks,<br>
<br>David<br>