Class BilateralFilter
A filter to apply bilateral smoothing to an image.
Inheritance
Implements
Namespace: IronBarCode
Assembly: IronBarCode.dll
Syntax
public class BilateralFilter : Object, IImageFilter
Smoothing noise out of a barcode image without softening the bar edges runs through BilateralFilter. A plain blur averages every pixel with its neighbors and blurs the edges along with the grain, but a bilateral pass weighs both color difference and pixel distance, so it flattens speckle and grain while keeping the sharp light-to-dark transitions a decoder relies on. This is the filter for a grainy photo or a noisy scan where edge fidelity has to survive the cleanup.
The filter implements IImageFilter and goes into the ImageFilterCollection on BarcodeReaderOptions.ImageFilters, applied in collection order before the read. A developer constructs it, adds it to the collection, and passes the options to BarcodeReader.Read. The parameterless constructor uses tuned defaults; the three-argument overload exposes NeighborhoodDiameter for the pixel-neighborhood diameter (default 5), SigmaColor for how strongly color difference is weighed (default 75.0), and SigmaSpace for how strongly distance is weighed (default 75.0). Raise the sigmas for heavier smoothing when the noise is severe.
using IronBarCode;
var options = new BarcodeReaderOptions
{
ImageFilters = new ImageFilterCollection { new BilateralFilter() }
};
var results = BarcodeReader.Read("grainy.png", options);The image correction how-to compares the bilateral and Gaussian passes on a sample, and the imperfect barcode example reads a degraded image through a pipeline.
Constructors
BilateralFilter()
Initializes a new instance of the BilateralFilter class.
Declaration
public BilateralFilter()
BilateralFilter(Int32, Single, Single)
Initializes a new instance of the BilateralFilter class.
Declaration
public BilateralFilter(int neighborhoodDiameter, float sigmaColor, float sigmaSpace)
Parameters
| Type | Name | Description |
|---|---|---|
| System.Int32 | neighborhoodDiameter | Diameter of the pixel neighborhood used for filtering. |
| System.Single | sigmaColor | 'Sigma' value representing the "weight" of how pixels will influence each other, based on color. |
| System.Single | sigmaSpace | 'Sigma' value representing the "weight" of how pixels will influence each other, based on distance. |
Properties
NeighborhoodDiameter
Diameter of the pixel neighborhood used for filtering. Default = 5.
Declaration
public int NeighborhoodDiameter { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Int32 |
SigmaColor
'Sigma' value representing the "weight" of how pixels will influence each other, based on color. Default = 75.0.
Declaration
public float SigmaColor { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Single |
SigmaSpace
'Sigma' value representing the "weight" of how pixels will influence each other, based on distance. Default = 75.0.
Declaration
public float SigmaSpace { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Single |