Verwendung von Bildkorrekturfiltern

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

von Hairil Hasyimi Bin Omar

Seien wir ehrlich. Nicht jedes Bild ist perfekt, und es ist auch einer der Hauptfaktoren, dass ein Barcodebild von IronBarcode nicht gelesen werden kann. Das ist nicht allein die Schuld des Nutzers. Anstatt sich die Mühe zu machen, das Bild neu zu erfassen oder eine andere Software zur Bildverbesserung zu verwenden, hat IronBarcode eine Funktion entwickelt, mit der der Benutzer programmatisch Filter auf das Bild anwenden kann. Dies würde IronBarcode helfen, das Bild zu lesen und die Genauigkeit zu verbessern.

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

C# NuGet-Bibliothek für

Installieren mit NuGet

Install-Package BarCode
oder
Java PDF JAR

Herunterladen DLL

DLL herunterladen

Manuelle Installation in Ihr Projekt

C# NuGet-Bibliothek für

Installieren mit NuGet

Install-Package BarCode
oder
Java PDF JAR

Herunterladen DLL

DLL herunterladen

Manuelle Installation in Ihr Projekt

Fangen Sie noch heute an, IronPDF in Ihrem Projekt mit einer kostenlosen Testversion zu verwenden.

Erster Schritt:
green arrow pointer

Schau dir an IronBarcode an Nuget Für schnelle Installation und Bereitstellung. Mit über 8 Millionen Downloads verwandelt es mit C#.

C# NuGet-Bibliothek für nuget.org/packages/BarCode/
Install-Package BarCode

Erwägen Sie die Installation der IronBarcode DLL direkt. Laden Sie es herunter und installieren Sie es manuell für Ihr Projekt oder die GAC-Form: IronBarCode.zip

Manuelle Installation in Ihr Projekt

DLL herunterladen

Verwendung von Bildfiltern zur Verbesserung der Lesbarkeit Beispiel

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

Verwenden wir das unten stehende Bild als Beispielbild.

Beispielbild

Auf den ersten Blick scheint das Bild ziemlich unscharf zu sein. Die Helligkeit ist jedoch akzeptabel, und die Farben Weiß und Schwarz sind gut unterscheidbar. Daher müssen wir mindestens den SharpenFilter und den ContrastFilter anwenden, um die Lesbarkeit des Strichcodes zu verbessern. Im folgenden Codeschnipsel können Sie die Filter auf das Bild anwenden, es lesen und in 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);

// Export file to disk
results.ExportFilterImagesToDisk("filteredSample.png");

// 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)

' Export file to disk
results.ExportFilterImagesToDisk("filteredSample.png")

' Write the result value to console
For Each result As BarcodeResult In results
	Console.WriteLine(result.Text)
Next result
VB   C#

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

Beispielbild
Gefilterte Sonde

Bildkorrekturfilter erkunden

IronBarcode bietet mehrere Bildfilter, die speziell für die Bildkorrektur entwickelt wurden. Diese Filter können beim Lesen unvollkommener Barcode-Bilder helfen und die Lesegenauigkeit verbessern. Die Benutzer müssen jedoch verstehen, wie diese Filter funktionieren, um geeigneten Filter auswählen und Leistungsprobleme durch zu viel oder falschen Filter vermeiden. Nachfolgend finden Sie alle verfügbaren Filter:

  • AdaptiveThresholdFilter
  • BinaryThresholdFilter
  • HelligkeitsFilter
  • ContrastFilter
  • InvertFilter
  • SharpenFilter

    Die Reihenfolge, in der diese Filter angewendet werden, richtet sich nach ihrer Platzierung innerhalb der ImageFilterCollection.

Adaptiver Schwellenwertfilter

der AdaptiveThresholdFilter** ist einer der in IronBarcode verfügbaren Filter, der Folgendes anwendetBradley Adaptiver Schwellenwert technik auf das Bild, die automatisch den Schwellenwert für die Binarisierung eines Bildes bestimmt. Dieser Filter ist ideal für Bilder mit ungleichmäßiger Beleuchtung und unterschiedlicher Hintergrundintensität.

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

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

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

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

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

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

' Export file to disk
results.ExportFilterImagesToDisk("adaptiveThreshold_0.9.png")
VB   C#

Nachfolgend sind die Ergebnisse der Anwendung des Filters mit verschiedenen Werten dargestellt.

Standardmäßiger adaptiver Schwellenwert
0.9 Adaptiver Schwellenwert

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

  • Oben: Obere(weiß) farbe für die Schwellenwertbildung.
  • Tiefer: Unter(schwarz) farbe für die Schwellenwertbildung.
  • Schwellenwert: Schwellenwert(0.0-1.0) für die Binarisierung zu berücksichtigen.
  • Rechteck: Rechteckiger Bereich, auf den der Prozessor angewendet werden soll.

    Wie im obigen Ausgabebild zu sehen ist, wird das Bild binarisiert, so dass es nur noch schwarze und weiße Farben hat. Für das Lesen von Strichcodes scheint es jedoch noch nicht ideal zu sein, da Filter in Kombination verwendet werden müssen. Die Benutzer müssen mit der Empfindlichkeit der Parameter experimentieren, um die besten Ergebnisse zu erzielen.

Binärer Schwellenwertfilter

Der BinaryThresholdFilter filtert ein Bild, indem er die Pixel am angegebenen Schwellenwert aufteilt, wobei er zum Vergleich der Leuchtdichte einer Farbkomponente verwendet wird. Ä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 Eigenschaften des Filters festgelegt.

