Cómo usar Filtros de Corrección de Imágenes Para Código de Barras Usando C#

Uso de filtros de corrección de imágenes en C&#35 para mejorar la decodificación de códigos de barras

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

IronBarcode proporciona filtros de corrección de imagen integrados como SharpenFilter y ContrastFilter que mejoran mediante programación las imágenes de códigos de barras borrosas o imperfectas, mejorando la precisión de lectura sin necesidad de software externo de edición de imágenes ni de volver a capturar imágenes.

No todas las imágenes son perfectas, y la mala calidad de la imagen es uno de los principales factores que impiden la lectura correcta de códigos de barras en IronBarcode. En lugar de volver a capturar imágenes o utilizar software externo de mejora de imágenes, IronBarcode proporciona filtros integrados que mejoran la calidad de la imagen mediante programación. Estos filtros ayudan a IronBarcode a leer imágenes difíciles y a mejorar la precisión general.

Continúa leyendo para conocer los filtros de corrección de imagen disponibles en IronBarcode, sus efectos sobre las imágenes y cómo aplicarlos. Para más información sobre técnicas de lectura de códigos de barras, consulte nuestro Tutorial de lectura de códigos de barras.

Inicio rápido: Aplicar filtros de agudización y contraste para mejorar la lectura de códigos de barras

En un solo paso, aplique el SharpenFilter y el ContrastFilter de IronBarcode utilizando la ImageFilterCollection en BarcodeReaderOptions. Esto mejora el escaneado de códigos de barras con una configuración mínima y sin necesidad de herramientas externas.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronBarcode con el gestor de paquetes NuGet

    PM > Install-Package BarCode

  2. Copie y ejecute este fragmento de código.

    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. Despliegue para probar en su entorno real

    Empieza a utilizar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer

¿Cómo aplicar filtros de imagen para mejorar la lectura de códigos de barras?

Para aplicar filtros, instancie la clase ImageFilterCollection y cree instancias de cada filtro individualmente. Luego asigna el objeto a la propiedad ImageFilters del objeto BarcodeReaderOptions. Pasa el objeto de opciones al método Read junto con la imagen de muestra. Para opciones de instalación avanzadas, visite nuestra Guía de paquetes NuGet.

Utilice la imagen siguiente como imagen de muestra.

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

La imagen aparece bastante borrosa. Sin embargo, el brillo es aceptable, y los colores blanco y negro son distinguibles. Por lo tanto, aplica al menos el SharpenFilter y el ContrastFilter para mejorar la legibilidad del código de barras. Consulte el siguiente fragmento de código para aplicar filtros a la imagen, leerla y mostrar los resultados en la consola.

: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

El fragmento de código anterior aplica filtros, lee el código de barras y exporta la imagen filtrada al disco. A continuación se muestra la comparación entre la muestra y las imágenes filtradas.

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

¿Qué filtros de corrección de imagen están disponibles en IronBarcode?

IronBarcode ofrece múltiples filtros de imagen diseñados específicamente para la corrección de imágenes. Estos filtros ayudan a leer imágenes de códigos de barras imperfectas y mejoran la precisión de la lectura. Sin embargo, hay que entender cómo funcionan estos filtros para seleccionar los filtros adecuados y evitar problemas de rendimiento por usar demasiados filtros o usar el filtro incorrecto. Los filtros disponibles incluyen:

  • <código>AdaptiveThresholdFilter</código
  • <código>BinaryThresholdFilter</código
  • <código>BrightnessFilter</código
  • <código>ContrastFilter</código
  • <código>InvertirFiltro</código
  • <código>SharpenFilter</código
  • <código>ErodeFilter</código
  • <código>DilateFilter</código
  • <código>HistogramaCualizaciónFiltro</código
  • Filtros de desenfoque
    • <código>GaussianBlurFilter</código
    • <código>FiltroBilateral</código
    • <código>MedianBlurFilter</código

El orden en que se aplican los filtros se basa en su ubicación dentro de la ImageFilterCollection. Para obtener documentación detallada sobre la API de estos filtros, visite nuestra Referencia API.

