by William Tucker » Aug 16, 2011 8:01 am
O.K. Let me see if I can describe the problem as I see it to give you some idea. Maybe this will generate some thoughts from others that might help in solving it.
Given a point cloud (a set of X,Y,Z coordinates) as the model and a new point cloud (frame) which may need to be joined to the model, the new frame could be (and most likely is) distorted in a number of ways. First, it could be shifted along the X, Y or Z axis of the viewer or some combination of all three. Next, it could be rotated around the X, Y or Z axis of the viewer or some combination of all of these. Remember, it is the viewer that is moving, not the scene, usually. That fact cost me some effort as I was going down the wrong path at first. And, both shifts and rotations can and do occur simultaneously. Also, the new point cloud does not have to align point by point as it may (and usually does) align with the spaces between the model points. The problem is (as I see it) to calculate a transformation matrix to apply to the second frame to join it to the model. This transform is the start of the transform for the next and subsequent frames, too. New data can show up from the second frame. This new data could be more or less detailed and it does contain some amount of noise or there may be noise in your model which needs to be removed. The worst problems are when the new frame is distorted from the first by both time and space (in other words, it does not join or the distortion is severe enough that you cannot identify how it was distorted). Combine that with changes in the scene such as someone walking into frame and stitching is a tough problem. I am not convinced that anyone is doing this in real-time, yet.
And, I am almost certain that I am doing this the hard way. My background is not in graphics nor noisy instrument data. It looks to me like some may be using the GPU which I know very little about.
As to inventory, I have thought of the idea of aiming the device at an item which needs to be inventoried and pressing a button to generate a new inventory station code which is used to record the artifact, mineral, fossil or whatever and locate it within the model.