Click or drag to resize
SoNonLocalMeansFilterProcessing Class

OIV.ImageViz.Engines.ImageFiltering.SmoothingAndDenoising.SoNonLocalMeansFilterProcessing engine.

Inheritance Hierarchy

Namespace: OIV.ImageViz.Engines.ImageFiltering.SmoothingAndDenoising
Assembly: OIV.ImageViz (in OIV.ImageViz.dll) Version: 2023.1.3.0 (2023.1.3)
Syntax
public class SoNonLocalMeansFilterProcessing : SoImageVizEngine

The SoNonLocalMeansFilterProcessing type exposes the following members.

Constructors
  NameDescription
Public methodSoNonLocalMeansFilterProcessing

Constructor.

Top
Methods
  NameDescription
Public methodAbortEvaluate

Abort current processing as soon as possible.

(Inherited from SoImageVizEngine.)
Public methodCopy

Creates and returns an exact copy of the engine.

(Inherited from SoEngine.)
Public methodCopyFieldValues(SoFieldContainer)
Calls CopyFieldValues(fc, false).
(Inherited from SoFieldContainer.)
Public methodCopyFieldValues(SoFieldContainer, Boolean)

Copies the contents of fc's fields into this object's fields.

(Inherited from SoFieldContainer.)
Public methodDispose
Releases all resources used by SoDisposable.
(Inherited from SoDisposable.)
Public methodEnableNotify

Notification at this Field Container is enabled (if flag == true) or disabled (if flag == false).

(Inherited from SoFieldContainer.)
Public methodEquals
Determines whether the specified Object is equal to the current Object.
(Inherited from Object.)
Public methodFieldsAreEqual

Returns true if this object's fields are exactly equal to fc's fields.

(Inherited from SoFieldContainer.)
Public methodGet

Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string.

(Inherited from SoFieldContainer.)
Public methodGetAllFields

Returns a list of fields, including the eventIn's and eventOut's.

(Inherited from SoFieldContainer.)
Public methodGetEventIn

Returns a the eventIn with the given name.

(Inherited from SoFieldContainer.)
Public methodGetEventOut

Returns the eventOut with the given name.

(Inherited from SoFieldContainer.)
Public methodGetField

Returns a the field of this object whose name is fieldName.

(Inherited from SoFieldContainer.)
Public methodGetFieldName

Returns the name of the given field in the fieldName argument.

(Inherited from SoFieldContainer.)
Public methodGetFields

Appends references to all of this object's fields to resultList, and returns the number of fields appended.

(Inherited from SoFieldContainer.)
Public methodGetHashCode
Overrides GetHashCode().
(Inherited from SoNetBase.)
Public methodGetName

Returns the name of an instance.

(Inherited from SoBase.)
Public methodGetOutput

Returns a reference to the engine output with the given name.

(Inherited from SoEngine.)
Public methodGetOutputName

Returns (in outputName) the name of the engine output (output).

(Inherited from SoEngine.)
Public methodGetOutputs

Returns a list of outputs in this engine.

(Inherited from SoEngine.)
Public methodGetStringName (Inherited from SoBase.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodHasDefaultValues

Returns true if all of the object's fields have their default values.

(Inherited from SoFieldContainer.)
Public methodIsEvaluating

Returns true if the engine evaluation is in progress.

(Inherited from SoImageVizEngine.)
Public methodIsNotifyEnabled

Notification is the process of telling interested objects that this object has changed.

(Inherited from SoFieldContainer.)
Public methodIsSynchronizable

Gets the ScaleViz synchronizable state of this object.

(Inherited from SoBase.)
Public methodSet

Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format.

(Inherited from SoFieldContainer.)
Public methodSetName (Inherited from SoBase.)
Public methodSetSynchronizable

Sets this to be a ScaleViz synchronizable object.

(Inherited from SoBase.)
Public methodSetToDefaults

Sets all fields in this object to their default values.

(Inherited from SoFieldContainer.)
Public methodStartEvaluate

Evaluate engine and dependencies in another thread without blocking the current one.

(Inherited from SoImageVizEngine.)
Public methodToString
Converts this SoBase structure to a human readable string.
(Inherited from SoBase.)
Public methodTouch

Marks an instance as modified, simulating a change to it.

(Inherited from SoBase.)
Public methodWaitEvaluate

Wait for the end of engine evaluation.

(Inherited from SoImageVizEngine.)
Top
Properties
  NameDescription
Public propertycomputeMode

Select the compute Mode (2D or 3D or AUTO) .

Public propertyinImage

Input image.

Public propertyIsDisposable
ISafeDisposable interface implementation.
(Inherited from SoDisposable.)
Public propertykernelShape

The search window shape to apply.

Public propertykernelSize

The search window size to apply.

Public propertyoutImage

The output image.

Public propertypatchSize

The patch box size to apply.

Public propertysimilarity

The similarity is used to compute weight assigned to each voxel in the search window (see expression of ).

Public propertyUserData
Gets or sets the user data to be contained by the field container.
(Inherited from SoFieldContainer.)
Top
Events
  NameDescription
Public eventOnBegin

Event raised when the processing begins.

(Inherited from SoImageVizEngine.)
Public eventOnEnd

Event raised when processing ends and the result is available.

(Inherited from SoImageVizEngine.)
Public eventOnProgress

Event raised while processing is running.

(Inherited from SoImageVizEngine.)
Top
Remarks

The OIV.ImageViz.Engines.ImageFiltering.SmoothingAndDenoising.SoNonLocalMeansFilterProcessing engine implements the non-local means algorithm for image denoising.

The algorithm computes a weighted mean of a large set of voxels (search windows) around the voxel to be denoised (target voxel). The voxel weight in the search window is a function of the similarity between this voxel and the target voxel. A voxel very similar to the target voxel will be assigned to a weight close to 1.0. A voxel very different from the target voxel will be assigned to a weight close to 0 and will have a small impact on the final denoised value.

The similarity between a voxel and the target voxel is based on the squared intensity differences between 2 patches of size OIV.ImageViz.Engines.ImageFiltering.SmoothingAndDenoising.SoNonLocalMeansFilterProcessing.patchSize centered on the current voxel and the target voxel.

Images are often corrupted by noise because of acquisition process. For an image defined on which is the image domain, the noise added by acquisition is assimilated to an additive white gaussian noise: where

The denoised image is an estimation of as following: with where:

  • is the similarity criterion (sum of squared differences)

  • is the similarity

  • is the indicator function of the search region

  • and is the indicator function of the patch region.

The algorithm looks for matches within the search window area around each voxel.

The naive implementation of previous equation has a complexity of that can be reduced to where N*M*Q is the dimension of the input image, P is the OIV.ImageViz.Engines.ImageFiltering.SmoothingAndDenoising.SoNonLocalMeansFilterProcessing.patchSize and S is the OIV.ImageViz.Engines.ImageFiltering.SmoothingAndDenoising.SoNonLocalMeansFilterProcessing.kernelSize.

FILE FORMAT/DEFAULT

NonLocalMeansFilterProcessing {
computeMode MODE_AUTO
inImage NULL
kernelShape BALL
kernelSize 6
patchSize 3
similarity 0.6f
}

Library references: non_local_mean non_local_mean3d

See Also