Wie man Bildkorrekturfilter für Barcodes in C# verwendet

Verwendung von C# Bildkorrekturfiltern zur Verbesserung der Dekodierung von Barcodes

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

IronBarcode bietet integrierte Bildkorrekturfilter wie SharpenFilter und ContrastFilter, die unscharfe oder unvollkommene Barcode-Bilder programmgesteuert verbessern und so die Lesegenauigkeit erhöhen, ohne dass eine externe Bildbearbeitungssoftware oder eine erneute Erfassung der Bilder erforderlich ist.

Nicht jedes Bild ist perfekt, und schlechte Bildqualität ist einer der Hauptfaktoren, die das erfolgreiche Lesen von Barcodes in IronBarcode verhindern. IronBarcode bietet integrierte Filter, die die Bildqualität programmatisch verbessern, anstatt Bilder neu zu erfassen oder externe Bildverbesserungssoftware zu verwenden. Diese Filter helfen IronBarcode, schwierige Bilder zu lesen und die Gesamtgenauigkeit zu verbessern.

Lesen Sie weiter, um mehr über verfügbare Bildkorrekturfilter in IronBarcode, deren Auswirkungen auf Bilder und deren Anwendung zu erfahren. Weitere umfassende Techniken zum Lesen von Barcodes finden Sie in unserem Lesen von Barcodes Tutorial.

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

Wenden Sie in nur einem Schritt den SharpenFilter und den ContrastFilter von IronBarcode an, indem Sie die ImageFilterCollection in BarcodeReaderOptions verwenden. Dies verbessert das Scannen von Barcodes bei minimaler Einrichtung und ohne Bedarf an externen Tools.

Nuget IconLegen Sie jetzt mit NuGet los, um PDFs zu erstellen:

  1. Installieren Sie IronBarcode mit dem NuGet-Paketmanager.

    PM > Install-Package BarCode

  2. Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.

    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. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute mit der Nutzung von IronBarcode in Ihrem Projekt – mit einer kostenlosen Testversion.
    arrow pointer

Wie wende ich Bildfilter an, um das Lesen von Barcodes zu verbessern?

Um Filter anzuwenden, instanziieren Sie die Klasse ImageFilterCollection und erstellen Instanzen der einzelnen Filter. Weisen Sie dann das Objekt der ImageFilters-Eigenschaft des BarcodeReaderOptions-Objekts zu. Übergeben Sie das Optionsobjekt zusammen mit dem Beispielbild an die Read-Methode. Erweiterte Installationsoptionen finden Sie in unserem Leitfaden für NuGet-Pakete.

Verwenden Sie das unten stehende Bild als Beispielbild.

Blurred barcode with number 4900203187590 showing poor image quality before filtering enhancement

Das Bild erscheint recht unscharf. Allerdings ist die Helligkeit akzeptabel, und die weißen und schwarzen Farben sind unterscheidbar. Wenden Sie daher mindestens den SharpenFilter und den ContrastFilter an, um die Lesbarkeit von Barcodes zu verbessern. Im folgenden Codeschnipsel können Sie Filter auf das Bild anwenden, es lesen und die Ergebnisse auf der Konsole anzeigen.

: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);
}
$vbLabelText   $csharpLabel

Das obige Codeschnipsel wendet Filter an, liest den Strichcode und exportiert das gefilterte Bild auf die Festplatte. Der Vergleich zwischen dem Beispiel und den gefilterten Bildern ist unten dargestellt.

Blurry barcode image with number 4902030187590 demonstrating poor image quality
Barcode with improved readability after applying image filters, showing clear vertical lines and number 4902030187590

Welche Bildkorrekturfilter sind in IronBarcode verfügbar?

IronBarcode bietet mehrere Bildfilter, die speziell für die Bildkorrektur entwickelt wurden. Diese Filter helfen beim Lesen unvollkommener Barcode-Bilder und verbessern die Lesegenauigkeit. Sie müssen jedoch verstehen, wie diese Filter funktionieren, um geeignete Filter auszuwählen und Leistungsprobleme zu vermeiden, die durch die Verwendung von zu vielen oder falschen Filtern entstehen. Verfügbare Filter sind:

  • AdaptiveThresholdFilter
  • BinaryThresholdFilter
  • HelligkeitsFilter
  • KontrastFilter
  • InvertFilter
  • SchärfeFilter
  • ErodeFilter
  • DilateFilter
  • HistogramEqualizationFilter
  • Unschärfefilter
    • GaussianBlurFilter
    • BilateralerFilter
    • MedianBlurFilter

