Comment utiliser des filtres de correction d'image pour le code-barres en utilisant C#

Utilisation des filtres de correction d'image de C# pour améliorer le décodage des codes-barres

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

IronBarcode fournit des filtres de correction d'image intégrés tels que SharpenFilter et ContrastFilter qui améliorent de manière programmatique les images de codes-barres floues ou imparfaites, améliorant ainsi la précision de lecture sans avoir besoin d'un logiciel d'édition d'image externe ou de recapturer les images.

Toutes les images ne sont pas parfaites, et une mauvaise qualité d'image est l'un des principaux facteurs empêchant une lecture réussie des codes-barres dans IronBarcode. Plutôt que de recapturer des images ou d'utiliser un logiciel d'amélioration d'image externe, IronBarcode fournit des filtres intégrés qui améliorent de manière programmatique la qualité de l'image. Ces filtres aident IronBarcode à lire les images difficiles et à améliorer la précision globale.

Continuez à lire pour en savoir plus sur les filtres de correction d'image disponibles dans IronBarcode, leurs effets sur les images et comment les appliquer. Pour des techniques de lecture de codes-barres plus complètes, consultez notre Tutoriel de lecture de codes-barres.

en-tête :2(Démarrage rapide: Appliquer les filtres d'accentuation et de contraste pour améliorer les lectures de code-barres)

En une seule étape, appliquez les SharpenFilter et ContrastFilter d'IronBarcode à l'aide de la ImageFilterCollection dans BarcodeReaderOptions. Cela améliore la lecture des codes-barres avec une configuration minimale et zéro besoin d'outils externes.

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  1. Installez IronBarcode avec le gestionnaire de packages NuGet

    PM > Install-Package BarCode

  2. Copiez et exécutez cet extrait de code.

    BarcodeResults results = IronBarCode.BarcodeReader.Read("input.png", new IronBarCode.BarcodeReaderOptions { ImageFilters = new IronBarCode.ImageFilterCollection() { new IronBarCode.SharpenFilter(3.5f), new IronBarCode.ContrastFilter(2.0f) } });
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronBarcode dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer

Comment appliquer des filtres d'image pour améliorer la lecture des BarCodes?

Pour appliquer des filtres, instanciez la classe ImageFilterCollection et créez des instances de chaque filtre individuellement. Ensuite, assignez l'objet à la propriété ImageFilters de l'objet BarcodeReaderOptions. Passez l'objet options dans la méthode Read avec l'image d'échantillon. Pour les options d'installation avancées, consultez notre guide des packages NuGet.

Utilisez l'image ci-dessous comme exemple d'image.

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

L'image semble assez floue. Cependant, la luminosité est acceptable, et les couleurs blanche et noire sont distinguables. Par conséquent, appliquez au moins le SharpenFilter et le ContrastFilter pour améliorer la lisibilité des codes-barres. Reportez-vous à l'extrait de code ci-dessous pour appliquer des filtres à l'image, la lire et afficher les résultats 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);

// Write the result value to console
foreach (BarcodeResult result in results)
{
    Console.WriteLine(result.Text);
}
$vbLabelText   $csharpLabel

L'extrait de code ci-dessus applique des filtres, lit le BarCode et exporte l'image filtrée sur le disque. La comparaison entre l'échantillon et les images filtrées est présentée ci-dessous.

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

Quels sont les filtres de correction d'image disponibles dans IronBarcode?

IronBarcode propose plusieurs filtres d'image spécifiquement conçus pour la correction d'image. Ces filtres aident à la lecture d'images de codes-barres imparfaites et à l'amélioration de la précision de la lecture. Cependant, il faut comprendre le fonctionnement de ces filtres pour sélectionner les filtres appropriés et éviter les problèmes de performance dus à l'utilisation d'un trop grand nombre de filtres ou à l'utilisation d'un filtre inadéquat. Les filtres disponibles sont les suivants :

  • Filtre à seuil adaptatif
  • BinaryThresholdFilter
  • BrightnessFilter
  • ContrastFilter
  • InvertFilter
  • SharpenFilter
  • ErodeFilter
  • DilateFilter
  • HistogramEqualizationFilter
  • Blur Filters
    • GaussianBlurFilter
    • BilateralFilter
    • MedianBlurFilter

L'ordre dans lequel les filtres sont appliqués est basé sur leur emplacement dans la ImageFilterCollection. Pour obtenir une documentation API détaillée sur ces filtres, consultez notre référence API.

Comment fonctionne le filtre à seuil adaptatif?

AdaptiveThresholdFilter est un filtre disponible dans IronBarcode qui applique la technique Bradley Adaptive Threshold à l'image, qui détermine automatiquement le seuil de binarisation d'une image. Ce filtre est idéal pour les images avec un éclairage non uniforme et des niveaux d'intensité de fond variables.

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

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

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

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

Ci-dessous sont les résultats de l'application du filtre en utilisant différentes valeurs.

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

Le constructeur accepte des paramètres supplémentaires pour la configuration :

  • Supérieur : Couleur supérieure (blanche) pour le seuillage.
  • Lower : Couleur inférieure (noire) pour le seuillage.
  • Threshold : Seuil limite (0.0-1.0) 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. Bien que cela ne semble toujours pas idéal pour la lecture de codes-barres, les filtres doivent être utilisés dans des combinaisons. Expérimentez la sensibilité des paramètres pour obtenir les meilleurs résultats.

Comment fonctionne le filtre à seuil binaire?

Le BinaryThresholdFilter filtre une image en divisant les pixels au seuil donné, en comparant la luminance d'une composante de couleur. Comme le 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 AdaptiveThresholdFilter, le BinaryThresholdFilter accepte les mêmes paramètres supplémentaires pour la configuration :

  • Supérieur : Couleur supérieure (blanche) pour le seuillage.
  • Lower : Couleur inférieure (noire) pour le seuillage.
  • Threshold : Seuil limite (0.0-1.0) 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 options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new BinaryThresholdFilter(0.9f)
    },
};

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

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