¿Cómo funciona el filtro de umbral adaptativo?

AdaptiveThresholdFilter es un filtro disponible en IronBarcode que aplica la técnica Bradley Adaptive Threshold a la imagen, que determina automáticamente el umbral para binarizar una imagen. Este filtro es ideal para imágenes con iluminación no uniforme y niveles de intensidad de fondo 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

A continuación se presentan los resultados de aplicar el filtro utilizando diferentes valores.

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

El constructor acepta parámetros adicionales para su configuración:

  • Upper: Color superior (blanco) para el umbral.
  • Lower: Color inferior (negro) para el umbral.
  • Umbral: Límite de umbral (0,0-1,0) para la binarización.
  • Rectángulo: Región rectangular sobre la que aplicar el procesador.

Como se muestra en la imagen de salida anterior, la imagen se binariza para que solo tenga los colores negro y blanco. Aunque todavía no parece lo ideal para la lectura de códigos de barras, es necesario utilizar filtros combinados. Experimenta con la sensibilidad de los parámetros para obtener los mejores resultados.

¿Cómo funciona el filtro de umbral binario?

El BinaryThresholdFilter filtra una imagen dividiendo los píxeles en el umbral dado, comparando la luminancia de un componente de color. Al igual que el AdaptiveThresholdFilter, este filtro puede introducir ruido nuevo o no deseado si no se utiliza correctamente. Sin embargo, IronBarcode ha establecido valores predeterminados para las propiedades de los filtros.

Al igual que el AdaptiveThresholdFilter, el BinaryThresholdFilter acepta los mismos parámetros adicionales para su configuración:

  • Upper: Color superior (blanco) para el umbral.
  • Lower: Color inferior (negro) para el umbral.
  • Umbral: Límite de umbral (0,0-1,0) para la binarización.
  • Rectángulo: Región rectangular sobre la que aplicar el procesador.
: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

A continuación se muestra el ejemplo de salida de aplicar filtros a la imagen de muestra.

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

Observando la imagen de salida anterior, la muestra se ha binarizado en color blanco y negro. Sin embargo, está claro que este filtro no es adecuado para esta imagen debido a la eliminación de las barras del código de barras y a la introducción de nuevo ruido. Para resolver situaciones difíciles con códigos de barras, consulte nuestra guía de resolución de problemas con códigos de barras no reconocidos.

¿Cómo ajustar el brillo de la imagen para leer mejor los códigos de barras?

.Filtro de brillo es otro filtro esencial en la colección de filtros de imágenes en IronBarcode. Como su nombre indica, este filtro ajusta el brillo de la imagen del código de barras. La entrada a este constructor varía la Cantidad de brillo en la imagen de salida. El valor por defecto es 1, lo que deja la imagen sin cambios. Un valor de 0 crea una imagen completamente negra, mientras que valores superiores a 1 hacen que la imagen sea más brillante.

: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

A continuación se muestra la imagen de salida después de aplicar este filtro a la entrada de muestra.

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

¿Cómo utilizar el filtro de contraste para mejorar las imágenes de códigos de barras?

El ContrastFilter ajusta el nivel de contraste de una imagen. El contraste de imagen se refiere a la diferencia en la intensidad de color entre varios elementos en una imagen. Aumentar el nivel de contraste mejora la visibilidad de los detalles, haciendo que la imagen sea más vívida y llamativa, mientras que reducir el contraste hace que la imagen sea más suave y sutil. Para más detalles sobre la personalización de códigos de barras, consulte nuestra guía sobre personalización de estilos de códigos de barras.

El valor por defecto es 1, lo que deja la imagen sin cambios. Un valor de 0 crea una imagen completamente gris, mientras que valores superiores a 1 aumentan el contraste de la imagen.

: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

Aplicar este filtro a la entrada de muestra produce la imagen a continuación.

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

¿Cuándo debo utilizar el filtro de inversión?

