Usando Filtros de Correção de Imagem C# para Melhorar a Decodificação de Código de Barras
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.
-
Instale IronBarcode com o Gerenciador de Pacotes NuGet
PM > Install-Package BarCode -
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) } }); -
Implante para testar em seu ambiente de produção.
Comece a usar IronBarcode em seu projeto hoje com uma avaliação gratuita
- Baixe a biblioteca C# para usar filtros de correção de imagem
- Explore todos os filtros de correção de imagem disponíveis.
- Configure cada filtro com valores personalizados.
- Aplique filtros a amostras de imagens imperfeitas.
- Recuperar valores de código de barras a partir de imagens aprimoradas
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.
Imagem de exemplo
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);
}
Imports IronBarCode
Imports System
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection() From {
New SharpenFilter(3.5F),
New ContrastFilter(2)
}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Write the result value to console
For Each result As BarcodeResult In results
Console.WriteLine(result.Text)
Next result
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.
Imagem de exemplo
Amostra filtrada
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:
AdaptiveThresholdFilterBinaryThresholdFilterBrightnessFilterContrastFilterInvertFilterSharpenFilterErodeFilterDilateFilterHistogramEqualizationFilter- Filtros de Desfoque
GaussianBlurFilterBilateralFilterMedianBlurFilter
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");
Imports IronBarCode
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New AdaptiveThresholdFilter(0.9F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("adaptiveThreshold_0.9.png")
Abaixo estão os resultados de aplicar o filtro usando diferentes valores.
Valor padrão
Valor 0.9
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");
Imports IronBarCode
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New BinaryThresholdFilter(0.9F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("binaryThreshold_0.9.png")
Abaixo está a saída de exemplo ao aplicar filtros na imagem de exemplo.
Valor padrão
Valor 0.9
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");
Imports IronBarCode
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New BrightnessFilter(1.5F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("brightness_1.5.png")
Abaixo está a imagem de saída após aplicar este filtro ao exemplo de entrada.
Valor padrão
Valor 1,5
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");
Imports IronBarCode
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New ContrastFilter(1.5F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("contrast_1.5.png")
Aplicar este filtro ao exemplo de entrada produz a imagem abaixo.
Valor padrão
Valor 1,5
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");
Imports IronBarCode
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New InvertFilter()}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("invert.png")
A imagem de saída abaixo é o resultado de aplicar este filtro à imagem de entrada de exemplo.
Imagem original
Invertido
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");
Imports IronBarCode
Imports System
Private options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New SharpenFilter(0.5F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("sharpen_0.5.png")
The image below is the sharpened version of the sample input image.
Valor padrão
Valor 0.5
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");
Imports IronBarCode
Dim options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {
New ErodeFilter(5)
}
}
' Apply options and read the barcode
Dim results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("erodeFilter.jpg")
Imagem original
Filtro de Erosão Aplicado
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");
Imports IronBarCode
Dim options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {
New DilateFilter(5)
}
}
' Apply options and read the barcode
Dim results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("dilateFilter.jpg")
Imagem original
Filtro de Dilatação Aplicado
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");
Imports IronBarCode
Dim options As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {
New HistogramEqualizationFilter()
}
}
' Apply options and read the barcode
Dim results As BarcodeResults = BarcodeReader.Read("sample.png", options)
' Export file to disk
results.ExportFilterImagesToDisk("histogramEqualizationFilter.jpg")
Imagem original
Filtro de Equalização de Histograma Aplicado
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");
Imports IronBarCode
Private myOptionsExample As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New GaussianBlurFilter(3, 3, 3.0F)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)
' Export file to disk
results.ExportFilterImagesToDisk("gaussianBlur.png")
Aplicar este filtro ao exemplo de entrada produz a imagem abaixo.
Imagem nítida
Imagem GaussianBlur
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");
Imports IronBarCode
Private myOptionsExample As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New BilateralFilter(5, 75, 75)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)
' Export file to disk
results.ExportFilterImagesToDisk("bilateral.png")
Aplicar este filtro ao exemplo de entrada produz a imagem abaixo.
Imagem nítida
Imagem bilateral
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");
Imports IronBarCode
Private myOptionsExample As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {New MedianBlurFilter(5)}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sharpen.webp", myOptionsExample)
' Export file to disk
results.ExportFilterImagesToDisk("medianBlur.png")
Aplicar este filtro ao exemplo de entrada produz a imagem abaixo.
Imagem nítida
Imagem MedianBlur
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");
Imports IronBarCode
Private myOptionsExample As New BarcodeReaderOptions() With {
.ImageFilters = New ImageFilterCollection(True) From {
New SharpenFilter(3.5F),
New AdaptiveThresholdFilter(0.5F),
New ContrastFilter(2)
}
}
' Apply options and read the barcode
Private results As BarcodeResults = BarcodeReader.Read("sample.webp", myOptionsExample)
' Export file to disk
results.ExportFilterImagesToDisk("filteredImage.png")
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ósSharpenSharpen+AdaptiveThreshold-> ApósAdaptiveThresholdSharpen+AdaptiveThreshold+Contrast-> ApósContrast
Imagem de exemplo
Após Aprimoramento
Após Limite Adaptativo
Após Contraste
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.

