# Verwendung von C# Bildkorrekturfiltern zur Verbesserung der Dekodierung von Barcodes
[IronBarcode](https://ironsoftware.com/csharp/barcode/docs/) bietet eingebaute Bildkorrekturfilter wie `SharpenFilter` und `ContrastFilter`, die unscharfe oder unvollkommene Barcode-Bilder programmatisch verbessern, die Lesegenauigkeit erhöhen, ohne dass externe Bildbearbeitungssoftware oder eine erneute Aufnahme von Bildern 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](https://ironsoftware.com/csharp/barcode/tutorials/reading-barcodes/).
*as-heading:2(Schnellstart: Schärf- und Kontrastfilter anwenden, um die Barcode-Lesung zu verbessern)*
In nur einem Schritt wenden Sie `SharpenFilter` und `ContrastFilter` von IronBarcode an, indem Sie `ImageFilterCollection` in `BarcodeReaderOptions` verwenden. Dies verbessert das Scannen von Barcodes bei minimaler Einrichtung und ohne Bedarf an externen Tools.
```cs
:title=Boost Barcode Readability — Try Image Correction Now
BarcodeResults results = IronBarCode.BarcodeReader.Read("input.png", new IronBarCode.BarcodeReaderOptions { ImageFilters = new IronBarCode.ImageFilterCollection() { new IronBarCode.SharpenFilter(3.5f), new IronBarCode.ContrastFilter(2.0f) } });
```
<div class="hsg-featured-snippet">
<h3>Minimaler Arbeitsablauf (5 Schritte)</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://www.nuget.org/packages/BarCode/">Laden Sie die C#-Bibliothek zur Verwendung von Bildkorrekturfiltern herunter</a></li>
<li>Entdecken Sie alle verfügbaren Bildkorrekturfilter</li>
<li>Konfigurieren Sie jeden Filter mit benutzerdefinierten Werten</li>
<li>Filter auf unvollkommene Bildbeispiele anwenden</li>
<li>Abrufen von BarCode-Werten aus erweiterten Bildern</li>
</ol>
</div>
## Wie wende ich Bildfilter an, um das Lesen von Barcodes zu verbessern?
Um Filter anzuwenden, instanziieren Sie die Klasse `ImageFilterCollection` und erstellen Sie Instanzen jedes Filters einzeln. Weisen Sie dann das Objekt der Eigenschaft `ImageFilters` des Objekts `BarcodeReaderOptions` zu. Übergeben Sie das Optionsobjekt zusammen mit dem Beispielbild an die Methode `Read`. Erweiterte Installationsoptionen finden Sie in unserem [Leitfaden für NuGet-Pakete](https://ironsoftware.com/csharp/barcode/get-started/advanced-installation-nuget/).
Verwenden Sie das unten stehende Bild als Beispielbild.
<div class="content-img-align-center">
<div class="center-image-wrapper">
<img src="/static-assets/barcode/how-to/image-correction/sample.webp" alt="Verschwommener Barcode mit der Nummer 4900203187590, der schlechte Bildqualität vor der Filterverbesserung zeigt" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic; margin-bottom: 20px;">Beispielbild</p>
</div>
</div>
Das Bild erscheint recht unscharf. Allerdings ist die Helligkeit akzeptabel, und die weißen und schwarzen Farben sind unterscheidbar. Wenden Sie daher mindestens `SharpenFilter` und `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.
```csharp
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-apply-filter.cs
```
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.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/sample.webp" alt="Verschwommenes Barcode-Bild mit der Nummer 4902030187590, das schlechte Bildqualität demonstriert" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Beispielbild</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/filteredSample.webp" alt="Barcode mit verbesserter Lesbarkeit nach Anwendung von Bildfiltern, der klare vertikale Linien und die Nummer 4902030187590 zeigt" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Gefiltertes Beispiel</p>
</div>
</div>
## Welche Bildkorrekturfilter sind in IronBarcode verfügbar?
IronBarcode bietet mehrere [Bildfilter](https://ironsoftware.com/csharp/barcode/features/filters/), 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`
- `BrightnessFilter`
- `ContrastFilter`
- `InvertFilter`
- `SharpenFilter`
- `ErodeFilter`
- `DilateFilter`
- `HistogramEqualizationFilter`
- Unschärfefilter
- `GaussianBlurFilter`
- `BilateralFilter`
- `MedianBlurFilter`
Die Reihenfolge, in der Filter angewendet werden, basiert auf ihrer Platzierung innerhalb von `ImageFilterCollection`. Eine ausführliche API-Dokumentation zu diesen Filtern finden Sie in unserer [API-Referenz](https://ironsoftware.com/csharp/barcode/object-reference/api/).
## Wie funktioniert der adaptive Schwellenwertfilter?
`AdaptiveThresholdFilter` ist ein Filter, der in IronBarcode verfügbar ist und die [Bradley Adaptive Threshold](https://saturncloud.io/blog/bradley-adaptive-thresholding-algorithm-a-powerful-tool-for-image-segmentation/#:~:text=The%20Bradley%20adaptive%20thresholding%20algorithm%2C%20proposed%20by%20Derek%20Bradley%20and,illumination%20or%20varying%20contrast%20levels.) Technik auf das Bild anwendet, die den Schwellenwert für die Binarisierung eines Bildes automatisch bestimmt. Dieser Filter eignet sich ideal für Bilder mit ungleichmäßiger Beleuchtung und unterschiedlichen Hintergrundintensitäten.
```csharp
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-adaptive-threshold.cs
```
Unten sind die Ergebnisse der Anwendung des Filters mit verschiedenen Werten aufgeführt.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/adaptiveThreshold.webp" alt="Vertikale Linien, die verschiedene Ausgaben des adaptiven Schwellenwertfilters mit durchgezogenen und gestrichelten Mustern zeigen" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Standardwert</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/adaptiveThreshold_0.9.webp" alt="Barcode-Bild in geringer Qualität mit der UPC-Nummer 902030187590 und erheblicher visueller Verzerrung" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">0.9 Wert</p>
</div>
</div>
Der Konstruktor akzeptiert zusätzliche Parameter für die Konfiguration:
- `Upper`: Oberste (weiße) Farbe für die Schwellenwertsetzung.
- `Lower`: Unterste (schwarze) Farbe für die Schwellenwertsetzung.
- `Threshold`: Schwellenwertlimit (0,0-1,0) für die Binarisierung.
- `Rectangle`: Rechteckbereich, um den Prozessor anzuwenden.
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 beim gegebenen Schwellenwert teilt und die Luminanz einer Farbkomponente vergleicht. Ähnlich wie der `AdaptiveThresholdFilter`, kann dieser Filter neues oder unerwünschtes Rauschen einführen, wenn er nicht korrekt verwendet wird. IronBarcode hat jedoch Standardwerte für die Filtereigenschaften festgelegt.
Ähnlich dem `AdaptiveThresholdFilter` akzeptiert der `BinaryThresholdFilter` dieselben zusätzlichen Parameter zur Konfiguration:
- `Upper`: Oberste (weiße) Farbe für die Schwellenwertsetzung.
- `Lower`: Unterste (schwarze) Farbe für die Schwellenwertsetzung.
- `Threshold`: Schwellenwertlimit (0,0-1,0) für die Binarisierung.
- `Rectangle`: Rechteckbereich, um den Prozessor anzuwenden.
```csharp
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-binary-threshold.cs
```
Unten ist die Beispielausgabe der Anwendung von Filtern auf das Beispielbild aufgeführt.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/binaryThreshold.webp" alt="Drei Beispiele für Ausgaben des binären Schwellenwertfilters, die spärliche, gepunktete und dichte vertikale Linienmuster zeigen" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Standardwert</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/binaryThreshold_0.9.webp" alt="Barcode-Bild, verarbeitet mit dem binären Schwellenwertfilter 0.9, das Schwarz-Weiß-Kontrast zeigt" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">0.9 Wert</p>
</div>
</div>
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](https://ironsoftware.com/csharp/barcode/troubleshooting/barcode-not-recognized/).
## Wie stelle ich die Bildhelligkeit ein, um Barcodes besser lesen zu können?
`BrightnessFilter` ist ein weiterer essenzieller Filter in der Bildfilter-Sammlung in 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.
```csharp
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-brightness.cs
```
Unten ist das Ausgabebild nach dem Anwenden dieses Filters auf den Beispielinput gezeigt.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/sample.webp" alt="Blurry UPC barcode sample showing default brightness level before filter enhancement" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Standardwert</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/brightness_1.5.webp" alt="Verschwommener Barcode mit der Produktnummer 4902030187590, der geringe Helligkeit oder schlechte Bildqualität demonstriert" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">1.5 Wert</p>
</div>
</div>
## Wie verwende ich den Kontrastfilter zur Verbesserung von Barcode-Bildern?
Der `ContrastFilter` passt den Kontrastpegel eines Bildes 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](https://ironsoftware.com/csharp/barcode/how-to/customize-barcode-style/).
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.
```csharp
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-contrast.cs
```
Das Anwenden dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/sample.webp" alt="Verschwommener Barcode mit der Nummer 4902030187590, der die Standardeinstellungen des Kontrastfilters demonstriert" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Standardwert</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/contrast_1.5.webp" alt="Verschwommener Barcode mit der Nummer 4902030187590, der eine Bildqualität mit geringem Kontrast demonstriert" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">1.5 Wert</p>
</div>
</div>
## 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. Im Gegensatz zum `BinaryThresholdFilter` invertiert dieser Filter die Farben direkt, ohne die Empfindlichkeit angeben zu müssen. 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](https://ironsoftware.com/csharp/barcode/how-to/set-crop-region/).
```csharp
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-invert.cs
```
Das unten stehende Ausgabebild ist das Ergebnis der Anwendung dieses Filters auf das Beispiel-Eingabebild.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/sample.webp" alt="Verschwommener UPC-Barcode, der die Nummer 480203187590 zeigt – Originalbild vor Anwendung des Invertierungsfilters" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Originalbild</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/invert.webp" alt="Verschwommener invertierter Barcode, der weiße Balken auf dunklem Hintergrund mit der Nummernsequenz 4902030187590 zeigt" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Umgekehrt</p>
</div>
</div>
## 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](https://ironsoftware.com/csharp/barcode/how-to/reading-speed-options/).
```csharp
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-sharpen.cs
```
Das Bild unten ist die *geschärfte* Version des Eingabebeispiels.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/sharpen.webp" alt="Verschwommenes Barcode-Bild, das unscharfe Qualität vor Anwendung des Schärfefilters demonstriert" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Standardwert</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/sharpen_0.5.webp" alt="Beispiel eines verschwommenen Barcodes, das die Auswirkungen einer Verschlechterung der Bildqualität zeigt" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">0.5 Wert</p>
</div>
</div>
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 zusammen mit anderen Filtern in der Klasse `ImageFilterCollection` angewendet.
## Wozu wird der Erode-Filter verwendet?
Der `ErodeFilter` entfernt winziges weißes Rauschen und verdickt die Barcode-Balken, indem er Pixel nahe der Kanten von Formen entfernt. Dieser Filter eignet sich am besten in Szenarien, in denen der Barcode-Hintergrund viele weiße Flecken aufweist oder das Barcode-Bild zu niedrig aufgelöst oder verschwommen ist, was zu verschmolzenen Balken führt. Der `ErodeFilter` macht die Balken dicker, während er weiße Flecken im Hintergrund entfernt. Weitere Informationen zum Umgang mit unvollständigen Bildern finden Sie in unserem [Beispiel für unvollständige Barcodes](https://ironsoftware.com/csharp/barcode/examples/imperfect-barcode-with-image-correction/).
Erhöhen Sie die Wirkung der Erosion, indem Sie eine ganze Zahl eingeben, die `kernelSize` für den Filter repräsentiert. Je größer die Kernelgröße, desto stärker ist der Effekt auf das Eingabebild. Beachten Sie, dass der `kernelSize` ein Quadrat ist und in diesem Beispiel ein `5x5`-Kernel wäre.
Verwenden Sie beispielsweise den `ErodeFilter` mit einer größeren Kernelgröße, um die Wirkung des Filters zu demonstrieren.
```cs
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-erode.cs
```
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 46%;">
<img src="/static-assets/barcode/how-to/image-correction/sample.webp" alt="Verschwommener Barcode, der die Nummer 4002030187590 zeigt – Beispiel für die Demonstration des Erosionsfilters" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Originalbild</p>
</div>
<div class="competitors__card" style="width: 46%;">
<img src="/static-assets/barcode/how-to/image-correction/erodeFilter.webp" alt="Verschwommener Barcode, der vertikale schwarz-weiße Streifen mit numerischem Code zeigt" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Angewandter Erode-Filter</p>
</div>
</div>
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 Kernelgrößenwert ändern, der in `ErodeFilter` eingegeben wird.
## Wie hilft der Dilate-Filter beim Lesen von Barcodes?
Der `DilateFilter` funktioniert als das Inverse des `ErodeFilter`, 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.
Ähnlich wie oben, erhöhen Sie die Wirkung des Filters, indem Sie eine ganze Zahl eingeben, die `kernelSize` für den Filter repräsentiert.
Für das untenstehende Beispiel verwenden Sie eine größere Kernelgröße, um die Effekte des `DilateFilter` zu zeigen.
```cs
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-dilate.cs
```
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 46%;">
<img src="/static-assets/barcode/how-to/image-correction/sample.webp" alt="Verschwommenes Barcode-Bild, das die Nummer 4902030187590 zeigt – Beispiel für die Verarbeitung mit dem Dilatationsfilter" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Originalbild</p>
</div>
<div class="competitors__card" style="width: 46%;">
<img src="/static-assets/barcode/how-to/image-correction/dilateFilter.webp" alt="Verschwommener Barcode mit numerischer Sequenz unter den vertikalen Balken" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Angewandter Dilatationsfilter</p>
</div>
</div>
Wie im obigen Bild gezeigt, kann aggressive Nutzung von `DilateFilter` potenziell die Barcode-Struktur zerstören, indem sie eng beabstandete Balken zusammenfügt und Ruhebereiche in den Barcodes schafft. 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 Kontrast eines Bildes, indem er die Pixeldichte umverteilt, um die Klarheit zu erhöhen. 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.
```cs
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-histogram-equalization-filter.cs
```
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 46%;">
<img src="/static-assets/barcode/how-to/image-correction/sample.webp" alt="Verschwommener Barcode mit der Nummer 4902030187590, verwendet als Testbild für den Histogrammausgleichsfilter" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Originalbild</p>
</div>
<div class="competitors__card" style="width: 46%;">
<img src="/static-assets/barcode/how-to/image-correction/histogramEqualizationFilter.webp" alt="Barcode mit vertikalen schwarz-weißen Streifen, der die Nummer 4902030187590 zeigt" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Angewandter Histogramm-Entzerrungsfilter</p>
</div>
</div>
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](https://ironsoftware.com/csharp/barcode/how-to/image-orientation-correction/).
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 standardmäßige `kernel`-Größe beträgt `3x3` Pixel, und der standardmäßige `Sigma`-Wert ist `3.0`, was eine moderate Unschärfe erzeugt. Die Erhöhung des `Sigma`-Wertes führt zu einem stärkeren Unschärfeeffekt. Sie können auch die `kernel` anpassen, um die Größe der Nachbarschaft zu steuern, die der Weichzeichner filtert.
```csharp
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-gaussianblur.cs
```
Das Anwenden dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/sharpen.webp" alt="Verschwommener Barcode mit der Nummer 4902030187590, der schlechte Bildqualität demonstriert" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Bild schärfen</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/gaussianBlur.webp" alt="Barcode-Bild mit angewendetem Gaußschen Weichzeichnerfilter, das verschwommene vertikale Linien und verzerrte Zahlen zeigt" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Bild GaussianBlur</p>
</div>
</div>
### Wann sollte ich den bilateralen Filter verwenden?
Der `BilateralFilter` glättet Bilder, während er die Kanten erhält. 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 auf Farbdifferenzen bestimmt (Standard: 75,0).
- `SigmaSpace`: Räumliche Auswirkung, die die Entfernungseinwirkung bestimmt (Standard: 75,0).
```csharp
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-bilateral.cs
```
Das Anwenden dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/sharpen.webp" alt="Verschwommener Barcode, der schlechte Bildqualität mit vertikalen Linien und den Zahlen 4902030187590 demonstriert" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Bild schärfen</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/bilateral.webp" alt="Verschwommener Barcode mit den Zahlen 4902030187590, der schlechte Bildqualität demonstriert" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Bilaterales Bild</p>
</div>
</div>
### Was macht den MedianBlur-Filter zur Rauschunterdrückung anders?
Der `MedianBlurFilter` reduziert Rauschen in einem Bild, indem er den Wert jedes Pixels mit dem Medianwert der umgebenden 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](https://ironsoftware.com/csharp/barcode/examples/barcode-reader-settings-csharp/).
- `KernelSize`: Größe der Nachbarschaft für die Mediane-Berechnung (muss ungerade sein, Standard: 5).
```csharp
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-medianblur.cs
```
Das Anwenden dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/sharpen.webp" alt="Beispiel eines verschwommenen Barcodes, das schlechte Bildqualität mit digitalen Artefakten und verringerter Lesbarkeit zeigt" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Bild schärfen</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/medianBlur.webp" alt="Barcode mit angewendetem Median-Weichzeichnerfilter, der verschwommene vertikale Linien und die Nummer 4902030187590 zeigt" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">MedianBlur Bild</p>
</div>
</div>
## 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 zuerst `true` an den `ImageFilterCollection`-Konstruktor. Verwenden Sie dann die `ExportFilterImagesToDisk`-Methode, 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](https://ironsoftware.com/csharp/barcode/examples/csharp-convert-barcode-to-image/).
```csharp
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-save-iterations.cs
```
Die Filter werden in der Reihenfolge des Codes angewendet, und die Ausgabebilder spiegeln die Ergebnisse jeder Iteration wider:
- `Sharpen` -> Nach `Sharpen`
- `Sharpen` + `AdaptiveThreshold` -> Nach `AdaptiveThreshold`
- `Sharpen` + `AdaptiveThreshold` + `Contrast` -> Nach `Contrast`
<div class="competitors-section__wrapper-even-1" style="margin-bottom: 25px;">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/sample.webp" alt="Verschwommener Barcode mit der Nummer 4902030187590" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Beispielbild</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/filteredImage-1.webp" alt="Blurry UPC barcode showing number 4902030187590" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Nach Sharpen</p>
</div>
</div>
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/filteredImage-2.webp" alt="Beispiel eines verschlechterten Barcodes, das schlechte Bildqualität mit der Nummer 9020301875905 zeigt" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Nach Adaptive Threshold</p>
</div>
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/image-correction/filteredImage-3.webp" alt="Stark verpixelter Barcode mit der UPC-Nummer 902030187590" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Nach Contrast</p>
</div>
</div>
Abgesehen von den Eigenschaften `ImageFilters` fügen Sie andere Eigenschaften zu `BarcodeReaderOptions` hinzu, um eine genauere Lesung zu erzielen; siehe diesen [Artikel](https://ironsoftware.com/csharp/barcode/how-to/read-barcodes-from-images/#setting-barcode-reader-options) für weitere Informationen.
IronBarcode bietet eingebaute Bildkorrekturfilter wie SharpenFilter und ContrastFilter, die unscharfe oder unvollkommene Barcode-Bilder programmatisch verbessern, die Lesegenauigkeit erhöhen, ohne dass externe Bildbearbeitungssoftware oder eine erneute Aufnahme von Bildern 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.
Schnellstart: Schärf- und Kontrastfilter anwenden, um die Barcode-Lesung zu verbessern
In nur einem Schritt wenden Sie SharpenFilter und ContrastFilter von IronBarcode an, indem Sie ImageFilterCollection in BarcodeReaderOptions verwenden. Dies verbessert das Scannen von Barcodes bei minimaler Einrichtung und ohne Bedarf an externen Tools.
1Install IronBarcode with NuGet Package Manager
PM > Install-Package BarCode
Install-Package BarCode
2Kopieren 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) } });
BarcodeResults results = IronBarCode.BarcodeReader.Read("input.png", new IronBarCode.BarcodeReaderOptions { ImageFilters = new IronBarCode.ImageFilterCollection() { new IronBarCode.SharpenFilter(3.5f), new IronBarCode.ContrastFilter(2.0f) } });
C#
3Bereitstellen zum Testen in Ihrer Live-Umgebung
Beginnen Sie noch heute, IronBarcode in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
Entdecken Sie alle verfügbaren Bildkorrekturfilter
Konfigurieren Sie jeden Filter mit benutzerdefinierten Werten
Filter auf unvollkommene Bildbeispiele anwenden
Abrufen von BarCode-Werten aus erweiterten Bildern
Wie wende ich Bildfilter an, um das Lesen von Barcodes zu verbessern?
Um Filter anzuwenden, instanziieren Sie die Klasse ImageFilterCollection und erstellen Sie Instanzen jedes Filters einzeln. Weisen Sie dann das Objekt der Eigenschaft ImageFilters des Objekts BarcodeReaderOptions zu. Übergeben Sie das Optionsobjekt zusammen mit dem Beispielbild an die Methode Read. Erweiterte Installationsoptionen finden Sie in unserem Leitfaden für NuGet-Pakete.
Verwenden Sie das unten stehende Bild als Beispielbild.
Beispielbild
Das Bild erscheint recht unscharf. Allerdings ist die Helligkeit akzeptabel, und die weißen und schwarzen Farben sind unterscheidbar. Wenden Sie daher mindestens SharpenFilter und 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.
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 barcodeBarcodeResults results = BarcodeReader.Read("sample.png", options);// Write the result value to consoleforeach (BarcodeResult result in results){Console.WriteLine(result.Text);}
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);
}
ImportsIronBarCodeImportsSystemPrivate options As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection() From { New SharpenFilter(3.5F), New ContrastFilter(2) }}' Apply options and read the barcodePrivate results AsBarcodeResults = BarcodeReader.Read("sample.png", options)' Write the result value to consoleFor Each result AsBarcodeResultIn resultsConsole.WriteLine(result.Text)Next result
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
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.
Beispielbild
Gefiltertes Beispiel
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
BrightnessFilter
ContrastFilter
InvertFilter
SharpenFilter
ErodeFilter
DilateFilter
HistogramEqualizationFilter
Unschärfefilter
GaussianBlurFilter
BilateralFilter
MedianBlurFilter
Die Reihenfolge, in der Filter angewendet werden, basiert auf ihrer Platzierung innerhalb von ImageFilterCollection. Eine ausführliche API-Dokumentation zu diesen Filtern finden Sie in unserer API-Referenz.
Wie funktioniert der adaptive Schwellenwertfilter?
AdaptiveThresholdFilter ist ein Filter, der in IronBarcode verfügbar ist und die Bradley Adaptive Threshold Technik auf das Bild anwendet, die den Schwellenwert für die Binarisierung eines Bildes automatisch bestimmt. Dieser Filter eignet sich ideal für Bilder mit ungleichmäßiger Beleuchtung und unterschiedlichen Hintergrundintensitäten.
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 barcodeBarcodeResults results = BarcodeReader.Read("sample.png", options);// Export file to diskresults.ExportFilterImagesToDisk("adaptiveThreshold_0.9.png");
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");
ImportsIronBarCodePrivate options As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From {New AdaptiveThresholdFilter(0.9F)}}' Apply options and read the barcodePrivate results AsBarcodeResults = BarcodeReader.Read("sample.png", options)' Export file to diskresults.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")
Unten sind die Ergebnisse der Anwendung des Filters mit verschiedenen Werten aufgeführt.
Standardwert
0.9 Wert
Der Konstruktor akzeptiert zusätzliche Parameter für die Konfiguration:
Upper: Oberste (weiße) Farbe für die Schwellenwertsetzung.
Lower: Unterste (schwarze) Farbe für die Schwellenwertsetzung.
Threshold: Schwellenwertlimit (0,0-1,0) für die Binarisierung.
Rectangle: Rechteckbereich, um den Prozessor anzuwenden.
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 beim gegebenen Schwellenwert teilt und die Luminanz einer Farbkomponente vergleicht. Ähnlich wie der AdaptiveThresholdFilter, kann dieser Filter neues oder unerwünschtes Rauschen einführen, wenn er nicht korrekt verwendet wird. IronBarcode hat jedoch Standardwerte für die Filtereigenschaften festgelegt.
Ähnlich dem AdaptiveThresholdFilter akzeptiert der BinaryThresholdFilter dieselben zusätzlichen Parameter zur Konfiguration:
Upper: Oberste (weiße) Farbe für die Schwellenwertsetzung.
Lower: Unterste (schwarze) Farbe für die Schwellenwertsetzung.
Threshold: Schwellenwertlimit (0,0-1,0) für die Binarisierung.
Rectangle: Rechteckbereich, um den Prozessor anzuwenden.
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 barcodeBarcodeResults results = BarcodeReader.Read("sample.png", options);// Export file to diskresults.ExportFilterImagesToDisk("binaryThreshold_0.9.png");
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");
ImportsIronBarCodePrivate options As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From {New BinaryThresholdFilter(0.9F)}}' Apply options and read the barcodePrivate results AsBarcodeResults = BarcodeReader.Read("sample.png", options)' Export file to diskresults.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")
Unten ist die Beispielausgabe der Anwendung von Filtern auf das Beispielbild aufgeführt.
Standardwert
0.9 Wert
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 essenzieller Filter in der Bildfilter-Sammlung in 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.
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 barcodeBarcodeResults results = BarcodeReader.Read("sample.png", options);// Export file to diskresults.ExportFilterImagesToDisk("brightness_1.5.png");
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");
ImportsIronBarCodePrivate options As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From {New BrightnessFilter(1.5F)}}' Apply options and read the barcodePrivate results AsBarcodeResults = BarcodeReader.Read("sample.png", options)' Export file to diskresults.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")
Unten ist das Ausgabebild nach dem Anwenden dieses Filters auf den Beispielinput gezeigt.
Standardwert
1.5 Wert
Wie verwende ich den Kontrastfilter zur Verbesserung von Barcode-Bildern?
Der ContrastFilter passt den Kontrastpegel eines Bildes 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.
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 barcodeBarcodeResults results = BarcodeReader.Read("sample.png", options);// Export file to diskresults.ExportFilterImagesToDisk("contrast_1.5.png");
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");
ImportsIronBarCodePrivate options As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From {New ContrastFilter(1.5F)}}' Apply options and read the barcodePrivate results AsBarcodeResults = BarcodeReader.Read("sample.png", options)' Export file to diskresults.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")
Das Anwenden dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.
Standardwert
1.5 Wert
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. Im Gegensatz zum BinaryThresholdFilter invertiert dieser Filter die Farben direkt, ohne die Empfindlichkeit angeben zu müssen. 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.
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 barcodeBarcodeResults results = BarcodeReader.Read("sample.png", options);// Export file to diskresults.ExportFilterImagesToDisk("invert.png");
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");
ImportsIronBarCodePrivate options As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From {New InvertFilter()}}' Apply options and read the barcodePrivate results AsBarcodeResults = BarcodeReader.Read("sample.png", options)' Export file to diskresults.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")
Das unten stehende Ausgabebild ist das Ergebnis der Anwendung dieses Filters auf das Beispiel-Eingabebild.
Originalbild
Umgekehrt
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.
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 barcodeBarcodeResults results = BarcodeReader.Read("sample.png", options);// Export file to diskresults.ExportFilterImagesToDisk("sharpen_0.5.png");
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");
ImportsIronBarCodeImportsSystemPrivate options As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From {New SharpenFilter(0.5F)}}' Apply options and read the barcodePrivate results AsBarcodeResults = BarcodeReader.Read("sample.png", options)' Export file to diskresults.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")
Das Bild unten ist die geschärfte Version des Eingabebeispiels.
Standardwert
0.5 Wert
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 zusammen mit anderen Filtern in der Klasse ImageFilterCollection angewendet.
Wozu wird der Erode-Filter verwendet?
Der ErodeFilter entfernt winziges weißes Rauschen und verdickt die Barcode-Balken, indem er Pixel nahe der Kanten von Formen entfernt. Dieser Filter eignet sich am besten in Szenarien, in denen der Barcode-Hintergrund viele weiße Flecken aufweist oder das Barcode-Bild zu niedrig aufgelöst oder verschwommen ist, was zu verschmolzenen Balken führt. Der ErodeFilter macht die Balken dicker, während er weiße Flecken im Hintergrund entfernt. 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 eingeben, die kernelSize für den Filter repräsentiert. Je größer die Kernelgröße, desto stärker ist der Effekt auf das Eingabebild. Beachten Sie, dass der kernelSize ein Quadrat ist und in diesem Beispiel ein 5x5-Kernel wäre.
Verwenden Sie beispielsweise den ErodeFilter mit einer größeren Kernelgröße, um die Wirkung des Filters zu demonstrieren.
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 barcodeBarcodeResults results = BarcodeReader.Read("sample.png", options);// Export file to diskresults.ExportFilterImagesToDisk("erodeFilter.jpg");
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");
ImportsIronBarCodeDim options As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From { New ErodeFilter(5) }}' Apply options and read the barcodeDim results AsBarcodeResults = BarcodeReader.Read("sample.png", options)' Export file to diskresults.ExportFilterImagesToDisk("erodeFilter.jpg")
Imports IronBarCode
Dim options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {
New ErodeFilter(5)
}
}
' Apply options and read the barcode
Dim results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("erodeFilter.jpg")
Originalbild
Angewandter Erode-Filter
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 Kernelgrößenwert ändern, der in ErodeFilter eingegeben wird.
Wie hilft der Dilate-Filter beim Lesen von Barcodes?
Der DilateFilter funktioniert als das Inverse des ErodeFilter, 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.
Ähnlich wie oben, erhöhen Sie die Wirkung des Filters, indem Sie eine ganze Zahl eingeben, die kernelSize für den Filter repräsentiert.
Für das untenstehende Beispiel verwenden Sie eine größere Kernelgröße, um die Effekte des DilateFilter zu zeigen.
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 barcodeBarcodeResults results = BarcodeReader.Read("sample.png", options);// Export file to diskresults.ExportFilterImagesToDisk("dilateFilter.jpg");
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");
ImportsIronBarCodeDim options As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From { New DilateFilter(5) }}' Apply options and read the barcodeDim results AsBarcodeResults = BarcodeReader.Read("sample.png", options)' Export file to diskresults.ExportFilterImagesToDisk("dilateFilter.jpg")
Imports IronBarCode
Dim options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {
New DilateFilter(5)
}
}
' Apply options and read the barcode
Dim results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("dilateFilter.jpg")
Originalbild
Angewandter Dilatationsfilter
Wie im obigen Bild gezeigt, kann aggressive Nutzung von DilateFilter potenziell die Barcode-Struktur zerstören, indem sie eng beabstandete Balken zusammenfügt und Ruhebereiche in den Barcodes schafft. 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 Kontrast eines Bildes, indem er die Pixeldichte umverteilt, um die Klarheit zu erhöhen. 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.
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 barcodeBarcodeResults results = BarcodeReader.Read("sample.png", options);// Export file to diskresults.ExportFilterImagesToDisk("histogramEqualizationFilter.jpg");
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");
ImportsIronBarCodeDim options As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From { New HistogramEqualizationFilter() }}' Apply options and read the barcodeDim results AsBarcodeResults = BarcodeReader.Read("sample.png", options)' Export file to diskresults.ExportFilterImagesToDisk("histogramEqualizationFilter.jpg")
Imports IronBarCode
Dim options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {
New HistogramEqualizationFilter()
}
}
' Apply options and read the barcode
Dim results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("histogramEqualizationFilter.jpg")
Originalbild
Angewandter Histogramm-Entzerrungsfilter
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 standardmäßige kernel-Größe beträgt 3x3 Pixel, und der standardmäßige Sigma-Wert ist 3.0, was eine moderate Unschärfe erzeugt. Die Erhöhung des Sigma-Wertes führt zu einem stärkeren Unschärfeeffekt. Sie können auch die kernel anpassen, um die Größe der Nachbarschaft zu steuern, die der Weichzeichner filtert.
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 barcodeBarcodeResults results = BarcodeReader.Read("sharpen.webp", myOptionsExample);// Export file to diskresults.ExportFilterImagesToDisk("gaussianBlur.png");
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");
ImportsIronBarCodePrivate myOptionsExample As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From {New GaussianBlurFilter(3, 3, 3.0F)}}' Apply options and read the barcodePrivate results AsBarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)' Export file to diskresults.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")
Das Anwenden dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.
Bild schärfen
Bild GaussianBlur
Wann sollte ich den bilateralen Filter verwenden?
Der BilateralFilter glättet Bilder, während er die Kanten erhält. 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 auf Farbdifferenzen bestimmt (Standard: 75,0).
SigmaSpace: Räumliche Auswirkung, die die Entfernungseinwirkung bestimmt (Standard: 75,0).
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 barcodeBarcodeResults results = BarcodeReader.Read("sharpen.webp", myOptionsExample);// Export file to diskresults.ExportFilterImagesToDisk("bilateral.png");
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");
ImportsIronBarCodePrivate myOptionsExample As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From {New BilateralFilter(5, 75, 75)}}' Apply options and read the barcodePrivate results AsBarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)' Export file to diskresults.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")
Das Anwenden dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.
Bild schärfen
Bilaterales Bild
Was macht den MedianBlur-Filter zur Rauschunterdrückung anders?
Der MedianBlurFilter reduziert Rauschen in einem Bild, indem er den Wert jedes Pixels mit dem Medianwert der umgebenden 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 Mediane-Berechnung (muss ungerade sein, Standard: 5).
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 barcodeBarcodeResults results = BarcodeReader.Read("sharpen.webp", myOptionsExample);// Export file to diskresults.ExportFilterImagesToDisk("medianBlur.png");
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");
ImportsIronBarCodePrivate myOptionsExample As New BarcodeReaderOptions() With { .ImageFilters = New ImageFilterCollection(True) From {New MedianBlurFilter(5)}}' Apply options and read the barcodePrivate results AsBarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)' Export file to diskresults.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")
Das Anwenden dieses Filters auf den Beispielinput ergibt das unten gezeigte Bild.
Bild schärfen
MedianBlur Bild
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 zuerst true an den ImageFilterCollection-Konstruktor. Verwenden Sie dann die ExportFilterImagesToDisk-Methode, 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.
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 barcodeBarcodeResults results = BarcodeReader.Read("sample.webp", myOptionsExample);// Export file to diskresults.ExportFilterImagesToDisk("filteredImage.png");
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");
ImportsIronBarCodePrivate 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 barcodePrivate results AsBarcodeResults = BarcodeReader.Read("sample.webp", myOptionsExample)' Export file to diskresults.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")
Die Filter werden in der Reihenfolge des Codes angewendet, und die Ausgabebilder spiegeln die Ergebnisse jeder Iteration wider:
Sharpen -> Nach Sharpen
Sharpen + AdaptiveThreshold -> Nach AdaptiveThreshold
Sharpen + AdaptiveThreshold + Contrast -> Nach Contrast
Beispielbild
Nach Sharpen
Nach Adaptive Threshold
Nach Contrast
Abgesehen von den Eigenschaften ImageFilters fügen Sie andere Eigenschaften zu BarcodeReaderOptions hinzu, um eine genauere Lesung zu erzielen; 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.
When should I use the HistogramEqualization Filter?
The HistogramEqualization Filter enhances contrast by redistributing pixel intensities, making it suitable for barcodes with low contrast or uneven lighting. This filter stretches the intensity range to improve readability.
What does the GaussianBlur Filter do?
The GaussianBlur Filter reduces noise in an image by averaging pixel values using a Gaussian function. It is configurable via kernel size and sigma value, and it applies a moderate blur to help reduce image noise.
How does the Bilateral Filter differ from other blur filters?
The Bilateral Filter reduces noise while preserving edges and takes into account both color differences and pixel distance. It smooths images by considering neighborhood diameter, sigma color, and sigma space parameters.
What is the primary use of the MedianBlur Filter?
The MedianBlur Filter excels at preserving edges while minimizing noise by replacing each pixel's value with the median of its neighbors, making it effective for noise reduction with edge preservation.
How can I save images after each filter is applied in IronBarcode?
In IronBarcode, enable exporting images after each filter step by passing true to the ImageFilterCollection constructor, then use the ExportFilterImagesToDisk method to save the output images at each processing step.