**From the NGRAIN team**

There are many visualization applications that need some variation of anomaly detection. We have found that our voxel engine has been more than capable of handling many variations of anomaly detection, and in fact, one of the advantages is that **our engine is** **a voxel engine**!

**Surface-based Anomaly Detection**

With just surface geometry data, and given two 3D models, there are multiple applications that would require the visual detection and capability of geometric differencing – see previous blog – that would include:

- Version control of geometry
- Geometric validation of converted formats
- As-design versus as-built geometry
- Faster content creation of geometry.

The basic approach for geometric differencing is laid out below, where each equivalent voxel from the first model (left) is compared against the second model (right), and if there is a difference, then that voxel is highlighted to indicate a difference. You can see the highlighting with respect to the first model, in the truck image below, where the left tire is compared against the right tire, and the green dots indicate some geometric difference.

Figure 1. Basics of Geometric Differencing.

This sort of geometric differencing requires a spatial data structure, such as voxels, otherwise it would be almost impossible to ascertain the geometric differencing, especially in polygons. For example, given the two polygonal meshes seen in Figure 2, where they have different tessellations, but is essentially the same geometry, how would geometric differencing in polygonal space occur? Most algorithms convert the polygons into some form of voxels then do the geometric differencing. Being in voxels already, we spare ourselves of that extra step, and can visualize the outcome also in the voxel domain.

Figure 2. Geometrically same model, but tessellated differently such that geometric differencing in polygonal space would be difficult.

In certain circumstances, a real-time ray tracing variant of the above can be used to determine geometric differencing, for a client project. However, that algorithm is currently being documented for a patent application and will be the subject of a future blog post.

**Solids-based Anomaly Detection**

In the case where interior (to the surface geometry) data is available, a voxel engine is just about the only geometry representations that can handle solid information. As an example from Figure 3, where the left-hand image is rendered using polygons with only surface data; the right-hand image is rendered from DICOM data which contains interior data, then visualized in x-ray mode. This combination of interior data and x-ray visualization is very powerful, as you can very easily notice a hairline fracture in the surface data image, but would not have suspected such a fracture existed in the surface data version.

Figure 3. The left-hand image contains only surface data, whereas the right-hand image contains interior (solid) data, such that the hairline fractures are very evident.

**Visualization through Density Thresholding**

With either solid or surface data, sometimes the data attributes cloud the visualization. For example, from a very low-resolution, 3D radar example, NGRAIN was asked to determine what the model of some client data would be, when displaying the density attribute. Given Figure 4a, it just looks like random noise. However, given that we can do thresholding of the density value, for example, ignore voxels where the density value is below a value (threshold) and visualize it in x-ray mode, then we get Figure 4b very quickly, and NGRAIN was able to answer the client that the 3D radar data was of a human standing up (and we were correct!).

Figure 4. (4a) Random noise in the left-hand image; (4b) picture of a person when viewing the same data under density thresholding and x-ray mode.