Die Reihenfolge, in der die Filter angewendet werden, richtet sich nach ihrer Platzierung innerhalb der ImageFilterCollection. Eine ausführliche API-Dokumentation zu diesen Filtern finden Sie in unserer API-Referenz.

Wie funktioniert der adaptive Schwellenwertfilter?

AdaptiveThresholdFilter ist ein in IronBarcode verfügbarer Filter, der die Bradley Adaptive Threshold Technik auf das Bild anwendet, die automatisch die Schwelle für die 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");
$vbLabelText   $csharpLabel

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

Vertical lines showing different adaptive threshold filter outputs with solid and dashed patterns
Low-quality barcode image showing UPC number 902030187590 with significant visual distortion

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

  • Ober: Obere (weiße) Farbe für den Schwellenwert.
  • Niedriger: Untere (schwarze) Farbe für Schwellenwerte.
  • Schwellenwert: Schwellenwert (0,0-1,0) für die Binarisierung.
  • Rechteck: Rechteckiger Bereich, auf den der Prozessor angewendet werden soll.

Wie im obigen Ausgabebild zu sehen ist, wurde das Bild binarisiert, um nur die Farben Schwarz und Weiß zu erhalten. Obwohl es für das Lesen von Barcodes noch nicht ideal erscheint, müssen Filter in Kombinationen verwendet werden. Experimentieren Sie mit der Empfindlichkeit der Parameter, um die besten Ergebnisse zu erzielen.

Wie funktioniert der binäre Schwellenwertfilter?

Der BinaryThresholdFilter filtert ein Bild, indem er die Pixel am angegebenen Schwellenwert aufteilt und dabei die Leuchtdichte einer Farbkomponente vergleicht. Ähnlich wie der AdaptiveThresholdFilter kann dieser Filter neues oder unerwünschtes Rauschen einbringen, wenn er nicht korrekt verwendet wird. IronBarcode hat jedoch Standardwerte für die Filtereigenschaften festgelegt.

Ähnlich wie der AdaptiveThresholdFilter, akzeptiert der BinaryThresholdFilter die gleichen zusätzlichen Parameter für die Konfiguration:

  • Ober: Obere (weiße) Farbe für den Schwellenwert.
  • Niedriger: Untere (schwarze) Farbe für Schwellenwerte.
  • Schwellenwert: Schwellenwert (0,0-1,0) für die Binarisierung.
  • Rechteck: Rechteckiger Bereich, auf den der Prozessor angewendet werden soll.
: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");
$vbLabelText   $csharpLabel

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

Three examples of binary threshold filter outputs showing sparse, dotted, and dense vertical line patterns
Barcode image processed with 0.9 binary threshold filter showing black and white contrast

Im obigen Ausgabebild wurde das Beispiel in schwarz-weiße Farbe binarisiert. Dieser Filter ist jedoch eindeutig nicht für dieses Bild geeignet, da Striche aus dem Barcode entfernt und neues Rauschen eingeführt wurde. Für den Umgang mit schwierigen Barcode-Szenarien lesen Sie bitte unseren Leitfaden zur Fehlerbehebung bei nicht erkannten Barcodes.

Wie stelle ich die Bildhelligkeit ein, um Barcodes besser lesen zu können?

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 für diesen Konstruktor variiert den Anteil der Helligkeit im Ausgabebild. Der Standardwert ist 1, was das Bild unverändert lässt. Ein Wert von 0 erzeugt ein komplett 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");
$vbLabelText   $csharpLabel

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

Blurry UPC barcode sample showing default brightness level before filter enhancement
Blurry barcode with product number 4902030187590, demonstrating low brightness or poor image quality

Wie verwende ich den Kontrastfilter zur Verbesserung von Barcode-Bildern?

Der ContrastFilter passt den Kontrast in einem Bild an. 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. Weitere Einzelheiten zur Anpassung von Barcodes finden Sie in unserem Leitfaden zur Anpassung von Barcodestilen.

Der Standardwert ist 1, was das Bild unverändert lässt. Ein Wert von 0 erzeugt ein komplett 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");
$vbLabelText   $csharpLabel

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

Blurry barcode with number 4902030187590 demonstrating default contrast filter settings
Blurry barcode with number 4902030187590 demonstrating low contrast image quality

Wann sollte ich den Invert-Filter verwenden?