Ci-dessous est l'exemple de sortie de l'application des filtres à l'image d'exemple.

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

En observant l'image de sortie ci-dessus, l'échantillon a été binarisé en noir et blanc. Cependant, ce filtre n'est manifestement pas adapté à cette image en raison de l'élimination des barres du code-barres et de l'introduction de nouveaux bruits. Pour traiter les scénarios de codes-barres difficiles, consultez notre guide de dépannage pour les codes-barres non reconnus.

Comment ajuster la luminosité de l'image pour une meilleure lecture des BarCodes?

BrightnessFilter est un autre filtre essentiel dans la collection de filtres d'image dans IronBarcode. Comme son nom l'indique, ce filtre ajuste la luminosité de l'image de code-barres. L'entrée de ce constructeur fait 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ée une image complètement noire, tandis que des valeurs supérieures à 1 rendent l'image plus lumineuse.

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

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

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

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

Ci-dessous l'image de sortie après application de ce filtre à l'entrée d'exemple.

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

Comment utiliser le filtre de contraste pour améliorer les images de BarCode?

Le ContrastFilter ajuste le niveau de contraste d'une image. Le contraste d'image se réfère à la différence d'intensité de couleur entre divers éléments d'une image. Augmenter le niveau de contraste améliore la visibilité des détails, rendant l'image plus vive et frappante, tandis que réduire le contraste rend l'image plus douce et plus atténuée. Pour plus de détails sur la personnalisation des codes-barres, consultez notre guide sur la personnalisation des styles de codes-barres.

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 les 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 options = new BarcodeReaderOptions()
{
    // Choose which filters are to be applied (in order)
    ImageFilters = new ImageFilterCollection(true) {
        new ContrastFilter(1.5f),
    },
};

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

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

Appliquer ce filtre à l'entrée d'échantillon produit l'image ci-dessous.

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

Quand utiliser le filtre d'inversion?

Ce filtre inverse les couleurs à l'intérieur d'une image, rendant les couleurs opposées, comme le blanc devient noir et le noir devient blanc. Il est particulièrement utile lors de la lecture d'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é. En outre, ce filtre peut être utilisé avec un CropRectangle pour spécifier l'endroit de l'image dont la couleur doit être inversée, au lieu d'inverser les couleurs pour l'ensemble de l'image. Pour en savoir plus sur la spécification des régions de culture, consultez notre tutoriel sur les régions de culture.

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

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

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

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

L'image de sortie ci-dessous est le résultat de l'application de ce filtre à l'image d'entrée de l'échantillon.

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

