Wie man Bildkorrekturfilter für Barcodes in C# verwendet

How to use Image Correction Filters

This article was translated from English: Does it need improvement?
Translated
View the article in English

Seien wir ehrlich. Nicht jedes Bild ist perfekt, und es ist auch einer der Hauptfaktoren, dass ein Barcode-Bild von IronBarcode nicht gelesen werden kann. Dies ist nicht ganz die Schuld des Benutzers. Anstatt das Bild erneut aufzunehmen oder andere Bildbearbeitungsprogramme zu verwenden, hat IronBarcode eine Funktion entwickelt, die es Benutzern ermöglicht, Filter programmatisch auf das Bild anzuwenden. Dies würde IronBarcode helfen, das Bild zu lesen und die Genauigkeit zu verbessern.

Lesen Sie weiter, um mehr über verfügbare Bildkorrekturfilter in IronBarcode, deren Auswirkungen auf Bilder und deren Anwendung zu erfahren.

als-Überschrift:2(Schnellstart: Schärfen- und Kontrastfilter zur Verbesserung der Barcodelesungen anwenden)

Wenden Sie in nur einem Schritt den SchärfenFilter und KontrastFilter von IronBarcode mithilfe der ImageFilterCollection in BarcodeReaderOptions an. So erhalten Sie eine verbesserte Barcode-Erkennung mit minimalem Setup und ohne externe Werkzeuge.

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. Copy and run this code snippet.

    BarcodeResults results = IronBarCode.BarcodeReader.Read("input.png", new IronBarCode.BarcodeReaderOptions { ImageFilters = new IronBarCode.ImageFilterCollection() { new IronBarCode.SharpenFilter(3.5f), new IronBarCode.ContrastFilter(2.0f) } });
  3. Deploy to test on your live environment

    Start using IronBarcode in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

Minimaler Workflow (5 Schritte)

  1. Laden Sie die C#-Bibliothek herunter, um Bildkorrekturfilter zu verwenden
  2. Erforschen Sie alle verfügbaren Bildkorrekturfilter
  3. Konfigurieren Sie jeden Bildkorrekturfilter mit benutzerdefinierten Werten
  4. Wenden Sie die Filter auf das fehlerhafte Bildbeispiel an
  5. Holen Sie sich den Barcode-Wert aus dem Bild mit Hilfe der Filter

Verwenden Sie Bildfilter, um das Beispiel zu verbessern

Um den Filter anzuwenden, instanziieren Sie die ImageFilterCollection-Klasse und erstellen Sie Instanzen jedes Filters einzeln. Weisen Sie dann das Objekt der ImageFilters-Eigenschaft des BarcodeReaderOptions-Objekts zu. Übergeben Sie das Optionsobjekt zusammen mit dem Beispielbild an die Read-Methode.

Verwenden wir das Bild unten als unser Beispielbild.

class="content-img-align-center">
class="center-image-wrapper"> Beispielbild

Auf den ersten Blick scheint das Bild ziemlich unscharf zu sein. Allerdings ist die Helligkeit akzeptabel, und die weißen und schwarzen Farben sind unterscheidbar. Deshalb müssen wir mindestens den SchärfenFilter und KontrastFilter anwenden, um die Barcode-Lesbarkeit zu verbessern. Siehe den Codeausschnitt unten, um die Filter auf das Bild anzuwenden, es zu lesen und in der Konsole anzuzeigen.

:path=/static-assets/barcode/content-code-examples/how-to/image-correction-apply-filter.cs
using IronBarCode;
using System;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection()
    {
        new SharpenFilter(3.5f),
        new ContrastFilter(2)
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);

// Write the result value to console
foreach (BarcodeResult result in results)
{
    Console.WriteLine(result.Text);
}
Imports IronBarCode
Imports System

Private options As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection() From {
		New SharpenFilter(3.5F),
		New ContrastFilter(2)
	}
}

' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)

