Como usar filtros de correção de imagem para código de barras em C#

Usando Filtros de Correção de Imagem C# para Melhorar a Decodificação de Código de Barras

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

IronBarcode fornece filtros de correção de imagem embutidos como SharpenFilter e ContrastFilter que melhoram programaticamente imagens de código de barras borradas ou imperfeitas, melhorando a precisão de leitura sem precisar de software externo de edição de imagem ou recaptura de imagens.

Nem toda imagem é perfeita, e a má qualidade da imagem é um dos principais fatores que impedem a leitura bem-sucedida de códigos de barras no IronBarcode. Em vez de recapturar imagens ou usar software de melhoria de imagem externa, IronBarcode fornece filtros embutidos que melhoram programaticamente a qualidade da imagem. Esses filtros ajudam IronBarcode a ler imagens difíceis e a melhorar a precisão geral.

Continue lendo para aprender sobre os filtros de correção de imagem disponíveis no IronBarcode, seus efeitos nas imagens e como aplicá-los. Para técnicas mais abrangentes de leitura de código de barras, confira nosso tutorial de Leitura de Códigos de Barras.

Início Rápido: Aplique Filtros de Nitidez e Contraste para Melhorar Leituras de Código de Barras

Em apenas um passo, aplique SharpenFilter e ContrastFilter do IronBarcode usando ImageFilterCollection em BarcodeReaderOptions. Isso melhora a digitalização de códigos de barras com configuração mínima e sem necessidade de ferramentas externas.

  1. Instale IronBarcode com o Gerenciador de Pacotes NuGet

    PM > Install-Package BarCode
  2. Copie e execute este trecho 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. Implante para testar em seu ambiente de produção.

    Comece a usar IronBarcode em seu projeto hoje com uma avaliação gratuita

    arrow pointer

Como Aplico Filtros de Imagem para Melhorar a Leitura de Código de Barras?

Para aplicar filtros, instancie a classe ImageFilterCollection e crie instâncias de cada filtro individualmente. Em seguida, atribua o objeto à propriedade ImageFilters do objeto BarcodeReaderOptions. Passe o objeto de opções para o método Read junto com a imagem de exemplo. Para opções avançadas de instalação, visite nosso guia de pacotes NuGet.

Use a imagem abaixo como nossa imagem de exemplo.

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

A imagem parece bastante borrada. No entanto, o brilho é aceitável, e as cores branca e preta são distinguíveis. Portanto, aplique pelo menos o SharpenFilter e o ContrastFilter para melhorar a legibilidade do código de barras. Consulte o trecho de código abaixo para aplicar filtros à imagem, lê-la e exibir os resultados no 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

O trecho de código acima aplica filtros, lê o código de barras e exporta a imagem filtrada para o disco. A comparação entre as imagens de exemplo e filtradas é mostrada abaixo.

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

Quais Filtros de Correção de Imagem Estão Disponíveis no IronBarcode?

IronBarcode oferece múltiplos filtros de imagem especificamente projetados para correção de imagem. Esses filtros auxiliam na leitura de imagens de códigos de barras imperfeitos e melhoram a precisão da leitura. No entanto, compreenda como esses filtros funcionam para selecionar filtros adequados e evitar problemas de desempenho devido ao uso de muitos filtros ou ao uso do filtro errado. Os filtros disponíveis incluem:

  • AdaptiveThresholdFilter
  • BinaryThresholdFilter
  • BrightnessFilter
  • ContrastFilter
  • InvertFilter
  • SharpenFilter
  • ErodeFilter
  • DilateFilter
  • HistogramEqualizationFilter
  • Filtros de Desfoque
    • GaussianBlurFilter
    • BilateralFilter
    • MedianBlurFilter

A ordem na qual os filtros são aplicados baseia-se na sua colocação dentro da ImageFilterCollection. Para documentação detalhada da API sobre esses filtros, visite nossa Referência da API.

Como Funciona o Filtro de Limite Adaptativo?

AdaptiveThresholdFilter é um filtro disponível no IronBarcode que aplica a técnica de Limite Adaptativo de Bradley à imagem, que determina automaticamente o limite para binarizar uma imagem. Este filtro é ideal para imagens com iluminação não uniforme e níveis de intensidade de fundo variados.

: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

Abaixo estão os resultados de aplicar o filtro usando 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

O construtor aceita parâmetros adicionais para configuração:

  • Upper: Cor superior (branca) para limiar.
  • Lower: Cor inferior (preta) para limiar.
  • Threshold: Limite de limiar (0.0-1.0) para binarização.
  • Rectangle: Região retangular para aplicar o processador.

Como mostrado na imagem de saída acima, a imagem é binarizada para ter apenas cores preta e branca. Embora ainda não pareça ideal para leitura de código de barras, os filtros precisam ser usados em combinações. Experimente com a sensibilidade do parâmetro para obter os melhores resultados.

