Comment utiliser les filtres de correction d'image
Ne nous voilons pas la face. Toutes les images ne sont pas parfaites, et c'est aussi l'un des principaux facteurs qui font qu'une image de code-barres ne peut pas être lue par IronBarcode. Ce n'est pas entièrement la faute de l'utilisateur. Au lieu d'avoir à recapturer l'image ou d'utiliser d'autres logiciels d'amélioration de l'image, IronBarcode a mis au point une fonction qui permet aux utilisateurs d'appliquer des filtres à l'image de manière programmatique. Cela aiderait IronBarcode à lire l'image et à améliorer la précision.
Poursuivez votre lecture pour découvrir les filtres de correction d'image disponibles dans IronBarcode, leurs effets sur les images et la manière de les appliquer.
Comment utiliser les filtres de correction d'image
- Télécharger la bibliothèque C# pour utiliser les filtres de correction d'image
- Découvrez tous les filtres de correction d'image disponibles
- Configurer chaque filtre de correction d'image avec des valeurs personnalisées
- Appliquer les filtres à l'échantillon d'image imparfaite
- Récupérer la valeur du code-barres de l'image à l'aide de filtres
Installer avec NuGet
Install-Package BarCode
Télécharger DLL
Installation manuelle dans votre projet
Installer avec NuGet
Install-Package BarCode
Télécharger DLL
Installation manuelle dans votre projet
Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit.
Découvrez IronBarcode sur NuGet pour une installation rapide et un déploiement facile. Avec plus de 8 millions de téléchargements, il transforme avec C#.
Install-Package BarCode
Envisagez d'installer le IronBarcode DLL directement. Téléchargez et installez-le manuellement pour votre projet ou sous forme de GAC : {{lienDllAfficher}}
Installation manuelle dans votre projet
Télécharger la DLLUtiliser des filtres d'image pour améliorer l'exemple de lecture
Pour appliquer le filtre, instanciez la classe ImageFilterCollection et créez des instances de chaque filtre individuellement. Assignez ensuite l'objet à la propriété ImageFilters de l'objet BarcodeReaderOptions. passer l'objet options dans la méthode Read
avec l'échantillon d'image.
Utilisons l'image ci-dessous comme exemple d'image.
Exemple d'image
À première vue, l'image semble assez floue. Cependant, la luminosité est acceptable et les couleurs blanche et noire sont bien distinctes. Par conséquent, nous devons appliquer au moins les filtres SharpenFilter et ContrastFilter pour améliorer la lisibilité des codes-barres. Reportez-vous à l'extrait de code ci-dessous pour appliquer les filtres à l'image, la lire et l'afficher sur la console.
: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
Dans l'extrait de code ci-dessus, outre l'application de filtres et la lecture du code-barres, nous avons également exporté l'image filtrée vers le disque. La comparaison entre l'échantillon et les images filtrées est illustrée ci-dessous.
Exemple d'image
Échantillon filtré
Explorer les filtres de correction d'image
IronBarcode propose plusieurs filtres d'image spécialement conçus pour la correction d'image. Ces filtres peuvent aider à lire des images de codes-barres imparfaites et à améliorer la précision de la lecture. Toutefois, les utilisateurs devront comprendre le fonctionnement de ces filtres afin de pouvoir
sélectionner le filtre approprié et éviter les problèmes de performance dus à l'utilisation d'une trop grande quantité de filtre ou à l'utilisation d'un mauvais filtre. Vous trouverez ci-dessous tous les filtres disponibles :
- Filtre à seuil adaptatif
- Filtre à seuil binaire
- Filtre de luminosité
- Filtre de contraste
- InvertFilter
Filtre d'affinage
L'ordre dans lequel ces filtres sont appliqués est basé sur leur emplacement dans la ImageFilterCollection.
Filtre à seuil adaptatif
AdaptiveThresholdFilter est l'un des filtres disponibles dans IronBarcode qui s'applique Seuil adaptatif Bradley à l'image, qui détermine automatiquement le seuil de binarisation d'une image. Ce filtre est idéal pour les images présentant un éclairage non uniforme et des niveaux d'intensité d'arrière-plan variables.
: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")
Vous trouverez ci-dessous les résultats de l'application du filtre en utilisant différentes valeurs.
Valeur par défaut
0.9 valeur
Le constructeur accepte également des paramètres supplémentaires pour la configuration :
- Supérieure : Supérieure (blanc) couleur pour le seuillage.
- Inférieur : Plus bas (noir) couleur pour le seuillage.
- Seuil : Seuil limite (0.0-1.0) à prendre en compte pour la binarisation.
Rectangle : Région rectangulaire sur laquelle appliquer le processeur.
Comme le montre l'image de sortie ci-dessus, l'image est binarisée pour n'avoir que les couleurs noir et blanc. Il ne semble toutefois pas idéal pour la lecture des codes-barres, car les filtres doivent être utilisés en combinaison. Les utilisateurs devront expérimenter la sensibilité des paramètres pour obtenir les meilleurs résultats.
Filtre à seuil binaire
Le BinaryThresholdFilter filtre une image en divisant les pixels au seuil donné, où il est utilisé pour comparer la luminance d'une composante de couleur. Comme le filtre AdaptiveThresholdFilter, ce filtre peut introduire des bruits nouveaux ou indésirables s'il n'est pas utilisé correctement. Cependant, IronBarcode a défini des valeurs par défaut pour les propriétés du filtre.
Comme le filtre AdaptiveThresholdFilter, le filtre BinaryThresholdFilter accepte les mêmes paramètres supplémentaires pour la configuration.
- Supérieure : Supérieure (blanc) couleur pour le seuillage.
- Inférieur : Plus bas (noir) couleur pour le seuillage.
- Seuil : Seuil limite (0.0-1.0) à prendre en compte pour la binarisation.
- Rectangle : Région rectangulaire sur laquelle appliquer le processeur.
: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")
Vous trouverez ci-dessous un exemple de résultat de l'application de filtres à l'image d'exemple.
Valeur par défaut
0.9 valeur
En observant l'image de sortie ci-dessus, nous pouvons voir que l'échantillon a été binarisé en noir et blanc. Cependant, on peut constater que ce filtre n'est clairement pas adapté à cette image en raison de l'élimination des barres du code-barres et de l'introduction d'un nouveau bruit.
Filtre de luminosité
BrightnessFilter est un autre filtre essentiel dans la collection de filtres d'images d'IronBarcode. Comme son nom l'indique, ce filtre ajuste la luminosité de l'image du code-barres. L'entrée de ce constructeur peut faire varier la Montée de la luminosité dans l'image de sortie. La valeur par défaut est 1, ce qui laisse l'image inchangée. Une valeur de 0 créera une image complètement noire, tandis que des valeurs supérieures à 1 rendront l'image plus lumineuse.
: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")
Voici l'image de sortie après application de ce filtre à l'échantillon d'entrée.
Valeur par défaut
1.5 valeur
Filtre de contraste
Le filtre Contraste permet de régler le niveau de contraste d'une image. Le contraste de l'image fait référence à la différence d'intensité des couleurs entre les différents éléments d'une image. L'augmentation du niveau de contraste améliore la visibilité des détails, rendant l'image vivante et frappante, tandis que la réduction du contraste rend l'image plus douce et plus terne.
La valeur par défaut est 1, ce qui laisse l'image inchangée. Une valeur de 0 crée une image entièrement grise, tandis que des valeurs supérieures à 1 augmentent le contraste de l'image.
: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")
L'application de ce filtre à l'entrée de l'échantillon produit l'image ci-dessous.
Valeur par défaut
1.5 valeur
Inverser le filtre
Ce filtre est utilisé pour inverser les couleurs à l'intérieur d'une image, en rendant les couleurs opposées, comme le blanc devient noir et le noir devient blanc. Il est particulièrement utile lorsque les utilisateurs essaient de lire une image de code-barres avec une couleur de fond. Contrairement au BinaryThresholdFilter, ce filtre inverse directement les couleurs sans qu'il soit nécessaire de spécifier la sensibilité. De plus, ce filtre peut être utilisé avec un CropRectangle pour spécifier l'endroit de l'image où la couleur doit être inversée, au lieu d'inverser les couleurs de l'image entière.
: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")
L'image de sortie ci-dessous est le résultat de l'application de ce filtre à l'échantillon d'image d'entrée.
Image originale
Inversé
Filtre de netteté
Le dernier filtre de correction d'image dans IronBarcode est le SharpenFilter. Ce filtre améliore la netteté d'une image et est très utile pour les images floues. Les utilisateurs peuvent manipuler ce filtre pour ajuster la netteté d'une image en ajustant la valeur Sigma lors de l'instanciation de l'objet filtre. La valeur par défaut est 3. Augmentez les valeurs sigma pour améliorer la netteté de l'image.
: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
L'image ci-dessous est la aiguisé de l'échantillon d'image d'entrée.
Valeur par défaut
0.5 valeur
En comparant l'image ci-dessus avec l'image originale, elle semble plus nette et aiderait certainement à la lecture des codes-barres avec IronBarcode. Dans la plupart des cas, SharpenFilter est toujours appliqué avec d'autres filtres de la classe ImageFilterCollection.
En dehors de Filtres d'images
les utilisateurs peuvent également ajouter d'autres propriétés dans BarcodeReaderOptions
pour une lecture plus précise, voir ceci article pour plus d'informations.