Este filtro invierte los colores dentro de una imagen, haciendo colores opuestos, como el blanco se convierte en negro y el negro en blanco. Es especialmente útil cuando se lee una imagen de código de barras con un color de fondo. A diferencia del BinaryThresholdFilter, este filtro invierte los colores directamente sin necesidad de especificar la sensibilidad. Además, este filtro se puede utilizar con un CropRectangle para especificar la ubicación en la imagen que necesita que se invierta el color, en lugar de invertir los colores de toda la imagen. Obtenga más información sobre cómo especificar regiones de cultivo en nuestro tutorial sobre regiones de cultivo.

: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

La imagen de salida que se muestra a continuación es el resultado de aplicar este filtro a la imagen de entrada de ejemplo.

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

¿Cómo corregir imágenes borrosas de códigos de barras con el filtro Sharpen?

IronBarcode proporciona un filtro de nitidez. Este filtro mejora la nitidez de una imagen y es muy útil al tratar con imágenes borrosas. Manipule este filtro para ajustar la nitidez de una imagen ajustando el valor Sigma al instanciar el objeto filtro. El valor por defecto es 3. Aumenta el valor sigma para aumentar la nitidez de la imagen. Para conocer otras opciones de optimización del rendimiento, consulte nuestra guía sobre opciones de velocidad de lectura.

: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

Comparando la imagen de arriba con la original, parece más nítida y ayuda en la lectura de códigos de barras utilizando IronBarcode. En la mayoría de los casos, el filtro de agudización siempre se aplica junto con otros filtros en la clase ImageFilterCollection.

¿Para qué se utiliza el filtro Erode?

El ErodeFilter elimina el ruido blanco diminuto y engrosa las barras de los códigos de barras eliminando los píxeles cercanos al borde de las formas. Este filtro se utiliza mejor en situaciones en las que el fondo del código de barras tiene muchas motas blancas o si la imagen del código de barras tiene una resolución demasiado baja o está borrosa, lo que da lugar a barras fusionadas. El ErodeFilter hace las barras más gruesas a la vez que elimina las motas blancas del fondo. Para obtener más información sobre el manejo de imágenes imperfectas, consulte nuestro ejemplo de código de barras imperfecto.

Aumente el efecto de la erosión introduciendo un número entero que represente kernelSize para el filtro. Cuanto mayor sea el tamaño del kernel, más fuerte será el efecto en la imagen de entrada. Tenga en cuenta que el kernelSize es un cuadrado y en este ejemplo sería un 5x5 kernel.

Como ejemplo, utilice el ErodeFilter con un tamaño de núcleo mayor para mostrar los efectos del filtro.

: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 se comparan las imágenes de entrada y de salida de arriba, algunas barras son visiblemente más gruesas debido a la naturaleza más agresiva de introducir un tamaño de núcleo mayor para filtrar. Sin embargo, las manchas blancas en la imagen general han disminuido. Por la naturaleza del filtro de erosión, cuanto mayor sea el tamaño del núcleo, podría borrar barras finas si se aplica de forma demasiado agresiva, como se muestra en la imagen anterior. Pruebe y refine el efecto cambiando el valor del tamaño del núcleo introducido en el ErodeFilter.

¿Cómo ayuda el filtro de dilatación a la lectura de códigos de barras?

El filtro de dilatación funciona como el inverso del filtro de erosión, operando al expandir regiones brillantes — generalmente el fondo — mediante la adición de píxeles a las fronteras de los objetos. Aunque este filtro repara los códigos de barras dañados o tenues rellenando pequeños huecos o realzando las zonas de bajo contraste, tenga en cuenta que su efecto sobre las barras de los códigos de barras difiere de lo que se intuye. Dado que la dilatación amplía los espacios brillantes, indirectamente adelgaza los elementos oscuros, como las barras negras de los códigos de barras (suponiendo un fondo blanco). Esto hace que el filtro sea particularmente efectivo en escenarios donde las barras del código de barras parecen excesivamente gruesas o unidas, pero un uso excesivo puede degradar la precisión del escaneo al adelgazarlas de manera excesiva.