Comment réparer des images de BarCode floues avec le filtre Sharpen?

IronBarcode fournit un filtre de netteté. Ce filtre améliore la netteté d'une image, ce qui est très utile lorsqu'il s'agit d'images floues. Manipulez 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 la valeur sigma pour augmenter la netteté de l'image. Pour d'autres options d'optimisation des performances, consultez notre guide sur les options de vitesse de lecture.

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

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

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

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

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

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

Si l'on compare l'image ci-dessus avec l'image originale, elle apparaît plus nette et facilite la lecture des codes-barres à l'aide d'IronBarcode. Dans la plupart des cas, SharpenFilter est toujours appliqué avec d'autres filtres dans la classe ImageFilterCollection.

À quoi sert le filtre Erode?

Le ErodeFilter supprime le minuscule bruit blanc et épaissit les barres de codes-barres en supprimant les pixels situés près du bord des formes. Ce filtre est mieux utilisé dans les scénarios où l'arrière-plan du code-barres présente de nombreuses taches blanches ou si l'image du code-barres est de trop faible résolution ou floue, ce qui entraîne une fusion des barres. Le ErodeFilter rend les barres plus épaisses tout en supprimant les taches blanches en arrière-plan. Pour plus d'informations sur le traitement des images imparfaites, consultez notre exemple de code-barres imparfait.

Augmentez l'effet de l'érosion en saisissant un nombre entier représentant kernelSize pour le filtre. Plus la taille du noyau est grande, plus l'effet sur l'image d'entrée est fort. Notez que le kernelSize est un carré et que, dans cet exemple, il s'agirait d'un 5x5 noyau.

À titre d'exemple, utilisez le ErodeFilter avec une taille de noyau plus importante pour mettre en évidence les effets du filtre.

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

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

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

// Export file to disk
results.ExportFilterImagesToDisk("erodeFilter.jpg");
$vbLabelText   $csharpLabel
Blurry barcode showing number 4002030187590 - example for erode filter demonstration
Blurred barcode showing vertical black and white stripes with numerical code

Si l'on compare les images d'entrée et de sortie ci-dessus, certaines barres sont visiblement plus épaisses en raison de la nature plus agressive de l'entrée d'une taille de noyau plus importante pour le filtrage. Cependant, le nombre de taches blanches dans l'image globale a diminué. Par la nature du filtre d'érosion, plus la taille du noyau est grande, plus vous risquez d'effacer les barres fines si vous l'appliquez de manière trop agressive, comme le montre l'image ci-dessus. Testez et affinez l'effet en modifiant la valeur de la taille du noyau saisie dans le ErodeFilter.

Comment le filtre Dilate aide-t-il à la lecture des codes-barres?

Le DilateFilter fonctionne comme l'inverse du ErodeFilter, opérant en élargissant les régions brillantes - généralement l'arrière-plan - par l'ajout de pixels aux contours des objets. Bien que ce filtre répare les codes-barres endommagés ou pâles en comblant les petites lacunes ou en améliorant les zones à faible contraste, notez que son effet sur les barres de codes-barres diffère de l'intuition. Étant donné que la dilatation agrandit les espaces clairs, elle amincit indirectement les éléments sombres tels que les barres noires des codes-barres (en supposant un fond blanc). Cela rend le filtre particulièrement efficace dans les scénarios où les barres de code-barres semblent trop épaisses ou fusionnées, mais une utilisation excessive peut dégrader la précision de numérisation en rétrécissant de manière excessive les barres.

Comme ci-dessus, augmentez l'effet du filtre en saisissant un nombre entier représentant la kernelSize pour le filtre.

Dans l'exemple ci-dessous, utilisez une taille de noyau plus importante pour illustrer les effets du DilateFilter.

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

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

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

// Export file to disk
results.ExportFilterImagesToDisk("dilateFilter.jpg");
$vbLabelText   $csharpLabel
Blurry barcode image showing number 4902030187590 - example for dilate filter processing
Blurred barcode with numerical sequence below vertical bars

Comme le montre l'image ci-dessus, une utilisation agressive de DilateFilter peut potentiellement détruire la structure du code-barres, en fusionnant des barres étroitement espacées et en créant des zones de silence dans les codes-barres. Testez et affinez les effets sur l'image en modifiant la valeur de la taille du noyau pour qu'elle soit plus grande ou plus petite, en fonction de l'image d'entrée.

