BRPI1100823B1 - 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 - Google Patents

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 Download PDF

Info

Publication number
BRPI1100823B1
BRPI1100823B1 BRPI1100823-7A BRPI1100823A BRPI1100823B1 BR PI1100823 B1 BRPI1100823 B1 BR PI1100823B1 BR PI1100823 A BRPI1100823 A BR PI1100823A BR PI1100823 B1 BRPI1100823 B1 BR PI1100823B1
Authority
BR
Brazil
Prior art keywords
barcode
decoding
image
bar code
orientation
Prior art date
Application number
BRPI1100823-7A
Other languages
English (en)
Inventor
Gustavo DE ALMEIDA NEVES
Eduardo Telmo Fonseca Santos
Eduardo Manuel De Freitas Jorge
Alberto Almeida De Azevedo Filho
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
Priority to BRPI1107270A priority Critical patent/BRPI1107270A2/pt
Publication of BRPI1100823A2 publication Critical patent/BRPI1100823A2/pt
Publication of BRPI1100823A8 publication Critical patent/BRPI1100823A8/pt
Publication of BRPI1100823B1 publication Critical patent/BRPI1100823B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10821Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices
    • G06K7/10861Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices sensing of data fields affixed to objects or articles, e.g. coded labels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10712Fixed beam scanning
    • G06K7/10722Photodetector array or CCD scanning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Electromagnetism (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Theoretical Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Closed-Circuit Television Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Studio Devices (AREA)

Abstract

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 o presente pedido de patente de invenção refere-se a um sistema e método automático para rastreamento e decodificação de imagens de códigos de barras no padrão ean-13 por meio de dispositivos portáteis equipados com câmeras digitais. através deste sistema é possível rastrear o código de barras em qualquer posição e orientação que ele esteja e decodificá-lo automaticamente em tempo real. para efetuar o rastreamento e a decodificação do código de barras, são aplicados métodos sobre a imagem capturada, buscando a orientação e localização do código de barras.

Description

Campo da Invenção
[001] 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, Personal Digital Assistants PDA, câmera digitais portáteis, dentre outros.
[002] O presente pedido de patente de invenção refere-se a um sistema e método automático para rastreamento e decodificação de imagens de códigos de barras no padrão EAN-13 por meio de dispositivos portáteis equipados com câmeras digitais.
[003] Através deste sistema é possível rastrear o código de barras em qualquer posição e orientação que ele esteja e decodificá-lo automaticamente em tempo real. Para efetuar o rastreamento e a decodificação do código de barras, são aplicados métodos sobre a imagem capturada, buscando a orientação e localização do código de barras. Antecedentes da Invenção
[004] 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.
[005] 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.
[006] Recentemente, surgiram os códigos de barras capazes de armazenar a informação na vertical e na horizontal e são os chamados código de barras 2D ou bidimensionais. Eles podem armazenar uma grande quantidade de informação. Como exemplo podemos citar o Qr Code, o DataMatrix, PDF417, Código 49, entre o outros.
[007] Alguns códigos de barras têm sua estrutura padronizada por organizações internacionais, como é o caso do EAN-13. Outros códigos são livres, onde quem deseja utilizá-lo tem autonomia para posicionar os dados como desejar, como, por exemplo, o código 128. Com isto, muitas organizações passaram a definir suas próprias estruturas.
[008] O padrão de código de barras EAN-13 é frequentemente utilizado na identificação de produtos vendidos em estabelecimentos comerciais. Este padrão de código de barras consiste em uma identificação única dos produtos que é utilizada pelos fabricantes, atacadistas, varejistas, distribuidores e consumidores em praticamente todo o mundo.
[009] 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. Este equipamento realiza a varredura do código de barras emitindo um raio de luz vermelho que é absorvido pelas barras escuras e refletido pelas barras brancas. Sensores presentes no escâner captam estas informações e enviam para um computador que efetua tradução dos dados para números ou letras.
[0010] Com o avanço da tecnologia, tornou-se possível a criação de leitores de código de barras baseados em leitura ótica mais leves e que ocupam menos espaço, tornando-os mais portáteis. Apesar disto, estes leitores são desenvolvidos somente para a leitura de código de barras, e, em geral, só conseguem efetuar a leitura do padrão de código de barras para o qual foram desenvolvidos.
[0011] A patente norte-americana US2006020039, intitulada: Camera-Based Barcode Recognition, publicada em 14 de setembro de 2006, propõe um sistema de decodificação de código de barras a partir de imagens capturadas por câmeras digitais. Este sistema realiza a decodificação dos códigos de barras a partir de imagens obtidas no modo de pré-visualização, porém não apresenta uma técnica para evitar a degradação das imagens exibidas no visor do aparelho em questão. Para encontrar os limites do código de barras, a patente US2006020039 utiliza um método que tem como princípio encontrar as áreas brancas localizadas do lado esquerdo e do lado direito do código de barras a partir do centro do mesmo. Este método é ineficiente, pois estas áreas brancas podem encontrar-se danificadas, tornando o método impreciso. Após corrigir a rotação, a imagem retornada será uma sub-região localizada no centro do código de barras, excluindo o restante do código. Este procedimento não é eficiente, pois a imagem retornada poderá estar em pior estado do que nas regiões excluídas. A binarização utilizada pela referida patente possui parâmetros fixos, ou seja, não são adaptativos, com isto, este processo torna-se ineficaz, diminuindo a probabilidade de acerto do decodificador.
[0012] A patente US20050011957, intitulada: System and Method for Decoding and Analyzing Barcodes Using a Mobile Device, publicada no dia 20 de janeiro de 2005, apresenta uma aplicação para decodificação de códigos de barras. Esta aplicação consiste em um sistema e método que melhora a imagem e obtém a informação codificada pelo código de barras contido na imagem. Em seguida, através de uma conexão wireless, envia o resultado da decodificação para um servidor que é responsável por processar a informação do código de barras e transmitir de volta para o dispositivo móvel o conteúdo associado a este. A referida patente descreve, sem apresentar detalhes, o fluxo completo de um processo para correção da imagem e decodificação do código de barras. Este processo realiza inúmeras tentativas de decodificação utilizando diferentes parâmetros, que são obtidos através de um conjunto pré-estabelecido de parâmetros, que têm como objetivo melhorar a imagem e consequentemente, aumentar a probabilidade de decodificar o código de barras com sucesso. Estas operações são executadas nas imagens capturadas no “preview” da câmera integrada ao dispositivo móvel. A patente em questão menciona métodos para: correção da rotação; correção da perspectiva; remoção de cisalhamento; correção de problemas relacionados à iluminação; ajuste do foco; entre outras correções para remover as distorções que podem afetar a imagem do código de barras. A patente US20050011957 não descreve o funcionamento de um requisito importante para o sucesso da decodificação: o cálculo do limiar de corte entre o branco e o preto.
[0013] O documento de patente PI 0603273-7, publicado em 25 de janeiro de 2008, descreve um 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. A referida patente descreve um método de pré-processamento da imagem capturada pela câmera do dispositivo a fim de verificar a presença de um código de barras. Este método consiste em converter a imagem para duas cores, e depois é realizar um processo de varredura da imagem que visa converter a mesma em dois estados de cores. Após este processo, é realizada uma filtragem dos elementos contidos na imagem. A seguir, é realizada uma parametrização visando identificar as partes componentes da imagem. Então, as partes componentes são verificadas a fim de localizar ou não um código de barras. Caso o resultado da verificação seja positivo, o valor representado no código de barras é obtido. As etapas realizadas pelo processo descrito no documento brasileiro PI 0603273-7 não são apresentadas com detalhamento suficiente. O documento PI0603273-7 apresenta o próprio estado da técnica, não acrescenta elementos novos e não explica como resolver os problemas apesar de indicá- los.
[0014] O documento intitulado: “Processamento Digital de Imagens de Códigos de Barras usando Telefones Celulares” de Tiago Henrique Tudisco dos Santos e Almir Olivette Artero, publicado em 7 de julho de 2010 no VI Workshop de Visão Computacional, propõe o uso de telefones móveis equipados com câmeras para leitura e interpretação de código de barras EAN-13, utilizando a tecnologia J2ME. Este documento utiliza o operador de Sobel de detecção de bordas para poder localizar e efetuar a leitura do código de barras. O método apresentado no referido artigo cria um mapa de direções de bordas a partir dos gradientes obtidos através da execução do operador de Sobel, eliminando as bordas com baixa magnitude. O sistema citado não apresenta soluções para problemas relacionados à iluminação, portanto, para que a decodificação seja efetuada com sucesso é necessário que o código de barras esteja em condições ideais, sem anomalias causadas por falta de foco, sombras ou ruídos.
[0015] O documento intitulado: “Locating and Decoding EAN-13 Barcodes from Images Captured by Digital Cameras” de Douglas Chai e Florian Hock, de 6 de dezembro de 2005, apresenta uma técnica baseada em visão computacional para localizar e decodificar código de barras. Para localizar o código de barras, divide-se a imagem em blocos de 32x32 pixels e, então, aplica-se o método de Otsu-Thresholding para limiarização em cada um destes blocos. Em seguida, realiza-se uma operação morfológica chamada “skeletonizing” em cada bloco. Para determinar se o bloco possui um código de barras ou não, separam-se os componentes conectados de cada bloco, e, então, calcula-se o ângulo destes componentes em relação ao eixo x. Apenas os blocos cujos ângulos dos componentes forem semelhantes, indicando que estes são paralelos, são mantidos na imagem. Apesar da técnica parecer ser eficaz, necessita de alto custo computacional, visto que o método apresentado por este artigo executa operações morfológicas que exigem alto custo computacional. O referido documento apresenta um método de decodificação simples, que é executado sem nenhum tipo de tratamento prévio na imagem para remoção de distorções causadas pela iluminação do ambiente, tratamento de sinal/ruído, remoção de perspectiva.
[0016] Os trabalhos supracitados apresentam vários processos para decodificação de código de barras, onde cada um possui métodos diferenciados para tentar reconhecer o código de barras da melhor forma possível. Imagens capturadas em ambientes não controlados sofrem interferências que dificultam sua análise. Estas interferências podem ser: problemas relacionados à iluminação; presença de ruído na imagem; baixo contraste; imagem capturada em movimento, imagem desfocada, distorções ligadas à perspectiva e a rotação; entre outros problemas. A maioria das soluções descritas pelos trabalhos correlatos realizará a leitura do código de barras com sucesso, somente se a imagem for capturada condições ideais, ou seja, se não sofrer influência dos problemas relatados anteriormente. Muitos trabalhos citaram a necessidade de aplicar métodos que melhorem a qualidade imagem, e conseqüentemente aumentando a probabilidade de realizar decodificações com sucesso, porém, não descrevem com detalhes o funcionamento desses métodos.
[0017] O documento de patente norte-americano US20040099741, publicado em 27 de maio de 2004, revela um sistema e método para obtenção da informação da imagem selecionada a partir de uma imagem digital e fornece a informação sobre a imagem selecionada para manuseio. Em um aspecto, a presente invenção localiza e segmenta automaticamente um item de uma imagem capturado por uma câmera digital e fornece uma informação da imagem, relativa ao item para processamento. Alternativamente, um usuário pode designar quais áreas de uma imagem compreendem o item de interesse para visualizações ou processamentos adicionais, sendo a inclinação localizada com base na transformada de Hough.
[0018] O documento de patente norte-americano US20060202039, publicado em 14 de setembro de 2006, apresenta um sistema para decodificação de informações relativas a códigos de barras a partir de uma imagem capturada por câmera, através da geração de uma sequência binária da imagem capturada e decodificação da informação do código de barras oriunda da sequência binarizada. A imagem capturada pela câmera é pré-processada em uma imagem em tons de cinza, e aprimorando o contraste entre as barras e espaços da imagem pré-processada. A orientação do código de barras é identificada de modo que seja paralela às barras na imagem pré-processada. Uma sequência projetada é formada pela projeção de pixels da imagem pré-processada ao longo da orientação do código de barras. A sequência binarizada é formada pela aplicação de um limiar para detectar picos da sequência projetada. Uma sequência de código de barras é formada, a partir a partir da sequência binarizada, na qual cada barra e cada espaço do código de barras são representados por único bit respectivo na sequência de codificação do código de barras. A seguir, a informação é extraída da sequência codificada do código de barras. De acordo com os ensinamentos do referido documento, o angulo de inclinação é encontrado através da projeção da imagem binarizada do código de barra sobre os eixos x e y.
[0019] Diferentemente dos documentos mencionados anteriormente, a presente invenção objetiva um método para leitura do código de barras a partir de uma imagem capturada pela câmera de um dispositivo portátil, levando em consideração a presença de anomalias que afetam a qualidade da imagem. Para isto, a presente invenção fornece um método para eliminar distorções relacionadas à perspectiva e à rotação do código de barras, iluminação, baixo contraste, melhorar a relação sinal/ruído, entre outros.
Sumário da Invenção
[0020] A presente invenção fornece um sistema de decodificação de código de barras, materializado através de uma solução integrada de software e hardware que rastreia e decodifica códigos de barras em tempo real por meio de dispositivos portáteis que possuam câmera digital. O sistema é capaz de rastrear e decodificar código de barras no padrão EAN-13.
[0021] Esta invenção tem como objetivo prover um método eficiente e eficaz que permita aos consumidores consultar preços dos produtos em qualquer lugar que esteja. A presente invenção permite que o consumidor, através de um dispositivo portátil, equipado com câmera digital consiga rapidamente decodificar o código de barras.
[0022] Visando um nível de decodificação similar ao dos equipamentos leitores de código de barras com laser, o sistema da presente invenção utiliza um método que possibilita a identificação e decodificação de códigos de barras posicionados em qualquer região da imagem capturada. O sistema também permite a identificação e decodificação de códigos de barras que estejam rotacionados ou que apresentem perspectiva.
[0023] O sistema da presente invenção permite ao usuário selecionar o modo de localização do código de barras. Este modo pode ser automático ou manual. No modo automático, o usuário enquadra o código de barras em qualquer posição do display da câmera e esse, por sua vez, será localizado e decodificado. Para o caso manual, o usuário deverá enquadrar o código de barras dentro dos limites de uma mira previamente posicionada. Problemas resolvidos pelo sistema da presente invenção
[0024] 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 aplica técnicas de desenvolvimento com objetivo de diminuir o custo computacional, possibilitando uma redução no tempo de decodificação e minimizando o uso do processador do dispositivo portátil, além de economizar memória, otimizando, assim, o uso dos recursos. 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.
[0025] Para realizar a análise em tempo real, faz- se necessário utilizar o quadro capturado pelo preview da câmera do dispositivo portátil e processá-lo. Porém, dependendo do tempo de processamento, a apresentação dos quadros poderia ser prejudicada, pois o quadro só poderá ser exibido no display do dispositivo portátil após o término do processamento, diminuindo, assim, a taxa de exibição efetiva dos quadros capturados pela câmera. Este tipo de limitação na visualização não costuma agradar aos usuários, causando desconforto na utilização do equipamento. Para evitar esta limitação, técnicas de programação concorrente e comunicação entre processos são utilizadas, possibilitando o desenvolvimento de um método eficaz que permite que um quadro seja processado, enquanto a câmera permanece filmando, fazendo com que os quadros continuem sendo capturados e exibidos no display do dispositivo portátil. Com isto, foi possível otimizar a visualização em tempo real, possibilitando processar um determinado quadro e ao mesmo tempo continuar a captura e apresentação dos quadros, mantendo a taxa de exibição do preview.
[0026] No momento da leitura, o código de barras pode ter sido posicionado inclinado e, com isto, a decodificação poderia ser prejudicada. Para ler o código de barras diretamente, é necessário que na imagem processada as barras tenham uma inclinação próxima de 90°. Por isso, foi desenvolvido um método específico que estima a orientação do código de barras e depois corrige o nível de inclinação, tornando possível decodificar códigos de barras inclinados, e por sua vez, aumentando a eficácia do leitor de código de barras. O ângulo de inclinação onde uma linha de varredura atravessando o código de barras apresenta a menor variância nos tons de cinza é utilizado para estimar o nível de inclinação do código de barras.
[0027] 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.
[0028] Objetivando melhorar a eficácia 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. Primeiramente, busca-se somente a região onde o código de barras se encontra, eliminando componentes que comprometam o resultado da leitura do código de barras. O código de barras é dividido em fatias horizontais 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.
[0029] 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 para estimar o tamanho das barras.
[0030] Em alguns casos, determinadas câmeras podem não conseguir enquadrar 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 possuem ,código de barras tão pequenos que quando a câmera está distante, 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, mesmo nos casos em que o auto-focus é executado. Este problema é contornado para câmeras com suporte a focus macro. Este tipo de auto-focus consegue focalizar objetos pequenos aumentando a sua nitidez e, por sua vez, favorecendo a leitura dos códigos de barras.
Vantagens técnicas/funcionais da invenção
[0031] Baixo custo computacional: Buscando aperfeiçoar o processo de leitura do código de barras, foram utilizadas técnicas 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.
[0032] 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.
[0033] 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, dependendo 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.
[0034] Utilização de programação concorrente: Foram utilizadas técnicas robustas e ágeis de computação concorrente e comunicação entre processos, fazendo com que o sistema exiba os quadros filmados pela câmera do dispositivo portátil. ao mesmo tempo em que é efetuada a leitura e decodificação do código de barras presente em algum quadro capturado. Com a utilização desta técnica, é possível realizar todo processo de leitura do código de barras sem prejudicar a taxa de exibição do preview da câmera.
[0035] Identificação e correção da orientação do código de barras: Buscando aumentar ainda mais a eficácia do leitor de código da presente invenção, foi desenvolvido um método robusto para estimar o ângulo de inclinação do código de barras. Este método tenta encontrar qual a orientação das barras do código de barras. Para isto, a imagem é dividida em sub-regiões, e em cada uma destas se efetua uma busca pela linha de varredura com menor variância em uma faixa de ângulos de 180°.
[0036] Localização dos limites do código de barras: Este processo busca a posição do código de barras na imagem, retornando as coordenadas referentes ao lado esquerdo, o topo, o lado direito e a base do código de barras. Com isto, o leitor de código de barras precisará analisar somente a região dentro dos limites destas coordenadas, aumentando, por sua vez, a eficiência do algoritmo, que não terá que processar a imagem toda.
[0037] 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.
[0038] 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, ou que até possuam, porém com imagem desfocada, efetua-se uma pré-análise 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 mais chances de decodificação será fornecido.
[0039] 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.
[0040] 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.
[0041] 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. O método foi criado partindo-se do princípio que todas as barras são derivadas da barra fina, ou seja, para definir as outras barras, é necessário conhecer o tamanho da barra fina. Sabendo que dependendo da superfície que a barra se encontra, os valores podem aumentar ou diminuir conforme a perspectiva provocada pelo formato da embalagem. Por conta disto, calcula-se um tamanho de barra fina para cada dígito do código de barras, pois assim estima-se o tamanho de barra fina que está na mesma perspectiva das outras barras que formam o dígito.
[0042] 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 ao 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.
[0043] 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.
[0044] 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.
Breve descrição das figuras
[0045] 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:
[0046] A Figura 1 ilustra como será a interação do usuário com a invenção.
[0047] A Figura 2 exibe como a invenção apresentará ao usuário a informação de que os limites do código de barras foram encontrados.
[0048] A Figura 3 exemplifica um modelo genérico de dispositivo portátil, no qual o sistema deve funcionar.
[0049] A Figura 4 é o diagrama de blocos mostrando os passos executados pela invenção para realizar a decodificação do código de barras.
[0050] A Figura 5 mostra o funcionamento da interceptação dos quadros filmados pela câmera do dispositivo portátil.
[0051] A Figura 6 mostra o método utilizado pela presente invenção para obter a provável orientação do código de barras.
[0052] A Figura 7 apresenta a região com a provável orientação do código de barras.
[0053] A Figura 8 detalha o funcionamento do método que computa a provável orientação do código de barras.
[0054] A Figura 9 exibe o código de barras após ter sua rotação corrigida.
[0055] A Figura 10 ilustra o processo de correção da rotação do código de barras.
[0056] A Figura 11 detalha o funcionamento do método que encontra os limites do código de barras.
[0057] A Figura 12 representa o momento em que a invenção computa os limites do código de barras.
[0058] A Figura 13 mostra o fluxo de decodificação do código de barras.
[0059] A Figura 14 representa o momento em que a invenção distingue os componentes pretos e brancos do código de barras.
[0060] A Figura 15 representa o momento em que a invenção define as barras do código de barras.
[0061] A Figura 16 ilustra a tela com o resultado da decodificação.
Descrição das concretizações preferidas da invenção
[0062] O sistema materializado a partir dos métodos desenvolvidos para esta invenção localiza e decodifica código de barras em tempo real a partir de um dispositivo portátil equipado com câmera digital. Assim, de acordo com a concretização preferida da invenção, é fornecido um método para localizar e decodificar códigos de barras, executados em tempo real a partir de um sistema integrado de hardware e software.
[0063] O funcionamento do sistema da presente invenção tem início no momento em que o usuário executa-o a partir de um dispositivo portátil no qual o sistema foi previamente instalado.
[0064] A figura 1 mostra o sistema após inicialização. Depois da inicialização, a câmera digital do dispositivo será acionada e o modo de pré-visualização será iniciado, mostrando os quadros filmados no display do dispositivo 111. Neste momento os quadros filmados são capturados em tempo real a uma taxa de FPS quadros por segundo, sendo o valor típico de FPS: 30.
[0065] Quando o código de barras 110 for enquadrado pela câmera do dispositivo, o sistema dará início às operações de localização e decodificação que processará os quadros obtidos pela câmera em execução. Neste momento, serão executados os procedimentos necessários para descobrir a orientação e os limites do código de barras, sendo também efetuadas correções relacionadas à iluminação, relação sinal/ruído, entre outras, e por fim o código de barras será decodificado.
[0066] A presente invenção tem como objetivo principal transformar um dispositivo portátil equipado com câmera digital em um sistema para decodificação de código de barras, com a finalidade semelhante ao dos equipamentos encontrados em lojas e supermercados. Para isto foram desenvolvidos métodos para localizar a orientação e a posição do código de barras antes deste ser decodificado. A figura 2 exemplifica o momento em que o código de barras é encontrado mostrando o retângulo 210 desenhado em torno dos limites do código de barras sinalizando que a localização foi executada com sucesso.
[0067] 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 3. A CPU 310 (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 311 captura as imagens e deve possuir um foco suficiente para que a imagem capturada mantenha sua nitidez ou possuir o auto-focus. O meio de armazenamento 312 serve para guardar informações e dados, inclusive os códigos decodificados, entre outros. O hardware também é composto por dispositivos de entrada de informação 313 e componentes de áudio 314. Através de algum componente de conectividade 315 é 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 316 é utilizado para visualizar os quadros capturados pela câmera do dispositivo.
[0068] A figura 4 mostra o diagrama de blocos com o funcionamento geral da presente invenção. Este diagrama descreve todo o processo executado pelo sistema, desde a obtenção do quadro, localização e decodificação do código de barras.
[0069] A etapa “inicializa leitor de código de barras” 410, consiste no acionamento e configuração da câmera digital integrada com o dispositivo portátil, apresentação da interface com usuário e preparação dos parâmetros necessários para que o leitor de código de barras seja executado com sucesso. Nesta etapa, destaca-se a definição da resolução do quadro do modo de pré- visualização, onde tipicamente é selecionada a maior resolução suportada pelo equipamento. Além disto, é ativada a opção focus macro para câmeras que possuem auto-focus e suporte a esta opção. O focus macro é utilizado para que o aufo-focus focalize imagens próximas a lente da câmera permitindo que imagens filmadas próximas fiquem nítidas. Com isto, torna-se possível a decodificação de código de barras menores.
[0070] A etapa “Intercepta quadros capturados no modo de pré-visualização da câmera” (411), é responsável por obter os quadros filmados com eficiência e eficácia. O dispositivo portátil usualmente possui um sistema operacional embarcado com capacidade de realizar múltiplas tarefas ao mesmo tempo. Aproveitando este recurso, o processo de leitura do código de barras é feito em uma thread separada da thread onde o quadro filmado é interceptado e exibido no display do dispositivo. Com isto, a câmera continua filmando e exibindo os novos quadros, enquanto outro quadro é processado em uma outra thread. Para realizar este procedimento, foram desenvolvidos métodos bem definidos para troca de informações e mensagens entre as threads, conforme será descrito a seguir.
[0071] A figura 5 mostra o funcionamento da interceptação dos quadros filmados pela câmera do dispositivo portátil. Uma thread 511 é responsável por capturar os quadros da câmera e exibir no display. O quadro filmado é interceptado e postado 513 para a outra thread 514. Neste momento, o estado do leitor está definido como “disponível” 515. Então, o quadro é copiado para uma área de memória compartilhada 512 e, em seguida, a leitura do código de barras inicia-se em uma nova thread 514. Neste momento, o estado é definido como “ocupado” 517 e, com isto, não é possível postar um quadro novamente.
[0072] As operações realizadas na leitura do código utilizam apenas a luminância da imagem. Por isto, assim que o leitor de código de barras recebe o quadro interceptado, verifica-se o formato deste quadro e se obtém a sua luminância ou escala de cinza, que representa a intensidade de luz dos pixels da imagem. A câmera integrada ao dispositivo portátil pode suportar diversos formatos de imagem com seus respectivos espaços de cores. Muitos formatos já possuem um canal para a luminância, como é o caso do YUV e YCbCr, cuja luminância é armazenada no canal Y. Um formato comumente utilizado é o RGB, cuja equação para obtenção da luminância é:(1) L = 0,299R + 0,587G + 0,114 B
[0073] Após o término da leitura, o estado é definido como “pausado” 518. Se a leitura foi efetuada com sucesso, então, o resultado é exibido 519. Caso contrário, o estado é definido como “disponível” 520 e o processo é reiniciado.
[0074] Com a utilização do procedimento descrito acima, tornou-se possível efetuar a leitura do código de barras sem afetar a exibição dos quadros filmados, fazendo com que não ocorra congelamento da imagem no momento da filmagem, dando ao usuário a sensação de fluidez na exibição de imagens, pois minimiza-se a interferência do processo de decodificação na taxa de exibição no display do dispositivo portátil.
[0075] Retornando à figura 4, a etapa “pesquisa provável orientação do código de barras” 412 computará qual o ângulo de rotação de orientação, no qual o código de barras se encontra. Para isto, o quadro que contém o código de barras é dividido em regiões menores com mesmo tamanho e para cada uma destas regiões calcula-se um ângulo. Esta operação é exemplicada na figura 6. As equações utilizadas para obter os limites e o tamanho das regiões são mostradas a seguir:
Figure img0001
[0076] As equações (1) e (2) são utilizadas para calcular a largura e a altura de cada região respectivamente. LQ é a largura e AQ é altura do quadro. ES representa quantas vezes uma região será menor que o quadro. A equação (3) calcula a área total de uma região.
[0077] Para estimar o ângulo do código de barras, faz-se necessário obter os níveis de cinza localizados em diferentes orientações de linhas de varredura percorrendo o código de barras. Os pixels são obtidos a partir das linhas com inclinações entre 0° a 180°, sendo que o centro das linhas de varredura intercepta o centro da região, conforme é exemplificado em 611. Para o traçado e varredura das linhas, utilizou-se o algoritmo de Bresenham 2d, que computa as coordenadas dos pontos das linhas eficientemente. A orientação do código de barras será o ângulo da linha de varredura entre 0° e 180° que possui menor variância nos tons de cinza dos pixels interceptados 712.
[0078] Cada região terá uma orientação própria 710, obtida conforme detalhado acima. Porém é necessário obter a orientação pertencente ao código de barras. Para isto, calcula-se o nível de variação dos níveis de cinza da linha perpendicular à orientação computada em cada região. Com isto, temos que a orientação do código de barras corresponde à orientação computada pela região com a maior variação entre os níveis de cinza. A figura 7 mostra como seria o resultado desta operação e a figura 8 exemplifica detalhadamente a obtenção da orientação estimada do código de barras. Este processo é calculado a partir das equações a seguir:
Figure img0002
Figure img0003
[0079] A equação (4) exemplifica o processo utilizado para calcular as coordenadas da linha que será analisada pelo algoritmo. A função B(a, b, r, θ) extrai linhas com diferentes inclinações, cujos parâmetros a e b representam as coordenadas do centro da linha. Neste método, a e b serão as coordenadas do centro da região em relação ao quadro contendo o código de barras. O parâmetro r é o raio, utilizado para definir o tamanho da linha que será igual a 2r. O parâmetro θ é o ângulo de inclinação da linha. A função bresenham2d, conforme mencionado anteriormente, serve para computar de forma rápida as posições dos pontos de uma linha, obtendo, assim, os níveis de cinza da linha com as suas respectivas coordenadas ao longo de uma linha de varredura. Esta função recebe como parâmetros as coordenadas do início e do fim de uma linha. A equação (5) computa a média, utilizada na equação (6) para calcular a variância. A variável x é um vetor de valores de luminâncias ao longo da linha calculada com a equação (4) e xi é o valor de luminância do pixel correspondente à posição i. Por fim, é mostrada a equação (7) cujo resultado será o ângulo da linha com a menor variância. As linhas obtidas possuirão inclinação variando entre 1° e 180°, sendo que a cada iteração este ângulo é incrementado delta graus (valor típico: 5o).
[0080] Neste momento, são obtidas várias pequenas regiões com seus respectivos ângulos. Assim, o próximo passo é descobrir qual a região onde o código de barras se encontra e obter o ângulo resultante. Aproveitando-se a estrutura do código de barras que é formado por linhas brancas e pretas, pesquisa-se a região com a maior variação entre os níveis de cinza na direção perpendicular ao ângulo resultante.
Figure img0004
[0081] A equação (8) calcula o nível de variação de uma linha, onde x é um vetor correspondente a uma linha de varredura com seus respectivos níveis de cinza. A equação (9) retorna uma estimativa do ângulo do código de barras, que será o ângulo, obtido pela equação (7), da região com maior variação entre os níveis de cinza das linhas perpendiculares a este ângulo. Na equação (9) temos θj que é ângulo da região j, e J é número total de regiões. A partir do ângulo resultante, torna-se possível corrigir a rotação do código de barras.
[0082] Retornando à figura 4, a etapa “corrige rotação do código de barras” 413 é utilizada para a decodificação de código de barras muito inclinados. Esta etapa será executada apenas se o ângulo de rotação do código de barras for menor que 80° e maior do que 100°, pois é possível fazer a leitura do código de barras com pouca inclinação. O resultado da correção do código de barras é exemplificado pela figura 9. Para corrigir o código de barras, mais uma vez, utiliza-se Bresenham 2d que varrerá todas as linhas perpendiculares à orientação do código de barras e, por sua vez, criará uma nova imagem empilhando estas linhas.
[0083] A figura 10 ilustra o processo de correção da rotação do código de barras, onde, após obter o ângulo de rotação do código de barras 1010, calculam-se todas as linhas perpendiculares a este ângulo 1011 e, conforme mencionado anteriormente, cria-se uma nova imagem empilhando verticalmente cada linha perpendicular 1012 as barras do código de barras.
[0084] Após a correção de rotação do código de barras, segue-se para a etapa “pesquisa os limites do código de barras” 414 que visa encontrar a localização do código de barras. Esta etapa calcula a posição a qual se inicia o código de barras e a posição onde ele termina, tanto na horizontal como na vertical.
[0085] A figura 11 mostra o processo executado para obter estes dados. A primeira fase deste processo é tentar encontrar o topo e a base do código de barras. Para isto, ele calcula a diferença horizontal de cada linha da imagem 1110. Com isto, obtém-se que o topo do código de barras será a primeira linha cuja variação entre os níveis de cinza seja maior que o limiar estabelecido e a base do código de barras será a última linha maior que este limiar. As equações a seguir descrevem este processo:
Figure img0005
[0086] A equação (10) e a equação (11) descrevem o processo utilizado para encontrar o topo e a base do código de barras. A equação (10) corresponde ao algoritmo que calcula a variação dos níveis de cinza de cada linha da imagem. A função C calcula o nível de variação de cada linha, onde L é a largura da imagem e xj é o valor correspondente à coluna j. Seu retorno é a média de variação do nível de cinza de uma linha da imagem. D é um vetor que armazena o valor do nível de variação de cada linha da imagem, onde Di representa um elemento deste vetor na posição i. A variável A é a altura da imagem e será o tamanho do vetor D. A equação (11) representa o algoritmo que pesquisa o topo e a base do código de barras a partir do resultado da equação (10), o topo, t, será a primeira linha com variação maior que o limiar, T1, e a base, b, será a última linha com variação maior que este limiar.
[0087] Após encontrar o topo e a base do código de barras, o próximo passo será a busca pelo lado esquerdo e pelo lado direito do código de barras. Para isto é feito o empilhamento vertical da região entre o topo e a base 1112. Como o código de barras é formado por linhas verticais pretas, logo, este se encontrará entre os elementos cujos valores do empilhamento sejam maiores que o limiar estabelecido. Então, o lado esquerdo do código de barras será a primeira coluna e o lado direito será a última coluna com valores maiores que o limiar estabelecido 1113.As equações a seguir demonstram como é feita a busca pelo lado esquerdo e pelo lado direito do código de barras:
Figure img0006
[0088] A equação (12) computa o empilhamento vertical das colunas entre a posição t e b, calculados nas equações (10) e (11). A variável y corresponde a uma coluna da imagem, onde yi é o elemento da coluna na linha i. A variável E é um vetor com os valores do empilhamento vertical, onde, Ej é o seu elemento na posição j. L é a largura da imagem e corresponde ao total de elementos de E. A equação (13) pesquisa o lado esquerdo e o lado direito do código de barras, onde T2 é o limiar do empilhamento, logo, o código de barras está localizado na região onde o empilhamento possui valor maior do que T2.
[0089] No final do processo de localização do código de barras, serão obtidas as coordenadas com os limites do código de barras, e com isto o leitor analisará apenas a região retangular delimitada por estas coordenadas 1114, fazendo com que não sejam computados os elementos que não estão presentes no código de barras e, que por sua vez, poderiam dificultar a leitura deste.
[0090] A figura 12 ilustra o resultado da pesquisa pelos limites do código de barras, exemplificando como seria a região selecionada 1210.
[0091] A etapa “confirma a presença do código de barras” 415 analisa se dentro da região selecionada realmente existe um código de barras. Isto é feito verificando o nível de variação brusca dos tons de cinza dentro dos limites computados para o código de barras. Este processo é executado da seguinte forma: é selecionada uma linha horizontal no meio da região correspondente ao código de barras. Caso o nível de variação dos tons de cinza desta linha seja menor que o limiar estabelecido, então a imagem em análise é descartada e o processo é reiniciado; caso contrário, a próxima etapa é executada, pois foi confirmada a presença de um código de barras.
[0092] Caso seja confirmada a presença do código de barras dentro dos limites calculados, então a etapa “decodifica código de barras” 416 é executada. Esta etapa é correspondente ao núcleo da decodificação e é utilizada para a leitura do código de barras, conforme ilustrado na figura 13.
[0093] A etapa “decodifica código de barras” 416 é dividida em sub-etapas (figura 13). Cada uma desta etapas aplica uma determinada ação sobre a imagem do código de barras, sendo que, o resultado de uma sub-etapa anterior é utilizado como parâmetro de entrada para etapa seguinte. Estas sub-etapas são descritas detalhadamente a seguir:
[0094] Fatiamento horizontal do código de barras (1310): A imagem é fatiada horizontalmente e cada uma desta fatias é processada individualmente, onde, caso a fatia (1311) corrente obtiver sucesso na decodificação, o processo é concluído e o resultado da decodificação é retornado. A quantidade de fatias horizontais é um dos parâmetros utilizados pelo sistema leitor de código de barras, sendo que este número pode ser alterado dependendo do fluxo da execução do algoritmo, ou seja, este fatiamento é adaptativo, sendo que primeiro tenta-se efetuar a decodificação a partir de um parâmetro inicial. Caso a leitura não ocorra com este parâmetro, este será incrementado até que haja uma decodificação com sucesso ou até atingir o limite máximo de fatias horizontais.
[0095] Binarização da fatia horizontal (1312): esta sub-etapa é responsável por converter os valores da imagem, que geralmente se encontram com 255 tons de cinza diferentes em apenas dois tons distintos: preto e branco. Esta etapa representa um dos passos necessários para o sucesso da decodificação, pois é a partir desta que será possível definir o que é barra preta e o que é barra branca.
[0096] A Figura 14 representa o momento em que a invenção distingue os componentes pretos e brancos do código de barras. Para efetuar a binarização da fatia, é necessário definir o limiar que separa os tons brancos dos tons pretos. Para isto, divide-se a fatia horizontal em fatias verticais e calcula-se o limiar de tom para a fatia vertical. Este limiar é obtido através da média dos tons de cinza de cada fatia vertical. Se o valor do tom do pixel for menor que este limiar, então, atribui-se preto, caso contrário atribui-se branco. Entretanto, ao limiar são aplicados conjuntos de pesos para poder corrigir a distorção causada pela iluminação, onde, no caso de ambientes muitos escuros, o limiar tem seu valor reduzido, e para ambientes com alta iluminação este será aumentado.As equações a seguir detalham este processo:
Figure img0007
[0097] A equação (14) calcula os tamanhos e as coordenadas iniciais das fatias horizontais e verticais. M é a altura da fatia horizontal e N é a largura da fatia vertical, a variável A corresponde à altura e a variável L à largura da imagem. A variável NH representa o número de fatias horizontais e a variável NV representa o número de fatias verticais. Utilizam-se também as variáveis h e v que são, respectivamente, os índices da fatia horizontal e da fatia vertical correntes. O número da linha inicial da fatia é representada por l e o número da coluna é representada por c. A função S computa o limiar utilizado para distinguir o preto do branco, onde W é o peso que torna adequado o limiar para o nível de iluminação do ambiente. A equação (16) binariza a fatia horizontal. A variável G representa a imagem em tons de cinza, em que i corresponde a posição de uma linha e j a posição de uma coluna. A variável B é uma fatia horizontal binarizada.
[0098] Empilhamento vertical da fatia binarizada (1313): nesta sub-etapa, a fatia bidimensional será convertida em um vetor unidimensional. Este processo é feito através do empilhamento vertical da fatia binarizada. Este processo obtém a média dos tons de cinza de cada coluna. Se esta média for maior que 127, então, o valor será definido como branco, senão será preto. O valor de corte é 127, pois a imagem binarizada possui somente os valores 0 para preto e 255 para branco.
Figure img0008
[0099] A equação (17) efetua o empilhamento vertical da fatia binarizada. A equação (18) converte os valores da matriz bidimensional em uma matriz unidimensional, onde R é a matriz unidimensional em que Rj representa seu elemento na posição j.
[00100] Converte pixels para barras (1314): Esta sub-etapa tem como entrada o vetor retornado pela etapa anterior que tem a informação das barras em pixels, convertendo este vetor para uma representação do código de barras EAN-13. Este código possui 4 níveis de barras (fina, média: 2 barras finas, larga: 3 barras finas, muito larga: 4 barras finas). Então, faz-se necessário encontrar uma forma de definir quantos pixels cada barra possui. Na imagem, o elemento atômico é o pixel. No código de barras EAN-13, o elemento atômico é a barra fina. Então, se tenta encontrar o tamanho em pixels da barra fina, e a partir desta define-se o tamanho das outras barras. O primeiro passo para efetuar esta conversão é encontrar as barras de início e de fim do código, e após isto, buscam-se as posições das barras correspondentes aos dígitos. Sabe-se que cada dígito possui 4 barras de diferentes tamanhos, porém estes dígitos são sempre formados por 7 barras finas. Portanto, sabendo-se o tamanho em pixels da largura da barra fina, torna-se possível calcular a largura das outras barras. Então, para cada dígito obtém-se a largura da barra fina, e por sua vez calcula-se a largura das outras barras que formam o dígito. Desta forma, torna-se possível obter o tamanho correto das barras do código de barras de embalagens com superfície arredondada. A figura 15 ilustra esta conversão, onde o número 1 representa barra preta fina e o número 0 representa barra branca fina.
[00101] Tradução do código de barras (1315): Esta sub-etapa efetua a tradução do código de barras, ou seja, a partir da combinação de 4 barras obtém-se o dígito codificado por esta. O código de barras EAN-13 possui 13 dígitos, sendo que 12 destes estão codificados nas barras e 1 é codificado através da paridade dos 6 primeiros dígitos. Após a tradução do código de barras, calcula-se o dígito verificador. Logo em seguida, checa-se o dígito verificador, sendo que em caso de sucesso, retorna-se o valor do código de barras decodificado.
[00102] Retornando à figura 4, a etapa “exibe resultado da decodificação” 417 apresenta o resultado da leitura do código de barras apenas nos casos em que a decodificação foi bem-sucedida. Nesta etapa, de acordo com a concretização aqui preferida, com o resultado do código de barras é efetuada uma pesquisa sobre os pontos de vendas que fornecem o produto identificado pelo código de barras decodificado, bem como os preços deste.
[00103] A Figura 16 ilustra a tela com o resultado da decodificação, de acordo com a concretização preferida da invenção.
[00104] 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.
[00105] É 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 automático para rastreamento e decodificação de código de barras por meio de um leitor de código de barras em um dispositivo móvel, o método caracterizado pelo fato de que compreende: inicializar o leitor de código de barras; capturar, usando o dispositivo móvel, o código de barras em um quadro de imagem; interceptar o quadro da imagem capturada em um modo de visualização do dispositivo móvel; determinar uma orientação provável do código de barras; corrigir uma rotação do código de barras; pesquisar os limites do código de barras; confirmar a presença do código de barras; decodificar o código de barras; e exibir, em uma tela do dispositivo móvel, o resultado da decodificação, em que a decodificação do código de barras compreende fatiar o código de barras horizontalmente e processar cada uma das fatias individualmente, e em que, se uma fatia sendo processada for decodificada com sucesso, a decodificação é concluída e o código de barras é traduzido.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que inicializar o leitor de código de barras compreende: dirigir e configurar o leitor de código de barras integrado ao dispositivo móvel, apresentar uma interface de usuário; e preparar os parâmetros necessários para executar o leitor de código de barras.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que uma melhor resolução do modo de visualização suportado pelo dispositivo móvel é selecionada.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que uma função macro do dispositivo móvel é usada com um foco automático para focar imagens perto do leitor de código de barras, permitindo que as imagens que estão perto sejam mais claras e melhorem a decodificação de códigos de barras menores.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que durante a interceptação dos quadros capturados no modo de visualização do dispositivo móvel, o leitor de código de barras continua a captura de imagem e exibe o novo quadro enquanto outro quadro é processado em outro thread.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o método é realizado usando apenas uma imagem de luminância.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que determinar a orientação provável do código de barras compreende calcular a rotação do ângulo da direção em que o código de barras está, dividir o quadro que contém o código de barras em regiões menores com tamanho igual e calcular um ângulo para cada uma dessas regiões.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que, para estimar o ângulo do código de barras, os níveis de cinza localizados em diferentes orientações das linhas de varredura são obtidos atravessando o código de barras e os pixels obtidos a partir das linhas com inclinações entre 0 ° a 180 °, com o centro das linhas de varredura cruzando o centro da região.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a orientação do código de barras é o ângulo da linha de varredura entre 0 ° e 180 ° que tem a menor variação nos tons de pixels cinza interceptados.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a orientação pertencente ao código de barras é obtida calculando o nível de variação nos níveis de cinza da linha perpendicular à orientação calculada em cada região, e a orientação do código de barras corresponde à orientação calculada para a região com maior variação entre os níveis de cinza.
11. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a correção da rotação do código de barras é usada para decodificar um código de barras que está muito inclinado, sendo realizada apenas se o ângulo de rotação do código de barras for menor que 80 ° e maior que 100 °.
12. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a correção da rotação do código de barras varre todas as linhas perpendiculares à orientação do código de barras, criando uma nova imagem empilhando essas linhas.
13. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que encontrar a parte superior e inferior do código de barras compreende o cálculo da diferença horizontal de cada linha de imagem, a parte superior do código de barras sendo a primeira linha com uma variação entre os níveis de cinza maior do que o limite e a base do código de barras é a última linha maior do que este limite, encontrar o lado esquerdo e o lado direito do código de barras compreende o empilhamento vertical da região entre a parte superior e inferior, e o lado esquerdo do código de barras para a primeira coluna e o lado direito, última coluna com valores maiores que o limite estabelecido, as coordenadas foram obtidas com os limites do código de barras delimitados pelas coordenadas, de forma que os elementos que não estão presentes no código de barras não sejam computados.
14. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a confirmação da presença do código de barras analisa se dentro da região selecionada realmente existe um código de barras, verificando o nível de variação abrupta de tons de cinza dentro dos limites calculados para o código de barras, sendo selecionada uma linha horizontal no meio da região correspondente ao código de barras e se o nível de variação do tom cinza da linha for menor que o limite, então a imagem em análise é ignorada e o processo é reiniciado, caso contrário a próxima operação é executada, dado que foi confirmada a presença de um código de barras.
15. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a exibição do resultado da decodificação apresenta o resultado da leitura do código de barras apenas nos casos em que a decodificação foi bem- sucedida.
16. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o código de barras é usado para completar uma pesquisa nos pontos de venda que fornecem o produto identificado pelo código de barras decodificado e o preço deste produto.
17. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a busca pelos limites do código de barras calcula a posição em que o código de barras começa e a posição em que o código de barras termina, tanto horizontal quanto verticalmente.
18. Método automático para rastreamento e decodificação de um código de barras por meio de um leitor de código de barras em um dispositivo móvel, o método caracterizado pelo fato de que compreende: inicializar o leitor de código de barras; capturar, usando o dispositivo móvel, o código de barras em um quadro de imagem; interceptar o quadro da imagem capturada em um modo de visualização do dispositivo móvel; determinar uma orientação provável do código de barras; corrigir uma rotação do código de barras; pesquisar os limites do código de barras; confirmar a presença do código de barras; decodificar o código de barras; e exibir, em uma tela do dispositivo móvel, o resultado da decodificação, em que a decodificação do código de barras usado para ler o código de barras compreende o seguinte: fatiar horizontalmente o código de barras, no qual a imagem é fatiada horizontalmente e cada uma dessas fatias é processada individualmente, onde, se a fatia presente for bem-sucedida na decodificação, o processo é concluído e o resultado da decodificação é retornado; binarização da fatia horizontal que é responsável pela conversão dos valores da imagem, que geralmente se encontram com 255 diferentes níveis de cinza em apenas dois tons distintos: preto e branco, sendo o limite que separa os brancos dos pretos definido a partir da divisão da fatia horizontal e fatias verticais e cálculo do tom de limiar para a fatia vertical que é obtido pela média da escala de cinza de cada fatia vertical, e se o valor do tom de pixel for menor que este limiar, então o preto é atribuído, caso contrário, o branco é atribuído; empilhamento vertical da fatia binarizada, em que a fatia bidimensional é convertida em um vetor unidimensional, por meio do empilhamento vertical da fatia binarizada, que obtém a escala de cinza média de cada coluna e a média é maior que 127, então, o valor é definido como branco, mas é preto; conversão de pixels em barras utilizando, como entrada, o vetor retornado pelo empilhamento vertical que contém as informações das barras em pixels, e convertendo-o em uma representação vetorial do código de barras; e tradução do código de barras.
BRPI1100823-7A 2010-12-30 2011-02-25 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 BRPI1100823B1 (pt)

Priority Applications (1)

Application Number Priority Date Filing Date Title
BRPI1107270A BRPI1107270A2 (pt) 2010-12-30 2011-12-30 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.

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/981,616 2010-12-30
US12/981,616 US9224026B2 (en) 2010-12-30 2010-12-30 Automatic system and method for tracking and decoding barcode by portable devices

Publications (3)

Publication Number Publication Date
BRPI1100823A2 BRPI1100823A2 (pt) 2013-04-24
BRPI1100823A8 BRPI1100823A8 (pt) 2017-10-03
BRPI1100823B1 true BRPI1100823B1 (pt) 2022-01-11

Family

ID=46381612

Family Applications (2)

Application Number Title Priority Date Filing Date
BRPI1100823-7A BRPI1100823B1 (pt) 2010-12-30 2011-02-25 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
BRPI1107270A BRPI1107270A2 (pt) 2010-12-30 2011-12-30 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.

Family Applications After (1)

Application Number Title Priority Date Filing Date
BRPI1107270A BRPI1107270A2 (pt) 2010-12-30 2011-12-30 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.

Country Status (2)

Country Link
US (1) US9224026B2 (pt)
BR (2) BRPI1100823B1 (pt)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6666377B1 (en) * 2000-07-18 2003-12-23 Scott C. Harris Bar code data entry device
US10121133B2 (en) 2010-10-13 2018-11-06 Walmart Apollo, Llc Method for self-checkout with a mobile device
CN102270292B (zh) * 2011-05-24 2015-09-09 惠州Tcl移动通信有限公司 移动终端及其解码方法
US8596523B2 (en) * 2011-07-28 2013-12-03 Intellectual Ventures Fund 83 Llc Index print with machine-readable codes
US10805523B2 (en) * 2012-05-30 2020-10-13 Easy Printing Network Limited Article authentication apparatus having a built-in light emitting device and camera
WO2013179250A1 (en) * 2012-05-30 2013-12-05 Evertech Properties Limited Article authentication apparatus having a built-in light emitting device and camera
US10282904B1 (en) * 2012-05-31 2019-05-07 A9.Com, Inc. Providing augmented reality view of objects
US8944313B2 (en) * 2012-06-29 2015-02-03 Honeywell International Inc. Computer configured to display multimedia content
US8985461B2 (en) 2013-06-28 2015-03-24 Hand Held Products, Inc. Mobile device having an improved user interface for reading code symbols
CN103632124B (zh) * 2013-12-16 2017-01-04 百度在线网络技术(北京)有限公司 条码的识别方法及装置
US9892301B1 (en) 2015-03-05 2018-02-13 Digimarc Corporation Localization of machine-readable indicia in digital capture systems
US9501681B1 (en) * 2015-07-14 2016-11-22 A9.Com, Inc. Decoding visual codes
CN105138940A (zh) * 2015-08-14 2015-12-09 福建联迪商用设备有限公司 一种二维码扫描补光方法及系统
US10628736B2 (en) * 2015-09-24 2020-04-21 Huron Technologies International Inc. Systems and methods for barcode annotations for digital images
US10331928B2 (en) * 2015-11-06 2019-06-25 International Business Machines Corporation Low-computation barcode detector for egocentric product recognition
TWI560620B (en) * 2016-01-20 2016-12-01 Qisda Corp Barcode decoding method
CN116012992A (zh) 2016-03-08 2023-04-25 达斯特一致有限责任公司 根据取向信息生成唯一码
US11278820B2 (en) * 2016-10-31 2022-03-22 Vizar Technologies Sàrl Method and apparatus for detection of light-modulated signals in a video stream
US10496909B1 (en) 2018-06-14 2019-12-03 T-Mobile Usa, Inc. Laser light detection and barcode display at mobile phone
KR102638707B1 (ko) * 2018-10-31 2024-02-21 삼성전자주식회사 바코드를 판독하는 방법 및 전자 장치
CA3118014A1 (en) 2018-11-05 2020-05-14 Hamid Reza Tizhoosh Systems and methods of managing medical images
CN109800614B (zh) * 2018-12-19 2022-03-29 新大陆数字技术股份有限公司 Dpm码图像对比度增强方法及装置
JP2021111856A (ja) * 2020-01-08 2021-08-02 東芝テック株式会社 画像形成装置
CN113312930B (zh) * 2020-02-27 2024-01-30 特斯科(上海)机电测试技术有限公司 涡轮增压器冷试台架利用cognex相机读取二维码的方法
EP3982286A1 (en) * 2020-10-07 2022-04-13 Siemens Sanayi ve Ticaret A. S. Computer-implemented method and device for reconstructing a barcode
EP4252190A1 (en) 2020-11-24 2023-10-04 Huron Technologies International Inc. Systems and methods for generating encoded representations for multiple magnifications of image data
CN113034164B (zh) * 2021-04-13 2021-12-28 深圳领驭科技有限公司 基于云存储的智能制造工业产品赋码溯源管理分析方法
US11314959B1 (en) * 2021-06-30 2022-04-26 Datalogic Ip Tech S.R.L. System and method for identification and quantification of types of failure in automated reading of barcodes
CN113542617B (zh) * 2021-09-14 2021-12-28 北京紫光青藤微系统有限公司 用于获取扫码图像的方法及装置、扫码设备、存储介质
CN113905181B (zh) * 2021-11-16 2023-05-26 福州鑫图光电有限公司 一种自动对焦方法及终端
JP7101427B1 (ja) 2021-12-03 2022-07-15 Xpand株式会社 アクセス分散方法
US11562551B1 (en) 2022-04-14 2023-01-24 Scandit Ag Image analysis for decoding angled optical patterns
CN117313761A (zh) * 2023-11-27 2023-12-29 北京紫光青藤微系统有限公司 条码识读方法及装置、电子设备、计算机可读存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7387253B1 (en) * 1996-09-03 2008-06-17 Hand Held Products, Inc. Optical reader system comprising local host processor and optical reader
US20040206821A1 (en) * 1994-03-04 2004-10-21 Andrew Longacre Autodiscriminating bar code reading apparatus having solid state image sensor
US20070267501A1 (en) * 2006-05-18 2007-11-22 Hand Held Products, Inc. Multipurpose optical reader
US7121469B2 (en) * 2002-11-26 2006-10-17 International Business Machines Corporation System and method for selective processing of digital images
US7156311B2 (en) * 2003-07-16 2007-01-02 Scanbuy, Inc. System and method for decoding and analyzing barcodes using a mobile device
US20050203854A1 (en) * 2004-02-23 2005-09-15 Pitney Bowes Incorporated Method and system for using a camera cell phone in transactions
TWI239209B (en) * 2004-04-08 2005-09-01 Benq Corp A specific image extraction method, storage medium and image pickup device using the same
US7172124B2 (en) * 2005-03-10 2007-02-06 Microsoft Corporation Camera-based barcode recognition
US20070257934A1 (en) * 2006-05-08 2007-11-08 David Doermann System and method for efficient enhancement to enable computer vision on mobile devices
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
US20080105747A1 (en) * 2006-11-03 2008-05-08 Orlassino Mark P System and method for selecting a portion of an image
US8229781B2 (en) * 2007-04-27 2012-07-24 The Nielson Company (Us), Llc Systems and apparatus to determine shopper traffic in retail environments
US7780084B2 (en) * 2007-06-29 2010-08-24 Microsoft Corporation 2-D barcode recognition
US8596541B2 (en) * 2008-02-22 2013-12-03 Qualcomm Incorporated Image capture device with integrated barcode scanning
US20120029994A1 (en) * 2010-07-28 2012-02-02 Symbol Technologies, Inc. Coupon organization using a bar code reader

Also Published As

Publication number Publication date
US9224026B2 (en) 2015-12-29
US20120173347A1 (en) 2012-07-05
BRPI1107270A2 (pt) 2015-12-08
BRPI1100823A8 (pt) 2017-10-03
BRPI1100823A2 (pt) 2013-04-24

Similar Documents

Publication Publication Date Title
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
US9501680B2 (en) Method and device for batch scanning 2D barcodes
BR102012033723B1 (pt) método para restauração de imagens de códigos de barras desfocados
Gallo et al. Reading 1D barcodes with mobile phones using deformable templates
US7337970B2 (en) Barcode scanner decoding
US11151346B2 (en) Methods and apparatus for decoding under-resolved symbols
US9286501B2 (en) Method and device for identifying a two-dimensional barcode
EP3462372B1 (en) System and method for detecting optical codes with damaged or incomplete finder patterns
US9177188B2 (en) Method and system for detecting detection patterns of QR code
EP1469420A2 (en) Method and device for recording of data
US11017260B2 (en) Text region positioning method and device, and computer readable storage medium
KR101293703B1 (ko) 스큐된 데이터 매트릭스 바코드 디코딩 장치와 이를 위한 방법
JPH1063772A (ja) データマトリックスシンボルを有する機械読取り可能なシンボルを探し、デコードするための方法及び装置
JP2005173646A (ja) コード種類判別方法、およびコード境界検出方法
WO2006078359A1 (en) Bar code scanner decoding
CN109101855B (zh) 一种基于opencv的缺失定位框二维码识别方法
US9652652B2 (en) Method and device for identifying a two-dimensional barcode
WO2011011051A2 (en) Image-based barcode reader
CN110502948B (zh) 折叠二维码图像的还原方法、还原装置与扫码设备
CN113312937A (zh) 条形码识别方法及装置、存储介质、计算机设备
US20130094695A1 (en) Method and apparatus for auto-detecting orientation of free-form document using barcode
US11893764B1 (en) Image analysis for decoding angled optical patterns
JP4398498B2 (ja) コード境界検出方法
US11928550B2 (en) Methods and apparatus to locate and decode an arranged plurality of barcodes in an image
EP2633473B1 (en) Method and apparatus for capturing form document with imaging scanner

Legal Events

Date Code Title Description
B15L Others concerning applications: renumbering

Free format text: RENUMERADO O PEDIDO DE PI1100823-7 PARA PP1100823-7.

B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 3A ANUIDADE.

B08G Application fees: restoration [chapter 8.7 patent gazette]
B25C Requirement related to requested transfer of rights

Owner name: SAMSUNG ELETRONICA DA AMAZONIA LTDA (BR/AM)

Free format text: A FIM DE ATENDER A TRANSFERENCIA, REQUERIDA ATRAVES DA PETICAO NO 860150023149 DE 12/02/2015, E NECESSARIO APRESENTAR DOCUMENTO QUE COMPROVE QUE OS REPRESENTANTES DA EMPRESA CEDENTE TEM PODERES PARA REALIZAR TAL ATO.

B15K Others concerning applications: alteration of classification

Free format text: "AS CLASSIFICACOES ANTERIORES ERAM: G06K 7/14

Ipc: A23K 10/18 (2016.01), A23K 20/00 (2016.01), A23K 5

Free format text: AS CLASSIFICACOES ANTERIORES ERAM: G06K 7/14; G06T 5/00; G06T 7/00

Ipc: A23K 10/18 (2016.01), A23K 20/00 (2016.01), A23K 5

B25G Requested change of headquarter approved

Owner name: SAMSUNG ELETRONICA DA AMAZONIA LTDA (BR/AM)

B25A Requested transfer of rights approved

Owner name: SAMSUNG ELETRONICA DA AMAZONIA LTDA. (BR/SP)

B15K Others concerning applications: alteration of classification

Ipc: G06K 7/00 (1968.09), H04N 1/00 (1968.09)

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B07B Technical examination (opinion): publication cancelled [chapter 7.2 patent gazette]

Free format text: ANULADA A PUBLICACAO CODIGO 7.1 NA RPI NO 2611 DE 19/01/2021 POR TER SIDO INDEVIDA.

B06V Preliminary requirement: patent application procedure suspended [chapter 6.22 patent gazette]
B06I Publication of requirement cancelled [chapter 6.9 patent gazette]

Free format text: ANULADA A PUBLICACAO CODIGO 6.22 NA RPI NO 2614 DE 09/02/2021 POR TER SIDO INDEVIDA.

B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 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 25/02/2011, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.