/// <summary>
/// Process the filter on the specified image.
/// </summary>
///
/// <param name="image">Source image data.</param>
///
protected override unsafe void ProcessFilter(UnmanagedImage image)
{
// perform opening on the source image
UnmanagedImage openedImage = opening.Apply(image);
// subtract opened image from source image
subtract.UnmanagedOverlayImage = openedImage;
subtract.ApplyInPlace(image);
openedImage.Dispose( );
}