![]() |
ImFusion SDK 4.3
|
Data structures and interfaces for working with image data. More...
Data structures and interfaces for working with image data.
Images are one of the most essential data structure for medical imaging. The ImFusion SDK provides different levels of abstractions for working with them. All images can be 2D, 3D, or 4D (3D+t) and stored on different backends such as the main memory or the GPU. The following class diagram provides an overview how the different classes relate to each other:
T
. It provides you with type-safe access to the pixel data.When dealing with images we distinguish three coordinate systems:
See Coordinate Systems for an in-depth discussion how they relate to each other.
Naturally, our SDK provides a wide range of image processing algorithms. For instance, fast low-level CPU implementations for basic operations such as cropping, thresholding, or resampling can be found in the ImageProcessing namespace. More high-level implementations that can also leverage the computing power of GPUs can be found for instance in the BasicImageProcessing algorithm or in the ImageResamplingAlgorithm.
Refer to the Image Data Tutorial for concrete code examples illustrating the usage of the image API.
Namespaces | |
namespace | ImFusion::ImageProcessing |
Low-level algorithms for image processing. | |
Classes | |
class | CustomImage |
Base interface for custom Image types that can be converted from/to MemImages and are supported by SharedImage. More... | |
class | Image |
Base class and interface for images. More... | |
struct | ImageDescriptor |
Struct describing the essential properties of an image. More... | |
class | ImageDescriptorWorld |
Convenience struct extending an ImageDescriptor to also include a matrix describing the image orientation in world coordinates. More... | |
class | MemImage |
Abstract base class for an image residing in main memory. More... | |
class | TypedImage< T > |
Concrete implementation of a MemImage for a given pixel type. More... | |
class | GlImage |
OpenGL texture image. More... | |
class | SharedImage |
Image shared on multiple devices. More... | |
class | SharedImageSet |
Set of images independent of their storage location. More... | |
class | TrackedSharedImageSet |
Set of images with arbitrarily sampled tracking data. More... | |
class | ClImage |
OpenCL image class. More... | |
class | UltrasoundSweep |
Set of 2D ultrasound images constituting a 3D (freehand) ultrasound sweep, so a clip of 2D ultrasound images with arbitrarily sampled tracking data and additional ultrasound-specific metadata. More... | |
Functions | |
template<typename F, typename... Args> | |
auto | typeSwitch (Image::Type itype, F &&func, Args &&... args) |
Function for internally type switching a given lambda function on the Image::Type cases. | |
template<typename F, typename... Args> | |
auto | typeSwitch (const MemImage &img, F &&func, Args &&... args) |
Function for internally type switching a given lambda function on the Image::Type cases. | |
template<typename F, typename... Args> | |
auto | typeSwitch (const PixelType &type, F &&func, Args &&... args) |
auto typeSwitch | ( | Image::Type | itype, |
F && | func, | ||
Args &&... | args ) |
#include <ImFusion/Base/Utils/TypeSwitcher.h>
Function for internally type switching a given lambda function on the Image::Type cases.
The lambda function shall take the objects it needs to act on by capture, and have a single parameter of type auto
. The switcher then passes to the lambda all the types associated with the Image::Type cases via the detail::TypeWrapper struct. In this way in the lambda body the user can retrieve the wrapped type by calling decltype on the lambda param.
Image::Type::HFLOAT
case is handled as float
.Example: the following (typical) code
can be replaced with the following code:
auto typeSwitch | ( | const MemImage & | img, |
F && | func, | ||
Args &&... | args ) |
#include <ImFusion/Base/Utils/TypeSwitcher.h>
Function for internally type switching a given lambda function on the Image::Type cases.
The lambda function shall take the objects it needs to act on by capture, and have a single parameter of type auto
. The switcher then passes to the lambda all the types associated with the Image::Type cases via the detail::TypeWrapper struct. In this way in the lambda body the user can retrieve the wrapped type by calling decltype on the lambda param.
Image::Type::HFLOAT
case is handled as float
.Example: the following (typical) code
can be replaced with the following code:
auto typeSwitch | ( | const PixelType & | type, |
F && | func, | ||
Args &&... | args ) |
#include <ImFusion/Base/Utils/TypeSwitcher.h>