Quand utiliser le filtre d'égalisation d'histogramme?

Le filtre HistogramEqualizationFilter améliore le contraste de l'image en redistribuant l'intensité des pixels afin d'améliorer la clarté. Elle est le plus souvent utilisée lorsque le code-barres présente soit un faible contraste, comme des images décolorées ou délavées, soit des images avec un éclairage inégal, comme des ombres sombres ou des éblouissements lumineux. En analysant l'histogramme de l'image, qui est la distribution de la luminosité des pixels, il redistribue les valeurs de pixels en augmentant le contraste en étirant la plage d'intensité, où les pixels sombres deviennent plus sombres et les pixels clairs deviennent plus clairs.

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

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

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

// Export file to disk
results.ExportFilterImagesToDisk("histogramEqualizationFilter.jpg");
$vbLabelText   $csharpLabel
Blurry barcode with number 4902030187590 used as test image for histogram equalization filter
Barcode with vertical black and white stripes showing number 4902030187590

Comme le montre l'image ci-dessus, les barres noires sont visiblement plus foncées et les espaces sont visiblement plus clairs par rapport à l'image originale.

Quels filtres de flou peuvent aider à la réduction du bruit des BarCodes?

Comment le filtre GaussianBlur réduit-il le bruit des images ?

Le GaussianBlurFilter applique un flou gaussien à une image. Ce filtre réduit généralement le bruit dans une image. Pour un guide complet sur le traitement des codes-barres imparfaits, consultez notre tutoriel de correction de l'orientation de l'image.

Le filtre fonctionne en moyennant les valeurs de pixels voisins dans l'image à l'aide d'une fonction gaussienne. La méthode repose sur deux facteurs ajustables :

  • Noyau : une matrice utilisée pour moyenniser les pixels.
  • Sigma : une valeur qui contrôle l'intensité du flou.

La taille du noyau par défaut est de 3x3 pixels, et la valeur Sigma par défaut est de 3.0, ce qui produit un flou modéré. L'augmentation de la valeur Sigma permet d'obtenir un effet de flou plus important. Vous pouvez également personnaliser le kernel pour contrôler la taille du voisinage dont le filtre de flou fait la moyenne.

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

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

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

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

Appliquer ce filtre à l'entrée d'échantillon produit l'image ci-dessous.

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

Quand utiliser le filtre bilatéral?

Le BilateralFilter lisse les images tout en préservant les bords. Contrairement aux techniques de flou simple qui affectent tous les pixels de manière uniforme, le filtre bilatéral prend en compte les différences de couleur et la distance entre les pixels, ce qui le rend efficace pour le lissage préservant les contours.

La méthode repose sur trois facteurs ajustables :

  • NeighborhoodDiameter : Diamètre du voisinage des pixels (par défaut : 5).
  • SigmaColor : Influence de la couleur déterminant l'impact de la différence de couleur (par défaut : 75,0).
  • SigmaSpace : influence spatiale déterminant l'impact de la distance (par défaut : 75,0).
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-bilateral.cs
using IronBarCode;

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

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

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

Appliquer ce filtre à l'entrée d'échantillon produit l'image ci-dessous.

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

Qu'est-ce qui différencie le filtre MedianBlur pour la réduction du bruit ?

Le MedianBlurFilter réduit le bruit dans une image en remplaçant la valeur de chaque pixel par la valeur médiane des pixels environnants. Ce filtre est particulièrement efficace pour préserver les contours tout en supprimant le bruit. Pour en savoir plus sur les paramètres de lecture des codes-barres, consultez notre guide des paramètres du lecteur de codes-barres.

  • KernelSize : taille du voisinage pour le calcul de la médiane (doit être impair, valeur par défaut : 5).
:path=/static-assets/barcode/content-code-examples/how-to/image-correction-medianblur.cs
using IronBarCode;

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

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

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

Appliquer ce filtre à l'entrée d'échantillon produit l'image ci-dessous.

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

Comment sauvegarder les images filtrées à chaque étape du traitement?