Como Funciona o Filtro de Limite Binário?

O Filtro de Limite Binário filtra uma imagem dividindo os pixels no limite fornecido, comparando a luminância de um componente de cor. Semelhante ao AdaptiveThresholdFilter, este filtro pode introduzir ruído novo ou indesejado se não usado corretamente. No entanto, o IronBarcode definiu valores padrão para as propriedades do filtro.

Semelhante ao AdaptiveThresholdFilter, o BinaryThresholdFilter aceita os mesmos parâmetros adicionais para configuração:

  • Upper: Cor superior (branca) para limiar.
  • Lower: Cor inferior (preta) para limiar.
  • Threshold: Limite de limiar (0.0-1.0) para binarização.
  • Rectangle: Região retangular para aplicar o processador.
: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

Abaixo está a saída de exemplo ao aplicar filtros na imagem de exemplo.

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 a imagem de saída acima, o exemplo foi binarizado em preto e branco. No entanto, este filtro não é claramente adequado para esta imagem devido às barras de código de barras serem eliminadas e novo ruído ser introduzido. Para lidar com cenários difíceis de código de barras, consulte nosso guia de solução de problemas para códigos de barras não reconhecidos.

Como Ajusto o Brilho da Imagem para Melhor Leitura de Código de Barras?

Filtro de Brilho é outro filtro essencial na coleção de filtros de imagem no IronBarcode. Como o nome sugere, este filtro ajusta o brilho da imagem do código de barras. A entrada para este construtor varia a Quantidade de brilho na imagem de saída. O valor padrão é 1, o que deixa a imagem inalterada. Um valor de 0 cria uma imagem completamente preta, enquanto valores acima de 1 tornam a imagem mais brilhante.

: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

Abaixo está a imagem de saída após aplicar este filtro ao exemplo de entrada.

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

Como Uso o Filtro de Contraste para Melhorar Imagens de Código de Barras?

O Filtro de Contraste ajusta o nível de contraste em uma imagem. O contraste da imagem refere-se à diferença na intensidade de cor entre vários elementos de uma imagem. Aumentar o nível de contraste melhora a visibilidade dos detalhes, fazendo a imagem parecer vívida e marcante, enquanto reduzir o contraste faz a imagem parecer mais suave e sutil. Para mais detalhes sobre personalização de códigos de barras, veja nosso guia sobre como personalizar estilos de código de barras.

O valor padrão é 1, o que deixa a imagem inalterada. Um valor de 0 cria uma imagem completamente cinza, enquanto valores acima de 1 aumentam o contraste da imagem.

: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 ao exemplo de entrada produz a imagem abaixo.

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

Quando Devo Usar o Filtro de Inversão?

Este filtro inverte as cores dentro de uma imagem, tornando as cores opostas, como branco se torna preto e preto se torna branco. É particularmente útil ao ler uma imagem de código de barras com uma cor de fundo. Ao contrário do Filtro de Limite Binário, este filtro inverte as cores diretamente sem precisar especificar sensibilidade. Além disso, este filtro pode ser usado com um CropRectangle para especificar a localização na imagem que precisa das cores invertidas, em vez de inverter as cores para a imagem inteira. Saiba mais sobre como especificar regiões de corte em nosso tutorial de regiões de corte.

: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

A imagem de saída abaixo é o resultado de aplicar este filtro à imagem de entrada de exemplo.

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

Como Corrijo Imagens de Código de Barras Embaçadas com o Filtro de Nitidez?

O IronBarcode fornece um filtro de nitidez. Este filtro aprimora a nitidez de uma imagem e é muito útil ao lidar com imagens embaçadas. Manipule este filtro para ajustar a nitidez de uma imagem ajustando o valor Sigma ao instanciar o objeto do filtro. O valor padrão é 3. Aumente o valor de sigma para aumentar a nitidez da imagem. Para outras opções de otimização de desempenho, consulte nosso guia sobre opções de velocidade de leitura.

: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 a imagem acima com a imagem original, ela parece mais nítida e ajuda na leitura de códigos de barras usando o IronBarcode. Na maioria dos casos, SharpenFilter é aplicado sempre junto com outros filtros na classe ImageFilterCollection.

Para Que Serve o Filtro de Erosão?

O Filtro de Erosão remove pequenos ruídos brancos e engrossa as barras de código de barras removendo pixels próximos à borda das formas. Este filtro é melhor utilizado em cenários onde o fundo do código de barras tem muitas manchas brancas ou se a imagem do código de barras é de baixa resolução ou embaçada, resultando em barras mescladas. O Filtro de Erosão torna as barras mais grossas enquanto remove manchas brancas no fundo. Para mais informações sobre como lidar com imagens imperfeitas, veja nosso exemplo de código de barras imperfeito.