Dieser Filter kehrt die Farben innerhalb eines Bildes um, indem er entgegengesetzte Farben erzeugt, z. B. wird Weiß zu Schwarz und Schwarz zu Weiß. Er ist besonders nützlich, wenn ein Barcode-Bild mit einer Hintergrundfarbe gelesen wird. Anders als der BinaryThresholdFilter invertiert dieser Filter die Farben direkt, ohne dass die Empfindlichkeit angegeben werden muss. Außerdem kann dieser Filter mit einem CropRectangle verwendet werden, um die Stelle im Bild festzulegen, an der die Farbe invertiert werden soll, anstatt die Farben für das gesamte Bild zu invertieren. Erfahren Sie mehr über die Angabe von Ausschnittbereichen in unserem Ausschnittbereich-Tutorial.

: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");
$vbLabelText   $csharpLabel

Das unten stehende Ausgabebild ist das Ergebnis der Anwendung dieses Filters auf das Beispiel-Eingabebild.

Blurry UPC barcode showing number 480203187590 - original image before invert filter application
Blurry inverted barcode showing white bars on dark background with number sequence 4902030187590

Wie korrigiere ich verschwommene Barcode-Bilder mit dem Scharfzeichnungsfilter?

IronBarcode bietet einen Schärfungsfilter. Dieser Filter verbessert die Schärfe eines Bildes und ist sehr nützlich bei unscharfen Bildern. Manipulieren Sie diesen Filter, um die Schärfe eines Bildes anzupassen, indem Sie den Sigma-Wert beim Instanziieren des Filterobjekts anpassen. Der Standardwert ist 3. Erhöhen Sie den Sigma-Wert, um die Bildschärfe zu erhöhen. Weitere Optionen zur Leistungsoptimierung finden Sie in unserem Leitfaden zu Lesegeschwindigkeitsoptionen.

: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");
$vbLabelText   $csharpLabel

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

Blurry barcode image demonstrating unsharpened quality before applying sharpen filter
Blurred barcode example showing effects of image quality degradation

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

Wozu wird der Erode-Filter verwendet?

Der ErodeFilter entfernt winziges weißes Rauschen und verdichtet Strichcodes, indem er Pixel in der Nähe der Kanten von Formen entfernt. Dieser Filter eignet sich am besten für Szenarien, in denen der Barcode-Hintergrund viele weiße Flecken aufweist oder wenn das Barcode-Bild zu niedrig aufgelöst oder unscharf ist, was zu verschmolzenen Strichen führt. Der ErodeFilter macht Balken dicker und entfernt weiße Flecken im Hintergrund. Weitere Informationen zum Umgang mit unvollständigen Bildern finden Sie in unserem Beispiel für unvollständige Barcodes.

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

Verwenden Sie als Beispiel den ErodeFilter mit einer größeren Kernelgröße, um die Auswirkungen des Filters zu zeigen.

: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");
$vbLabelText   $csharpLabel
Blurry barcode showing number 4002030187590 - example for erode filter demonstration
Blurred barcode showing vertical black and white stripes with numerical code

Vergleicht man die obigen Eingabe- und Ausgabebilder, so sind einige Balken sichtbar dicker, was auf die aggressivere Art der Eingabe einer größeren Kernelgröße zum Filtern zurückzuführen ist. Allerdings haben die weißen Flecken im gesamten Bild abgenommen. Es liegt in der Natur des Erosionsfilters, dass bei zu aggressiver Anwendung dünne Balken gelöscht werden können, je größer der Kernel ist, wie in der Abbildung oben gezeigt. Testen und verfeinern Sie die Wirkung, indem Sie den Wert für die Kernelgröße ändern, der in den ErodeFilter eingegeben wird.

Wie hilft der Dilate-Filter beim Lesen von Barcodes?

Der DilateFilter funktioniert als Umkehrung des ErodeFilters, indem er helle Bereiche – typischerweise den Hintergrund – durch das Hinzufügen von Pixeln zu den Objektgrenzen erweitert. Dieser Filter repariert beschädigte oder schwache Barcodes, indem er kleine Lücken auffüllt oder kontrastarme Bereiche verbessert. Beachten Sie jedoch, dass seine Wirkung auf Barcode-Balken von der Intuition abweicht. Da die Dilatation helle Bereiche vergrößert, dünnt sie indirekt dunkle Elemente aus, wie z. B. schwarze Striche in Barcodes (bei weißem Hintergrund). 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.

Erhöhen Sie wie oben die Wirkung des Filters, indem Sie eine ganze Zahl eingeben, die die kernelSize für den Filter darstellt.

