Reconocer códigos de barras matriciales 2D con distorsiones espaciales en .NET

Categoría del blog: Barcode.NET

06.05.2020

El SDK VintaSoft Barcode .NET se puede utilizar en aplicaciones .NET/C# para el reconocimiento de códigos de barras bidimensionales Aztec, QR y Han Xin con distorsiones superficiales aleatorias. En la práctica, esto simplifica significativamente el reconocimiento de códigos de barras. de cámara fotográfica, cámara web o cámara de teléfono inteligente, porque ahora no es necesario alinear el código de barras frente a la cámara e incluso es posible reconocer códigos de barras de superficies irregulares.

Primera muestra de código de barras Aztec con distorsiones espaciales


Nuestros desarrolladores han dedicado muchas horas fascinantes a desarrollar y mejorar el algoritmo de corrección de distorsión utilizando cámaras web y fotográficas. A continuación, puede ver dichos códigos de barras a través de los "ojos" de nuestro lector de códigos de barras:

Vista del código de barras Aztec con distorsiones espaciales a través de los 'ojos' del lector de códigos de barras de VintaSoft Barcode .NET SDK

En algún momento, nuestros desarrolladores comenzaron a ver los códigos de barras exactamente así. :)


Aquí hay un código C# que permite reconocer códigos de barras Aztec, QR y Han Xin con distorsiones espaciales:
/// <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();
            }
        }
    }
}


Las pruebas demostraron que el lector de códigos de barras puede manejar con éxito uno o más tipos de distorsiones especificadas a continuación:

Aquí hay algunas imágenes con códigos de barras distorsionados:
Segunda muestra de código de barras Aztec con distorsiones espaciales

Tercera muestra de código de barras Aztec con distorsiones espaciales

Primera muestra de código de barras del Código Han Xin con distorsiones espaciales

Segunda muestra de código de barras del Código Han Xin con distorsiones espaciales

Primera muestra de código de barras QR con distorsiones espaciales

Segunda muestra de código de barras QR con distorsiones espaciales


Puede encontrar más imágenes con códigos de barras distorsionados en el paquete de distribución de VintaSoft Barcode .NET SDK.

Si tiene algún problema con el reconocimiento de códigos de barras y cree que nuestro algoritmo de reconocimiento de códigos de barras debería resolverlo, envíe sus imágenes para probarlas y revisarlas a support@vintasoft.com.