Aumente o efeito de erosão introduzindo um número inteiro representando kernelSize para o filtro. Quanto maior o tamanho do kernel, mais forte o efeito na imagem de entrada. Note que o kernelSize é um quadrado e neste exemplo seria um kernel 5x5.

Como exemplo, use o ErodeFilter com um tamanho de kernel maior para demonstrar os efeitos do 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

Comparando as imagens de entrada e saída acima, algumas barras estão visivelmente mais grossas devido à natureza mais agressiva de inserir um tamanho de kernel maior para o filtro. No entanto, as manchas brancas na imagem geral diminuíram. Pela natureza do filtro de erosão, quanto maior o tamanho do kernel, você pode apagar barras finas se aplicado de maneira muito agressiva, como mostrado na imagem acima. Teste e refine o efeito alterando o valor do tamanho do kernel de entrada para o ErodeFilter.

Como o Filtro de Dilatação ajuda na leitura de códigos de barras?

O DilateFilter funciona como o inverso do ErodeFilter, operando por meio da expansão de regiões brilhantes — tipicamente o fundo — através da adição de pixels às bordas dos objetos. Embora este filtro repare códigos de barras danificados ou apagados preenchendo pequenas lacunas ou realçando áreas de baixo contraste, note que seu efeito nas barras de código de barras difere da intuição. Como a dilatação aumenta os espaços brilhantes, ela indiretamente afina elementos escuros, como barras pretas de código de barras (assumindo um fundo branco). Isso torna o filtro particularmente eficaz em cenários onde as barras de código de barras parecem excessivamente grossas ou mescladas, mas o uso excessivo pode degradar a precisão da leitura ao afinar excessivamente as barras.

Semelhante ao acima, aumente o efeito do filtro introduzindo um número inteiro representando o kernelSize para o filtro.

Para o exemplo abaixo, use um tamanho de kernel maior para demonstrar os efeitos do 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 mostrado na imagem acima, o uso agressivo do DilateFilter pode potencialmente destruir a estrutura do código de barras, mesclando barras muito próximas e criando zonas silenciosas nos códigos de barras. Teste e refine os efeitos na imagem alterando o valor do tamanho do kernel para ser maior ou menor, dependendo da imagem de entrada.

Quando devo usar o filtro de Equalização de Histograma?

O HistogramEqualizationFilter aumenta o contraste da imagem redistribuindo intensidades de pixels para melhorar a clareza. É mais comumente usado quando o código de barras tem baixo contraste, como imagens desbotadas ou apagadas, ou imagens com iluminação desigual, como sombras escuras ou brilho intenso. Ao analisar o histograma da imagem, que é a distribuição do brilho dos pixels, ele redistribui os valores dos pixels aumentando o contraste ao esticar a faixa de intensidade, onde pixels escuros se tornam mais escuros e pixels claros se tornam mais 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 mostrado na imagem acima, as barras pretas estão visivelmente mais escuras, e os espaços estão visivelmente mais brilhantes em comparação com a imagem original.

Quais filtros de desfoque podem ajudar na redução de ruído de código de barras?

Como o Filtro GaussianBlur reduz o ruído da imagem?

O GaussianBlurFilter aplica um desfoque Gaussiano a uma imagem. Este filtro comumente reduz o ruído em uma imagem. Para um guia abrangente sobre como lidar com códigos de barras imperfeitos, consulte nosso tutorial de correção de orientação de imagem.

O filtro funciona ao calcular a média dos valores dos pixels vizinhos na imagem usando uma função Gaussiana. O método se baseia em dois fatores ajustáveis:

  • Kernel: uma matriz usada para calcular a média dos pixels.
  • Sigma: um valor que controla a intensidade do desfoque.

O tamanho padrão de kernel é de 3x3 pixels, e o valor padrão de Sigma é 3.0, produzindo um desfoque moderado. Aumentar o valor de Sigma resulta em um efeito de desfoque mais forte. Você também pode personalizar o kernel para controlar o tamanho da vizinhança que o filtro de desfoque faz a média.

: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 ao exemplo de entrada produz a imagem abaixo.

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

Quando devo usar o Filtro Bilateral?

O BilateralFilter suaviza imagens enquanto preserva as bordas. Diferente de técnicas simples de desfoque que afetam todos os pixels uniformemente, o Filtro Bilateral leva em conta tanto as diferenças de cor quanto a distância dos pixels, tornando-o eficaz para suavização com preservação de bordas.