' Write the result value to console
For Each result As BarcodeResult In results
	Console.WriteLine(result.Text)
Next result
$vbLabelText   $csharpLabel

Im obigen Codeausschnitt haben wir neben der Anwendung von Filtern und dem Lesen des Barcodes auch das gefilterte Bild auf die Festplatte exportiert. Der Vergleich zwischen dem Muster und den gefilterten Bildern ist unten zu sehen.

class="competitors-section__wrapper-even-1">
Beispielbild
Gefiltertes Beispiel

Bildkorrekturfilter erkunden

IronBarcode bietet mehrere Bildfilter, die speziell für die Bildkorrektur entwickelt wurden. Diese Filter können dazu beitragen, unvollkommene Barcode-Bilder zu lesen und die Lesegenauigkeit zu verbessern. Allerdings müssen Benutzer verstehen, wie diese Filter funktionieren, um einen geeigneten Filter auszuwählen und Leistungsprobleme zu vermeiden, die durch die Verwendung von zu vielen Filtern oder dem falschen Filter verursacht werden. Unten sind alle verfügbaren Filter aufgeführt:

  • AdaptiveThresholdFilter
  • BinaryThresholdFilter
  • BrightnessFilter
  • KontrastFilter
  • InvertFilter
  • SchärfenFilter
  • ErodeFilter
  • DilateFilter
  • HistogramEqualizationFilter
  • Unschärfefilter
    • GaussianBlurFilter
    • BilateralFilter
    • MedianBlurFilter

In welcher Reihenfolge diese Filter angewendet werden, basiert auf ihrer Platzierung innerhalb der ImageFilterCollection.

Adaptiver Schwellenwertfilter

AdaptiveThresholdFilter ist einer der in IronBarcode verfügbaren Filter, der die Bradley Adaptive Threshold-Technik auf das Bild anwendet, die automatisch den Schwellenwert zur Binarisierung eines Bildes bestimmt. Dieser Filter eignet sich ideal für Bilder mit ungleichmäßiger Beleuchtung und unterschiedlichen Hintergrundintensitäten.

:path=/static-assets/barcode/content-code-examples/how-to/image-correction-adaptive-threshold.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new AdaptiveThresholdFilter(0.9f),
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);

// Export file to disk
results.ExportFilterImagesToDisk("adaptiveThreshold_0.9.png");
Imports IronBarCode

Private options As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection(True) From {New AdaptiveThresholdFilter(0.9F)}
}

' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)

' Export file to disk
results.ExportFilterImagesToDisk("adaptiveThreshold_0.9.png")
$vbLabelText   $csharpLabel

Unten sind die Ergebnisse der Anwendung des Filters mit verschiedenen Werten aufgeführt.

class="competitors-section__wrapper-even-1">
Standardwert Adaptiver Schwellenwert
0.9 Adaptiver Schwellenwert

Der Konstruktor akzeptiert auch zusätzliche Parameter für die Konfiguration:

  • Upper: Oberer (weißer) Farbwert zur Schwellenwertsetzung.
  • Lower: Unterer (schwarzer) Farbwert zur Schwellenwertsetzung.
  • Threshold: Schwellenwertgrenze (0.0-1.0) zur Binarisierung.
  • Rectangle: Rechteckregion, auf die der Prozessor angewendet wird.

Wie auf dem obigen Ausgabebild zu sehen ist, wird das Bild binarisiert, um nur schwarze und weiße Farben zu haben. Es scheint jedoch nicht ideal für die Barcode-Lesung zu sein, da Filter in Kombination angewendet werden müssen. Benutzer müssen mit der Empfindlichkeit der Parameter experimentieren, um die besten Ergebnisse zu erzielen.

Binärschwellenwertfilter

Der BinaryThresholdFilter filtert ein Bild, indem er die Pixel bei einem gegebenen Schwellenwert aufteilt, wobei er verwendet wird, um die Luminanz einer Farbkomponente zu vergleichen. Ähnlich wie beim Adaptiven Schwellenwertfilter kann dieser Filter neues oder unerwünschtes Rauschen einführen, wenn er nicht richtig verwendet wird. Allerdings hat IronBarcode Standardwerte für die Eigenschaften des Filters festgelegt.

