Reconnaissance des codes-barres matriciels 2D avec distorsions spatiales en .NET

Catégorie du blog: Code-barres.NET

06.05.2020

VintaSoft Barcode .NET SDK peut être utilisé dans les applications .NET/C# pour la reconnaissance des codes-barres bidimensionnels de type Aztec, QR Code et Han Xin Code, même en présence de distorsions de surface aléatoires. En pratique, cela simplifie considérablement la reconnaissance des codes-barres à partir d'un appareil photo, d'une webcam ou d'un smartphone, car il n'est plus nécessaire d'aligner le code-barres devant l'objectif; la reconnaissance est même possible sur des surfaces irrégulières.

First sample of Aztec barcode with spatial distortions


Nos développeurs ont consacré de nombreuses heures passionnantes au développement et à l'amélioration de l'algorithme de correction de la distorsion à l'aide de caméras web et photographiques. Vous pouvez observer ci-dessous ces codes-barres à travers les "yeux" de notre lecteur de codes-barres:

View to the Aztec barcode with spatial distortions via 'eyes' of barcode reader of VintaSoft Barcode .NET SDK

À un moment donné, nos développeurs ont commencé à voir les codes-barres exactement comme ceci. :)


Voici un code C# permettant de reconnaître les codes-barres Aztec, QR et Han Xin Code présentant des distorsions spatiales:
/// <summary>
/// Recognizes 2D matrix barcodes (Aztec, QR Code and Han Xin Code) with spatial distortions.
/// </summary>
public void Recognize2dBarcodeWithSpatialDistortions()
{
    // create barcode reader
    using (Vintasoft.Barcode.BarcodeReader reader = new Vintasoft.Barcode.BarcodeReader())
    {
        // specify that reader must search for Aztec, QR and Han Xin Code barcodes
        reader.Settings.ScanBarcodeTypes = Vintasoft.Barcode.BarcodeType.Aztec |
            Vintasoft.Barcode.BarcodeType.QR |
            Vintasoft.Barcode.BarcodeType.HanXinCode;

        // specify that reader must search for horizontal and vertical barcodes only
        reader.Settings.ScanDirection = Vintasoft.Barcode.ScanDirection.Horizontal | Vintasoft.Barcode.ScanDirection.Vertical;

        // read barcodes from image file
        Vintasoft.Barcode.IBarcodeInfo[] barcodeInfos = reader.ReadBarcodes("barcodes.png");

        // if barcodes are not detected
        if (barcodeInfos.Length == 0)
        {
            System.Console.WriteLine("Barcodes are not found.");
        }
        // if barcodes are detected
        else
        {
            // get information about recognized barcodes

            System.Console.WriteLine(string.Format("{0} barcode(s) found:", barcodeInfos.Length));
            System.Console.WriteLine();
            for (int i = 0; i &lt; barcodeInfos.Length; i++)
            {
                Vintasoft.Barcode.IBarcodeInfo barcodeInfo = barcodeInfos[i];
                System.Console.WriteLine(string.Format("[{0}:{1}]", i + 1, barcodeInfo.BarcodeType));
                System.Console.WriteLine(string.Format("Value:      {0}", barcodeInfo.Value));
                System.Console.WriteLine(string.Format("Region:     {0}", barcodeInfo.Region));
                System.Console.WriteLine();
            }
        }
    }
}


Les tests ont montré que le lecteur de codes-barres peut gérer avec succès un ou plusieurs des types de distorsions suivants:

Voici quelques images de codes-barres déformés:
Second sample of Aztec barcode with spatial distortions

Third sample of Aztec barcode with spatial distortions

First sample of Han Xin Code barcode with spatial distortions

Second sample of Han Xin Code barcode with spatial distortions

First sample of QR barcode with spatial distortions

Second sample of QR barcode with spatial distortions


Vous trouverez d'autres images avec des codes-barres déformés dans le package de distribution de VintaSoft Barcode .NET SDK.

Si vous rencontrez des problèmes de reconnaissance de codes-barres et que vous pensez que notre algorithme de reconnaissance de codes-barres pourrait les résoudre, veuillez envoyer vos images pour test et examen à support@vintasoft.com.