VOI to POI

VOI to POI: 

With this plugin it is possible to convert your VOIs into POIs. A small introduction might be helpfull in order to understand how this conversion works and what the limitations are.

VOIs are a number of points (voxels) in 3D space that together form a region in a volume.
POIs are a number of points (vertices) in 3D space that together form region of interest on the surface.

So in both cases we have points with coordinates in a common 3D space, but these coordinates are not precisely coinciding.

Until version 2.x the plugin worked by looking for surface coordinates that are close enough to the volume coordinates of the VOI. All surface coordinates that are within a user defined distance from any VOI coordinate were included in the corresponding POI.

From version 3.0 on, a more precise method is used that starts the search at a vertex coordinate and then goes along the vertex normal (i.e. perpendicular to the surface) inwards and outwards until a user defined distance. This method is similar to how MTCs are created from VTCs in brainvoyager and how SMPs are created from VMPs.

VOI2POI 3.x

The POI names and colors will be copied from the corresponding VOIs. It can of course happen that no surface points are close enough to a VOI to create a corresponding POI (e.g. for a region in the middle of the white matter). In that case the POI name will inlcude "(empty)" to let the user know the VOI was processed, but the corresponding surface region does not exist!

Prevent POI overlap
All the vertices that are present in more than 1 POI (i.e. overlapping) are first removed and then distributed back to the POIs in an iterative fashion. The redistribution starts at the first POI in the list and finds all the vertices that are bordering this POI  (i.e. just around the outer edge). It then looks if any of these outer edge vertices are in the list of removed overlap vertices. If so, they are added back to the POI, thereby reducing the list of overlapping vertices. This is done to all of the POIs sequentially and repeated until the list of overlapping vertices is either empty or doesn't reduce in size anymore.

Keeping only the largest connected patch of each POI
For each POI, it looks how many different area's (patches) it contains and what the surface of each of these area's is. It then only keeps the larges surface patch. The idea behind this feature is that the surface area of a POI is usually meant to be connected (i.e one patch). It's not hard to imagine a case in which a VOI is also partially projected to the wrong banks of a narrow gyrus, resulting in a small patch that will be removed using this feature. 

Attempt to fill holes in patches
A bit experimental function that tries to find holes in a patch and fills them up. This only works if the hole is completely surrounded by vertices belonging to the patch.

Number of edge smooth steps
Sometimes the edge of the POIs can look a bit jagged. The smoothing works by first expanding the POI with a certain number of steps, and then shrinking it with the same amount of steps. This results in smoothing, where the amount depends on the number of steps. The number of POI vertices will always stay equal or increase after smoothing.


Before you start the plugin you should make sure that you have loaded:

     1. A VMR with VOIs
     2. The Corresponding Surface.


Version History

v3.4 (26-02-2019): Windows 64bit

   - Compatible with BV 21.2

v3.4 (02-11-2016): Windows 64bit

   - Compatible with BV 20.2

v3.3 (21-11-2014): Windows 64bitWindows 32bitMacOS

   - Added GUI
   - Changed search from undirectional to directional (along vertex normal)
   - Improved prevent overlap function
   - Added function to fill holes in patches
   - Added smoothing function

v2.0 (01-10-2014):

   - Added an optional removal of POI overlap, so a vertex can only be in one POI
   - Added option to only keep the largest connected area (mm^2) of each POI

v1.1 (09-09-2014):
   - Added support for Neurological Tal VMRs