Como en el caso anterior, aumente el efecto del filtro introduciendo un número entero que represente el kernelSize del filtro.

Para el ejemplo siguiente, utilice un tamaño de núcleo mayor para mostrar los efectos del 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

Como se muestra en la imagen anterior, el uso agresivo de DilateFilter puede destruir potencialmente la estructura del código de barras, fusionando barras muy juntas y creando zonas silenciosas en los códigos de barras. Pruebe y perfeccione los efectos sobre la imagen cambiando el valor del tamaño del núcleo para que sea mayor o menor, en función de la imagen de entrada.

¿Cuándo debo utilizar el filtro HistogramEqualization?

El HistogramEqualizationFilter mejora el contraste de la imagen redistribuyendo las intensidades de los píxeles para mejorar la claridad. Se utiliza sobre todo cuando el código de barras tiene poco contraste, como imágenes descoloridas o desteñidas, o imágenes con una iluminación desigual, como sombras oscuras o brillos intensos. Al analizar el histograma de la imagen, que es la distribución del brillo de los píxeles, redistribuye los valores de los píxeles aumentando el contraste estirando el rango de intensidad, donde los píxeles oscuros se vuelven más oscuros y los píxeles claros se vuelven más claros.

: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

Como se muestra en la imagen anterior, las barras negras son visiblemente más oscuras y los espacios son visiblemente más brillantes en comparación con la imagen original.

¿Qué filtros de desenfoque pueden ayudar a reducir el ruido de los códigos de barras?

¿Cómo reduce el ruido de las imágenes el filtro GaussianBlur?

El GaussianBlurFilter aplica un desenfoque gaussiano a una imagen. Este filtro suele reducir el ruido en una imagen. Para obtener una guía completa sobre cómo tratar códigos de barras imperfectos, consulte nuestro tutorial de corrección de la orientación de la imagen.

El filtro funciona promediando los valores de los píxeles vecinos en la imagen utilizando una función gaussiana. El método se basa en dos factores ajustables:

  • Kernel: una matriz utilizada para promediar los píxeles.
  • Sigma: valor que controla la intensidad del desenfoque.

El tamaño predeterminado del kernel es de 3x3 píxeles, y el valor predeterminado de Sigma es de 3,0, lo que produce un desenfoque moderado. Al aumentar el valor de Sigma se consigue un efecto de desenfoque más intenso. También puedes personalizar el kernel para controlar el tamaño del vecindario que promedia el filtro de desenfoque.

: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

Aplicar este filtro a la entrada de muestra produce la imagen a continuación.

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

¿Cuándo debo utilizar el filtro bilateral?

El BilateralFilter suaviza las imágenes conservando los bordes. A diferencia de las técnicas de desenfoque simples que afectan a todos los píxeles de manera uniforme, el filtro bilateral tiene en cuenta tanto las diferencias de color como la distancia entre píxeles, lo que lo hace eficaz para el suavizado que preserva los bordes.