Ähnlich wie der Adaptivschwellenwertfilter akzeptiert der Binärschwellenwertfilter die gleichen zusätzlichen Konfigurationsparameter:

  • Upper: Oberer (weißer) Farbwert zur Schwellenwertsetzung.
  • Lower: Unterer (schwarzer) Farbwert zur Schwellenwertsetzung.
  • Threshold: Schwellenwertgrenze (0.0-1.0) zur Binarisierung.
  • Rectangle: Rechteckregion, auf die der Prozessor angewendet wird.
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-binary-threshold.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new BinaryThresholdFilter(0.9f)
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);

// Export file to disk
results.ExportFilterImagesToDisk("binaryThreshold_0.9.png");
Imports IronBarCode

Private options As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection(True) From {New BinaryThresholdFilter(0.9F)}
}

' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)

' Export file to disk
results.ExportFilterImagesToDisk("binaryThreshold_0.9.png")
$vbLabelText   $csharpLabel

Unten ist die Beispielausgabe der Anwendung von Filtern auf das Beispielbild aufgeführt.

class="competitors-section__wrapper-even-1">
Standardwert Binärschwellenwert
0.9 Binärschwellenwert

Beobachtet man das obige Ausgabebild, kann man sehen, dass das Muster in schwarze und weiße Farben binarisiert wurde. Es ist jedoch zu erkennen, dass dieser Filter für dieses Bild eindeutig nicht geeignet ist, da Barcode-Balken entfernt wurden und zusätzliches neues Rauschen eingeführt wurde.

Helligkeitsfilter

BrightnessFilter ist ein weiterer wesentlicher Filter in der Bildfilter-Sammlung von IronBarcode. Wie der Name schon sagt, passt dieser Filter die Helligkeit des Barcode-Bildes an. Die Eingabe in diesen Konstruktor kann die Menge der Helligkeit im Ausgabebild variieren. Der Standardwert ist 1, was das Bild unverändert lässt. Ein Wert von 0 erzeugt ein vollständig schwarzes Bild, während Werte über 1 das Bild heller machen.

:path=/static-assets/barcode/content-code-examples/how-to/image-correction-brightness.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new BrightnessFilter(1.5f),
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);

// Export file to disk
results.ExportFilterImagesToDisk("brightness_1.5.png");
Imports IronBarCode

Private options As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection(True) From {New BrightnessFilter(1.5F)}
}

' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)

' Export file to disk
results.ExportFilterImagesToDisk("brightness_1.5.png")
$vbLabelText   $csharpLabel

Unten ist das Ausgabebild nach dem Anwenden dieses Filters auf den Beispielinput gezeigt.

class="competitors-section__wrapper-even-1">
Standardwert Helligkeit
1.5 Helligkeit

Kontrastfilter

Der KontrastFilter wird verwendet, um den Kontrastgrad in einem Bild anzupassen. Bildkontrast bezieht sich auf den Unterschied in der Farbintensität zwischen verschiedenen Elementen in einem Bild. Die Erhöhung des Kontrasts verstärkt die Sichtbarkeit von Details, wodurch das Bild lebendig und auffällig wirkt, während die Reduzierung des Kontrasts das Bild weicher und dezenter erscheinen lässt.

Der Standardwert ist 1, was das Bild unverändert lässt. Ein Wert von 0 erzeugt ein vollständig graues Bild, während Werte über 1 den Bildkontrast erhöhen.

:path=/static-assets/barcode/content-code-examples/how-to/image-correction-contrast.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new ContrastFilter(1.5f),
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);

// Export file to disk
results.ExportFilterImagesToDisk("contrast_1.5.png");
Imports IronBarCode

Private options As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection(True) From {New ContrastFilter(1.5F)}
}

' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)

' Export file to disk
results.ExportFilterImagesToDisk("contrast_1.5.png")
$vbLabelText   $csharpLabel

Die Anwendung dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.

class="competitors-section__wrapper-even-1">
Standardwert Kontrast
1.5 Kontrast

Invertierungsfilter

Dieser Filter wird verwendet, um die Farben innerhalb eines Bildes zu invertieren, sodass die entgegengesetzten Farben, wie Weiß wird zu Schwarz und Schwarz wird zu Weiß. Er ist besonders nützlich, wenn Benutzer versuchen, ein Barcode-Bild mit einer Hintergrundfarbe zu lesen. Anders als der BinaryThresholdFilter, invertiert dieser Filter direkt die Farben, ohne dass eine Empfindlichkeit angegeben werden muss. Darüber hinaus kann dieser Filter mit einem CropRectangle verwendet werden, um den Ort im Bild festzulegen, der eine Farbinvertierung benötigt, anstatt die Farben für das gesamte Bild zu invertieren.

:path=/static-assets/barcode/content-code-examples/how-to/image-correction-invert.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new InvertFilter(),
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);

// Export file to disk
results.ExportFilterImagesToDisk("invert.png");
Imports IronBarCode

Private options As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection(True) From {New InvertFilter()}
}

' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)

' Export file to disk
results.ExportFilterImagesToDisk("invert.png")
$vbLabelText   $csharpLabel

Das Ausgabebild unten ist das Ergebnis der Anwendung dieses Filters auf das Beispielinput-Bild.

class="competitors-section__wrapper-even-1">
Originalbild
Invertiert

Schärffilter

Wir bieten auch einen Schärfenfilter in IronBarcode an. Dieser Filter verbessert die Schärfe eines Bildes und ist sehr nützlich bei unscharfen Bildern. Benutzer können diesen Filter manipulieren, um die Schärfe eines Bildes anzupassen, indem sie den Sigma-Wert bei der Instanziierung des Filterobjekts anpassen. Der Standardwert ist 3. Erhöhen Sie den Sigma-Wert, um die Bildschärfe zu erhöhen.

:path=/static-assets/barcode/content-code-examples/how-to/image-correction-sharpen.cs
using IronBarCode;
using System;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new SharpenFilter(0.5f),
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);

// Export file to disk
results.ExportFilterImagesToDisk("sharpen_0.5.png");
Imports IronBarCode
Imports System

Private options As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection(True) From {New SharpenFilter(0.5F)}
}

' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)

' Export file to disk
results.ExportFilterImagesToDisk("sharpen_0.5.png")
$vbLabelText   $csharpLabel

Image below is the sharpened version of the sample input image.

class="competitors-section__wrapper-even-1">
Standardwert Schärfen
0.5 Schärfen

Vergleicht man das obige Bild mit dem Originalbild, wirkt es schärfer und wird definitiv beim Lesen von Barcodes mit IronBarcode helfen. In den meisten Fällen wird SharpenFilter immer gemeinsam mit anderen Filtern in der ImageFilterCollection-Klasse angewendet.

Erode Filter

Der ErodeFilter entfernt kleines weißes Rauschen und verdickt Barcodelinien, indem er die Pixel nahe den Rändern der Formen entfernt. Dieser Filter ist am besten geeignet in Szenarien, in denen der Barcode-Hintergrund viele weiße Flecken hat oder wenn das Barcode-Bild selbst eine zu niedrige Auflösung oder Unschärfe hat, was zu einigen Balken führt, die verschmolzen sind. Der ErodeFilter hat den Effekt, die Balken dicker zu machen und gleichzeitig die weißen Flecken im Hintergrund zu entfernen.

Benutzer können auch die Wirkung der Erosion erhöhen, indem sie eine ganze Zahl als kernelSize für den Filter eingeben. Je größer die Kernelgröße, desto stärker ist der Effekt auf das Eingabebild. Beachten Sie auch, dass die kernelSize quadratisch ist und in diesem Beispiel wäre es ein 5x5-Kernel.

