BR102012033723B1 - método para restauração de imagens de códigos de barras desfocados - Google Patents

método para restauração de imagens de códigos de barras desfocados Download PDF

Info

Publication number
BR102012033723B1
BR102012033723B1 BR102012033723-1A BR102012033723A BR102012033723B1 BR 102012033723 B1 BR102012033723 B1 BR 102012033723B1 BR 102012033723 A BR102012033723 A BR 102012033723A BR 102012033723 B1 BR102012033723 B1 BR 102012033723B1
Authority
BR
Brazil
Prior art keywords
image
barcode
psf
fact
decoding
Prior art date
Application number
BR102012033723-1A
Other languages
English (en)
Other versions
BR102012033723A8 (pt
BR102012033723A2 (pt
Inventor
Eduardo Telmo Fonseca Santos
Eduardo Manuel De Freitas Jorge
Gustavo DE ALMEIDA NEVES
Geovane Dos Santos Anunciação
Luciano Rebouças De Oliveira
Original Assignee
Samsung Eletrônica da Amazônia Ltda.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Eletrônica da Amazônia Ltda. filed Critical Samsung Eletrônica da Amazônia Ltda.
Publication of BR102012033723A2 publication Critical patent/BR102012033723A2/pt
Publication of BR102012033723A8 publication Critical patent/BR102012033723A8/pt
Publication of BR102012033723B1 publication Critical patent/BR102012033723B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/73Deblurring; Sharpening
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20172Image enhancement details
    • G06T2207/20192Edge enhancement; Edge preservation
    • G06T5/003

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Studio Devices (AREA)
  • Telephone Function (AREA)

Abstract

MÉTODO PARA RESTAURAÇÃO DE IMAGENS DE CÓDIGOS DE BARRAS DESFOCADOS. A presente invenção refere-se ao campo da interação humana com dispositivos móveis, mais especificamente a interação feita pelo reconhecimento automático de imagens de códigos de barras capturados pela câmera integra da em dispositivos portáteis, particularmente telefones móveis, smartphones, assistentes pessoais digitais (PDA), câmeras digitais portáteis, entre outros. Mais especificamente, refere-se a um método para efetuar a leitura de códigos de barras por meio de dispositivos portáteis com câmeras digitais. A presente invenção fornece um método para restaurar imagens de códigos de barras danificadas pelo efeito de desfocagem devido à falta de foco das imagens capturadas com câmeras de baixo custo com foco fixo. O método proposto trata a imagem de códigos de barras de forma a possibilitar a decodificação correta de seu conteúdo.

Description

Campo da Invenção
[0001] A presente invenção está relacionada ao campo da interação humana com dispositivos portáteis, mais especificamente à interação feita através do reconhecimento automático de imagens de códigos de barras capturadas através da câmera integrada em dispositivos portáteis, em particular, telefones celulares, smartphones, assistentes pessoais digitais ou PDAs (Personal Digital Assistants), câmera digitais portáteis, dentre outros.
[0002] O presente pedido de patente refere-se a um método para efetuar a leitura de códigos de barras por meio de dispositivos portáteis equipados com câmeras digitais. A presente invenção apresenta um método capaz de restaurar imagens de códigos de barras prejudicadas pelo efeito de borramento devido à falta de foco das imagens capturadas com câmeras de baixo custo com foco fixo. O método proposto trata a imagem de códigos de barras de forma a possibilitar a decodificação correta de seu conteúdo.
Antecedentes da Invenção
[0003] Atualmente, a tecnologia de código de barras faz parte de vários setores da área comercial, industrial e financeira. Podemos encontrar códigos de barras na identificação dos produtos de um supermercado, nos livros de uma biblioteca, nas máquinas de uma indústria, nos boletos bancários, nos equipamentos de uma organização, nos crachás dos funcionários de uma empresa, etc.
[0004] Em geral, os códigos de barras originais representavam a informação através das larguras e dos espaços de barras paralelas dispostas na horizontal. Este tipo de código de barras possui apenas uma dimensão e é conhecido como código de barras unidimensional ou linear. Como exemplo de códigos de barras lineares tem-se o EAN-13, o código 128, o código 39, entre outros.
[0005] Mais recentemente surgiram os códigos de barras capazes de armazenar a informação na vertical e na horizontal, sendo denominados código de barras 2D ou bidimensionais. Eles podem armazenar uma grande quantidade de informação. Como exemplo podem ser citados o QR Code, o DataMatrix, PDF417, Código 49, entre outros.
[0006] Para efetuar a leitura do código de barras, utiliza-se um equipamento baseado em leitura ótica que é conhecido como escâner ou leitor de código de barras.
[0007] O documento de patente norte-americano US20110068173A1 intitulado: System And Method For Recognizing Deformed Linear Barcodes From A Stream Of Varied-Focus Video Frame, publicado em 24 de março de 2011, propõe um sistema de reconhecimento de código de barras. Este sistema efetua a leitura de vários quadros filmados pela câmera no modo de pré-visualização, sendo que pelo menos um destes quadros deve possuir um código de barras. O referido sistema do documento US20110068173A1 tenta estimar o nível de desfocagem causado pela falta de foco nos quadros de vídeo. A partir deste processo, também se tenta estimar a identidade do código de barras. O método ensinado pelo documento US20110068173A1 localiza a região que possui o código de barras. Outra operação realizada pelo documento US20110068173A1 é a criação de um modelo geométrico de código de barras com as deformidades encontradas do código de barras, que, por sua vez, é utilizado na restauração do código de barras. Estas deformidades podem ser provocadas pela curvatura das embalagens, o nível de inclinação da câmera, a luz do ambiente, entre outros fatores. Porém a patente citada não apresenta detalhes sobre a criação deste modelo geométrico. O documento US20110068173A1 estima ainda o nível de desfocagem, em que se o nível de desfocagem for alto, a probabilidade de sucesso na decodificação do código de barras deste quadro será baixa, e este, por sua vez, é descartado. Esta estimativa é feita através do cálculo das diferenças entre os quadros filmados e através desta, tenta-se obter o raio de desfocagem presente no código de barras, onde se este for menor que o limiar de desfocagem pré-determinado, então, efetua-se a leitura do código de barras. O documento US20110068173A1 não apresenta um método capaz de restaurar a desfocagem presente na imagem do código de barras, apenas verifica-se se a imagem possui um foco ideal; caso contrário, descarta-se a mesma. Com isto, apenas os códigos de barras presentes nas imagens nítidas serão decodificados.
[0008] O pedido de patente internacional WO2011011051A2, intitulado: Image-Based Barcode Reader, publicado em 27 de janeiro de 2011, apresenta um método que realiza a decodificação de código de barras presentes em imagens a partir de modelos deformáveis, onde a partir da parametrização destes tenta-se através da máxima semelhança obter os dígitos do código de barras, sem binarizar a imagem com o código de barras e utilizando toda a informação dos pixels em escala de cinza. Para que a decodificação seja realizada com sucesso, é necessário que a localização do código de barras seja razoavelmente precisa, onde a tolerância de localização é igual a duas vezes a largura da barra mais fina, em qualquer uma das extremidades. Como os tamanhos dos rótulos nos quais os códigos de barras são impressos não possuem um padrão, este método pode limitar a decodificação de códigos de barras a situações em que as larguras das barras não correspondam à tolerância de localização apresentada. Desta forma, a solução apresentada pelo pedido de patente internacional WO2011011051A2 não é adaptativa no que tange à decodificação de código de barras com geometrias variadas. Para realizar a decodificação do código de barras, o método proposto pelo referido pedido de patente WO2011011051A2 tenta obter os dígitos comparando os pixels da imagem do código de barras com modelos pré-determinados, onde estes são escalados e transladados para se assemelharem aos dígitos em análise. O dígito decodificado será aquele com a maior verossimilhança. Este processo pode ser mais lento do que a utilização de filtragem, pois o processo de obter o dígito corresponde com o modelo é computacionalmente custoso.
[0009] O documento de patente US20110007967A1, intitulado: Method and Arrangement for Retrieving Information Comprised in a Barcode, publicado em 13 de janeiro de 2011 apresenta um método que retorna a informação composta em um código de barras. Este método analisa a primeira imagem para verificar se esta possui um código de barras, verificando a qualidade desta e a região onde o código de barras está localizado. Se a primeira imagem possuir um código de barras, então, se adquire uma segunda imagem, onde a qualidade desta imagem é maior que a da primeira imagem e a segunda região com o código de barras sobrepõe pelo menos uma parte da primeira região. Em seguida, efetua-se a decodificação do código de barras a partir da segunda imagem. O referido documento US20110007967A1 tenta localizar o código de barras em uma primeira imagem com baixa qualidade. Para localizar o código de barras, efetua-se uma pesquisa por regiões retangulares na imagem usando uma janela deslizante. A seguir, extraem-se, então, as assinaturas associadas ao código de barras e utiliza-se o método SVM (Support Vector Machine) para avaliar se aquela janela possui ou não um código de barras. Caso este seja encontrado, então, se obtém uma imagem com a alta qualidade. Esta é obtida usando técnicas de melhoramento da qualidade, tais como autofoco, flash, técnicas de iluminação entre outras. O referido documento US20110007967A1 não apresenta nenhum método para restaurar a imagem danificada e nem propõe um método adaptativo para obtenção da informação representada pelo código de barras.
[0010] O documento de patente brasileiro PI0603273A, intitulado: “Sistema e Método que Utiliza um Software para Realizar a Decodificação de Códigos de Barras Diretamente em Aparelhos de Comunicação Móvel Equipados com Câmera Digitais”, publicado em 15 de janeiro de 2008, descreve um método para decodificação de código de barras a partir de imagens capturadas por câmera digitais de aparelhos de comunicação móvel. Este envia o resultado da decodificação para um servidor através de uma conexão de rede, que por sua vez irá fornecer informações sobre o produto associado ao número representado pelo código de barras decodificado. Caso não haja uma conexão de rede, então é possível armazenar o resultado da decodificação para uma futura consulta. A decodificação é realizada em tempo real a partir da análise dos quadros interceptados no modo de pré-visualização, como também pode ser realizada através da captura de uma imagem em alta resolução a partir do pressionamento de botão. Após obter a imagem com o código de barras, inicia-se, então, o processo de tratamento da imagem, reconhecimento e decodificação. O documento brasileiro PI0603273A propõe métodos para binarizar a imagem, corrigir iluminação e remover ruídos, porém não apresenta detalhes sobre o funcionamento destes. Este documento não apresenta também uma solução para restauração de imagens desfocadas e não possui métodos adaptativos para conversão da imagem nas informações representadas pelo código de barras.
[0011] O documento norte-americano US007237721B2, intitulado: Image Processing for Pattern Detection, publicado em 3 de julho de 2007 descreve um método que detecta padrões, tais como código de barras, em uma imagem. Este método localiza os pontos de início e fim dos padrões em uma região de uma imagem, tenta calcular a PSF (Função de espalhamento de ponto - Point Spread Function (PSF) que é o grau ao qual um sistema óptico borra (espalha) um ponto de luz. A PSF é a inversa da transformada de Fourier da função de transferência ótica no domínio da freqüência) a partir dos pontos de início e fim detectados, e restaura a região da imagem usando a PSF obtida. O método proposto no referido documento US007237721B2 assume que a PSF é gaussiana, o que nem sempre é correto e que pode limitar a restauração do código de barras. Além disso, o método realiza focagem com PSFs 1D ao longo de linhas de varredura, porém a PSF para restaurar uma imagem deveria ser 2D, o que limita o poder de recuperação da informação no código de barras. Outra limitação do método proposto está no uso de uma PSF com parâmetros determinados para a imagem, porém os parâmetros da PSF deveriam variar ao longo da imagem para realizar uma reconstrução mais próxima do ideal.
[0012] O documento norte-americano US2006020039A1, intitulado Camera-Based Barcode Recognition, publicado em 14 de setembro de 2006, apresenta um sistema para identificação de código de barras usando câmeras digitais. O referido documento US2006020039A1 utiliza métodos que diminui o ruído e aumenta o contraste entre as barras, porém não descreve com detalhes como estas operações são efetuadas. É previsto um método para localizar o código de barras em qualquer posição e orientação, porém, para isto, é necessário que o código de barras esteja enquadrado no centro da imagem. O método de localização apresentado pelo documento US2006020039A1 é ineficiente por possuir alto custo computacional e não conseguir identificar o código de barras em imagens degradadas. Para binarizar a imagem, o documento US2006020039A1 utiliza métodos não adaptativos, fazendo com que a imagem capturada esteja em condições ideais de iluminação para que a binarização seja eficiente. O referido documento também não propõe um método para restauração de imagens desfocadas.
[0013] O documento norte-americano US20050011957A1, intitulado: System and Method for Decoding and Analyzing Barcodes Using a Mobile Device, publicado no dia 20 de janeiro de 2005, propõe um sistema e método para decodificação de código de barras. Este documento apresenta um sistema e método que tenta melhorar a imagem capturada por uma câmera integrada ao dispositivo móvel; em seguida tenta-se obter a informação representada pelo código de barras presente nesta imagem. As informações obtidas são enviadas para um servidor através de uma conexão sem fio, onde se efetua uma consulta sobre o conteúdo correspondente ao número decodificado. Este conteúdo, por sua vez, é transmitido para o dispositivo móvel. O documento US20050011957A1 apresenta um diagrama de blocos que descreve um processo utilizado para corrigir e decodificar a imagem do código de barras, porém não detalha os procedimentos apresentados neste diagrama de blocos. O procedimento descrito no referido documento obtém os quadros filmados pela câmera integrada ao dispositivo móvel e partir destes realiza inúmeras tentativas de decodificação com diferentes parâmetros, até que o código de barras seja decodificado com sucesso ou até que todos os parâmetros sejam utilizados. O documento US20050011957A1 menciona métodos para remover distorções que danifiquem a imagem do código de barras e, por sua vez, atrapalhem a decodificação deste. Estes métodos são usados para: correção de perspectiva; remoção de cisalhamento; correção de problemas associados à iluminação; ajuste de foco; entre outros. Porém não são apresentados detalhes sobre funcionamento destes métodos, fazendo com que não seja possível efetuar uma avaliação dos mesmos. O documento US20050011957A1 não descreve a etapa para obtenção do limiar de corte entre branco e preto, que é utilizado no processo de conversão dos pixels para barras. Este documento não menciona nenhum método para localizar ou identificar previamente o código de barras antes da decodificação, não detalha o processo de obtenção das barras e não apresenta um método para restauração de imagens desfocadas.
[0014] O artigo “Robust Recognition of 1-D Barcodes Using Camera Phones” de Steffen Wachenfeld et al., publicado em 2008 no IEEE, descreve um algoritmo para decodificação de código de barras usando câmeras de celular. O algoritmo descrito pelo artigo citado neste parágrafo utiliza técnicas de processamento de imagens, tais como: transformadas de Hough; Wavelets para localizar os padrões do código de barras e operações morfológicas. Porém este artigo não descreve nenhum método para restaurar imagens de código de barras danificadas pelo efeito do desfocagem, apenas detalha os procedimentos utilizados na localização do código de barras, binarização da linha de varredura e identificação dos dígitos representados por este. Por sua vez, os procedimentos citados mostraram-se ineficazes na decodificação de códigos de barras presentes em imagens danificadas, pois os procedimentos propostos não são adaptativos o suficiente, tornando a decodificação menos eficaz.
[0015] O artigo “A Robust Method for Blind Deconvolution of Barcode Signals and Nonuniform Illumination Estimation”, de L. Dumas et al., 17th IEEE International Conference on Image Processing (ICIP), Setembro de 2010, Hong Kong, disponível através do link http://www.math.uvsq.fr/~dumas/Proc8.pdf, propõe um método que restaura a imagem de código de barras, removendo o ruído e a desfocagem usando deconvolução cega. O método proposto pelo referido artigo tenta remover distorções causadas por iluminação não uniforme. Este método baseia-se em um algoritmo genético que combina otimização discreta e contínua aplicada a dados afetados fortemente pela presença ruído e do efeito de desfocagem. O artigo descreve um método de deconvolução cega com base em algoritmo genético cuja solução alvo é uma imagem binária, ou seja, os parâmetros da PSF, iluminação e regularização são também estimados automaticamente de forma a minimizar uma função custo. Vale ressaltar que a incerteza na velocidade de genéticos podem limitar suas aplicações em dispositivos portáteis.
[0016] O artigo “Deblurring and Restoration in Barcode Signal Processing”, de Todd Wittman, publicado em 2004 no Siam Conference on Imaging Processing 2004, disponível através do link http://www.math.ucla.edu/~wittman/thesis/bars poster.pdf, apresenta uma técnica de remoção da desfocagem baseada na minimização da variação total para restaurar imagens de código de barras. A abordagem adotada também pode ser enquadrada como deconvolução cega, pois estima os parâmetros da PSF e do código de barras conjuntamente. A minimização de uma função de custo é realizada utilizando- se métodos clássicos de otimização, tais como Newton e “Descida mais íngreme”, que embora mais eficientes do que algoritmos genéticos, sofrem das limitações de métodos locais e também implicam em um custo computacional que pode limitar sua aplicabilidade em dispositivos portáteis. Outra limitação do método é assumir que a PSF é uma função Gaussiana 1D, o que nem sempre é verdadeiro.
[0017] O artigo “Processamento Digital de Imagens de Códigos de Barras usando Telefones Celulares” de Tiago Henrique Tudisco dos Santos e Almir Olivette Artero, publicado em 2010 no VI Workshop de Visão Computacional, de julho de 2010, realizado em Presidente Prudente, São Paulo, propõe o uso de telefones móveis integrados com câmeras digitais para decodificação de código de barras EAN-13. O referido artigo descreve um método para localizar e decodificar o código de barras. A partir do operador de Sobel para detecção de bordas é possível localizar o código de barras e a direção das bordas a partir dos gradientes calculados após a execução deste. Este artigo não apresenta nenhum método para corrigir problemas relacionados à falta de foco, problemas associados à iluminação, presença de ruídos entre outros. A binarização descrita neste artigo pode ser ineficaz, pois possui limiar fixo e com isto os resultados desta podem ser prejudicados sob diferentes condições de iluminação.
[0018] O artigo “Locating and Decoding EAN-13 Barcodes from Images Captured by Digital Cameras” de Douglas Chai e Florian Hock, de 2006, propõe uma técnica baseada em visão para localizar e decodificar código de barras. O artigo citado neste parágrafo não apresenta nenhuma técnica para tratamento de distorções na imagem, sendo que este enfatizou o procedimento para localização do código de barras.
[0019] Os documentos supracitados apresentam métodos que realizam a decodificação de código de barras e restauram imagens danificadas devido à presença de ruído, problemas relacionados à distância focal, problemas associados à iluminação do ambiente, baixo contraste, distorções provocadas pela perspectiva, entre outros. Devido a estes problemas, torna-se complexo realizar a decodificação de código de barras a partir de imagens capturadas por câmeras de baixo custo, pois, por conta da qualidade inferior destas câmeras, as imagens capturadas facilmente apresentam os problemas citados. A maioria dos documentos acima citados consegue realizar a decodificação de código de barras sob determinadas circunstâncias. Porém, para que a decodificação seja realizada com sucesso, é necessário que a imagem com o código de barras esteja acima de um limiar aceitável. Alguns dos referidos documentos mencionam a necessidade de efetuar um tratamento prévio sobre a imagem capturada para que a decodificação seja realizada com sucesso. Porém estes trabalhos não detalham os procedimentos necessários para restaurar a imagem, apenas acrescentam uma espécie de caixa preta indicando a necessidade de melhorar a qualidade da imagem capturada. Uma das soluções do estado da técnica é estimar o nível de desfocagem, onde a decodificação só será realizada se este for menor que um limiar pré-estabelecido.
[0020] Em contrapartida, a presente invenção apresenta detalhes técnicos de uma solução capaz de restaurar imagens danificadas pelo efeito da desfocagem e apresenta um método robusto para obtenção dos números representados pelo código de barras presentes na imagem capturada.
[0021] As soluções materializadas pela presente invenção tornam possível a decodificação de código de barras presentes em imagens capturadas por câmeras de baixo custo e que possuam foco fixo. A presente invenção possui um procedimento de calibração da câmera que cria uma base de PSF’s. Estas refletem justamente a incidência do efeito de desfocagem em um determinado ponto, a partir de uma determinada distância. As PSF’s desta base de dados são utilizadas na operação de deconvolução que remove o efeito de desfocagem e restaura a imagem com o código de barras. A presente invenção possui métodos adaptativos para obtenção das barras, de modo a prover maior robustez sob variadas condições adversas. A decodificação do código de barras realiza um procedimento de validação e combinação entre diferentes resultados, o que, por sua vez, aumenta a probabilidade de acerto na obtenção dos números representados pelo código de barras.
[0022] A presente invenção utiliza técnicas de processamento de imagens e visão computacional para extrair a sequência de números que está contida em uma imagem de código de barras. Estas técnicas possibilitam segmentar a imagem do código de barras, remover o efeito de desfocagem (blurring), fazer a binarização adaptativa da imagem, a conversão do código de barras em dígitos e efetuar a validação do mesmo.
[0023] O método de decodificação da presente invenção foi desenvolvido para ser executado em um dispositivo portátil, com o qual se faz a captura da imagem de um código de barras. No caso de dispositivos que possuem câmera sem autofoco, a imagem adquirida necessita passar por um pré-processamento para remover o borramento devido à falta de foco, compensar o desgaste provocado por interferências externas e realizar correções a fim de melhorar a qualidade desta e efetuar a decodificação correta do código de barras e validação do mesmo.
[0024] A presente invenção fornece a decodificação de códigos de barras, restaurando imagens desfocadas que tenham código de barras e decodificando os mesmos em tempo real por meio de dispositivos portáteis que possuam câmera digital de baixo custo. O sistema tenta obter a imagem focalizada ideal e realizar a decodificação de código de barras no padrão EAN-13, padrão que é comumente utilizado para a identificação de produtos.
[0025] Esta invenção tem como objetivo prover uma solução de baixo custo, eficiente e eficaz, que permita aos consumidores consultar preços dos produtos em qualquer lugar que estejam.
[0026] A presente invenção possibilita ainda ao usuário utilizar câmeras com foco fixo para efetuar a leitura do código de barras. O usuário deve enquadrar o código de barras dentro dos limites de uma mira previamente posicionada.
Breve Descrição das Figuras
[0027] Os objetivos e as vantagens da presente invenção tornar-se-ão mais evidentes a partir da descrição detalhada a seguir de um exemplo de concretização da invenção e desenhos anexos a título de exemplo não- limitativo, em que:
[0028] A figura 1A apresenta um exemplo de uma foto desfocada.
[0029] A figura 1B apresenta um exemplo de foto focada.
[0030] A figura 1C apresenta um modelo genérico do dispositivo portátil no qual o método funcioná.
[0031] A figura 2 ilustra a interface que será apresentada para o usuário.
[0032] A figura 3 apresenta o código de barras borrado e o resultado da restauração deste.
[0033] A figura 4 apresenta um pixel focalizado e o resultado deste após a convolução com a PSF.
[0034] A figura 5 ilustra os pontos a serem usados na extração de das PSF’s.
[0035] A figura 6 apresenta o resultado da captura dos pontos pela câmera alvo.
[0036] A figura 7 ilustra o enquadramento do código de barras na mira da câmera.
[0037] A figura 8 é o diagrama de blocos do processo de extração das PSF’s.
[0038] A figura 9 apresenta como é o processo para captura da imagem de pontos pela câmera alvo.
[0039] A figura 10 é o diagrama de blocos do processo de segmentação das PSF’s após a captura desta pela câmera alvo.
[0040] A figura 11 ilustra o processo para segmentação das PSF’s.
[0041] A figura 12 é o diagrama de blocos do processo de restauração e decodificação do código de barras.
[0042] A figura 13 ilustra o processo de convolução no domínio da freqüência.
[0043] A figura 14 apresenta a imagem de um código de barras após o espelhamento.
[0044] A figura 15 ilustra a conversão da PSF para OTF.
[0045] A figura 16 ilustra a conversão da imagem que está no domínio do espaço para o domínio da freqüência.
[0046] A figura 17 apresenta o processo o resultado do processo de restauração da imagem desfocada.
[0047] A figura 18 apresenta o processo de decodificação do código de barras após a restauração da imagem.
[0048] A figura 19 ilustra o processamento efetuado na fatia horizontal.
[0049] A figura 20 apresenta o processo de conversão dos pixels em barras.
[0050] A figura 21 apresenta a estrutura do código de barras no padrão EAN-13.
[0051] A figura 22 descreve o processo de tradução das para barras para número.
[0052] A figura 23 ilustra o processo de obtenção do resultado final.
[0053] O sistema da presente invenção é concretizado a partir dos métodos desenvolvidos para restaurar imagens de códigos de barras prejudicadas pelo efeito de desfocagem e, em seguida, tenta decodificá-los a partir de um dispositivo portátil equipado com câmera digital de baixo custo. Com isto, é possível desenvolver um método capaz de efetuar a leitura de códigos de barras que utiliza imagens capturadas por uma câmera com foco fixo, cuja qualidade é prejudicada devido a uma possível distância focal incorreta.
Problemas Resolvidos pela Invenção
[0054] Apesar dos avanços tecnológicos, os dispositivos portáteis ainda possuem hardware com recursos relativamente limitados para executar algoritmos que efetuam cálculos avançados. Portanto, a presente invenção aplicou técnicas de processamento com o objetivo de diminuir o custo computacional, possibilitando uma redução no tempo de decodificação e minimizando o uso processador do dispositivo portátil, além de economizar memória, otimizando assim o uso dos recursos aumentando a eficiência do processo descrito nesta invenção. Estas técnicas também proporcionaram um aumento na robustez do leitor de código de barras, pois foi possível aumentar a quantidade de quadros analisados para o mesmo espaço de tempo.
[0055] Em dispositivos portáteis com câmeras sem autofoco, determinadas imagens capturadas com a câmera podem não conseguir digitalizar com nitidez objetos pequenos, como é o caso de algumas fontes de letra, onde, à medida que a câmera se aproxima, elas permanecem desfocadas e ilegíveis. Algumas embalagens de produtos de prateleira possuem código de barras tão pequenos que quando a câmera está acima de uma certa distância, não é possível distinguir suas barras devido à quantidade insuficiente de pixels, e quando a câmera está próxima demais o objeto pode ficar desfocado. Este problema é contornado com a utilização do processo de focagem descrito nesta patente, obtendo-se assim uma imagem com o foco corrigido pelo processamento de imagens.
[0056] Para os casos em que a imagem capturada do código de barras não está em condições adequadas, poderia ocorrer perda de parte de suas informações. Este tipo de problema pode ser causado pelas condições de iluminação do ambiente, que pode ocasionar borrões de luz, sombras excessivas, baixa nitidez, entre outros. Também são muito comuns situações em que o código de barras já se encontra danificado devido a diversos fatores, dentre os quais se destacam: impressão de má qualidade; superfície envelhecida; recipiente ou embalagem estragada; dentre outros. Com o intuito de melhorar a eficácia da presente invenção, foram criados métodos que efetuam a correção dos possíveis danos supracitados. Estes métodos são baseados em técnicas de empilhamento, ou seja, calcula-se a média de diversas linhas adjacentes na imagem do código de barras, melhorando assim a relação sinal/ruído da imagem.
[0057] Objetivando melhorar a eficácia do método da presente invenção para a leitura de códigos de barras, mesmo sob condições desfavoráveis, um conjunto de métodos são aplicados sobre a imagem. O código de barras é dividido em fatias verticais e cada uma destas é processada separadamente. Para obter os valores das barras, sub- regiões verticais são definidas e, por sua vez, calcula-se o limiar de preto e branco para cada sub-região. Um conjunto de pesos que ajustam o limiar ao nível de iluminação presente na imagem são aplicados no limiar. Com isto, os efeitos causados pela baixa qualidade da imagem e/ou fatores externos são eliminados permitindo realizar a leitura do código de barras.
[0058] As embalagens dos produtos possuem diversos formatos. Por exemplo, imagens de embalagens com superfície curva distorcem o tamanho das barras, dificultando, assim, a decodificação do código de barras. Para resolver este problema, a presente invenção utiliza algoritmos eficientes e eficazes para estimar o tamanho das barras, considerando- se um limiar baseado nas características específicas das dimensões das barras utilizadas no EAN-13.
Vantagens Técnicas/Funcionais da Invenção
[0059] Decodificação de códigos de barras desfocados: A utilização de métodos para efetuar a deconvolução da imagem borrada utilizando-se a PSF ou OTF possibilitam estimar uma imagem mais próxima do ideal para decodificação do código de barras. Deste modo, remove-se o efeito de desfocagem causado pelo espalhamento dos pixels da imagem do código de barras, aumento a taxa de acerto do método.
[0060] Versatilidade para adaptação em diferentes câmeras: Um banco de PSF’s pode ser estimado para cada tipo de câmera diferente, possibilitando assim que o mesmo processo de focagem possa ser utilizado com diferentes câmeras. Isto confere versatilidade ao método, uma vez que o mesmo pode ser utilizado sem grandes alterações em diferentes dispositivos portáteis.
[0061] Possibilidade de utilização de dispositivos com câmeras de baixo custo: A correção da imagem possibilita a utilização de dispositivos com câmeras sem autofoco ou com outras limitações ópticas, pois a deconvolução utilizando PSF ou OTF visa minimizar o efeito de desfocagem causado pelo arranjo óptico/câmera. O processo descrito nesta patente atua como um algoritmo de processamento digital de sinais que simula os efeitos de lentes corretivas aplicadas à imagem capturada. Assim, obtém-se uma imagem mais adequada para a decodificação de códigos de barras, mesmo com algumas limitações na captura da imagem, possibilitando também assim a utilização de câmeras de baixo custo.
[0062] Baixo custo computacional: Buscando aperfeiçoar o processo de leitura do código de barras, foram utilizadas práticas de programação que otimizam a execução das instruções computacionais, como por exemplo, usar ponto fixo ao invés de ponto flutuante, utilizar manipulação de bits para realizar algumas operações, usar o mínimo de instruções possíveis para varrer ou copiar os pixels de uma imagem, dentre outras.
[0063] Leitura de código de barras eficiente e eficaz: A leitura é eficiente porque minimiza a utilização dos recursos computacionais, e é eficaz porque obtém sucesso na maioria das tentativas de leitura, sendo possível realizar a decodificação de código de barras com tamanhos diferentes, qualquer posicionamento, qualquer inclinação, alta perspectiva e em ambientes com diferentes iluminações.
[0064] Processamento em tempo real: Não é preciso capturar uma foto para que seja realizada a decodificação. O sistema executa todo o procedimento em tempo real analisando os quadros obtidos no modo de pré-visualização. Com isto foi possível aumentar a robustez do algoritmo, visto que a cada instante um novo quadro é processado até que a leitura seja realizada com sucesso. Além disto, a depender da resolução suportada no modo de pré-visualização pela câmera do dispositivo portátil, é possível aumentar ainda mais a eficácia do leitor de código de barras.
[0065] Eliminação de regiões inúteis: regiões fora dos limites encontrados são excluídas da leitura, evitando o processamento de regiões que não pertençam ao código de barras. Com isto melhorou-se a eficiência do leitor, visto que menos partes da imagem serão analisadas, diminuindo assim o tempo de processamento. A eficácia é acrescida, pois elementos que influenciam negativamente na definição dos limites de corte da região do código de barras são eliminados, fazendo que somente as barras, que são as informações relevantes, permanecem no processamento, e com isto aumentando a probabilidade de acerto na decodificação.
[0066] Identificação do código de barras: Com o objetivo de fazer com que o decodificador não seja executado em imagens que não possuam código de barras, efetua-se uma pré-analise dentro dos limites do código de barras. Neste momento será verificado o nível de contraste, onde, para os casos nos quais este contraste é muito baixo, descarta-se imediatamente a imagem, fazendo com que o leitor não execute uma tentativa de decodificação que poderia ser mal sucedida, e com isto, evitando-se o desperdício de tempo computando algo que dificilmente seria decodificado. Isto aumenta a eficácia no sentido que, após descartar a imagem, o processo será reiniciado e, portanto, um novo quadro que pode ter uma qualidade melhor e maiores chances de decodificação será fornecido.
[0067] Fatiamento horizontal do código de barras: o código de barras é fatiado horizontalmente e a leitura é executada em cada uma destas fatias individualmente. Com isto, obteve-se uma melhor eficácia, pois o número de amostras foi aumentado, o que levou a um acréscimo no percentual de acerto. Caso não se obtenha sucesso na decodificação de uma fatia, outra é selecionada até que o código seja decodificado ou até que todas as fatias tenham sido selecionadas. O número de fatias é ajustado conforme a execução da leitura, fazendo com que no decorrer do processo obtenham-se fatias de diversas posições e de tamanhos diferentes, aumentando assim a probabilidade de sucesso na decodificação.
[0068] Método adaptativo de binarização: fase onde ocorre a definição das barras do código. Nesta etapa é necessário determinar um limiar de corte para separar o nível branco do nível preto na imagem do código de barras em tons de cinza. Para isto foram criados métodos que calculam o limiar de forma flexível e ajustável. Este limiar se ajusta à iluminação do ambiente. Isto acontece porque a fatia a ser decodificada é dividida em regiões verticais, e para cada uma destas sub-regiões obtém-se um limiar conforme a intensidade dos seus pixels. Além disto, a este limiar são atribuídos pesos que adaptam o limiar à iluminação do ambiente. Estes pesos foram definidos através de testes exaustivos nos quais foi possível extrair o devido peso para cada tipo de iluminação. No decorrer do processo de leitura o número de fatias verticais é ajustado, computando novos limiares para preto e branco.
[0069] Leitura de código de barras em superfícies não planas: As embalagens dos produtos possuem diversos formatos. Podem ser encontrados produtos com embalagens com superfícies arredondadas, ovais, ou até mesmo embalagens que são sacos plásticos maleáveis cuja superfície não tem uma forma específica. Visando aumentar a robustez do processo, criou-se um método adaptativo que possibilita a decodificação de códigos de barras em superfícies com diferentes formatos. Sabendo que a depender da superfície que a barra se encontra, as dimensões das barras podem aumentar ou diminuir conforme a perspectiva provocada pelo formato da embalagem. Por conta disto estima-se um tamanho de barra de referência para realizar a decodificação em cada região da imagem.
[0070] Leitura de código de barras com perspectiva: visando aumentar a eficácia do leitor, foram desenvolvidas técnicas que possibilitam a decodificação de códigos de barras em perspectiva. Isto foi possível devido o fatiamento horizontal que seleciona fatias do código que se encontram na mesma perspectiva favorecendo a decodificação de códigos de barras com alta perspectiva.
[0071] Método adaptativo para obtenção das barras: com o objetivo de aumentar o nível de acerto da decodificação, criou-se um método adaptativo para converter os pixels nas barras. Este método tenta compensar problemas relacionados com o vazamento de pixels nas suas vizinhanças verificando a existência de barras que ficaram finas ou largas demais.
[0072] Validação do resultado: com o objetivo de mostrar apenas valores corretos, a presente invenção possui métodos de validação que verificam as barras de guarda do código e o dígito verificador. Logo após a definição das barras é verificado se as barras de guarda estão corretas. Após todos os dígitos terem sido decodificados, efetua-se a checagem do dígito verificador. Caso a checagem esteja correta, o valor decodificado é retornado e o resultado é exibido.
[0073] Utilização de dispositivo de HARDWARE com alta mobilidade: a presente invenção pode ser executada em um dispositivo portátil pequeno e leve que pode ser carregado para diferentes lugares sem ocupar muito espaço. Com isto obteve-se um aparelho portátil e leve que efetua a leitura de código de barras em tempo real, provendo comodidade ao usuário, pois este não precisará se deslocar para, por exemplo, consultar preços de produtos.
[0074] Desta forma, uma concretização preferida da presente invenção é obtida contando com métodos capazes de restaurar imagens desfocadas pelo efeito de desfocagem e realizar a decodificação de códigos de barras presentes em imagens degradadas, com execução em tempo real a partir de um sistema integrado de hardware e software.
[0075] As figuras 1A e 1B ilustram imagens de fotos desfocadas e focadas, respectivamente.
[0076] O hardware necessário para materializar o sistema da presente invenção é um dispositivo portátil, onde as suas principais características são ilustradas na figura 1C. A CPU 110 (Unidade Central de Processamento) é responsável por executar as instruções necessárias pelo gerenciamento da câmera, além de fazer os cálculos computacionais para o processamento da imagem com o código de barras. A câmera 111 é responsável por capturar as imagens. O meio de armazenamento 112 serve para guardar informações e dados, inclusive os código decodificados, produtos consultados, entre outros. O hardware também é composto por dispositivos de entrada de informação 113 e componentes de áudio 114. Através de algum componente de conectividade 115 é possível fazer a comunicação entre a aplicação e uma base de dados remota que possui informações sobre os produtos. O meio de exibição 116 é utilizado para visualizar os quadros capturados pela câmera do dispositivo.
[0077] O sistema da presente invenção inicia-se no instante em que o usuário aciona-o em um dispositivo portátil no qual se encontrava previamente instalado.
[0078] A figura 2 apresenta o sistema em execução. Após a inicialização deste, a câmera digital será executada e o modo de pré-visualização será iniciado, exibindo os quadros filmados na tela de exibição 210 do dispositivo a uma determinada taxa de exibição (ex.: 30 FPS). A materialização descrita do sistema possui duas barras de estado, onde a superior 211 indica o estado do leitor do código de barras, e a inferior 212 apresenta os resultados parciais da decodificação.
[0079] A presente invenção tem como principal meta inserir a funcionalidade de um leitor de código de barras unidimensional em um dispositivo portátil equipado com câmera digital com foco fixo. Por sua vez, tornando possível criar uma solução de baixo custo que seja capaz de executar as funções dos equipamentos leitores de código de barras, comumente encontrados em estabelecimentos comerciais e que são utilizados pelos clientes para efetuar a consulta sobre o valor do produto.
[0080] A solução apresentada pela presente invenção tem como princípio efetuar o processo de deconvolução para remover o efeito causado pela desfocagem, que deforma a imagem fazendo com que haja uma degradação na imagem original.
[0081] A figura 3 apresenta o resultado da restauração da imagem de um código de barras. O código de barras afetado pelo efeito da desfocagem 310 apresenta-se desfocado, e suas barras não representam mais as informações originais. Após a deconvolução, o código de barras apresenta-se mais nítido 311 e uma boa parte da informação original é recuperada.
[0082] A restauração da imagem está intimamente ligada à PSF. A PSF faz com que os pixels de uma imagem focalizada sejam espalhados na região vizinha, gerando o efeito de imagem desfocada. Este efeito é ilustrado pela figura 4 que mostra a representação de pixel 410 e o seu espalhamento após a convolução 411 com a PSF.
[0083] Para tornar possível a restauração da imagem, é necessário primeiro estimar a PSF que provocou o espalhamento dos pixels e em seguida efetuar o processo inverso. Por isto, foi desenvolvido um método capaz de extrair PSF’s estáticas para serem utilizadas na deconvolução. O referido método baseia-se na captura de imagens com fundo preto e pontos brancos que representam os pixels 510. Então, se efetua a captura desta imagem com a câmera alvo. O resultado é ilustrado na figura 6, cujos pixels foram espalhados 610 devido à distância focal incorreta. Além disto, também se adicionou ruído 611 à imagem capturada. Este espalhamento 610 consiste na PSF, que deve ser segmentada para utilização no método da presente invenção.
[0084] A PSF que provocou a desfocagem pode ser alterada conforme a distância da câmera ao objeto alvo. Buscando diminuir o número de PSF’s a serem utilizadas, criou-se uma mira 710 para enquadrar o código de barras, fazendo com que a câmera fique aproximadamente à mesma distância em relação ao código ao código de barras filmado ou fotografado.
[0085] A figura 7 exemplifica como o código deve ser enquadrado na mira.
[0086] Para restaurar a imagem e efetuar a decodificação, primeiro, é necessário efetuar a calibração da câmera para obtenção das PFS’s. As etapas para efetuar a calibração são apresentadas na figura 8. A calibração consiste em um processo de capturar imagens de pontos a partir de distâncias previamente fixadas, e, por sua vez, segmentar os pontos das imagens capturadas.
[0087] Conforme mencionado anteriormente, para extrair as PSF’s necessita-se primeiramente criar uma imagem 810 com fundo preto e pontos brancos representando os pixels. Antes de efetuar a captura das imagens, necessita-se primeiro estipular as distâncias 811 em que o dispositivo portátil ficará das mesmas. Esta distância deve refletir o posicionamento no qual o usuário enquadra o código de barras na mira, pois ela é mensurada conforme a largura dos códigos de barras. Como os códigos de barras no padrão EAN-13 não possuem um tamanho padrão, necessita-se então tirar fotos em diferentes distâncias.
[0088] A figura 9 ilustra a captura dos pontos para dois tamanhos de códigos de barras diferentes, onde se posiciona a câmera 910 enquadrando uma imagem de pontos brancos 911 que foi redimensionada conforme o tamanho de um determinado código de barras. Para capturar esta imagem é necessário então enquadrá-la na mira 912, simulando o usuário ao enquadrar o código de barras. Cria-se, então, outra imagem de pontos brancos 914 que é redimensionada conforme a largura de outro código de barras. Por sua vez a câmera deve ser reposicionada 913 para enquadrar a imagem. Com isto, cria-se uma base de PSF’s para diferentes tamanhos de código de barras.
[0089] A captura destas imagens deve ser efetuada a partir da câmera alvo 812. Modelos de câmeras diferentes podem possuir distâncias focais distintas, tornando-se necessário obter a base de dados de PSF’s relativa à câmera em particular.
[0090] Após a captura das imagens, é necessário segmentar as PFS’s. Para isto, primeiro efetua-se a binarização da imagem separando o fundo da imagem dos pixels brancos 1010. Então, efetua-se uma varredura sobre a imagem binarizada, buscando as áreas com altos níveis de intensidade 1011. Em seguida, os pontos brancos, que agora se encontram espalhados nas suas vizinhanças, são recortados e separados em imagens individuais 1012. Esta imagem com a PSF é adicionada a uma base de dados inicial 1013 para uma análise posterior.
[0091] A figura 11 apresenta o processo de extração das PSF’s, onde a imagem capturada 1110 é binarizada 1111 criando uma máscara das regiões com as prováveis posições das PSF’s. Em seguida, copiam-se apenas os valores das PFS’s 1112, excluindo o fundo da imagem. Depois, recorta-se cada umas das PSF’s 1113 presentes nas imagens para armazená-las separadamente em uma base inicial. Esta base inicial é analisada para selecionar as PSF’s que melhor restauram as imagens 814. Esta verificação é feita através de um método que tenta decodificar vários códigos de barras desfocados aplicando as PSF’s da base inicial para restaurar a imagem. As PSF’s cujas decodificações forem realizadas com sucesso e cujos números decodificados forem exatamente iguais aos números codificados pelos códigos de barras serão selecionadas.
[0092] De acordo com a presente invenção, a deconvolução executada para fazer a remoção da desfocagem é aplicada no domínio da freqüência. Por isto, para evitar processamento desnecessário, converte-se a PSF que está no domínio do espaço em OTF, utilizada para fazer convolução e deconvolução no domínio da freqüência. Então, primeiramente normalizam-se as PSF’s a partir de uma amplitude previamente estabelecida e efetua-se a conversão para OTF. Este processo será apresentado detalhadamente a seguir.
[0093] Após a calibração da câmera e obtenção das respectivas OTF’s para restauração da imagem, efetua-se o processo para leitura do código de barras propriamente dito.
[0094] A figura 12 ilustra as etapas executadas no dispositivo portátil no momento em que se inicia a leitura do código de barras.
[0095] A etapa “captura a imagem com o código de barras” 1210 acontece em tempo real e é o momento no qual um quadro filmado pela câmera é selecionado e enviado para decodificação. No sistema que foi desenvolvido como uma das possíveis concretizações para a presente invenção, criou-se um botão que é utilizado para inicializar a captura dos quadros. Neste momento, o usuário deve enquadrar o código de barras na mira conforme apresentado na figura 2. A captura das imagens será executada até que o código de barras seja decodificado com sucesso, ou até que o tempo limite seja finalizado.
[0096] Após a captura do quadro, inicia-se a etapa “restaura imagem” 1211. Nesta etapa, seleciona-se uma OTF na base de dados e efetua-se a deconvolução. Para descrever o processo de restauração da imagem, é preciso descrever matematicamente como acontece o espalhamento dos pixels e deduzi-lo inversamente até chegar aos resultados da presente invenção.
[0097] O efeito de desfocagem pode ser modelado matematicamente como sendo uma convolução entre os pixels e a PSF. Esta operação é apresentada com detalhes a seguir:
Figure img0001
[0098] A equação (1) apresenta o modelo matemático que descreve como ocorre o espalhamento dos pixels, sendo que o símbolo “*” é utilizado para definir a operação de convolução entre a psf(x,y) e i(x,y) no ponto (x,y), onde i(x,y) é a imagem ideal.
[0099] O resultado desta convolução será a imagem desfocada, representada por b(x,y). Então, para remover o efeito de desfocagem, é preciso efetuar o processo inverso, onde, a partir da imagem borrada, obtém-se a imagem original.
Figure img0002
[0100] A equação (2) apresenta como seria a restauração da imagem utilizando convolução, onde i(x,y) é a imagem ideal focalizada, psf-1(x,y) representa a PSF inversa e b(x,y) representa a imagem desfocada. Então, para remover o efeito de desfocagem a partir da operação de convolução, faz-se necessário estimar a PSF inversa, sendo que através da aplicação desta pela convolução com a imagem borrada, consegue-se remover o espalhamento apresentado nos pixels.
[0101] Sabe-se que a convolução entre duas funções no domínio do espaço torna-se o produto entre as transformadas destas duas funções no domínio da freqüência. Portanto, partindo desta propriedade, a deconvolução no domínio da freqüência é dada pela divisão entre as transformadas de duas funções. Ou seja, a divisão entre as transformadas da imagem desfocada e a PSF resultará na transformada de uma imagem ideal focalizada.
[0102] A transformada da imagem no domínio da freqüência é obtida através de uma transformada discreta de Fourier. Por sua vez, aplica-se a transformada inversa de Fourier para retornar ao domínio do espaço.
Figure img0003
[0103] A transformada discreta de Fourier é dada pela equação (3), onde u = (0, 1, 2,...,M-1) e v = (0,1, 2,...,N-1).
Figure img0004
[0104] A equação (4) corresponde à transformada inversa de Fourier, para x = (0, 1, 2,...,M-1) e y = (0, 1, 2,...N-1), onde u = 1/Mx e v = 1/Ny.
[0105] O método da presente invenção utiliza o algoritmo da transformada rápida de Fourier (FFT - Fast Fourier Transform) para calcular a transformada discreta de Fourier, pois através deste é possível diminuir a complexidade de N2 para N log2 N operações e por sua vez reduzir o custo computacional incorrido no cálculo das transformadas.
[0106] As equações (5) a (8) apresentam um modelo matemático utilizado para causar o efeito de desfocagem a partir do domínio da freqüência.
Figure img0005
[0107] A equação (5) calcula transformação da imagem do domínio do espaço (ou domínio espacial) para o domínio da freqüência, utilizando a transformada rápida de Fourier, representada pela FFT, onde i(x, y) representa a imagem ideal focalizada no domínio do espaço e I(u,v) é a respectiva imagem no domínio da freqüência.
[0108] A equação (6) executa os mesmo cálculos da equação (5), onde psf(x,y) representa a função de espalhamento do ponto no domínio do espaço e PSF(u,v) representa a mesma no domínio da freqüência.
[0109] A equação (7) adiciona o efeito de desfocagem multiplicando a PSF(u, v) por I(u, v). Por fim, transforma-se a imagem para o domínio do espaço novamente a partir do algoritmo de transformada rápida inversa de Fourier, conforme é apresentado na equação (8) através da FFT-1, retornando, por sua vez, a imagem desfocada ao domínio do espaço b(x, y).
[0110] O processo descrito no parágrafo anterior é ilustrado na figura 13. O código de barras 1310 e a PSF 1311 estão no domínio do espaço. Calculam-se então as suas transformadas de Fourier 1312, obtendo as imagens no domínio da freqüência. A magnitude dos espectros das transformadas do código de barras 1313 e da PSF 1314 com origem deslocada para o centro são apresentadas e representam as imagens no domínio da freqüência. As transformadas são multiplicadas (operação de convolução no domínio da freqüência) 1315 e a transformada inversa de Fourier 1317 é aplicada sobre o resultado, obtendo por sua vez a imagem desfocada no domínio do espaço 1318.
[0111] A partir do entendimento destas informações, desenvolveu-se então um processo que executa um conjunto de operações, onde a partir da imagem desfocada tenta-se obter a imagem ideal focalizada. Estas operações baseiam-se na deconvolução da imagem no domínio da freqüência, dividindo a transformada da imagem desfocada pela respectiva transformada da função de espalhamento.
[0112] A equação (9) descreve matematicamente a operação de deconvolução descrita no parágrafo anterior.
Figure img0006
[0113] Os métodos para o processamento de imagens a fim de obter a imagem focalizada ideal:
Figure img0007
[0114] Para diminuir a complexidade e aumentar a velocidade dos cálculos das transformadas, o algoritmo da transformada rápida de Fourier utilizado trabalha com vetores ou matrizes cujas dimensões são potência de 2. A equação (10) é utilizada para obter as dimensões adequadas para o cálculo da transformada rápida de Fourier, onde col é a quantidade de colunas, lin a quantidade de linhas da imagem e ceil é uma função utilizada para arredondar um valor para cima. Desta forma, a matriz utilizada no cálculo da transformada terá dimensões iguais a NxN, onde N é igual ao maior expoente de base 2 arredondado para cima entre as potências do número de colunas e do número de linhas.
[0115] Após obter as dimensões adequadas para o cálculo da transformada, cria-se uma matriz com estas dimensões e copiam-se os pixels da imagem para esta matriz, o que pode resultar em espaço excedente devido à diferença entre as dimensões. Em geral, se preenche o espaço excedente com zeros, porém para minimizar o efeito de bordas, muitas vezes causado na imagem pela transformada de Fourier, copia-se a imagem para o centro da nova matriz 1410 e efetua-se o espelhamento desta para cima 1411 e para baixo 1412.
[0116] A figura 14 ilustra uma imagem de entrada para a transformada rápida de Fourier.
[0117] A presente invenção possui uma base de PSF’s que são extraídas para a câmera alvo. Para diminuir o processamento, as PSF’s são armazenadas no domínio da freqüência no formato de uma OTF. Desta forma, é possível eliminar a etapa de conversão da PSF para OTF no dispositivo portátil, diminuindo, assim, o custo computacional durante a restauração da imagem.
[0118] A figura 15 ilustra o processo de conversão de PSF para OTF. A PSF 1510 é copiada para uma nova imagem 1511 com dimensões adequadas 1512 para o cálculo da transformada. Em seguida, efetua-se o deslocamento circular 1513 com valor de deslocamento igual à metade da dimensão da PSF multiplicado por -1, reposicionando os pixels da nova imagem conforme é apresentado em 1514. Na sequência, o algoritmo da transformada rápida de Fourier 1515 é executado, transformando a matriz do domínio do espaço para domínio da freqüência, onde o resultado será a OTF, cujo espectro é apresentado por 1516. Esta OTF é armazenada e embarcada no dispositivo portátil para ser utilizada na restauração da imagem durante a leitura do código de barras.
[0119] O processo efetuado para calcular a transformada da imagem no domínio da freqüência é apresentado na figura 16. A imagem do código de barras 1610 é copiada para o centro de uma imagem com as dimensões adequadas para calcular a transformada 1611, então se efetua o espelhamento 1612 desta. Em seguida, calcula-se a transformada 1613 da nova imagem, cujo resultado do espectro é apresentado por 1614.
Figure img0008
[0120] Nas equações de 11 a 13, o símbolo x representa a multiplicação aritmética convencional. Após obter a transformada da PSF e a transformada da imagem desfocada, efetua-se então a operação de deconvolução, que pode ser modelada matematicamente como sendo a equação (11), onde esta é dada como a divisão entre a OTF(u,v) e B(u,v). Partindo das propriedades dos números complexos, multiplica-se o numerador e o denominador pelo conjugado da OTF(u,v), conforme apresentado na equação (12). A equação (13) altera o denominador para |OTF(u,v)|2, pois um número complexo multiplicado pelo seu conjugado é igual a sua norma ao quadrado. Na equação (11) pode ocorrer o problema da divisão por zero ou por números muitos pequenos. Para eliminar este problema, necessita-se determinar um número que após a divisão das transformadas não resulte em valores inconsistentes. O denominador da equação (13) é um número real, o que facilita as comparações efetuadas para obtenção deste número.
Figure img0009
[0121] A equação (14) efetua o cálculo do número limite para o denominador, que é representado por . Este valor será o maior valor do numerador multiplicado pela raiz de , onde o valor de é um número pequeno que tende a zero.
Figure img0010
[0122] A representação matemática final para a operação de dec onvolução utilizada pela presente invenção para remoção do efeito de desfocagem é dada pela equação (16), onde o denominador D(u,v) é obtido a partir da equação (15). Esta equação retornará , caso |OTF(u,v)|2 seja menor que , senão retornará |OTF(u,v)|2. Através deste processo, evita-se divisão por zero ou por números muito pequenos. O resultado desta equação, representado por I(u,v) é a transformada da imagem restaurada.
[0123] Após a deconvolução no domínio da freqüência, converte-se a imagem ideal focalizada do domínio da freqüência de volta para o domínio do espaço, através do algoritmo da transformada rápida inversa de Fourier, obtendo, assim, a imagem ideal focalizada no domínio do espaço.
[0124] A figura 17 apresenta o resultado da restauração da imagem. A imagem do código de barras 1710 é preparada para a operação de deconvolução 1710 no domínio da freqüência. Esta operação tem como resultado uma transformada da imagem sem o efeito de desfocagem. Em 1712, é exibido o espectro com origem no centro da transformada resultante da operação de deconvolução. Através do algoritmo da transformada rápida inversa de Fourier 1713, converte-se a transformada resultante para o domínio do espaço, transformando-a na imagem focalizada 1714. Em seguida, recorta-se apenas a região do centro 1715 com o código de barras restaurado 1716. Este por sua vez é utilizado como parâmetro de entrada para o algoritmo de decodificação de código de barras.
[0125] Após a restauração da imagem se inicia a etapa “Decodifica código de barras” 1212, que recebe a imagem do código de barras restaurada e tenta realizar a decodificação deste. Este processo é dividido em sub-etapas que realizam processamento da imagem a fim de retornar os números representados pelo código de barras presente na imagem. Este processo é detalhado através do fluxograma apresentado pela figura 18 e é descrito a seguir.
[0126] O código de barras 1810 presente na imagem restaurada é fatiado horizontalmente 1811 e cada uma destas fatias é processada individualmente. A quantidade de fatias horizontais é uma das entradas do leitor de código de barras, sendo que esta é adaptativa, ou seja, a depender da execução da leitura do código de barras o número de fatias horizontais pode ser alterado buscando aumentar a quantidade de dígitos decodificados. Cada fatia irá retornar um vetor com os dígitos decodificados, sendo que o tamanho deste vetor é a igual ao número de dígitos do código de barras no padrão EAN-13. O fatiamento horizontal é ilustrado em 1812.
Figure img0011
[0127] A equação (17) calcula a altura da fatia horizontal, onde floor é uma função que arredonda para baixo. O tamanho da fatia é representado por Hs, que é um percentual, definido por , de H, o qual representa a altura da imagem do código de barras. O número de fatias horizontais é calculado através da equação (18) representado por Ns. O deslocamento entre as linhas da imagem do código de barras, representado por s, é calculado a partir da equação (19).
[0128] O código de barras no padrão EAN-13 possui apenas uma dimensão, ou seja, a informação está disposta em uma linha, portanto, necessita-se converter a fatia horizontal, que é uma matriz bidimensional, em um vetor. Este processo é feito através do empilhamento vertical 1813 que transforma uma matriz de duas dimensões em um vetor 1814, sendo que os valores do vetor correspondem à média ponderada das colunas da primeira matriz.
Figure img0012
[0129] O empilhamento vertical é calculado conforme é apresentado pela equação (20), convertendo a matriz bidimensional representada por i(x,y) no vetor s(x). Este vetor armazena as médias ponderadas das colunas entre o s e s + Hs, onde s representa o deslocamento vertical e Hs representa a quantidade de linhas das fatias horizontais.
[0130] O processo seguinte é a binarização 1815 do vetor resultante do empilhamento vertical. Este processo irá converter os valores deste vetor, que estão entre a faixa de 0 a 255, em apenas dois valores, preto “0” e branco “1” 1816. Para isto, necessita-se definir um limiar que separa a faixa de valores que correspondem preto dos valores que correspondem branco. Devido às condições adversas, como a presença de ruído na imagem e os níveis de iluminação do ambiente externo, as faixas de valores do vetor podem variar afetando o resultado da binarização. Por conta disto, se divide o vetor em regiões e calcula-se um limiar para cada uma destas regiões. O limiar é média ponderada da região multiplicada por um peso pertencente a um conjunto de pesos previamente definido. Estes pesos são utilizados para adaptar o limiar aos diferentes níveis de iluminação. Se o valor do vetor for menor do que o limiar, então, se atribui preto “0”; caso contrário, se atribui branco “1”, resultando em outro vetor cujos valores estão entre 0 e 1.
Figure img0013
[0131] Nas equações 21 a 24, é apresentado o método de binarização do vetor. A equação (21) representa o conjunto de pesos utilizados no cálculo dos limiares. Na equação (22) calcula-se o tamanho das regiões no qual o vetor será dividido, onde W representa o tamanho do vetor, Rn a quantidade regiões a serem utilizadas e Wr corresponde ao tamanho das regiões. O valor de Rn é adaptativo e pode ser alterado para melhorar o resultado da decodificação. O limiar é calculado pela equação (23), onde xr representa o início da região r, wi representa um peso i no conjunto de pesos e lr representa o limiar calculado para região r. Por fim a equação (24) calcula o vetor binarizado, onde b(x) será branco “1” para s(x) maior ou igual ao lr ou preto “0” para s(x) menor que lr.
[0132] O procedimento descrito no parágrafo anterior é detalhado pela figura 19. A fatia horizontal 1910 é empilhada verticalmente 1911 convertendo-a em um vetor. Em seguida, obtém-se o peso 1912 a ser aplicado no cálculo do limiar, divide-se o vetor em regiões 1913 e se calcula os limiares para a binarização 1914. Após isto, é possível identificar as barras do código e calcular os dígitos destes 1915. Os dígitos obtidos são armazenados 1916 para serem utilizados posteriormente. Este processo é repetido até que todos os pesos do conjunto de pesos sejam utilizados 1917.
[0133] A etapa converte pixels para barras 1817 recebe o vetor binarizado com as informações em pixels e converte este para um vetor com a representação do código de barras no padrão EAN-13, que é formado por quatro níveis de barras diferentes: “fina”; “média: 2 barras finas”; “larga: 3 barras finas”; “muito larga: 4 barras finas”. Com isto, criou-se um método que tenta estimar quantos pixels cada barra possui. Este método tenta encontrar a quantidade de pixels de uma barra fina e a partir desta definir o tamanho das outras barras.
[0134] O vetor binarizado 2010 é convertido em dois vetores, um com os tamanhos das barras em pixels e um segundo vetor contendo a cores das barras (preto “0” ou branco “1”) 2011. Estes vetores são utilizados nos cálculos executados durante a conversão dos pixels para barras. Para obter os tamanhos corretos de cada barra necessita-se primeiro encontrar o início do código de barras. Sabe-se que o código de barras no padrão EAN-13 inicia-se com 3 barras finas intercaladas entre preto e branco. Encontra-se o início do código de barras quando se acha uma barra preta “0”, uma barra branca “1” e uma barra preta “0”, cuja maior diferença entre os tamanhos das barras seja menor que um limiar previamente estipulado.
[0135] A figura 21 apresenta a estrutura de um código de barras no padrão EAN-13. Neste padrão, as três primeiras barras 2110 são utilizadas para identificar o início do código de barras e as três últimas barras 2114 identificam o fim do código de barras. As cinco barras dos centros 2112 dividem o código de barras em dois grupos, onde o primeiro grupo 2111 representa os sete números iniciais do código de barras, sendo que o primeiro dígito 2115 é definido através da paridade entre as barras do primeiro grupo. O segundo grupo 2113 representa os seis últimos dígitos do código de barras. Cada dígito do código de barras é representado por quatro barras.
[0136] Assim, para efetuar a leitura do código de barras, primeiro se localizam as barras que representam o início do código de barras. Este procedimento utiliza o vetor com os tamanhos das barras em pixels e o vetor com as cores das barras, ilustrados em 2011. Sabe-se que o início do código de barras no padrão EAN-13 é representado por três barras finas com cores preta, branca e preta, respectivamente 2110. Portanto, criou-se um método adaptativo que tenta localizar este padrão de barras a partir da maior diferença entre os tamanhos de três barras contínuas. Caso esta diferença seja menor que o limiar, utilizado para representar a menor distância entre os tamanhos das barras, e as cores das barras coincidirem com as cores das barras do padrão que representa o início, então, significa que o início do código de barras foi localizado.
Figure img0014
[0137] A equação (25) calcula a diferença entre as barras, onde v é o vetor com o tamanho das barras em pixels e x representa o deslocamento pelo vetor. Se o valor retornado por M(v,x) for menor que o limiar da menor diferença, então o primeiro grupo do código de barras começa na posição x + 3 do vetor v. Portanto, inicia-se a tradução das barras para os dígitos do código de barras a partir da posição x + 3 do vetor com o tamanho das barras em pixels e com o vetor contendo as cores das barras.
[0138] Para efetuar a tradução dos dígitos, os vetores são percorridos de quatro em quatro barras até completar os seis dígitos do primeiro grupo 2110. Em seguida, são descartadas as cinco barras do centro 2112, e efetua-se a tradução dos seis últimos dígitos do segundo grupo 2113. Na tradução dos primeiros dígitos, calculam-se também as paridades destes, que representam o primeiro dígito do código de barras 2115.
[0139] A figura 22 apresenta um exemplo de execução do processo de conversão das barras em dígitos. Em 2210, são apresentadas as barras que representam o número quatro no segundo grupo. Neste processo, utiliza-se um vetor com o tamanho das barras em pixels 2211 e um segundo vetor para identificar as cores das barras. A partir destes, criou-se um método adaptativo que visa converter os pixels em apenas quatro níveis de barra: “1” para barra fina; “2” para barra média; “3” para barra larga; “4” para barra muito larga.
[0140] Sabe-se que cada dígito do código de barras é representado por sete barras finas. Portanto, o limiar utilizado para definição das barras é o tamanho da barra fina 2212. O limiar ou tamanho da barra fina é obtido através da soma do tamanho das barras em pixels dividido por sete 2213.
[0141] Mesmo após o processo de restauração da imagem, é possível encontrar ruídos na imagem. Estes, por sua vez, afetam no resultado final da decodificação do código de barras. Para contornar este problema, o método que converte os pixels para barras tenta ajustar o limiar no momento da tradução. Este ajuste é feito através da aplicação de um conjunto de pesos ao limiar 2214, gerando diferentes limiares 2215.
[0142] A conversão dos pixels para barras é feita através da divisão entre o tamanho das barras em pixels pelos limiares obtidos após a aplicação dos pesos 2216. O resultado será uma matriz cujas linhas representam os resultados dos diferentes limiares e as colunas representam os tamanhos das barras 2217.
[0143] Devido à presença de ruído, podem existir casos em que o processo para obtenção dos tamanhos das barras é prejudicado, fazendo com que algumas barras tenham pixels a mais, e por sua vez, outras tenham pixels a menos. Ou seja, algumas barras ficarão muitas finas e outras extremamente largas. Para resolver este problema, desenvolveu-se um método que tenta restaurar o tamanho da barra. Este método tenta identificar as barras que ficaram muito finas, buscando os valores cujo resultado da divisão dos tamanhos das barras em pixels pelos limiares ficou menor que 0,5. Adiciona-se então 0,5 na barra que ficou muito fina e se subtrai 0,5 das barras vizinhas. Este processo é descrito em 2218 e um exemplo de seu resultado é apresentado em 2219.
[0144] O procedimento seguinte é a conversão dos valores resultantes para números inteiros. Para isto se arredondam os valores 2220, permanecendo apenas a parte inteira 2221.
[0145] Em seguida, convertem-se os valores obtidos nas barras, que são representados por uma combinação de 0’s (barras brancas) e 1’s (barras pretas). Esta combinação tem sete elementos, onde cada um destes representa uma barra fina. Obtém-se então uma lista destas combinações 2223 e em seguida efetua-se a decodificação 2224 das barras em busca do número representado por estas. Em caso de sucesso, se obtém uma lista com os números decodificados. Caso um ou mais dígitos não sejam decodificados, se retorna um valor - 1 para cada um destes respectivamente 2225.
[0146] O resultado do processo descrito no parágrafo anterior é uma lista com os prováveis números 2225 que podem ser representados pelas barras decodificadas. Então, a partir desta lista, tenta-se estimar o número com maior probabilidade de ser representado pelas barras decodificadas. Isto é feito calculando-se o dígito dominante 2226, que é o número diferente de -1 com maior freqüência na lista dos números decodificados, conforme apresentado em 2227. Com isto, conclui-se então a etapa de tradução dos dígitos do código de barras 1819.
[0147] O processo de binarização 1815, conversão dos pixels para barras 1817, e tradução dos dígitos do código de barras 1819 gera um vetor com treze posições que contém os possíveis valores dos números representados pelo código de barras. Estas operações são executadas em cada uma das fatias horizontais, gerando por sua vez, um vetor de resultados para cada uma das fatias. Estes vetores são usados para construir um histograma de dígitos 1820, que é utilizado na obtenção dos números representados pelo código de barras.
[0148] Através do histograma de dígitos que é gerado a partir das decodificações das fatias horizontais tenta-se chegar a um resultado ótimo.
[0149] A figura 23 ilustra o processo de obtenção do histograma de dígito e geração do resultado final.
[0150] Cada fatia horizontal do código 2310 é decodificada separadamente retornando uma sequência de dígitos decodificados para cada fatia 2311. No caso de falha na decodificação de um dígito, atribui-se o valor -1 (menos um) na sua posição.
[0151] Para obtenção do valor final calcula-se um histograma de dígitos 2312. A freqüência dos valores deste histograma é afetada pela quantidade de números retornados com sucesso durante a decodificação.
Figure img0015
[0152] O processo para obtenção do histograma de dígitos é apresentado nas equações 26 a 28. A equação (26) retorna 0 (zero) se o dígito for igual -1 (menos um), caso contrário retorna 1 (um), onde ui representa um vetor com a seqüência de dígitos retornados na decodificação de uma fatia cujo índice é representado por i. A equação (27) calcula o incremento do histograma, onde este é igual ao número de elementos de ui diferentes de -1 (menos um). A equação (28) incrementa um valor no histograma, representado por H, onde y é dígito a ser incremento e x é a posição deste dígito no código de barras. O histograma terá seu valor atualizado somente se o valor ui na posição x for diferente de -1 (menos um).
Figure img0016
[0153] Após calcular o histograma de dígitos, obtêm-se então os números representados pelo código de barras 1821, 2313, que serão aqueles com maior freqüência no histograma de dígitos. Este processo é apresentado pela equação (29), onde y representa os números do código de barras e x a posição deste. O resultado final da decodificação é representado na equação (29) por R, sendo armazenado em um vetor com 13 (treze) posições.
[0154] O processo seguinte é a validação do resultado 1822, onde a partir deste analisa-se a seqüência de números retornados na decodificação com o objetivo de verificar se esta é uma seqüência válida. Para isto, verifica-se primeiramente se todos os dígitos foram decodificados corretamente. Caso todos os números tenham sido decodificados com sucesso, então se calcula dígito verificador. Caso o dígito verificador esteja correto, então a seqüência decodificada é válida.
[0155] Em caso de erro, captura-se um novo quadro e se efetua o processo novamente até que o código de barras seja decodificado com sucesso ou até acabar o tempo limite de leitura.
[0156] Quando a decodificação de um código de barras for realizada com sucesso, então se inicia etapa “exibe o resultado” 1213. Nesta etapa o código decodificado é apresentado na tela de exibição do dispositivo portátil. A partir deste resultado, é possível efetuar pesquisas sobre os pontos de vendas que fornecem o produto identificado pelo código de barras decodificado, como também consultar o preço deste.
[0157] Embora uma modalidade preferida da presente invenção seja mostrada e descrita, aqueles versados na técnica compreenderam que várias modificações podem ser feitas sem se afastar do escopo e do espírito da presente invenção, tal como definidos nas reivindicações anexas.
[0158] É expressamente previsto ainda que todas as combinações dos elementos que desempenham a mesma função substancialmente da mesma forma, para alcançar os mesmos resultados, estão dentro do escopo da presente invenção.

Claims (18)

1. Método para restauração de uma imagem de um código de barra desfocado caracterizado pelo fato de que compreende: - capturar a imagem; - restaurar a imagem selecionando uma Função de Transferência ótica (OTF) em uma base de dados e efetuar a deconvolução na imagem; - decodificar o código de barras na imagem restaurada a fim de retornar números representados pelo código de barras; e - exibir os números retornados, em que, na deconvolução do código de barras, um limiar de corte é determinado, o qual se ajusta à iluminação ambiente, para separar um nível branco de um nível preto na imagem do código de barras em tons de cinza.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a imagem compreende pontos pretos e brancos que representam os pixels.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que pixels são espalhados devido à distância focal incorreta, e o espalhamento compreende uma Função de Espalhamento do Ponto (PSF), que deve ser segmentada para utilização.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que a deconvolução da imagem borrada que utiliza a PSF ou OTF estima uma imagem mais próxima do ideal para decodificação do código de barras, através da remoção do efeito de desfocagem causado pelo espalhamento dos pixels da imagem do código de barras, e do aumento de uma taxa de acerto do método.
5. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que compreende adicionalmente um procedimento de calibração da câmera que cria uma base de dados de PSF’s, refletindo a incidência do efeito de desfocagem em um determinado ponto, a partir de uma determinada distância, sendo as PSF’s desta base de dados utilizadas na deconvolução que remove o efeito de desfocagem e restaura a imagem com o código de barras.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que compreende adicionalmente extrair PSF’s estáticas para utilização na deconvolução.
7. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que a base de dados de PSF’s compreende dados relativos à câmera em particular em função de modelos de câmeras diferentes possuírem distâncias focais distintas.
8. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que um banco de PSF’s é estimado.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda: - digitalizar a imagem capturada criando uma máscara de regiões com as prováveis posições de Funções de Espalhamento do Ponto (PSF’s); - copiar apenas os valores de PFS’S, excluindo uma imagem de fundo; - cortar cada uma das PSF’s presentes na imagem para armazená-las separadamente em uma base de dados inicial, a referida base de dados sendo analisada para selecionar as PSF’s inicias que melhor restauram a imagem; - verificar por decodificação vários códigos de barras aplicando as PSF’s a partir da base de dados para restaurar a imagem; - em que as PSF’s cuja decodificação é realizada com sucesso são PSF’s cujos números são exatamente iguais aos número codificados pelos códigos de barras selecionados.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que um tamanho de um código de barras é estimado considerando-se um limiar baseado nas características específicas de dimensões do código de barras utilizado no EAN-13.
11. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a restauração da imagem possibilita a utilização de dispositivos com câmeras sem autofoco.
12. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente realizar processamento em tempo real e analisar quadros obtidos em um modo de pré-visualização.
13. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que regiões que não pertençam ao código de barras são excluídas do processamento.
14. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o código de barras é fatiado horizontalmente e a leitura é executada em cada uma destas fatias individualmente.
15. Método, de acordo com a reivindicação 14, caracterizado pelo fato de que o número de fatias é ajustado conforme a execução, fazendo com que fatias de posições e de tamanhos diferentes sejam obtidas, aumentando assim a probabilidade de sucesso na decodificação.
16. Método, de acordo com a reivindicação 14, caracterizado pelo fato de que a fatia a ser decodificada é dividida em regiões verticais, e para cada fatia obtém-se um limiar conforme a intensidade deum pixel.
17. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a decodificação de código de barras é realizada em imagens capturadas por câmeras de baixo custo e que possuem foco fixo.
18. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente espelhar a imagem do código de barras.
BR102012033723-1A 2011-12-28 2012-12-28 método para restauração de imagens de códigos de barras desfocados BR102012033723B1 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/338,988 2011-12-28
US13/338,988 US8867857B2 (en) 2011-12-28 2011-12-28 Method for restoration of blurred barcode images

Publications (3)

Publication Number Publication Date
BR102012033723A2 BR102012033723A2 (pt) 2015-05-12
BR102012033723A8 BR102012033723A8 (pt) 2018-06-05
BR102012033723B1 true BR102012033723B1 (pt) 2020-12-01

Family

ID=48694849

Family Applications (1)

Application Number Title Priority Date Filing Date
BR102012033723-1A BR102012033723B1 (pt) 2011-12-28 2012-12-28 método para restauração de imagens de códigos de barras desfocados

Country Status (2)

Country Link
US (1) US8867857B2 (pt)
BR (1) BR102012033723B1 (pt)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8948513B2 (en) 2009-01-27 2015-02-03 Apple Inc. Blurring based content recognizer
US9098764B2 (en) * 2009-07-20 2015-08-04 The Regents Of The University Of California Image-based barcode reader
US8606032B2 (en) * 2009-12-23 2013-12-10 Sony Corporation Image processing method, device and program to process a moving image
US8905314B2 (en) 2010-09-30 2014-12-09 Apple Inc. Barcode recognition using data-driven classifier
CN102270292B (zh) * 2011-05-24 2015-09-09 惠州Tcl移动通信有限公司 移动终端及其解码方法
US9124797B2 (en) 2011-06-28 2015-09-01 Microsoft Technology Licensing, Llc Image enhancement via lens simulation
US9338354B2 (en) * 2011-10-03 2016-05-10 Nikon Corporation Motion blur estimation and restoration using light trails
US9137526B2 (en) * 2012-05-07 2015-09-15 Microsoft Technology Licensing, Llc Image enhancement via calibrated lens simulation
US20140231449A1 (en) * 2013-02-19 2014-08-21 Gojo Industries, Inc. Refill container labeling
US9418400B2 (en) * 2013-06-18 2016-08-16 Nvidia Corporation Method and system for rendering simulated depth-of-field visual effect
US10909845B2 (en) * 2013-07-01 2021-02-02 Conduent Business Services, Llc System and method for enhancing images and video frames
JP6318520B2 (ja) * 2013-09-27 2018-05-09 株式会社リコー 撮像装置、撮像システムおよび撮像方法
GB2542738B (en) 2014-07-18 2020-07-29 Hewlett Packard Development Co Frequency domain range determination for a periodic or quasi-periodic target
US10248825B2 (en) 2014-08-29 2019-04-02 Hewlett-Packard Development Company, L.P. Image processing
US10198648B1 (en) * 2015-04-10 2019-02-05 Digimarc Corporation Decoding 1D-barcodes in digital capture systems
US10331928B2 (en) 2015-11-06 2019-06-25 International Business Machines Corporation Low-computation barcode detector for egocentric product recognition
CA2954089A1 (en) * 2016-01-08 2017-07-08 Confirm, Inc. Systems and methods for authentication of physical features on identification documents
TWI560620B (en) * 2016-01-20 2016-12-01 Qisda Corp Barcode decoding method
CN108536707A (zh) * 2017-03-03 2018-09-14 绍兴读图网络科技有限公司 图片信息安全处理方法及系统
US10185857B2 (en) 2017-06-14 2019-01-22 Canon Information And Imaging Solutions, Inc. Devices, systems, and methods for reading barcodes
KR102521408B1 (ko) * 2018-08-27 2023-04-14 삼성전자주식회사 인포그래픽을 제공하기 위한 전자 장치 및 그에 관한 방법
US11734531B2 (en) 2020-10-20 2023-08-22 Hand Held Products, Inc. Methods and systems of harvesting data for training machine learning (ML) model
CN113177890B (zh) * 2021-04-27 2023-04-18 深圳市慧鲤科技有限公司 图像处理方法及装置、电子设备和存储介质
CN114662519B (zh) * 2022-05-24 2022-09-27 武汉朗修科技有限公司 基于位置探测图形梯度和强度先验的qr码盲去模糊方法
CN116205806B (zh) * 2023-01-28 2023-09-19 荣耀终端有限公司 一种图像增强方法及电子设备
CN117237231B (zh) * 2023-11-10 2024-02-09 深圳市善之能科技有限公司 一种防止显示屏画面模糊的渐变调整方法及系统
CN117576617B (zh) * 2024-01-16 2024-04-16 杭州长河智信科技有限公司 一种基于不同环境自动调节的解码系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6152371A (en) * 1998-08-12 2000-11-28 Welch Allyn, Inc. Method and apparatus for decoding bar code symbols
US7156311B2 (en) * 2003-07-16 2007-01-02 Scanbuy, Inc. System and method for decoding and analyzing barcodes using a mobile device
US20070146689A1 (en) * 2004-01-15 2007-06-28 Matsushita Electric Industrial Co., Ltd. Measuring method for optical transfer function, image restoring method, and digital imaging device
US7172124B2 (en) 2005-03-10 2007-02-06 Microsoft Corporation Camera-based barcode recognition
US7237721B2 (en) * 2005-05-24 2007-07-03 Nokia Corporation Image processing for pattern detection
BRPI0603273A (pt) 2006-05-10 2008-01-15 Inca Servicos De Tecnologia De sistema e método que utiliza um software para realizar a decodificação de códigos de barras diretamente em aparelhos de comunicação móvel equipados com cámeras digitais
WO2008020449A2 (en) * 2006-08-16 2008-02-21 Xceed Imaging Ltd. Method and system for imaging with a zoom
US8199246B2 (en) * 2007-05-30 2012-06-12 Fujifilm Corporation Image capturing apparatus, image capturing method, and computer readable media
US20090152358A1 (en) * 2007-12-14 2009-06-18 Epshteyn Alan J System and Method for a Barcode Reading Functionality Using an Image Capturing Device
EP2093697B1 (en) 2008-02-25 2017-08-23 Telefonaktiebolaget LM Ericsson (publ) Method and arrangement for retrieving information comprised in a barcode
CN102334128B (zh) * 2008-12-26 2015-03-25 数据逻辑扫描公司 用于成像的系统和方法
WO2010114449A1 (en) * 2009-03-30 2010-10-07 Telefonaktiebolaget Lm Ericsson (Publ) Barcode processing
US9098764B2 (en) 2009-07-20 2015-08-04 The Regents Of The University Of California Image-based barcode reader
US8851382B2 (en) 2009-09-24 2014-10-07 Ebay Inc. System and method for estimation and classification of barcodes using heuristic and statistical measures
KR101055853B1 (ko) * 2011-01-04 2011-08-09 (주)올라웍스 입력되는 바코드 영상을 디블러링하기 위한 방법, 단말 장치 및 컴퓨터 판독 가능한 기록 매체

Also Published As

Publication number Publication date
BR102012033723A8 (pt) 2018-06-05
US8867857B2 (en) 2014-10-21
US20130170765A1 (en) 2013-07-04
BR102012033723A2 (pt) 2015-05-12

Similar Documents

Publication Publication Date Title
BR102012033723B1 (pt) método para restauração de imagens de códigos de barras desfocados
US11194984B2 (en) Localization of machine-readable indicia in digital capture systems
EP2415015B1 (en) Barcode processing
BRPI1100823B1 (pt) Sistema e método automático para rastreamento e decodificação de código de barras por meio de dispositivos portáteis equipados com câmeras digitais
KR102082301B1 (ko) 카메라로 촬영한 문서 영상을 스캔 문서 영상으로 변환하기 위한 방법, 장치 및 컴퓨터 판독 가능한 기록 매체
KR102113911B1 (ko) 생체 인식 인증을 위한 특징 추출 및 정합과 템플릿 갱신
US20140247470A1 (en) Camera-based document imaging
CN110136069B (zh) 文本图像矫正方法、装置与电子设备
US10140495B2 (en) Deconvolution of digital images
Sörös et al. Blur-resistant joint 1D and 2D barcode localization for smartphones
US8811751B1 (en) Method and system for correcting projective distortions with elimination steps on multiple levels
KR20160014728A (ko) 정보를 인식하기 위한 방법 및 시스템
JP2011045078A (ja) カメラベースの文書画像処理のための適応的ボケ除去
Chu et al. Stabilization and extraction of 2D barcodes for camera phones
Liu et al. Two-dimensional bar code out-of-focus deblurring via the increment constrained least squares filter
CN105469026A (zh) 针对文档图像的水平和垂直线检测和移除
US8913836B1 (en) Method and system for correcting projective distortions using eigenpoints
Munoz-Mejias et al. A low-complexity pre-processing system for restoring low-quality QR code images
JP6542230B2 (ja) 投影ひずみを補正するための方法及びシステム
BR112013011943B1 (pt) método para identificação de um código de barras bidimensional em dados de imagem digital do código de barras, meio legível por computador não transitório e aparato configurado para identificar um código de barras bidimensional em dados de imagem digital do código de barras
Prabhu et al. An approach for improved data matrix distortion correction using median filtered hough transform
Liu et al. Bar code recognition in complex scenes by camera phones
Liyanage Efficient decoding of blurred, pitched, and scratched barcode images
Lee et al. A restoration method for distorted comics to improve comic contents identification
US12008431B2 (en) Decoding of linear barcodes under unfavorable conditions

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]
B03H Publication of an application: rectification [chapter 3.8 patent gazette]
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 28/12/2012, OBSERVADAS AS CONDICOES LEGAIS.