Lors de l'application de plusieurs filtres au code-barres, la visualisation de la sortie après chaque méthode de filtrage peut s'avérer difficile. Cette fonctionnalité permet de sauvegarder l'image filtrée après chaque application de filtre, dans l'ordre où ils sont traités. Pour activer cette fonctionnalité, passez d'abord true au constructeur ImageFilterCollection. Utilisez ensuite la méthode ExportFilterImagesToDisk pour indiquer le chemin et le nom des images de sortie. Pour plus d'exemples sur l'enregistrement des BarCodes, consultez notre exemple de conversion de code-barres en image.

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

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

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

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

Les filtres sont appliqués dans l'ordre du code, et les images de sortie reflètent les résultats de chaque itération :

  • Sharpen -> Après Sharpen
  • Sharpen + AdaptiveThreshold -> Après AdaptiveThreshold
  • Sharpen + AdaptiveThreshold + Contrast -> Après Contrast
Blurry barcode with number 4902030187590
Blurry UPC barcode showing number 4902030187590
Degraded barcode example showing poor image quality with number 9020301875905
Heavily pixelated barcode with UPC number 902030187590

Outre les propriétés ImageFilters, ajoutez d'autres propriétés à BarcodeReaderOptions pour une lecture plus précise ; voir cet article pour plus d'informations.

Questions Fréquemment Posées

Que sont les filtres de correction d'image et pourquoi sont-ils nécessaires pour la lecture des codes-barres ?

Les filtres de correction d'image dans IronBarcode sont des outils intégrés qui améliorent par programme les images de codes-barres floues ou imparfaites. Ils sont essentiels car la mauvaise qualité de l'image est l'un des principaux facteurs empêchant une lecture réussie des codes-barres. IronBarcode propose des filtres tels que SharpenFilter et ContrastFilter qui améliorent la précision de la lecture sans nécessiter de logiciel d'édition d'image externe ou de recapture d'images.

Comment appliquer des filtres de correction d'image pour améliorer la lecture des codes-barres ?

Pour appliquer des filtres dans IronBarcode, créez une instance ImageFilterCollection et ajoutez-y des instances de filtres individuels. Assignez ensuite cette collection à la propriété ImageFilters de BarcodeReaderOptions et passez-la à la méthode Read. Par exemple : new BarcodeReaderOptions { ImageFilters = new ImageFilterCollection() { new SharpenFilter(3.5f), new ContrastFilter(2.0f) } }.

Quels sont les filtres d'image recommandés pour les images de codes-barres floues ?

Pour les images de codes-barres floues, IronBarcode recommande d'utiliser au moins le SharpenFilter et le ContrastFilter. Le SharpenFilter améliore la définition des bords dans les images floues, tandis que le ContrastFilter améliore la distinction entre les zones claires et sombres. Ces filtres fonctionnent ensemble pour rendre les codes-barres plus lisibles sans traitement d'image externe.

Puis-je personnaliser l'intensité des filtres de correction d'image ?

Oui, IronBarcode vous permet de configurer chaque filtre avec des valeurs personnalisées. Par exemple, SharpenFilter accepte un paramètre flottant (comme 3.5f) pour contrôler l'intensité de l'accentuation, et ContrastFilter accepte un paramètre (comme 2.0f) pour ajuster les niveaux de contraste. Cette personnalisation permet d'optimiser l'efficacité des filtres en fonction des différentes conditions de l'image.

Ai-je besoin d'outils d'édition d'images externes pour améliorer les images de codes-barres ?

Non, IronBarcode élimine le besoin d'outils d'édition d'images externes en fournissant des filtres de correction d'image intégrés. Ces filtres programmatiques, tels que SharpenFilter et ContrastFilter, peuvent améliorer la qualité de l'image directement dans votre application .NET, ce qui permet de gagner du temps et d'éviter de dépendre d'un logiciel tiers.

Hairil Hasyimi Bin Omar
Ingénieur logiciel
Comme tous les grands ingénieurs, Hairil est un apprenant avide. Il affine ses connaissances en C#, Python et Java, utilisant ces connaissances pour apporter de la valeur aux membres de l'équipe dans toute Iron Software. Hairil a rejoint l'équipe d'Iron Software depuis l'Université Teknologi MARA en Malaisie, ...
Lire la suite
Prêt à commencer?
Nuget Téléchargements 2,035,202 | Version : 2025.12 vient de sortir