Als Beispiel verwenden wir den ErodeFilter mit einer größeren Kernelgröße, um die Effekte des Filters zu verdeutlichen.

:path=/static-assets/barcode/content-code-examples/how-to/image-correction-erode.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new ErodeFilter(5),
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);

// Export file to disk
results.ExportFilterImagesToDisk("erodeFilter.jpg");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel
class="competitors-section__wrapper-even-1">
Originalbild
Invertiert

Vergleicht man die obigen Eingabe- und Ausgabebilder, sieht man, dass einige Balken aufgrund der aggressiven Natur der Eingabe einer größeren Kernelgröße zum Filtern sichtbar dicker geworden sind. Allerdings haben die weißen Flecken im gesamten Bild abgenommen. Aufgrund der Natur des Erosionsfilters könnte die größere Kernelgröße zu Problemen beim Löschen dünner Balken führen, wenn er zu aggressiv angewendet wird, wie im obigen Bild gezeigt. Entwickler sollten testen und den gewünschten Effekt verfeinern, indem sie den Kernelgrößenwert ändern, den sie beim ErodeFilter eingeben.

Dilatationsfilter

Der DilateFilter funktioniert als Umkehrung des ErodeFilters, indem er helle Bereiche – typischerweise den Hintergrund – durch das Hinzufügen von Pixeln zu den Objektgrenzen erweitert. Obwohl dieser Filter nützlich ist, um beschädigte oder schwache Barcodes zu reparieren, indem er kleine Lücken füllt oder kontrastarme Bereiche verbessert, ist es wichtig zu berücksichtigen, dass sein Effekt auf Barcode-Balken von der Intuition abweicht. Da die Dilatation helle Räume vergrößert, verdünnt sie indirekt dunkle Elemente wie schwarze Barcodelinien (sofern es sich um einen weißen Hintergrund handelt). Dies macht den Filter besonders effektiv in Szenarien, in denen Barcode-Balken zu dick oder verschmolzen erscheinen, aber übermäßiger Gebrauch kann die Scan-Genauigkeit verringern, indem die Balken zu stark verengt werden.

Ähnlich wie oben können Benutzer den Effekt des Filters erhöhen, indem sie eine ganze Zahl als kernelSize für den Filter eingeben.

Für das folgende Beispiel verwenden wir eine größere Kernelgröße, um die Effekte des DilateFilter zu verdeutlichen.

:path=/static-assets/barcode/content-code-examples/how-to/image-correction-dilate.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new DilateFilter(5),
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);

// Export file to disk
results.ExportFilterImagesToDisk("dilateFilter.jpg");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel
class="competitors-section__wrapper-even-1">
Originalbild
Invertiert

Wie aus dem obigen Bild ersichtlich ist, kann der aggressive Einsatz des DilateFilter die Barcode-Struktur potenziell zerstören, eng beieinanderliegende Balken verschmelzen und Ruhebereiche in den Barcodes schaffen. Benutzer sollten die gewünschten Effekte auf dem Bild testen und verfeinern, indem sie den Kernelgrößenwert vergrößern oder verkleinern, je nach Eingabebild.

Histogrammausgleichsfilter

Der HistogramEqualizationFilter ist ein Filter, der den Bildkontrast verbessert, indem er die Pixelintensitäten neu verteilt, um die Klarheit zu verbessern. Er wird am häufigsten verwendet, wenn der Barcode entweder von geringem Kontrast ist, wie bei verblassten oder ausgewaschenen Bildern, oder bei Bildern mit ungleichmäßiger Beleuchtung, wie bei dunklen Schatten oder einem hellen Glanz. Durch die Analyse des Bildhistogramms, das die Verteilung der Pixelhelligkeit darstellt, werden die Pixelwerte durch die Erhöhung des Kontrasts durch Streckung des Intensitätsbereichs neu verteilt, wobei dunkle Pixel dunkler und helle Pixel heller werden.