Ähnlich wie der AdaptiveThresholdFilter akzeptiert der BinaryThresholdFilter die gleichen zusätzlichen Parameter zur Konfiguration.

  • Oben: Obere(weiß) farbe für die Schwellenwertbildung.
  • Tiefer: Unter(schwarz) farbe für die Schwellenwertbildung.
  • Schwellenwert: Schwellenwert(0.0-1.0) für die Binarisierung zu berücksichtigen.
  • 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 myOptionsExample = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection() {
        new BinaryThresholdFilter(0.9f)
    },
};

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

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

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

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

' Export file to disk
results.ExportFilterImagesToDisk("binaryThreshold_0.9.png")
VB   C#

Nachfolgend sehen Sie ein Beispiel für die Anwendung von Filtern auf das Beispielbild.

Standard-Binärschwelle
0.9 Binärer Schwellenwert

Wenn man sich das obige Ausgabebild ansieht, kann man erkennen, dass die Probe in Schwarz und Weiß binarisiert wurde. Es ist jedoch zu erkennen, dass dieser Filter für dieses Bild eindeutig ungeeignet ist, da die Striche des Barcodes entfernt wurden und neues Rauschen hinzukam.

Helligkeitsfilter

BrightnessFilter ist ein weiterer wichtiger Filter in der Bildfiltersammlung von IronBarcode. Wie der Name schon sagt, passt dieser Filter die Helligkeit des Barcode-Bildes an. Die Eingabe in diesen Konstruktor kann den Anteil der Helligkeit im Ausgabebild verändern. Der Standardwert ist 1, wodurch das Bild unverändert bleibt. Bei einem Wert von 0 wird ein komplett schwarzes Bild erzeugt, 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 myOptionsExample = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection() {
    new BrightnessFilter(1.5f),
    },
};

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

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

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

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

' Export file to disk
results.ExportFilterImagesToDisk("brightness_1.5.png")
VB   C#

Nachfolgend sehen Sie das Ausgabebild nach Anwendung dieses Filters auf das Eingabebeispiel.

Standard-Helligkeit
1.5 Helligkeit

Kontrast-Filter

Der Kontrastfilter wird verwendet, um den Kontrast in einem Bild einzustellen. Der Bildkontrast bezieht sich auf den Unterschied in der Farbintensität zwischen verschiedenen Elementen eines Bildes. Eine Erhöhung des Kontrasts verbessert die Sichtbarkeit von Details und lässt das Bild lebendig und eindrucksvoll erscheinen, während eine Verringerung des Kontrasts das Bild weicher und gedämpfter erscheinen lässt.

Der Standardwert ist 1, wodurch das Bild unverändert bleibt. Bei einem Wert von 0 wird ein vollständig graues Bild erzeugt, 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 myOptionsExample = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection() {
    new ContrastFilter(1.5f),
    },
};

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

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

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

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

' Export file to disk
results.ExportFilterImagesToDisk("contrast_1.5.png")
VB   C#

Die Anwendung dieses Filters auf das Eingabebeispiel ergibt das folgende Bild.

Standard-Kontrast
1.5 Kontrast

Filter invertieren

Dieser Filter wird verwendet, um die Farben innerhalb eines Bildes zu invertieren, d. h., Weiß wird zu Schwarz und Schwarz 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 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 zu bestimmen, an der die Farbe invertiert werden soll, 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 myOptionsExample = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection() {
    new InvertFilter(),
    },
};

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

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

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

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

' Export file to disk
results.ExportFilterImagesToDisk("invert.png")
VB   C#

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

Originalbild
Umgekehrt

Filter schärfen

Der letzte Bildkorrekturfilter in IronBarcode ist der SharpenFilter. Dieser Filter verbessert die Schärfe eines Bildes und ist sehr nützlich bei unscharfen Bildern. Der Benutzer kann mit diesem Filter die Schärfe eines Bildes einstellen, indem er den Wert Sigma beim Instanziieren des Filterobjekts anpasst. Der Standardwert ist 3. Erhöhen Sie die Sigma-Werte, um die Bildschärfe zu verbessern.

: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()
    {
        new SharpenFilter((float)3.5),
        new ContrastFilter(2)
    },
};
// Apply options and read the barcode
BarcodeResults results = BarcodeReader.Read("sample.png", options);

// Export file to disk
results.ExportFilterImagesToDisk("filteredSample.png");

// 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(CSng(3.5)),
		New ContrastFilter(2)
	}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)

' Export file to disk
results.ExportFilterImagesToDisk("filteredSample.png")

' Write the result value to console
For Each result As BarcodeResult In results
	Console.WriteLine(result.Text)
Next result
VB   C#

Das folgende Bild zeigt die geschärft version des Beispiel-Eingabebildes.

Standard Schärfen
0.5 Schärfen

Vergleicht man das obige Bild mit dem Originalbild, scheint es schärfer zu sein und würde definitiv beim Lesen von Barcodes mit IronBarcode helfen. In den meisten Fällen wird SharpenFilter immer zusammen mit anderen Filtern aus der Klasse ImageFilterCollection angewendet.

Abgesehen von ImageFilters eigenschaften können Benutzer auch andere Eigenschaften in BarcodeReaderOptions für genauere Ablesung, siehe dies artikel für weitere Informationen.

Hairil Hasyimi Bin Omar

Software-Ingenieur

Wie alle großartigen Ingenieure ist Hairil ein eifriger Lerner. Er verfeinert seine Kenntnisse in C#, Python und Java und nutzt dieses Wissen, um den Teammitgliedern von Iron Software einen Mehrwert zu bieten. Hairil kam von der Universiti Teknologi MARA in Malaysia zum Iron Software-Team, wo er einen Bachelor-Abschluss in Chemie- und Verfahrenstechnik erwarb.