VintaSoft Imaging .NET SDK 15.1: Documentation for .NET developer
Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective Namespace / SelectiveFilteringCommand Class
Members Object Syntax Example Hierarchy Requirements SeeAlso
In This Topic
SelectiveFilteringCommand Class
In This Topic
Applies selective filtering, in the frequency domain, to an image.
Object Model
FrequencySpectrumFilter RegionOfInterest ProcessingCommandResults SelectiveFilteringCommand
Syntax
'Declaration

Public Class SelectiveFilteringCommand
   Inherits Vintasoft.Imaging.ImageProcessing.Fft.FastFourierTransformCommand

Example

This C#/VB.NET code shows how to remove periodic noise from an image.


''' <summary>
''' Removes periodic noise from image.
''' </summary>
''' <param name="image">input image.</param>
Public Sub RemovePeriodicNoise(image As Vintasoft.Imaging.VintasoftImage)
    ' notch points for selective filtering
    Dim notchPoints As System.Drawing.Point()

    ' create frequency spectrum visualizer command
    Dim spectrumVisualizer As New Vintasoft.Imaging.ImageProcessing.Fft.FrequencySpectrumVisualizerCommand()

    ' visualize imae spectrum
    Using imageSpectrum As Vintasoft.Imaging.VintasoftImage = spectrumVisualizer.Execute(image)
        ' analyse image spectrum and determine notch points
        AnalyseImageSpectrum(imageSpectrum, notchPoints)
    End Using

    ' cutoff frequency for spectrum filters
    Dim cutoffFrequency As Double = 0.04

    ' create composite spectrum filter
    Dim compositeFilter As New Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.CompositeSpectrumFilter(New System.Collections.Generic.List(Of Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.FrequencySpectrumFilter)())

    ' add Ideal notch reject spectrum filter
    compositeFilter.Items.Add(New Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.IdealNotchRejectSpectrumFilter(notchPoints(0), cutoffFrequency))

    ' add Butterworth notch reject spectrum filter
    compositeFilter.Items.Add(New Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.ButterworthNotchRejectSpectrumFilter(notchPoints(1), cutoffFrequency))

    ' add Gaussian notch reject spectrum filter
    compositeFilter.Items.Add(New Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.GaussianNotchRejectSpectrumFilter(notchPoints(2), cutoffFrequency))

    ' create selective filtering command
    Dim selectiveFiltering As New Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.SelectiveFilteringCommand()
    selectiveFiltering.Filter = compositeFilter

    ' execute selective filtering
    selectiveFiltering.ExecuteInPlace(image)
End Sub

''' <summary>
''' Analyses image spectrum and determines notch points.
''' </summary>
''' <param name="spectrum">Image spectrum.</param>
''' <param name="notchPoints">Notch points.</param>
Public Sub AnalyseImageSpectrum(spectrum As Vintasoft.Imaging.VintasoftImage, ByRef notchPoints As System.Drawing.Point())
    ' determine notch points
    ' ...
    notchPoints = New System.Drawing.Point(2) {}
    notchPoints(0) = New System.Drawing.Point(30, 30)
    notchPoints(1) = New System.Drawing.Point(30, 50)
    notchPoints(2) = New System.Drawing.Point(30, 80)
End Sub


/// <summary>
/// Removes periodic noise from image.
/// </summary>
/// <param name="image">input image.</param>
public void RemovePeriodicNoise(Vintasoft.Imaging.VintasoftImage image)
{
    // notch points for selective filtering
    System.Drawing.Point[] notchPoints;

    // create frequency spectrum visualizer command
    Vintasoft.Imaging.ImageProcessing.Fft.FrequencySpectrumVisualizerCommand spectrumVisualizer = 
        new Vintasoft.Imaging.ImageProcessing.Fft.FrequencySpectrumVisualizerCommand();

    // visualize imae spectrum
    using (Vintasoft.Imaging.VintasoftImage imageSpectrum = spectrumVisualizer.Execute(image))
    {
        // analyse image spectrum and determine notch points
        AnalyseImageSpectrum(imageSpectrum, out notchPoints);
    }

    // cutoff frequency for spectrum filters
    double cutoffFrequency = 0.04;

    // create composite spectrum filter
    Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.CompositeSpectrumFilter compositeFilter = 
        new Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.CompositeSpectrumFilter(
            new System.Collections.Generic.List<Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.FrequencySpectrumFilter>());

    // add Ideal notch reject spectrum filter
    compositeFilter.Items.Add(
        new Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.IdealNotchRejectSpectrumFilter(
            notchPoints[0], cutoffFrequency));

    // add Butterworth notch reject spectrum filter
    compositeFilter.Items.Add(
        new Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.ButterworthNotchRejectSpectrumFilter(
            notchPoints[1], cutoffFrequency));

    // add Gaussian notch reject spectrum filter
    compositeFilter.Items.Add(
        new Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.GaussianNotchRejectSpectrumFilter(
            notchPoints[2], cutoffFrequency));

    // create selective filtering command
    Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.SelectiveFilteringCommand selectiveFiltering = 
        new Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.SelectiveFilteringCommand();
    selectiveFiltering.Filter = compositeFilter;

    // execute selective filtering
    selectiveFiltering.ExecuteInPlace(image);
}

/// <summary>
/// Analyses image spectrum and determines notch points.
/// </summary>
/// <param name="spectrum">Image spectrum.</param>
/// <param name="notchPoints">Notch points.</param>
public void AnalyseImageSpectrum(Vintasoft.Imaging.VintasoftImage spectrum, out System.Drawing.Point[] notchPoints)
{
    // determine notch points
    // ...
    notchPoints = new System.Drawing.Point[3];
    notchPoints[0] = new System.Drawing.Point(30, 30);
    notchPoints[1] = new System.Drawing.Point(30, 50);
    notchPoints[2] = new System.Drawing.Point(30, 80);
}

Inheritance Hierarchy

System.Object
   Vintasoft.Imaging.ImageProcessing.ProcessingCommandBase
      Vintasoft.Imaging.ImageProcessing.ProcessingCommandWithRegion
         Vintasoft.Imaging.ImageProcessing.Fft.FastFourierTransformCommand
            Vintasoft.Imaging.ImageProcessing.Fft.Filtering.Selective.SelectiveFilteringCommand

Requirements

Target Platforms: .NET 10; .NET 9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

See Also