Verwenden Sie für das folgende Beispiel eine größere Kernelgröße, um die Auswirkungen des DilateFilter zu veranschaulichen.

: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");
$vbLabelText   $csharpLabel
Blurry barcode image showing number 4902030187590 - example for dilate filter processing
Blurred barcode with numerical sequence below vertical bars

Wie in der obigen Abbildung zu sehen ist, kann die aggressive Verwendung von DilateFilter die Barcodestruktur zerstören, indem eng beieinander liegende Balken zusammengeführt werden und Ruhezonen in den Barcodes entstehen. Testen und verfeinern Sie die Auswirkungen auf das Bild, indem Sie den Wert für die Kernelgröße je nach Eingabebild größer oder kleiner wählen.

Wann sollte ich den HistogramEqualization Filter verwenden?

Der HistogramEqualizationFilter verbessert den Bildkontrast durch Umverteilung der Pixelintensitäten, um die Klarheit zu verbessern. Es wird am häufigsten verwendet, wenn der Barcode entweder einen geringen Kontrast aufweist, wie z. B. verblasste oder verwaschene Bilder, oder Bilder mit ungleichmäßiger Beleuchtung, wie z. B. dunkle Schatten oder helles Blendlicht. 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");
$vbLabelText   $csharpLabel
Blurry barcode with number 4902030187590 used as test image for histogram equalization filter
Barcode with vertical black and white stripes showing number 4902030187590

Wie im obigen Bild zu sehen ist, sind die schwarzen Balken deutlich dunkler und die Leerzeichen deutlich heller als im Originalbild.

Welche Unschärfefilter können bei der Rauschunterdrückung von Barcodes helfen?

Wie reduziert der GaussianBlur-Filter das Bildrauschen?

Der GaussianBlurFilter wendet einen Gaußschen Weichzeichner auf ein Bild an. Dieser Filter reduziert in der Regel das Rauschen in einem Bild. Eine umfassende Anleitung zum Umgang mit unvollkommenen Barcodes finden Sie in unserem Tutorial zur Korrektur der Bildausrichtung.

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 der Unschärfe steuert.

Die Standard-Kernel-Größe ist 3x3 Pixel, und der Standard-Sigma-Wert ist 3.0, was eine moderate Unschärfe erzeugt. Eine Erhöhung des Sigma-Wertes führt zu einem stärkeren Unschärfeeffekt. Sie können auch den Kernel anpassen, um die Größe des Bereichs zu steuern, den der Weichzeichnungsfilter im Durchschnitt anzeigt.

: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");
$vbLabelText   $csharpLabel

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

Blurry barcode with number 4902030187590 demonstrating poor image quality
Barcode image with Gaussian blur filter applied, showing blurred vertical lines and distorted numbers

Wann sollte ich den bilateralen Filter verwenden?

Der BilateralFilter glättet Bilder unter Beibehaltung der Kanten. Im Gegensatz zu einfachen Unschärfetechniken, die alle Pixel gleichmäßig beeinflussen, berücksichtigt der bilaterale Filter sowohl Farbunterschiede als auch den Pixelabstand, wodurch er für eine kantenerhaltende Glättung geeignet ist.