O método depende de três fatores ajustáveis:

  • NeighborhoodDiameter: Diâmetro da vizinhança de pixels (padrão: 5).
  • SigmaColor: Influência de cor determinando o impacto da diferença de cor (padrão: 75.0).
  • SigmaSpace: Influência espacial determinando o impacto da distância (padrão: 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 ao exemplo de entrada produz a imagem abaixo.

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

O que torna o Filtro MedianBlur diferente para a redução de ruído?

O MedianBlurFilter reduz o ruído em uma imagem substituindo o valor de cada pixel pelo valor mediano dos pixels ao redor. Este filtro se destaca particularmente na preservação de bordas enquanto remove ruídos. Para explorar mais sobre as configurações de leitura de código de barras, visite nosso guia de configurações de leitura de código de barras.

  • KernelSize: Tamanho da vizinhança para cálculo mediano (deve ser ímpar, padrão: 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 ao exemplo de entrada produz a imagem abaixo.

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

Como posso salvar imagens filtradas em cada etapa do processamento?

Ao aplicar múltiplos filtros ao código de barras, visualizar a saída após cada método de filtro pode ser difícil. Este recurso permite salvar a imagem filtrada após cada filtro ser aplicado, na ordem em que são processados. Para habilitar esta funcionalidade, primeiro passe true para o construtor ImageFilterCollection. Em seguida, use o método ExportFilterImagesToDisk para fornecer o caminho e nome para as imagens de saída. Para mais exemplos sobre como salvar códigos de barras, veja nosso exemplo de conversão de código de barras para imagem.

: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

Os filtros são aplicados na ordem do código e as imagens de saída refletem os resultados de cada iteração:

  • Sharpen -> Após Sharpen
  • Sharpen + AdaptiveThreshold -> Após AdaptiveThreshold
  • Sharpen + AdaptiveThreshold + Contrast -> Apó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

Além das propriedades ImageFilters, adicione outras propriedades a BarcodeReaderOptions para uma leitura mais precisa; veja este artigo para mais informações.

Perguntas frequentes

O que são filtros de correção de imagem e por que são necessários para a leitura de códigos de barras?

Os filtros de correção de imagem do IronBarcode são ferramentas integradas que melhoram programaticamente imagens de código de barras desfocadas ou imperfeitas. Eles são essenciais porque a baixa qualidade da imagem é um dos principais fatores que impedem a leitura correta dos códigos de barras. O IronBarcode oferece filtros como o SharpenFilter e o ContrastFilter que melhoram a precisão da leitura sem a necessidade de software externo de edição de imagens ou de capturar novas imagens.

Como posso aplicar filtros de correção de imagem para melhorar a leitura de códigos de barras?

Para aplicar filtros no IronBarcode, crie uma instância de ImageFilterCollection e adicione instâncias de filtro individuais a ela. Em seguida, atribua esta coleção à propriedade ImageFilters de BarcodeReaderOptions e passe-a para o método Read. Por exemplo: new BarcodeReaderOptions { ImageFilters = new ImageFilterCollection() { new SharpenFilter(3.5f), new ContrastFilter(2.0f) } }.

Quais filtros de imagem são recomendados para imagens de código de barras desfocadas?

Para imagens de código de barras desfocadas, a IronBarcode recomenda o uso de pelo menos os filtros SharpenFilter e ContrastFilter. O SharpenFilter aprimora a definição das bordas em imagens desfocadas, enquanto o ContrastFilter melhora a distinção entre áreas claras e escuras. Esses filtros funcionam em conjunto para tornar os códigos de barras mais legíveis sem a necessidade de processamento externo da imagem.

Posso personalizar a intensidade dos filtros de correção de imagem?

Sim, o IronBarcode permite configurar cada filtro com valores personalizados. Por exemplo, o SharpenFilter aceita um parâmetro float (como 3.5f) para controlar a intensidade da nitidez, e o ContrastFilter aceita um parâmetro (como 2.0f) para ajustar os níveis de contraste. Essa personalização ajuda a otimizar a eficácia do filtro para diferentes condições de imagem.

Preciso de ferramentas externas de edição de imagens para melhorar as imagens de código de barras?

Não, o IronBarcode elimina a necessidade de ferramentas externas de edição de imagens, fornecendo filtros de correção de imagem integrados. Esses filtros programáticos, como SharpenFilter e ContrastFilter, podem aprimorar a qualidade da imagem diretamente em seu aplicativo .NET, economizando tempo e evitando a dependência de softwares de terceiros.

Hairil Hashimi Bin Omar
Engenheiro de Software
Como todo grande engenheiro, Hairil é um ávido aprendiz. Ele está aprimorando seus conhecimentos em C#, Python e Java, usando esse conhecimento para agregar valor aos membros da equipe da Iron Software. Hairil ingressou na equipe da Iron Software vindo da Universiti Teknologi MARA, na Malásia, onde se formou em ...
Leia mais
Pronto para começar?
Nuget Downloads 2,108,094 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package BarCode
executar um exemplo Veja seu fio se transformar em um código de barras.