Click or drag to resize
OIV.ImageViz Namespaces

The ImageViz extension allows easy integration of advanced 2D and 3D image processing and analysis capabilities into imaging software applications.

Namespaces
NamespaceDescription
OIV.ImageViz

The ImageViz extension allows easy integration of advanced 2D and 3D image processing and analysis capabilities into imaging software applications.

OIV.ImageViz.Engines

ImageViz engines allow the application of computational algorithms on data extracted from images.

OIV.ImageViz.Engines.ArithmeticAndLogic

The Arithmetics Operations category contains operations between two images or between an image and a constant as addition, subtraction, multiplication, division, minimum or maximum.

OIV.ImageViz.Engines.EdgeDetection

An edge, also known as a discontinuity, in a signal is usually defined as a transition in the intensity or amplitude of that signal.

OIV.ImageViz.Engines.GeometryAndMatching
 
OIV.ImageViz.Engines.ImageAnalysis

The purpose of quantitative analysis is to extract new representations in the form of measurements from images.

OIV.ImageViz.Engines.ImageFiltering

This category gathers engines for filtering images.

OIV.ImageViz.Engines.ImageManipulation

The Image Manipulation category contains engines for creating and editing images.

OIV.ImageViz.Engines.ImageSegmentation

Segmentation is a critical step of image processing that consists of partitioning an image into multiple segments (sets of pixels).

OIV.ImageViz.Engines.MathematicalMorphology

The Mathematical Morphology is a theory for the analysis of geometrical structures.

OIV.ImageViz.Fields
 
OIV.ImageViz.Nodes
 
OIV.ImageViz.Workflows
 
Remarks