:path=/static-assets/barcode/content-code-examples/how-to/image-correction-histogram-equalization-filter.cs
using IronBarCode;

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new HistogramEqualizationFilter(),
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);

// Export file to disk
results.ExportFilterImagesToDisk("histogramEqualizationFilter.jpg");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel
class="competitors-section__wrapper-even-1">
Originalbild
Invertiert

Wie aus dem obigen Bild zu sehen ist, sind die schwarzen Balken sichtbar dunkler und die Abstände sichtbar heller im Vergleich zum Originalbild.

Unschärfefilter

GaussianBlur Filter

Der GaussianBlurFilter wird verwendet, um einen Gaußschen Weichzeichner auf ein Bild anzuwenden. Dieser Filter wird häufig verwendet, um Rauschen in einem Bild zu reduzieren.

Der Filter funktioniert, indem benachbarte Pixelwerte im Bild mithilfe einer Gaußschen Funktion gemittelt werden. Die Methode beruht auf zwei anpassbaren Faktoren:

  • Kernel: eine Matrix, die zum Mitteln der Pixel verwendet wird.
  • Sigma: ein Wert, der die Intensität des Weichzeichners steuert.

Die Standard-Kernelgröße beträgt 3x3 Pixel, und der Standard-Sigma-Wert ist 3.0, was einen moderaten Weichzeichner produziert. Eine Erhöhung des Sigma-Wertes führt zu einem stärkeren Weichzeichnereffekt. Sie können auch das Kernel anpassen, um die Größe der Nachbarschaft zu steuern, die der Weichzeichner-Filter mittelt.

:path=/static-assets/barcode/content-code-examples/how-to/image-correction-gaussianblur.cs
using IronBarCode;

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new GaussianBlurFilter(3, 3, 3.0f),
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sharpen.webp", myOptionsExample);

// Export file to disk
results.ExportFilterImagesToDisk("gaussianBlur.png");
Imports IronBarCode

Private myOptionsExample As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection(True) From {New GaussianBlurFilter(3, 3, 3.0F)}
}

' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)

' Export file to disk
results.ExportFilterImagesToDisk("gaussianBlur.png")
$vbLabelText   $csharpLabel

Die Anwendung dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.

class="competitors-section__wrapper-even-1">
Standardwert Schärfen
GaussianBlur Bild

Bilaterale Filter

Der BilateralFilter wird verwendet, um Bilder zu glätten und gleichzeitig die Kanten zu erhalten. Im Gegensatz zu einfachen Weichzeichnertechniken, die alle Pixel einheitlich beeinflussen, berücksichtigt der Bilateral Filter sowohl Farbunterschiede als auch Pixelentfernung und macht ihn damit effektiv für kantenwahrende Glättung.

Die Methode beruht auf drei anpassbaren Faktoren:

  • NeighborhoodDiameter: Gibt den Durchmesser der Pixelnachbarschaft an, die für das Filtern verwendet wird. Ein größerer Durchmesser schließt mehr umliegende Pixel in das Filter ein. Der Standardwert beträgt 5.
  • SigmaColor: Dies repräsentiert den Farbeinfluss. Es bestimmt, wie stark der Farbunterschied zwischen benachbarten Pixeln das Filtern beeinflusst. Ein höherer Wert bedeutet, dass sich Pixel mit unterschiedlichen Farben gegenseitig mehr beeinflussen. Der Standardwert ist 75.0.
  • SigmaSpace: Dies repräsentiert den räumlichen Einfluss. Es bestimmt, wie stark der Abstand zwischen Pixeln das Filtern beeinflusst. Ein höherer Wert bedeutet, dass sich weiter entfernte Pixel gegenseitig mehr beeinflussen. Der Standardwert ist 75.0.
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-bilateral.cs
using IronBarCode;

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new BilateralFilter(5, 75, 75),
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sharpen.webp", myOptionsExample);