El método se basa en tres factores ajustables:

  • Diámetro de vecindad: Diámetro de la vecindad de píxeles (por defecto: 5).
  • SigmaColor: Influencia del color que determina el impacto de la diferencia de color (por defecto: 75,0).
  • SigmaSpace: influencia espacial que determina el impacto de la distancia (por defecto: 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

Aplicar este filtro a la entrada de muestra produce la imagen a continuación.

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

¿Qué hace diferente al filtro MedianBlur para la reducción de ruido?

El MedianBlurFilter reduce el ruido en una imagen sustituyendo el valor de cada píxel por el valor medio de los píxeles circundantes. Este filtro destaca especialmente en la conservación de bordes y la eliminación de ruido. Para saber más sobre la configuración del lector de códigos de barras, visite nuestra guía de configuración del lector de códigos de barras.

  • KernelSize: Tamaño del vecindario para el cálculo de la mediana (debe ser impar, por defecto: 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

Aplicar este filtro a la entrada de muestra produce la imagen a continuación.

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

¿Cómo puedo guardar imágenes filtradas en cada paso de procesamiento?

Cuando se aplican varios filtros al código de barras, puede resultar difícil ver el resultado después de cada método de filtrado. Esta función permite guardar la imagen filtrada después de que se aplique cada filtro, en el orden en que se procesan. Para habilitar esta función, primero pasa true al constructor de ImageFilterCollection. A continuación, utilice el método ExportFilterImagesToDisk para proporcionar la ruta y el nombre de las imágenes de salida. Para más ejemplos sobre cómo guardar códigos de barras, consulte nuestro ejemplo de convertir código de barras en imagen.

: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

Los filtros se aplican en el orden del código, y las imágenes de salida reflejan los resultados de cada iteración:

  • Sharpen -> Después de Sharpen
  • Sharpen + AdaptiveThreshold -> Después de AdaptiveThreshold
  • Enfocar + Umbral adaptativo + Contraste -> Después de Contraste
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

Además de las propiedades ImageFilters, añada otras propiedades a BarcodeReaderOptions para una lectura más precisa; consulta este artículo para más información.

Preguntas Frecuentes

¿Qué son los filtros de corrección de imagen y por qué son necesarios para la lectura de códigos de barras?

Los filtros de corrección de imágenes de IronBarcode son herramientas integradas que mejoran mediante programación las imágenes de códigos de barras borrosas o imperfectas. Son esenciales porque la mala calidad de la imagen es uno de los principales factores que impiden la lectura correcta de los códigos de barras. IronBarcode proporciona filtros como SharpenFilter y ContrastFilter que mejoran la precisión de la lectura sin necesidad de software externo de edición de imágenes ni de volver a capturar las imágenes.

¿Cómo puedo aplicar filtros de corrección de imágenes para mejorar el escaneado de códigos de barras?

Para aplicar filtros en IronBarcode, cree una instancia ImageFilterCollection y añádale instancias de filtro individuales. A continuación, asigne esta colección a la propiedad ImageFilters de BarcodeReaderOptions y pásela al método Read. Por ejemplo: new BarcodeReaderOptions { ImageFilters = new ImageFilterCollection() { new SharpenFilter(3.5f), new ContrastFilter(2.0f) } }.

¿Qué filtros de imagen se recomiendan para las imágenes borrosas de códigos de barras?

Para imágenes de códigos de barras borrosas, IronBarcode recomienda utilizar al menos los filtros SharpenFilter y ContrastFilter. El SharpenFilter mejora la definición de los bordes en las imágenes borrosas, mientras que el ContrastFilter mejora la distinción entre las zonas claras y oscuras. Estos filtros actúan conjuntamente para que los códigos de barras sean más legibles sin necesidad de un procesamiento externo de la imagen.

¿Puedo personalizar la intensidad de los filtros de corrección de imagen?

Sí, IronBarcode permite configurar cada filtro con valores personalizados. Por ejemplo, SharpenFilter acepta un parámetro flotante (como 3.5f) para controlar la intensidad de la nitidez, y ContrastFilter acepta un parámetro (como 2.0f) para ajustar los niveles de contraste. Esta personalización ayuda a optimizar la eficacia del filtro para diferentes condiciones de la imagen.

¿Necesito herramientas externas de edición de imágenes para mejorar las imágenes de códigos de barras?

No, IronBarcode elimina la necesidad de herramientas externas de edición de imágenes al proporcionar filtros de corrección de imágenes integrados. Estos filtros programáticos como SharpenFilter y ContrastFilter pueden mejorar la calidad de la imagen directamente dentro de su aplicación .NET, ahorrando tiempo y evitando dependencias de software de terceros.

Hairil Hasyimi Bin Omar
Ingeniero de Software
Como todos los grandes ingenieros, Hairil es un ávido aprendiz. Está refinando su conocimiento de C#, Python y Java, usando ese conocimiento para agregar valor a los miembros del equipo en Iron Software. Hairil se unió al equipo de Iron Software desde la Universiti Teknologi MARA en Malasia, donde se ...
Leer más
¿Listo para empezar?
Nuget Descargas 2,035,202 | Versión: 2025.12 recién lanzado