It provides an extensive collection of high-performance parallelized 2D/3D image processing and analysis operators to implement complete application workflows, including image filtering and preprocessing, segmentation, and data analysis. ImageViz allows developers to build automated workflows thanks to OIV.ImageViz.Engines.

  • Important notices:
    License: ImageViz is a separately licensed Open Inventor extension. You need an ImageViz license string in addition to your Open Inventor license string.Windows: Open Inventor ImageViz module extension supports Windows 64-bits and 32-bits for Visual Studio C++ 2010/2012/2013 and 2015.Other OS: Open Inventor ImageViz module extension supports also Linux 64-bits RHEL 5, RHEL6 and Mac OS X.Exceptions: Unlike Open Inventor core (and most other extensions), ImageViz handles some detected errors by throwing an exception (see SbException). These cases are noted in the documentation.

    Introduction to ImageViz

    Specifically designed for application developers, the Open Inventor ImageViz software development toolkit (SDK) allows easy integration of advanced 2D and 3D image processing and analysis capabilities into imaging software applications in medical and life sciences, industrial inspection, materials science, and geosciences.

    Open Inventor ImageViz SDK provides an extensive collection of high-performance parallelized 2D/3D image processing and analysis operators to implement application workflows, including:

    • Pre-processing: 2D/3D image cleaning and enhancement

    • Segmentation: identification of objects, phases, defects, and regions of interest

    • Analysis: data quantification and numerical results Process a wide range of image data, including 2D and 3D, grayscale and color, various bit-depth images, data from X-ray tomography, electron and optical microscopy, MRI, or other image acquisition systems. Implement automated image processing and analysis workflows and provide software users with faster, more accurate, and more complete insight into their data.

    ImageViz is tightly integrated into the Open Inventor SDK and its standard concept of engines, nodes, and fields. Open Inventor data objects can be connected as input to ImageViz processing engines. Moreover, any ImageViz engines output can be connected to Open Inventor or VolumeViz, allowing easy integration into existing applications.

    Getting started with ImageViz

    This section introduces how to start working with ImageViz from scratch. Each demo below provides an example for performing a step of a classical image processing chain.

    Please note when using the ImageViz documentation: At the top of each engine's page there is a link to a page containing general information about the algorithms used in that group of engines.

    1 Image Filtering

    The pre-processing step helps to enhance the quality of the image thanks to an image processing filter.

    Denoising a 2D image.

    01.2 Denoising a 3D image

    This example shows how to denoise an image using a bilateral filter.

    Denoising a 3D image.

    2 Image Segmentation

    Segmentation is a very important step of an image processing workflow. This is where objects to identify in the scene are isolated in a binary or label image.

    • For more information about image segmentation, see section OIV.ImageViz.Engines.ImageSegmentation.

      2.1 Segmentation by thresholding

      This example shows how to create a binary image from an input grayscale image with a classic thresholding operator. The input image is shown with the resulting thresholded image as overlay.

    Segmentation by thresholding.

    2.2 Segmentation by flood fill

    This example shows how to create a binary image from an input grayscale image performing a region growing from a seed point. The center of the image, that belongs to the dark shape to detect, is taken as the seed point. The input image is shown with the boundaries of the resulting thresholded image as overlay.

    Segmentation by flood fill.

    3 Image Quantification

    Image analysis is the final step of an image processing workflow when its aim is to quantify the contents of a scene. This is where we take out the numerical results from the segmented image.

    Label analysis.

    3.2 Define a custom measure

    ImageViz proposes a substancial set of OIV.ImageViz.Nodes.Measures.SoDataMeasurePredefined. However it may be necessary to define its own formula to be computed in a label analysis.

    This example shows how to define a custom measure.

    Define a custom measure.

    3.3 Customize measure attributes extraction

    Some of the ImageViz native measures have attributes (measures related to Ferets diameters, histogram computation or cooccurrence matrix).

    This example shows how to modify the attributes of a measure.

    The Feret's diameter ratio computes the ratio between 2 Feret's diameter. Depending on the angular step used to compute the distribution of Feret's diameters, the precision of the result can change.

    • The workflow is almost the same as the Label analysis example.

    • Two different OIV.ImageViz.Engines.ImageAnalysis.IndividualMeasures.SoLabelAnalysisQuantification engines are intialized.

    • The first one keeps the default distribution of Feret diameters (10 diameters, each 18 degrees).

    • The second one takes a new distribution of Feret diameters (90 diameters, each 2 degrees).

    • Both analysis are computed and both results of the most elongated particle are displayed to show the impact of this change.

    Customize measure attributes.

    4 Image Management

    This section contains examples for handling input and output data.

    4.1 Creating a 2D image

    This example demonstrates how to create a new 2D image containing data from a buffer.

    First it is shown how to fill an OIV.Inventor.Devices.SoCpuBufferObject with synthetic values that would represent a bright square on a gray background.

    Then this buffer is set in an OIV.ImageViz.Nodes.Images.SoMemoryDataAdapter that corresponds to a 2D 512x512 image.

    At least a simple scene graph is built and the image is displayed as an orthoslice in a viewer.

    4.2 Creating a 3D image

    This example demonstrates how to create a new 3D image containing data from a buffer.

    First it is shown how to fill an OIV.Inventor.Devices.SoCpuBufferObject with synthetic values that would represent a bright 3D bar on a gray background.

    Then this buffer is set in an OIV.ImageViz.Nodes.Images.SoMemoryDataAdapter that corresponds to a 3D 256x256x32 image.

    At least a simple scene graph is built and the image is displayed in a viewer with as a volume rendering.

    4.3 Extracting a rectangular ROI

    It is sometimes necessary to select a Region Of Interest (ROI) inside an image. This allows removing non relevant data or saving computation time during the validation step of a workflow.

    Extracting a rectangular ROI.

    4.4 Launch a batch processing

    Once an image processing chain has been validated on a set of representative samples it can be useful to apply the same workflow on a stack of images located in a same folder.

    This example shows how to apply a gradient operator on a list of images and save the result in a new file.

    • A list of every TIFF files located in a given directory is defined (/ImageViz/Data).

    • Each image is loaded.

    • A Sobel gradient operator is applied on each input image.

    • The output data is converted to 8 bits type (the gradient output of an 8 bits image is a 16 bits image).

    • The result image is saved in another directory (the current directory).

    Launch a batch processing.

    Toward a complete workflow

    These examples illustrates how a standard image processing workflow can be implemented. Each step is applied from loading a grayscale image to displaying results of an analysis.

    All parameters of the workflow engines are exposed in the user interface, the user can change the parameters and verify the result on the output image.

    • Extract measurements from a grayscale image.

    • Digital rock pore analysis.