// Export file to disk
results.ExportFilterImagesToDisk("bilateral.png");
Imports IronBarCode

Private myOptionsExample As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection(True) From {New BilateralFilter(5, 75, 75)}
}

' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)

' Export file to disk
results.ExportFilterImagesToDisk("bilateral.png")
$vbLabelText   $csharpLabel

Das Anwenden dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.

class="competitors-section__wrapper-even-1">
Standardwert Schärfen
Bilateral Bild

MedianBlur Filter

Der MedianBlurFilter ist ein Filter, der zur Rauschunterdrückung in einem Bild verwendet wird, indem er den Wert jedes Pixels durch den Medianwert der umgebenden Pixel ersetzt. Dieser Filter ist besonders effektiv beim Erhalt von Kanten bei gleichzeitiger Rauschunterdrückung.

  • KernelSize: Definiert die Größe der Nachbarschaft um jedes Pixel, die zum Berechnen des Medians verwendet wird. The value must be an odd number greater than 0. Der Standardwert beträgt 5.
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-medianblur.cs
using IronBarCode;

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new MedianBlurFilter(5),
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sharpen.webp", myOptionsExample);

// Export file to disk
results.ExportFilterImagesToDisk("medianBlur.png");
Imports IronBarCode

Private myOptionsExample As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection(True) From {New MedianBlurFilter(5)}
}

' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)

' Export file to disk
results.ExportFilterImagesToDisk("medianBlur.png")
$vbLabelText   $csharpLabel

Das Anwenden dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.

class="competitors-section__wrapper-even-1">
Standardwert Schärfen
MedianBlur Bild

Iterationen speichern

Beim Anwenden mehrerer Filter auf den Barcode kann es schwierig sein, die Ausgabe nach jeder Filtermethode zu sehen. Diese Funktion ermöglicht das Speichern des gefilterten Bildes nach jeder Filteranwendung, in der Reihenfolge, in der sie verarbeitet werden. Um diese Funktion zu aktivieren, übergeben Sie zunächst true an den ImageFilterCollection-Konstruktor. Verwenden Sie dann die ExportFilterImagesToDisk-Methode, um den Pfad und den Namen für die Ausgabebilder anzugeben.

:path=/static-assets/barcode/content-code-examples/how-to/image-correction-save-iterations.cs
using IronBarCode;

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new SharpenFilter(3.5f),
        new AdaptiveThresholdFilter(0.5f),
        new ContrastFilter(2)
    },
};

// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.webp", myOptionsExample);

// Export file to disk
results.ExportFilterImagesToDisk("filteredImage.png");
Imports IronBarCode

Private myOptionsExample As New BarcodeReaderOptions() With {
	.ImageFilters = New ImageFilterCollection(True) From {
		New SharpenFilter(3.5F),
		New AdaptiveThresholdFilter(0.5F),
		New ContrastFilter(2)
	}
}

' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.webp", myOptionsExample)

' Export file to disk
results.ExportFilterImagesToDisk("filteredImage.png")
$vbLabelText   $csharpLabel

Die Filter werden in der Reihenfolge des Codes angewendet, und die Ausgabebilder spiegeln die Ergebnisse jeder Iteration wider:

  • Schärfen -> Nach Schärfen
  • Schärfen + Adaptiver Schwellenwert -> Nach Adaptivem Schwellenwert
  • Schärfen + Adaptiver Schwellenwert + Kontrast -> Nach Kontrast
Beispielbild
1.5 Kontrast
class="competitors-section__wrapper-even-1">
Beispielbild
1.5 Kontrast

Neben den ImageFilters-Eigenschaften können Benutzer auch andere Eigenschaften zu BarcodeReaderOptions hinzufügen, um ein genaueres Lesen zu ermöglichen; siehe diesen Artikel für weitere Informationen.

Häufig gestellte Fragen

Wie kann ich die Lesbarkeit von Barcodes in .NET C# verbessern?