Die Methode beruht auf drei anpassbaren Faktoren:

  • NeighborhoodDiameter: Durchmesser der Pixel-Nachbarschaft (Standard: 5).
  • SigmaColor: Farbeinfluss, der die Auswirkung der Farbdifferenz bestimmt (Standard: 75.0).
  • SigmaSpace: Räumlicher Einfluss, der die Auswirkung der Entfernung bestimmt (Standard: 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");
$vbLabelText   $csharpLabel

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

Blurred barcode demonstrating poor image quality with vertical lines and numbers 4902030187590
Blurred barcode with numbers 4902030187590 demonstrating poor image quality

Was macht den MedianBlur-Filter zur Rauschunterdrückung anders?

Der MedianBlurFilter reduziert das Rauschen in einem Bild, indem er den Wert eines jeden Pixels durch den Medianwert der umliegenden Pixel ersetzt. Dieser Filter zeichnet sich besonders durch die Erhaltung von Kanten und die Entfernung von Rauschen aus. Wenn Sie mehr über die Einstellungen zum Lesen von Barcodes erfahren möchten, besuchen Sie unseren Leitfaden zu den Einstellungen von Barcode-Lesegeräten.

  • KernelSize: Größe der Nachbarschaft für die Medianberechnung (muss ungerade sein, Standard: 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");
$vbLabelText   $csharpLabel

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

Blurry barcode example showing poor image quality with digital artifacts and reduced readability
Barcode with median blur filter applied showing blurred vertical lines and number 4902030187590

Wie kann ich gefilterte Bilder bei jedem Verarbeitungsschritt speichern?

Wenn mehrere Filter auf den Barcode angewendet werden, 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 Methode ExportFilterImagesToDisk, um den Pfad und den Namen für die Ausgabebilder anzugeben. Weitere Beispiele für das Speichern von Barcodes finden Sie in unserem Beispiel für die Umwandlung von Barcodes in Bilder.

: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");
$vbLabelText   $csharpLabel

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

  • Schleifen -> Nach Schleifen
  • Schärfen + AdaptiveThreshold -> Nach AdaptiveThreshold
  • Schärfen + AdaptiveThreshold + Kontrast -> Nach Kontrast
Blurry barcode with number 4902030187590
Blurry UPC barcode showing number 4902030187590
Degraded barcode example showing poor image quality with number 9020301875905
Heavily pixelated barcode with UPC number 902030187590

Fügen Sie neben den ImageFilters-Eigenschaften weitere Eigenschaften zu BarcodeReaderOptions hinzu, um die Lesbarkeit zu verbessern; siehe diesen Artikel für weitere Informationen.

Häufig gestellte Fragen

Was sind Bildkorrekturfilter und warum werden sie zum Lesen von Barcodes benötigt?

Bildkorrekturfilter in IronBarcode sind integrierte Tools, die unscharfe oder unvollkommene Barcode-Bilder programmatisch verbessern. Sie sind unverzichtbar, da eine schlechte Bildqualität einer der Hauptfaktoren ist, der das erfolgreiche Lesen von Barcodes verhindert. IronBarcode bietet Filter wie SharpenFilter und ContrastFilter, die die Lesegenauigkeit verbessern, ohne dass eine externe Bildbearbeitungssoftware erforderlich ist oder Bilder neu erfasst werden müssen.

Wie wende ich Bildkorrekturfilter an, um das Scannen von Barcodes zu verbessern?

Um Filter in IronBarcode anzuwenden, erstellen Sie eine ImageFilterCollection-Instanz und fügen Sie ihr einzelne Filterinstanzen hinzu. Weisen Sie diese Sammlung dann der ImageFilters-Eigenschaft von BarcodeReaderOptions zu und übergeben Sie sie an die Read-Methode. Zum Beispiel: new BarcodeReaderOptions { ImageFilters = new ImageFilterCollection() { new SharpenFilter(3.5f), new ContrastFilter(2.0f) } }.

Welche Bildfilter werden für unscharfe Barcode-Bilder empfohlen?

Bei unscharfen Barcode-Bildern empfiehlt IronBarcode mindestens den SharpenFilter und den ContrastFilter zu verwenden. Der SharpenFilter verbessert die Kantenschärfe in unscharfen Bildern, während der ContrastFilter die Unterscheidung zwischen hellen und dunklen Bereichen verbessert. Diese Filter arbeiten zusammen, um Barcodes ohne externe Bildbearbeitung besser lesbar zu machen.

Kann ich die Stärke der Bildkorrekturfilter anpassen?

Ja, IronBarcode erlaubt es Ihnen, jeden Filter mit eigenen Werten zu konfigurieren. Beispielsweise akzeptiert SharpenFilter einen Float-Parameter (z. B. 3.5f), um die Schärfungsintensität zu steuern, und ContrastFilter akzeptiert einen Parameter (z. B. 2.0f), um das Kontrastniveau anzupassen. Durch diese Anpassung lässt sich die Wirksamkeit des Filters für unterschiedliche Bildbedingungen optimieren.

Benötige ich externe Bildbearbeitungstools, um Barcode-Bilder zu verbessern?

Nein, IronBarcode macht externe Bildbearbeitungstools überflüssig, indem es integrierte Bildkorrekturfilter bereitstellt. Diese programmatischen Filter wie SharpenFilter und ContrastFilter können die Bildqualität direkt in Ihrer .NET-Anwendung verbessern, was Zeit spart und Abhängigkeiten von Drittanbieter-Software vermeidet.

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, um Iron Software-Teammitgliedern Mehrwert zu bieten. Hairil kam von der Universiti Teknologi MARA in Malaysia, wo er seinen Bachelor in Chemie- und Verfahrenstechnik abschloss.
Bereit anzufangen?
Nuget Downloads 2,035,202 | Version: 2025.12 gerade veröffentlicht