Welcome to PrecisionImage.NET, a powerful new image processing SDK for Windows Presentation Foundation clients and version 4 (or higher) of the .NET Framework! PrecisionImage.NET is different from other image processing toolkits in that it is designed specifically for technical imaging applications. It incorporates a host of features that are fundamental to industries such as materials analysis, non-destructive testing and medical radiology (among many others). It has been designed from the ground up to afford a high degree of power and flexibility, and achieves this by exposing a fully object-oriented API that dramatically reduces time-to-market as well as development and maintenance costs.
Incorporating PrecisionImage.NET into your solution provides the following advantages:
Out-of-the-box heterogeneous computing.
At its core, PrecisionImage.NET is a sophisticated heterogeneous computing system that affords .NET developers as much - or as little - control as they need to get their solutions to market quickly. Every computational object in the library incorporates a ProcessingMode enumeration that enables developers to control how the object processes data. This behavior can be object-specific and/or global via the DefaultProcessingMode system property. Even greater control is possible by specifying particular hardware accelerators via the HardwareAccelerationDevice class.
Automatic failsafe CPU-fallback processing
Distribute your GPU-enabled solution with confidence knowing that a fully-managed multicore-optimized CPU fallback branch is automatically invoked if a runtime exception occurs with the graphics subsystem or if a DirectX 11 class GPU is not available.
PrecisionImage.NET delivers the precision necessary to enable complex proprietary image processing pipelines. It achieves this through the use of an internal data container that loads, stores and maintains image data at 32-bit floating point precision all the way through the processing chain. This virtually eliminates the accumulation of discretization erros that can arise with other SDKs which are not designed to handle complex sequential processing. Furthermore, all processing is performed at either 80-bit precision when using the CPU branch, or at 32-bit/64-bit precision (run-time selectable) when targetting the GPU acceleration branch of the library. This approach affords complex technical applications an optimum balance of numerical precision and memory storage requirements.
PrecisionImage.NET provides the level of control and adjustability required by technical industries and not offered by other toolkits that focus on general-purpose image manipulation. This level of control influences every facet of the SDK, from the numerical range used to represent the image data to the underlying threading model adopted by a consuming application. The result is an SDK designed to form the computational back-end of modern technical imaging applications...easily and transparently.
Seamless interoperation with WPF for the most modern interfaces.
PrecisionImage.NET works seamlessly with Windows Presentation Foundation, the most powerful and flexible desktop UI framework available. Images are generated and returned as standard BitmapSource objects allowing the SDK to be used with the built-in image viewer control included in the WPF control set, or as arrays of pixel values to facilitate interoperation with other vendor components.
CLS-compliant API for use with any .NET language
PrecisionImage.NET incorporates a CLS-compliant API that enables it to be used by any .NET language including F#, VB.NET, C# and others. All CPU processing occurs within a fully-managed code branch that runs under the full control of the Common Language Runtime. The GPU-accelerated code branch is invoked via the Platform Invocation services of the .NET framework and implemented in both 32 and 64-bit Dlls built using the Microsoft Accelerated Massive Paralelism (AMP) compiler.
Kinect data stream processing
PrecisionImage.NET allows you load data from Microsoft's Kinect sensor bar by interfacing with the Kinect for Windows SDK. Process the raw depth stream data, the RGB camera stream and the IR camera stream using the included data loading functions. Once loaded the data can be passed through a custom processing pipeline and processed like any other data source using any of the built-in functionality.
Works cooperatively with Microsoft's Roselyn CTP for an interactive scripting environment
By installing the Roselyn "compiler as a service" CTP from Microsoft, you can use PrecisionImage.NET and C# together as an interactive technical scripting environment. This allows you rapidly prototype ideas and observe the results without the effort of implementing a full user interface in WPF.
Enhance data interpretation with modern pseudocoloring algorithms
PrecisionImage.NET includes a variety of the most modern data visualization algorithms for enhancing operator interpretation of data. These include fixed-function schemes such as linear hue progression and black-body thermal pseudocoloring, as well as variable/constant saturation schemes that allow unlimited flexibility for any application requirement.
Limit processing to regular and irregular regions of your data
Most functions in PrecsionImage.NET have the option of limiting processing to regular regions of your data using a rectangular region-of-interest specifier and/or irregular regions by using the class. This improves results and reduces computation time by excluding noisy low-signal areas from the processing/visualization pipeline.
Flexible frequency domain processing
The frequency domain processing module included in PrecisionImage.NET is the most flexible in the business. It includes a Butterworth fiilter with tuneable roll-off characteristics, frequency domain operations for spectral math, fully configurable isotropic and anisotropic frequency filters, and a variety of windowing functions including the tuneable Kaiser type. All functionality is fully multicore and GPU enabled.
Comprehensive wavelet processing
PrecisionImage.NET includes a comprehensive wavelet processing package that includes DWT and DWPT transforms, pre-defined/custom sub-band processing with soft/hard thresholding and over 50 predefined wavelet types plus the ability to define custom types.
Spatial filtering and Histogram processing
A variety of the most useful tuneable spatial filters are included as well as histogram generation and processing including histogram equalization and an adjustable GPU-enabled implementation of the Contrast-Limited Adaptive Histogram Equalization algorithm.
Versatile morphological and binary mask processing
Employ powerful morphological processing techniques such as binary object counting, perimeter contour determination, spatial geometric moment calculations, fourier shape descriptors and more. Isolate processing to irregular regions using binary masks which can be fused, visualized and used with many of the operations in PrecisionImage.NET.
Multiple colorspace conversions
A variety of colorspace conversion functions are available including linear RGB, gamma-encoded RGB, XYZ, L*a*b*, IPT and many others. Any built-in processing method can be applied to data in any channel and colorspace.
Pipeline support functions and more!
PrecisionImage.NET includes a number of supporting utility functions intended to faclitate the implementation of custom processing pipelines. All these methods are optimized for mutlicore CPUs.