Sie können die Lesbarkeit von Barcodes in .NET C# verbessern, indem Sie Bildkorrekturfilter mit IronBarcode anwenden. Diese Filter wie AdaptiveThresholdFilter und BrightnessFilter können Bildfehler beheben und die Genauigkeit des Barcode-Scannens verbessern.

Was sind die Schritte, um Bildkorrekturfilter programmgesteuert anzuwenden?

Um Bildkorrekturfilter programmgesteuert mit IronBarcode anzuwenden, müssen Sie die Bibliothek herunterladen, die ImageFilterCollection-Klasse instanziieren, Ihre gewünschten Filter konfigurieren und sie durch die BarcodeReaderOptions anwenden, bevor Sie das Barcode-Bild verarbeiten.

Welche Filter sind verfügbar, um die Bildqualität in IronBarcode zu verbessern?

IronBarcode bietet verschiedene Filter zur Verbesserung der Bildqualität, einschließlich AdaptiveThresholdFilter, BinaryThresholdFilter, BrightnessFilter, ContrastFilter, InvertFilter, SharpenFilter und mehrere Weichzeichnungsfilter wie GaussianBlurFilter und BilateralFilter.

Wie konfiguriere ich den Adaptive Threshold Filter in C#?

In IronBarcode kann der AdaptiveThresholdFilter mit der Bradley Adaptive Threshold-Technik konfiguriert werden. Dieser Filter bestimmt automatisch die Schwelle für die Binarisierung eines Bildes, besonders nützlich bei ungleichmäßigen Lichtverhältnissen.

Ist es möglich, Bilder bei jedem Filterschritt zu speichern?

Ja, IronBarcode erlaubt das Speichern von Bildern bei jedem Filterschritt, indem die Iterationsspeicherung in der ImageFilterCollection aktiviert und die Methode ExportFilterImagesToDisk verwendet wird.

Welche Überlegungen sind beim Anwenden mehrerer Filter wichtig?

Beim Anwenden mehrerer Filter in IronBarcode ist es wichtig, nicht zu viele oder ungeeignete Filter zu verwenden, da dies Rauschen einführen oder die Leistung beeinträchtigen kann. Das Verständnis der Funktion jedes Filters hilft beim Anwenden nur der notwendigen für optimale Ergebnisse.

Wie beeinflusst der Sharpen Filter ein Bild?

Der SharpenFilter in IronBarcode verbessert die Bildschärfe durch Anpassung der Schärfe. Er kann mit einem Sigma-Wert konfiguriert werden und ist nützlich zur Verbesserung der Kantendefinition in Barcode-Bildern.

Welche Rolle spielt der Invert Filter bei der Barcode-Verarbeitung?

Der InvertFilter in IronBarcode kehrt die Farben des Bildes um und macht Weiß zu Schwarz und Schwarz zu Weiß. Dies ist besonders nützlich für Barcodes mit nicht-standardmäßigen Farbschemen oder Hintergründen.

Wie verbessern Gaussian- und Bilateral-Blur-Filter die Bildverarbeitung?

In IronBarcode reduziert der GaussianBlurFilter Bildrauschen durch Anwendung eines Gaussian Blur, während der BilateralFilter Bilder glättet und dabei die Kanten bewahrt, indem sowohl Farbdifferenzen als auch Pixeldistanzen berücksichtigt werden.

Hairil Hasyimi Bin Omar
Software Ingenieur
Wie alle großen Ingenieure ist Hairil ein leidenschaftlicher Lerner. Er verfeinert sein Wissen in C#, Python und Java und setzt dieses Wissen ein, um Teammitgliedern bei Iron Software Mehrwert zu bieten. HAiril trat dem Iron Software-Team von der Universiti Teknologi MARA in Malaysia bei, wo er mit einem Bachelor ...
Weiterlesen
Bereit anzufangen?
Nuget Downloads 1,935,276 | Version: 2025.11 gerade veröffentlicht