FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM...

42
UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO – BACHARELADO FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOS MAICON FELDHAUS BLUMENAU 2011 2011/2-17

Transcript of FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM...

Page 1: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

UNIVERSIDADE REGIONAL DE BLUMENAU

CENTRO DE CIÊNCIAS EXATAS E NATURAIS

CURSO DE CIÊNCIA DA COMPUTAÇÃO – BACHARELADO

FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS

DIGITAIS EM IOS

MAICON FELDHAUS

BLUMENAU 2011

2011/2-17

Page 2: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

MAICON FELDHAUS

FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS

DIGITAIS EM IOS

Trabalho de Conclusão de Curso submetido à Universidade Regional de Blumenau para a obtenção dos créditos na disciplina Trabalho de Conclusão de Curso II do curso de Ciência da Computação — Bacharelado.

Prof. Paulo César Rodacki Gomes, Dr. - Orientador

BLUMENAU 2011

2011/2-17

Page 3: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS

DIGITAIS EM IOS

Por

MAICON FELDHAUS

Trabalho aprovado para obtenção dos créditos na disciplina de Trabalho de Conclusão de Curso II, pela banca examinadora formada por:

______________________________________________________ Presidente: Prof. Paulo César Rodacki Gomes, Dr. – Orientador, FURB

______________________________________________________ Membro: Prof. Aurélio Faustino Hoppe, Msc. – FURB

______________________________________________________ Membro: Prof. Dalton Solano dos Reis, Msc. – FURB

Blumenau, 14 de dezembro de 2011

Page 4: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

Dedico este trabalho a minha namorada, meus pais e todos os amigos, que me ajudaram e apoiaram na realização deste.

Page 5: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

As coisas que vemos não são em si o que vemos. Continua completamente desconhecido para nós o que objetos podem ser em si mesmos e separados da receptividade dos nossos sentidos. Nada sabemos exceto o nosso modo de percebê-los...

Immanuel Kant

Page 6: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

RESUMO

Este trabalho apresenta as técnicas envolvidas no desenvolvimento de um framework para realizar a Super-Resolução de imagens digitais de códigos de barras em dispositivos na plataforma iOS. A partir de algumas imagens de baixa resolução fornecidas, o framework é capaz de construir uma imagem com resolução superior às previamente amostradas – os códigos de barras devem estar centralizados na imagem. Por serem necessárias apenas duas cores, preto e branco, técnicas de limiarização (binarização) são empregadas, com o objetivo de remover pequenas distorções e, principalmente, efeitos de luz e sombra sobre a imagem.

Palavras-chave: Super-resolução. Limiarização. Código de barras.

Page 7: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

ABSTRACT

This work presents the techniques used in the development of a framework that makes Super-Resolution of digital images of barcode. By some provided images in small resolution, the framework is able to construct an image with superior resolution than the previously sampled. For it has been necessary only two colors, black and white, techniques of threshold (binarization) are used, with the objective of removing little distortions and, mainly, light and shadow effects on the image.

Key-words: Super-resolution. Threshold. Barcode.

Page 8: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

LISTA DE ILUSTRAÇÕES

Figura 1 – Código de barras de um livro (EAN-13) ................................................................. 13  

Figura 2 – Exemplo do histograma de uma imagem ................................................................ 15  

Figura 3 – Imagens em tons de cinza e seus respectivos histogramas: (a) alto contraste; (b)

baixo contraste ....................................................................................................... 16  

Figura 4 – Efeito de limiarização: (a) imagem em tons de cinza; (b) histograma da imagem;

(c) limiarização com valor 80; (d) limiarização com valor 150 ............................ 16  

Quadro 1 – Representação matemática da limiarização ........................................................... 17  

Figura 5 – Fluxograma da técnica de limiarização de Bernsen ................................................ 18  

Quadro 2 – Psedocódigo para a técnica de Wellner ................................................................. 19  

Figura 6 – Médodo de Boustrophedon ou como o boi lavra .................................................... 19  

Figura 7 – Efeito da baixa resolução espacial .......................................................................... 20  

Figura 8 – Visão global da SR .................................................................................................. 21  

Figura 9 – Demonstração do Zebra Barcode Reader em execução .......................................... 22  

Figura 10 – Visão geral do processo ........................................................................................ 25  

Figura 11 – Diagrama de casos de uso ..................................................................................... 26  

Figura 12 – Diagrama de classes .............................................................................................. 28  

Quadro 3 – Método thresholdBernsen da classe SureImage ..................................... 30  

Quadro 4 – Trecho do método thresholdBernsenAdapted da classe SureImage .... 31  

Figura 13 – Demonstração do processo de normalização ........................................................ 32  

Figura 14 – Demonstração do mapeamento em três imagens .................................................. 33  

Quadro 5 – Método binaryRowMeasured da classe SureImage ................................... 33  

Figura 15 – Interface gráfica e seus principais componentes ................................................... 34  

Figura 16 – (a) Imagem original; (b) Limiarização de Bernsen; (c) Limiarização de Bernsen

Adaptada; (d) Limiarização de Wellner ................................................................ 35  

Figura 17 – Mapeamento de linhas binárias ............................................................................. 36  

Figura 18 – Aplicativo exemplo e resultados obtidos .............................................................. 36  

Quadro 6 – Comparação entre o trabalho e aplicativos correlatos ........................................... 37  

Page 9: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

LISTA DE TABELAS

Tabela 1 – Sistema a ser adotado conforme o 1o dígito ............................................................ 14  

Tabela 2 – Codificação dos dígitos ........................................................................................... 14  

Page 10: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

LISTA DE SIGLAS

HR – High Resolution

HRI – Human Readable Information

IOS – Iphone Operating System

LR – Low Resolution

MVC – Model-View- Controller

RF – Requisito Funcional

RNF – Requisito Não-Funcional

SDK – Software Development Kit

SR – Super Resolução

UML – Unified Modeling Language

Page 11: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

SUMÁRIO

1   INTRODUÇÃO .................................................................................................................. 11  

1.1   OBJETIVOS DO TRABALHO ........................................................................................ 12  

1.2   ESTRUTURA DO TRABALHO ...................................................................................... 12  

2   FUNDAMENTAÇÃO TEÓRICA .................................................................................... 13  

2.1   CÓDIGO DE BARRAS .................................................................................................... 13  

2.1.1  EAN-13 ........................................................................................................................... 14  

2.2   HISTOGRAMA DE IMAGEM DIGITAL ....................................................................... 15  

2.2.1  Limiarização .................................................................................................................... 16  

2.2.1.1  Limiarização adaptativa de Bernsen ............................................................................. 17  

2.2.1.2  Limiarização adaptativa de Wellner ............................................................................. 18  

2.3   SUPER-RESOLUÇÃO ..................................................................................................... 20  

2.4   TRABALHOS CORRELATOS ........................................................................................ 22  

2.4.1  Zebra Barcode Scanner ................................................................................................... 22  

2.4.2  Barcode Scanner .............................................................................................................. 23  

2.4.3  Super-Resolução Simultânea para Sequência de Imagens .............................................. 23  

2.4.4  ClearCam ......................................................................................................................... 23  

3   DESENVOLVIMENTO DO FRAMEWORK ................................................................ 24  

3.1   REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO ....................... 24  

3.2   ESPECIFICAÇÃO ............................................................................................................ 25  

3.2.1  Visão Externa do Framework ......................................................................................... 26  

3.2.2  Visão Estrutural ............................................................................................................... 27  

3.2.3  Modelo do Domínio e Controle ...................................................................................... 27  

3.3   IMPLEMENTAÇÃO ........................................................................................................ 29  

3.3.1  Técnicas e ferramentas utilizadas .................................................................................... 29  

3.3.1.1  Limiarização ................................................................................................................. 29  

3.3.1.2  Normalização ................................................................................................................ 31  

3.3.1.3  Mapeamento .................................................................................................................. 32  

3.3.2  Operacionalidade da implementação .............................................................................. 34  

3.4   RESULTADOS E DISCUSSÃO ...................................................................................... 35  

4   CONCLUSÕES .................................................................................................................. 38  

4.1   EXTENSÕES .................................................................................................................... 38  

Page 12: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

11

1 INTRODUÇÃO

Durante as décadas de 70 e 80 surgiram as primeiras câmeras digitais, que não tiveram

grande sucesso entre os consumidores, devido a uma baixa resolução e preços exorbitantes, se

comparadas com as analógicas da época. Seu mercado começa a crescer no final da década de

90, com a popularidade e evolução dos computadores, da internet e das mídias digitais, até

tornar-se um item inerente nos dispositivos móveis atuais (MATOS, 2004, p. 7-8).

Apesar das constantes evoluções, as imagens obtidas das câmeras de celulares ainda

são, em sua grande maioria, de baixa qualidade, por causa das limitações do aparelho. E, nem

sempre é viável, nem mesmo possível aperfeiçoar estas imagens utilizando-se de lentes e/ou

sensores mais sofisticados, por exemplo. Outros fatores também prejudicam a qualidade da

imagem, tais como o descolamento de objetos na cena, foco incorreto e carência ou excesso

de iluminação.

De acordo com Almeida e Tommaselli (2003, p. 164), a qualidade de uma imagem

digital é vinculada a resolução espacial e a radiométrica. A primeira é pertinente ao tamanho e

a quantidade de pixels que formam a imagem e a segunda é vinculada aos níveis de

luminosidade da cena. Então, para aumentar a resolução espacial e, consequentemente, a

qualidade da imagem sem o auxílio de equipamentos adicionais ou de imagens já captadas,

nasceram técnicas de processamento digital, entre elas a Super-Resolução (SR). Lara (2008)

define SR como um "termo dado a algoritmos que aumentam o poder de resolução da imagem

a partir de várias outras imagens de baixa resolução da mesma cena".

De acordo com exposto, propõe-se o estudo e desenvolvimento de uma técnica de SR

para remover distorções e realçar características da imagem, através de informações

provenientes de uma sequência de imagens do dispositivo móvel. Isso aplicado a plataforma

iPhone Operating System (iOS), seguindo os padrões de projeto determinados pela Apple,

com a competência de prover esta funcionalidade a desenvolvedores que necessitem deste

recurso para suas aplicações diversas.

Page 13: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

12

1.1 OBJETIVOS DO TRABALHO

O objetivo deste trabalho é desenvolver um framework para iOS capaz de fornecer

uma imagem com qualidade superior às imagens de baixa resolução, previamente,

amostradas.

Os objetivos específicos do trabalho são:

a) permitir a obtenção de imagens com resolução melhor do que as imagens

adquiridas nativamente pelo iPhone;

b) permitir utilizar a câmera do aparelho ou fotos armazenadas como amostras de

imagens, essas com baixa resolução;

c) ler e exibir o valor numérico do código de barras, para corroborar o resultado;

d) seguir os padrões de projetos definidos pela Apple, já que o Software Development

Kit (SDK) do mesmo é fortemente baseado nesses padrões;

e) disponibilizar um aplicativo exemplo que utilize uma técnica de SR no framework.

1.2 ESTRUTURA DO TRABALHO

Este trabalho está organizado em quatro capítulos. O capitulo 2 apresenta o

embasamento teórico necessário para a SR de imagens de códigos de barras . Primeiramente é

feita uma explanação sobre códigos de barras. Em seguida são descritos o histograma de

imagens e também as técnicas para limiarização. Na sequencia, são explicados os conceitos

fundamentais e as etapas envolvidas no processo de SR. Por fim, são apresentados e

discutidos alguns trabalhos correlatos ao presente trabalho.

O capitulo 3 descreve o desenvolvimento do framework, apresentando os seus

principais requisitos, sua especificação e detalhes referentes à sua implementação. Também

são comentadas questões relacionadas à operacionalidade do framework e realizada uma

discussão sobre os resultados obtidos.

Finalmente, o capitulo 4 apresenta as conclusões deste trabalho e perspectivas de

trabalhos futuros.

Page 14: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

13

2 FUNDAMENTAÇÃO TEÓRICA

Esse capitulo apresenta os tópicos relevantes para o processo de SR em códigos de

barras. A seção 2.1 aborda os conceitos básicos referentes a códigos de barras. Na seção 2.2

são discutidos histograma de imagens e técnicas de limiarização. A seção 2.3 apresenta o

conceito básico da SR e as principais etapas envolvidas nesse processo. Por fim, na seção 2.4

são apresentados alguns trabalhos correlatos ao trabalho proposto.

2.1 CÓDIGO DE BARRAS

O código de barras é uma representação gráfica de dados formado por barras claras (0)

e escuras (1), obtendo-se assim combinações binárias que podem ser utilizadas por um

computador. Quando o código de barras de um produto é lido, pode-se rastrear algumas

informações acerca dele, tais como nome e preço. O mesmo ocorre nos códigos usados em

boletos bancários, por exemplo, onde os dados obtidos são da transação, como: conta,

agência, valor, vencimento, etc.

Conforme Artero e Santos (2010, p. 187), “essa representação é intensamente utilizada,

sendo dividida em vários tipos, entre eles os mais comuns [são os padrões] EAN-13, EAN-8,

UPC-A, UPC-E” e Intercalado 2 de 5. Na Figura 1, vemos um exemplo de código de barras

no padrão EAN-13.

Figura 1 – Código de barras de um livro (EAN-13)

Page 15: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

14

2.1.1 EAN-13

Este padrão de código de barras possui treze dígitos, dos quais os três primeiros

representam o código do país, os quatro seguintes representam o código da empresa

fabricante, que deve ser filiada ao órgão internacional de logística, responsável pelo cadastro e

emissão de prefixos numéricos no sistema EAN (ARTERO; SANTOS, 2010, p. 187). Os

próximos cinco dígitos representam o item comercial dentro da empresa e o último número é

um dígito verificador usado para confirmar se a leitura do código foi feita de forma correta.

Possui duas barras (mais compridas) delimitadoras no inicio, no meio e no fim.

A partir do primeiro dígito é possível encontrar o primeiro e segundo grupo de dígitos

que serão usados, como pode ser visto na Tabela 1. Após encontrada a sequencia, comuta-se

para valores binários, de acordo com a Tabela 2 e, obtém-se assim, uma sucessão de zeros e

uns, que representam barras brancas e pretas, consequentemente.

Tabela 1 – Sistema a ser adotado conforme o 1o dígito 1o Dígito 1o Grupo 2o Grupo

0 AAAAAA CCCCCC 1 AABABB CCCCCC 2 AABBAB CCCCCC 3 AABBBA CCCCCC 4 ABAABB CCCCCC 5 ABBAAB CCCCCC 6 AAABBA CCCCCC 7 ABABAB CCCCCC 8 ABABBA CCCCCC 9 ABBABA CCCCCC

Fonte: adaptado de Artero e Santos (2010, p. 187).

Tabela 2 – Codificação dos dígitos Dígito Classe A Classe B Classe C

0 0001101 0100111 1110010 1 0011001 0110011 1100110 2 0010011 0011011 1000010 3 0111101 0100001 1011100 4 0100011 0011101 1011100 5 0110001 0111001 1001110 6 0101111 0000101 1010000 7 0111011 0010001 1000100 8 0110111 0001001 1001000 9 0001011 0010111 1110100

Fonte: adaptado de Artero e Santos (2010, p. 187).

Page 16: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

15

2.2 HISTOGRAMA DE IMAGEM DIGITAL

O histograma de uma imagem é simplesmente um conjunto de números indicando o

percentual de pixels naquela imagem que apresentam um determinado nível de cinza

(MARQUES FILHO; VIERA NETO, 1999, p. 55). Geralmente é representado por um gráfico

de barras que mostra o percentual de cada nível de cinza correspondente na imagem (Figura

2). Ele é construído da seguinte forma:

a) analisa-se o tom de cinza de cada pixel;

b) conta-se o número de pixels de cada valor de intensidade;

c) normalizam-se esses valores, dividindo-os pela quantidade de pixels da imagem;

d) representam-se esses valores na forma de tabela ou gráfico.

Figura 2 – Exemplo do histograma de uma imagem

Para Azevedo, Conci e Leta (2008, p. 77), através do histograma podemos obter uma

indicação quanto a distribuição ao nível de contraste e do brilho médio, ou seja, se a imagem é

clara ou escura (Figura 3). De acordo com Marques Filho e Viera Neto (1999, p. 58-59), é

conveniente enfatizar que, apesar de o histograma fornecer diversas informações sobre a

imagem, conclusões de caráter qualitativo somente podem ser extraídas dispondo-se da

imagem propriamente dita.

Page 17: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

16

Fonte: adaptado de Azevedo, Conci e Leta (2008, p. 96).

Figura 3 – Imagens em tons de cinza e seus respectivos histogramas: (a) alto contraste; (b) baixo contraste

2.2.1 Limiarização

Para Marques Filho e Viera Neto (1999, p. 71), a limiarização consiste em separar as

regiões de uma imagem quando esta apresenta duas classes, o fundo e o objeto. Em outras

palavras, consiste em transformar uma imagem em tons de cinza em uma imagem com apenas

dois tons (binária), os pixels podem ser preto ou branco (FACON, 2004). A forma mais

simples de limiarizar a imagem consiste em dividir o histograma em duas partes, em um

determinado valor de limiar. O efeito da limiarização pode ser visto na Figura 4.

Fonte: Azevedo, Conci e Leta (2008, p. 85).

Figura 4 – Efeito de limiarização: (a) imagem em tons de cinza; (b) histograma da imagem; (c) limiarização com valor 80; (d) limiarização com valor 150

Page 18: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

17

Imagens binárias, que possuem apenas dois valores (preto e branco), geralmente, são

úteis quando a silhueta contém informação suficiente para se reconhecer um objeto. Para que

isso seja possível, as imagens devem conter um alto contraste entre as regiões a serem

separadas e a iluminação uniforme. A complexidade computacional de um sistema trabalhando com 256 cores tons de níveis de cinza será bem maior que um sistema trabalhando com uma imagem binária. O tempo de processamento é mais baixo porque muitas operações em imagem binárias podem ser executadas como operações lógicas, em vez de operações aritméticas. (AZEVEDO; CONCI; LETA, 2008, p. 80).

Matematicamente, para Marques Filho e Viera Neto (1999, p. 71), a limiarização pode

ser descrita como uma técnica na qual uma imagem de entrada f(x,y), em tons de cinza,

produz à saída uma imagem g(x,y), onde, normalmente, g(x,y) apresenta 2 níveis de cinza,

selecionados a partir de um limite T, sendo:

! !,! = 1, !"  !(!,!) ≥ !0, !"  !(!,!) < !

Quadro 1 – Representação matemática da limiarização

As técnicas de limiarização podem ser globais ou locais. Uma técnica global encontra

um limiar único para toda a imagem. Uma técnica local encontra limiares distintos

considerando as características dos pixels vizinhos, ou seja, adapta-se a região a qual está

localizado. As técnicas locais apresentam melhores resultados quando existe pouca variação

do nível de cinza do objeto e do fundo e a iluminação é não uniforme. De acordo com Silva

(2009, p. 19), as técnicas globais exigem menos processamento, visto que uma vez definido

um limiar, o único processamento restante é a separação dos objetos da imagem.

2.2.1.1 Limiarização adaptativa de Bernsen

A limiarização adaptativa de Bernsen consiste em uma técnica onde, para cada pixel, o

limiar é escolhido como o valor intermediário entre o menor e o maior tom de cinza

encontrado na vizinhança (SILVA, 2009, p. 27). Durante esse processo alguns valores devem

ser definidos: tamanho da vizinha (NxN), contraste mínimo (N) e contraste (C). O contraste é

a diferença entre o máximo e o mínimo nível de cinza dado.

Com estes valores em mãos, segundo Sebastiane (2009, p. 48), o próximo passo é

verificar se o contraste (C) é maior que o contraste mínimo (N). Em caso afirmativo, se o

pixel tiver valor maior que o limiar (L), ele recebe cor branca, caso contrário, preta.

Entretanto, se o contraste da região for inferior ao contraste mínimo, e o valor do limiar (L)

Page 19: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

18

for maior que 127 (média entre 0 e 255) o pixel passa a ser branco, caso contrário, preto

(Figura 5).

Fonte: adaptado de Sebastiane (2009, p. 49).

Figura 5 – Fluxograma da técnica de limiarização de Bernsen

2.2.1.2 Limiarização adaptativa de Wellner

A técnica de Wellner, ou média móvel, como também é conhecida, calcula uma média

dos níveis de cinza dos últimos (N) pixels que foram observados. Conforme Silva (2009, p.

31), a média encontrada passa a ser o limiar (L) naquele momento e a cada ponto percorrido,

descarta-se um valor proporcional e acrescenta ao calculo da valor do pixel atual, de acordo

com o Quadro 2.

Page 20: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

19

Fonte: adaptado de Silva (2009, p. 32). Quadro 2 – Psedocódigo para a técnica de Wellner

Para evitar desvio de um lado da imagem para outro, um método chamado

Boustrophedon é empregado (conhecido também como “o caminho que o boi lavra”). Isso

significa atravessar a imagem em direções opostas em cada linha (SILVA, 2009, p. 31). Por

exemplo, inicia-se a varredura da linha, partindo da primeira coluna até a final, na linha

seguinte faz-se o caminho inverso, da última coluna até a inicial, e assim sucessivamente (ver

Figura 6).

Figura 6 – Médodo de Boustrophedon ou como o boi lavra

INICIO lin,col <- tamanho (imagem) media <- col/8 soma <- 127*media PARA i <- 1 ATÉ lin FAÇA SE (numero da linha for par) ENTÃO PARA j <- 1 ATÉ col FAÇA soma <- soma – (soma/media) + imagem[i,j] porcentagem <- (soma/media) * (1-pct) SE imagem[i,j] > porcentagem ENTÃO imagem[i,j] <- branco SENÃO imagem[i,j] <- preto FIM SE FIM PARA FIM SE SE (numero da linha for impar) ENTÃO PARA j <- col ATÉ 1 FAÇA soma <- soma – (soma/media) + imagem[i,j] porcentagem <- (soma/media) * (1-pct) SE imagem[i,j] > porcentagem ENTÃO imagem[i,j] <- branco SENÃO imagem[i,j] <- preto FIM SE FIM PARA FIM SE FIM PARA FIM.

Page 21: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

20

2.3 SUPER-RESOLUÇÃO

Segundo Silva (2009, p. 2), “a resolução [espacial] de uma imagem é a quantidade de

pixels que representa dada cena”. Portanto, conforme pode ser observado na Figura 7, quanto

maior a resolução espacial, melhor a qualidade da imagem no que diz respeito a representação

de detalhes capturados desta cena. Uma alternativa para aumentar a resolução de imagens,

sem ter que modificar o hardware responsável pela aquisição das imagens, é a utilização de

técnicas de SR.

Fonte: adaptado de Zibetti (2007, p. 1).

Figura 7 – Efeito da baixa resolução espacial

Estas técnicas combinam imagens de baixa resolução espacial (Low Resolution - LR)

de uma mesma cena, com o intuito de obter uma ou várias imagens de alta resolução espacial

(High Resolution - HR). As imagens LR da amostragem, apesar de pertencerem a mesma

cena, possuem características diferentes entre elas: diferentes projeções, pequenas variações

na resolução espacial e deslocamentos de pixel.

Apesar das imagens LR capturadas terem grande semelhança entre si, uma pequena

diferença de informação encontrada entre essas proporciona uma nova informação para a

recuperação dos detalhes nas imagens HR. A forma mais comum de obter-se esta informação

é no movimento de subpixel, que ocorre quando o movimento existente entre as imagens é

fracionário com respeito à grade de baixa resolução (ZIBETTI, 2007, p. 2-3).

A maioria dos métodos de SR, propostos na literatura, consistem, basicamente, de três

estágios: registro, interpolação e restauração (KANG; PARK; PARK, 2003, p. 24-25). Na

fase de registro, os deslocamentos relativos entre imagens LR são estimados com precisão de

pixel fracionário. Obviamente, a estimativa precisa de movimento de subpixel é um fator

muito importante para o sucesso do algoritmo de reconstrução de imagem SR (Figura 8).

Page 22: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

21

Fonte: adaptado de Walt (2010, p. 14).

Figura 8 – Visão global da SR

O segundo estágio refere-se ao mapeamento dos pixels manipulados pelo primeiro

estágio, uma vez que as mudanças entre as imagens LR são arbitrárias, e nem sempre a

imagem HR corresponde ao esperado. Assim, a interpolação não-uniforme é necessária para

obter uma imagem HR uniformemente espaçadas. Ao final, é aplicada a restauração para

eliminar o desfoque e ruídos, ocasionados durante o processo.

Entretanto, o uso de uma sequência de imagens com movimento pode ocasionar

algumas dificuldades para os algoritmos SR. Isso devido a erros na estimativa de movimento

ou devido a elementos que apareçam/desapareçam entre o conjunto de imagens LR. Nestes

casos é inevitável a ocorrência de erros, portanto, o algoritmo SR deve ser robusto a esses.

Page 23: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

22

2.4 TRABALHOS CORRELATOS

Nesta seção são apresentados, brevemente, quatro trabalhos que aplicam técnicas de

SR ou realizam leitura de códigos de barras, os quais são: Zebra Barcode Scanner (FARIA,

2008), Barcode Scanner (ZXING, 2011), Super-Resolução Simultânea para Sequência de

Imagens (ZIBETTI, 2007) e ClearCam (APPLE INC, 2010a).

2.4.1 Zebra Barcode Scanner

Zebra Barcode Reader é uma solução de código aberto, que roda em Linux, capaz de

decodificar um código de barras através da captura de uma webcam ou imagens gravadas no

disco (FARIA, 2008). Este roda em plataforma Linux e tem suporte aos padrões mais

populares de códigos de barras: EAN-8, EAN-13, UPC-A, CODE 128, CODE 39 e

intercalado 2 de 5.

Segundo Faria (2008), uma imagem contendo o código de barras é enviada para

processamento e, a seguir, é calculada a largura das barras para uma posterior decodificação.

O pacote Zebra utiliza técnicas eficazes para a localização e decodificação do código de

barras. O resultado final é semelhante aos leitores que encontramos em supermercado. Na

Figura 9 vemos o projeto em execução, o usuário exibe um código de barras para a webcam,

este é identificado e, em seguida, decodificado.

Fonte: Faria (2008).

Figura 9 – Demonstração do Zebra Barcode Reader em execução

Page 24: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

23

2.4.2 Barcode Scanner

Barcode Scanner é um aplicativo desenvolvido em Java, para dispositivos Android

que, aliado à câmera digital do aparelho, lê as informações de QR Code, e também de códigos

de barra simples – e fornece informações ao usuário (ZXING, 2011).

De acordo com Veras (2011), este software pode ser utilizado em conjunto com outras

aplicações, com o programa instalado no dispositivo, cria-se um link na aplicação e o mesmo

chama o programa que vai ler o código de barras e retorna o resultado à aplicação.

2.4.3 Super-Resolução Simultânea para Sequência de Imagens

Zibetti (2007) propõe o aperfeiçoamento (redução do custo computacional) e robustez

da SR simultânea. Os algoritmos simultâneos estimam toda a sequência de imagens HR

conjuntamente, em um único processo. Onde a partir de um conjunto de imagens LR, obtém-

se um conjunto de imagens HR, empregando no processo as imagens HR previamente

alcançadas. Estes métodos são convenientes para aplicações onde é almejada uma sequência

de imagens e não apenas uma única imagem.

2.4.4 ClearCam

Por fim, no mercado há o ClearCam, aplicativo desenvolvido para a plataforma iOS,

que apõe uma técnica de SR em uma sequência de seis imagens adquiridas a partir da câmera

do dispositivo, permitindo a manipulação e armazenamento da imagem HR (APPLE INC,

2010a). Este elimina borrões causados por mãos tremulas ou objetos em movimento. Também

reduz ruídos originados da falta de luz.

Page 25: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

24

3 DESENVOLVIMENTO DO FRAMEWORK

Este capítulo detalha as etapas do desenvolvimento do framework. São apresentados os

requisitos, a especificação e a implementação do mesmo, mencionando as técnicas e

ferramentas utilizadas. Também são comentadas questões referentes à operacionalidade do

mesmo e os resultados obtidos.

3.1 REQUISITOS PRINCIPAIS DO PROBLEMA A SER TRABALHADO

Para o framework proposto, foi criado um protótipo com interface gráfica, que tem por

objetivo permitir ao usuário fornecer as imagens necessárias para o processo de SR e

visualizar o resultado.

Desta forma, foram elicitados, analisados e validados os seguintes requisitos:

a) permitir a entrada de uma sequência de imagens de uma mesma cena (Requisito

Funcional – RF);

b) permitir que esta sequência de imagens possam ser capturadas diretamente da

câmera do iPhone (RF);

c) exibir uma imagem com resolução superior ao do conjunto de três amostras

informadas (RF);

d) exibir o valor numérico do código de barras, com o intuito de evidenciar o

resultado (RF);

e) ser desenvolvido para a plataforma iOS (Requisito Não-Funcional – RNF);

f) ser implementado na linguagem Objective-C (RNF);

g) utilizar a câmera do dispositivo para obtenção das imagens (RNF).

Page 26: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

25

3.2 ESPECIFICAÇÃO

A especificação do software em questão foi desenvolvida seguindo a análise orientada

a objetos, utilizando a notação Unified Modeling Language (UML). Uma visão geral do

processo envolvido pode ser visto na Figura 10.

Figura 10 – Visão geral do processo

Primeiramente é efetuada a aquisição das imagens, através de imagens em arquivo ou

captura da câmera do dispositivo. Ao carregar, essas imagens são convertidas para tons de

cinza. Após isso é realizada a limiarização dos códigos de barras, para discernir as barras

pretas das brancas, apenas em algumas linhas.

Em seguida, efetua-se a normalização e o mapeamento entre as imagens, ou seja,

compara-se cada linha para encontrar o bit (1 para preto e 0 para branco) denominador, ao fim

dessa fase tem-se um valor binário. Com a informação em forma binária, entra-se na fase de

decodificação, onde são efetuados os cálculos necessários para obter o valor numérico e com

isso pode-se validar o resultado. Por fim, tem-se um valor binário que pode ser, facilmente,

transformado em uma imagem HR.

Page 27: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

26

3.2.1 Visão Externa do Framework

Esta seção visa fornecer uma perspectiva do framework desenvolvido a partir de um

ponto de vista externo. Para tal, é utilizado o diagrama de casos de uso. No framework em

questão, o aplicativo faz o papel de iniciador, ou seja, é a entidade externa que dá inicio à

sequencia de interações dele com o sistema. As principais interações do aplicativo com o

framework são apresentadas no diagrama de casos de uso da Figura 11.

Figura 11 – Diagrama de casos de uso

As duas primeiras interações que o aplicativo pode ter com o framework estão

especificadas nos casos de uso Carregar imagem do disco e Capturar imagem da

câmera, os quais permitem ao aplicativo fornecer como entrada as imagens que serão

utilizadas no processo.

Os quatro próximos casos de uso (Aplicar limiarização simples, Aplicar

limiarização de Bernsen, Aplicar limiar de Wellner e Aplicar limiarização de

Bernsen adaptada) têm como objetivo permitir ao aplicativo realizar a limiarização em uma

imagem. Uma condição para estes casos de uso é que a imagem deve estar carregada.

O caso de uso Buscar linha binarizada tem por finalidade retornar ao aplicativo,

uma linha de uma imagem, previamente carregada, com valores binários. Este inclui o caso de

uso Aplicar limiarização de Bernsen adaptada. Em seguida, tem-se o caso de uso

Buscar linha mensurada (que inclui o caso de uso anterior), este retorna o valor binário

mapeado entre três linhas binárias.

Page 28: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

27

Por fim, o caso de uso Decodificar código de barras, possui como pré-condição

um código binário, e retorna ao aplicativo o valor real (Human Readable Information - HRI).

Este caso de uso pode ser executado a qualquer momento, desde que haja o código binário a

ser traduzido.

3.2.2 Visão Estrutural

Esta seção apresenta o framework desenvolvido visto sob seu aspecto estrutural. É

apresentada a arquitetura do sistema e, através de diagramas de classes, descreve-se como as

classes que o compõem estão estruturadas e relacionadas.

O software foi desenvolvido utilizando o padrão de arquitetura Model-View-

Controller (MVC) em conjunto com o padrão de projeto Target-action (APPLE INC, 2010b).

O padrão MVC divide o código em três áreas funcionais independentes: model, view e

controler. O Model define o motor do aplicativo e é responsável por manter a integridade dos

dados. A View define a interface com o usuário e não está explicitamente ligada a origem dos

dados. O Controler atua como uma ponte entre o Model e a View e facilita as atualizações

entre eles (APPLE INC, 2010c).

No padrão de projeto Target-action um objeto contém as informações necessárias para

enviar uma mensagem para outro objeto quando um evento ocorre. A informação armazenada

é composta por dois itens de dados: um seletor de ação, que identifica o método a ser

chamado, e uma meta, que é o objeto para receber a mensagem (APPLE INC, 2010b).

3.2.3 Modelo do Domínio e Controle

Este seção tem por objetivo descrever as entidades referentes ao domínio do problema,

o qual refere-se as técnicas envolvidas na construção da imagem SR. O diagrama de classes

da Figura 12 apresenta as principais classes e estruturas de dados, bem como o

relacionamento entre elas.

Page 29: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

28

Figura 12 – Diagrama de classes

Primeiramente, temos a classe SureViewController que é responsável por criar uma

ponte entre o modelo e a view. É responsável, também, por dar inicio à execução do

aplicativo, instanciando e inicializando os itens da interface, bem como encerrar a execução e

liberar a memória alocada.

A classe SureMain, por sua vez, tem por objetivo iniciar o processo de SR. Esta classe

agrega três objetos SureImage, que são carregados através das funções loadImagesFromFile

ou loadImagesFromCamera.

Para representar as imagens e realizar os cálculos sobre estas, foi definida a classe

SureImage. Esta classe encapsula os dados dos pixels (atributo pixelData) e suas dimensões.

Dentre os principais métodos desta classe, tem-se:

a) thresholdBernsen: aplica a limiarização local de Bernsen na imagem;

b) thresholdBernsenAdapted: aplica a limiarização local de Bernsen adaptada na

imagem;

c) binaryRowThresholded: retorna, por referencia, uma linha da imagem com os

valores binarizados;

d) binaryRowMeasured: retorna, por referencia, uma linha mensurada, com base em um

cálculo realizado entre outras linhas;

e) visitNeighborhoodIn: retorna, por referencia, os valores mínimo e máximo de uma

vizinhança de pixels.

Por fim, a classe SureBarcode, é responsável por realizar os cálculos referentes a

códigos de barras. Tais como, normalizar uma linha binária, ou seja, decifrar o tamanho de

cada barra para ser decodifica, obtendo-se assim o valor numérico do código de barras.

Page 30: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

29

3.3 IMPLEMENTAÇÃO

Esta seção tem por objetivo apresentar as ferramentas e bibliotecas utilizadas para a

implementação do software proposto, bem como trechos de código fonte e questões referentes

à operacionalidade do mesmo.

3.3.1 Técnicas e ferramentas utilizadas

A implementação do framework foi realizada utilizando a linguagem de programação

Objective-C, juntamente com o iPhone SDK, que inclui: o ambiente de desenvolvimento

XCode; editor de interface Interface Builder – para demonstração dos resultados; e o

simulador do iPhone.

Para distinguir, de forma minuciosa, as barras pretas e brancas, são utilizadas técnicas

de limiarização adaptativa. Para fins de comparação, duas foram selecionadas, a técnica de

Bernsen e a técnica de Wellner. O conceito de SR é adotado para confrontar os dados das

diferentes imagens utilizadas no processo.

3.3.1.1 Limiarização

Com o intuito de distinguir as barras brancas das pretas foi utilizado um método de

limiarização. Conforme descrito na seção 2.2.1, a limiarização global é mais veloz, pois

possui um limiar único para toda a imagem, porém não é eficaz quando a imagem possui

baixo contraste ou está sob o efeito de luz e/ou sombra.

Para sanar essa deficiência surgiram as limiarizações locais, onde o limiar é calculado

a partir do pixel corrente. Dentre os métodos existentes, dois foram selecionados: Bernsen e

Wellner. Ambos foram implementados para análise dos resultados e decisão do mais eficiente

a ser utilizado.

No framework desenvolvido, o método de Bernsen pode ser encontrado na função

thresholdBernsen da classe SureImage, sem a necessidade de passagem de parâmetros, já

que nesse ponto a imagem está carregada e em escala de cinza. Basicamente, o método

Page 31: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

30

percorre toda a imagem (rows e cols), e para cada pixel, analisa o valor máximo e o valor

mínimo, então encontra o limiar através da média dos valores encontrados. Seu código fonte é

encontrado no Quadro 3.

- (void)thresholdBernsen { // copy pixelData to temp UInt8 UInt8 pixelDataTemp[length]; [self copyData:pixelDataTemp]; // initialize int index, value; int max, min; int xs, xe, ys, ye; int distance = 5; // for each pixel for (int x = 0; x < rows; x ++) { xs = x - distance; xe = x + distance; for (int y = 0; y < cols; y ++) { ys = y - distance; ye = y + distance; min = 255; max = 0; // look neighbors [self visitNeighborhoodIn:pixelDataTemp beginningX:xs endX:xe beginningY:ys endY:ye value:&max value:&min]; // black or white? index = (x * bytesPerRow) + (y * 4); if ((max-min) > distance) { value = (pixelDataTemp[index] >= (max+min)/2) ? 255 : 0; } else { value = ((max+min)/2 > 127) ? 255 : 0; } [self setPixelGray:index setGray:value]; } } }

Quadro 3 – Método thresholdBernsen da classe SureImage

Analisando o código do Quadro 3 percebe-se que, ele percorre cada pixel da imagem e

vasculha sua vizinhança, em uma determinada distância, em busca do valor máximo e mínimo

– função visitNeighborhoodsIn. Caso o contraste entre max e min seja menor que a

distância percorrida nos pixels vizinhos, assume-se o limiar com valor 127 (média entre 255 e

0). Após encontrado o limiar, o valor do pixel é determinado da seguinte forma, se maior ou

igual ao limiar é branca, caso menor, é preto.

Page 32: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

31

Da mesma forma que a técnica anterior, o médoto de Wellner percorre toda a imagem,

mas leva em consideração apenas os últimos pixels visitados. Portanto, se a região percorrida

for muito clara, o limiar tende a ser elevado, o mesmo ocorre para regiões escuras. Seu

pseudocódigo é exemplificado na seção 2.2.1.2, no Quadro 2.

Assumindo o método de Bernsen para a limiarização de barras verticais, com o

objetivo de obter o valor binário, para então encontrar o número correspondente do código,

modificações foram aplicadas. Tratando-se de barras verticais, percorre-se apenas a

vizinhança na horizontal. E ao invés de usar o limiar 127 (quando houver um baixo contraste),

aumenta-se a distância da região a ser percorrida, até encontrar um contraste razoável ou o

fim da linha. O trecho do código do método thresholdBernsenAdapted, como a alteração

relatada, encontra-se no Quadro 4.

- (void) thresholdBersenAdapted { [...] // while contraste is small while (((max-min) <= distance) && ((ys > 0) || (ye < cols))) { ys --; ye ++; [self visitNeighborhoodIn:pixelDataTemp beginningX:x endX:x+1 beginningY:ys endY:ye value:&max value:&min]; } [...] }

Quadro 4 – Trecho do método thresholdBernsenAdapted da classe SureImage

Se o contraste for muito pequeno e a linha ainda não foi percorrida por inteiro,

continua-se o while até que uma das condições seja falsa. E a cada nova iteração, busca-se

um novo valor máximo e mínimo, atualizando as posições ys (inicial) e ye (final), que são

afastadas, abrangendo dessa maneira uma vizinhança maior de pixels.

Partindo do pressuposto que o código de barras está no centro da imagem ou próximo a

ele, não há necessidade de aplicar a limiarização em toda a imagem. Tomando como partida o

centro, analisa-se uma linha acima e outra abaixo, para realizar o mapeamento.

3.3.1.2 Normalização

Na etapa de normalização o processo consiste em converter a linha binarizada, de

forma a permitir que a fase de comparação seja eficaz. Para isto calcula-se a largura das barras

e, logo após, define-se 1 pixel para barra simples, 2 pixels para barra dupla e assim

sucessivamente – levando em consideração o padrão EAN-13, que inicia com duas barras

Page 33: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

32

simples. Desta forma, pode-se efetuar a comparação de imagens de tamanhos e deslocamentos

diferentes.

Na Figura 13 vemos uma demonstração deste processo, onde vê-se três códigos de

barras em disposições diferentes. No primeiro é ignorada a primeira barra (de acordo com o

padrão EAN-13). No segundo temos barras deslocadas, o que ocasiona um aumento na

largura das barras, mas que é compensado com a normalização. No terceiro caso, tem-se uma

largura maior da barras, mas novamente ajustado.

Figura 13 – Demonstração do processo de normalização

Este procedimento é executado na classe SureBarcode no método normalize. Na

função normalize é chamada função findPeak com o objetivo de encontrar a largura da

barra simples, para então normalizar a linha binarizada.

3.3.1.3 Mapeamento

No processo de mapeamento, logo após a binarização das linhas desejadas, aplica-se o

conceito de SR, onde é realizada uma votação entre os dados de três linhas de uma imagem.

Verifica-se qual valor dominante para cada posição dessas linhas. O resultado é novamente

exposto a uma nova eleição entre o produto das demais imagens.

Na Figura 14 vê-se a exemplificação desta etapa, onde três imagens distintas, mas

pertencentes ao mesmo código de barras, são comparadas entre si.

Page 34: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

33

Figura 14 – Demonstração do mapeamento em três imagens

Analisando o código fonte da função binaryRowMeaseured da classe SureImage no

Quadro 5, vê-se a instancia de três linhas – a escolha de um número impar se deve ao fato de

não haver empates. Em seguida, os campos destas linhas são preenchidos pela função

binaryRowThresholded (que retorna uma linha binarizada através da técnica de Bernsen).

Tratando-se de valores binários, soma-se o valor de cada linha na posição em questão,

caso seja maior que 1, houve maior incidência de cor preta (1), caso contrário, houve maior

contingente de cor branca (0).

- (void)binaryRowMeasured:(int *)row { // initialize int row1[cols]; int row2[cols]; int row3[cols]; // get rows [self binaryRowThresholded:rows/2-10 to:row1]; [self binaryRowThresholded:rows/2 to:row2]; [self binaryRowThresholded:rows/2+10 to:row3]; // mapping for (int i = 0; i < cols; i ++) { row[i] = ((row1[i] + row2[i] + row3[i]) > 1) ? 1 : 0; } }

Quadro 5 – Método binaryRowMeasured da classe SureImage

Page 35: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

34

3.3.2 Operacionalidade da implementação

Esta seção tem por objetivo mostrar, em nível de usuário, a operacionalidade do

framework desenvolvido. Para isto, foi criado um aplicativo exemplo, com uma interface

gráfica (Figura 15), de forma a exibir os resultados obtidos.

Figura 15 – Interface gráfica e seus principais componentes

O uso a nível de usuário é simples e exige poucas ações. Primeiramente, devem ser

carregadas as amostradas, para isso o usuário deve selecionar as imagens em arquivo do

dispositivo ou capturar da câmera do mesmo. Após carregadas, as três amostras são exibidas

nas suas devidas janelas.

Ao clicar no botão, no canto inferior esquerdo, o processo será iniciado. Será realizada

então a limiarização, normalização e mapeamento das imagens. Nas imagens três linhas são

vistas com a limiarização, e na parte superior dessas imagens é sobreposto o código resultante

Page 36: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

35

do processo, para que possa ser comparado. Através do código binário encontrado, é efetuada

a decoficação do mesmo, o valor obtido é informado no canto inferior direito (ver Figura 18).

3.4 RESULTADOS E DISCUSSÃO

O presente trabalho apresentou um estudo referente ao processo de criação de imagens

HR a partir de amostras LR, mais especificamente de imagens de códigos de barras, para

dispositivos da plataforma iOS.

Primeiramente foram discutidas algumas técnicas de limiarização, etapa essencial para

o processo. Nesta etapa, inicialmente devem ser feitas operações de detecção das cores pretas

e brancas, transformando-as em uma informação binária, e por fim, decodificar este valor

binário em código real.

A técnica de limiarização de Bernsen mostrou-se mais eficiente, apesar de gerar vários

ruídos na imagem, nas áreas de baixo contraste. A técnica de Wellner, por sua vez, mostrou-se

mais veloz em relação a técnica anterior, porém menos eficaz. Ao efetuar ajustes no método

de Bernsen, obteve-se uma resposta mais aceitável. Os resultados destas técnicas, que estão

implementadas na classe SureImage (thresholdBernsen, thresholdBersenAdapted e

thresholdWellner), pode ser visualizado na Figura 16.

Figura 16 – (a) Imagem original; (b) Limiarização de Bernsen; (c) Limiarização de Bernsen Adaptada;

(d) Limiarização de Wellner

Page 37: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

36

Para aperfeiçoar o resultado obtido, foi aplicado um mapeamento entre três linhas,

previamente binarizadas, ou seja, uma comparação entre linhas da mesma imagem. O

resultado desse mapeamento pode ser visto na Figura 17, onde tem-se três linhas limiarizada

e, logo abaixo, o produto desse processo.

Figura 17 – Mapeamento de linhas binárias

Após isso, confronta o resultado com o de outras imagens, ao todo três. E por fim, tem-

se um código binário, que é resultado de três imagens. Este código binário é decodificado,

para o padrão EAN-13, resultando em um valor real. Na Figura 18 é demostrada a imagem do

aplicativo exemplo com as três imagens amostradas e o resultado obtido, em três situações

diferentes: código rasurado, sombra e deslocamento.

Figura 18 – Aplicativo exemplo e resultados obtidos

Page 38: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

37

Conforme a Figura 18, nos dois primeiros casos a técnica mostrou-se eficiente,

conseguiu eliminar algumas falhas e sombras que prejudicam a decodificação do código de

barras. Porém, no último caso, com o deslocamento dos códigos de barras houveram

problemas na leitura do código, ocasionados por barras inexistentes.

Em relação aos trabalhos correlatos, tem-se o ClearCam (APPLE INC, 2011a), está

disponível na plataforma iOS e, em suma, produz uma imagem com melhor resolução

espacial do que a obtida da câmera do dispositivo, mas seu código fonte é fechado e o

aplicativo é pago, e diferentemente do trabalho proposto, não permite que outros aplicativos

possam utilizar sua funcionalidade.

Já o trabalho de Zibetti (2007) é uma importante fonte de pesquisa, pois busca o

melhor aproveitamento e desempenho dos algoritmos de SR. Porém ambos se fundamentam

na teoria, e apesar de mostrarem alguns resultados visuais, não há informações sobre a

linguagem e plataforma empregada ou estimativas de tempo para obtenção da imagem HR.

Os aplicativos Barcode Scanner (ZXING, 2011) e Zebra Barcode Reader (FARIA,

2008), assemelham-se mais a este trabalho, cada um com suas características. No Quadro 6

pode ser visto de maneira rápida e sucinta as diferenças e semelhanças entre estes aplicativos

e o framework proposto.

Framework

proposto Barcode Scanner

Zebra Barcode

Reader

Plataforma iOS / Mobile Android / Mobile Linux / Desktop

Origem da imagem Disco / Câmera Câmera Disco / Webcam

Processamento de

imagem Software

Hardware /

Foco da câmera Software

Extensível Sim Sim Sim

Encontra o código

na imagem Não Não Sim

Tipos de código de

barras aceitos EAN-13

QR Code, EAN,

CODE 39, UPC, ...

EAN, CODE 39,

CODE 128 UPC, ...

Quadro 6 – Comparação entre o trabalho e aplicativos correlatos

Page 39: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

38

4 CONCLUSÕES

Os celulares tornaram-se itens indispensáveis para os dias atuais, e conforme seu

avanço, outros recursos lhe foram acrescentados, entre eles a câmera digital, e com isso o

acréscimo de novas funcionalidades, por exemplo a leitura de códigos de barras. Porém a

qualidade das imagens nem sempre suprem as necessidades que lhe são conferidas. Para

tentar sanar ou amenizar este problema, surgem as técnicas de SR.

Este trabalho investigou como utilizar a informação contida em várias imagens, as

quais representam a mesma cena, mas que podem possuir características diferentes. Para tal,

foi desenvolvido um framework que permite a geração de imagens HR a partir de outras LR.

A escolha do iOS se deve ao fato de seus dispositivos possuírem um bom poder de

processamento, mas mesmo com a evolução das câmeras acopladas ao aparelho, ainda sim

existem condições que prejudicam a qualidade da imagem (iluminação, foco, etc.), além de ter

um ótimo ambiente de desenvolvimento e uma boa documentação, sendo assim bastante

adequado para desenvolvimento deste tema.

Conforme foi exposto, apesar da melhora na imagem do código de barras, não é

garantido que a decodificação ocorra com sucesso, pois qualquer mudança, adição ou

subtração nas barras, por mínima que seja, afeta a leitura do código.

Uma limitação na técnica implementada é o uso apenas para código de barras. O

conceito de SR envolve a utilização de diversas técnicas de processamento de imagens e,

desta forma, necessita de um estudo específico e aprofundado nesta área. Outra limitação é

leitura de apenas um tipo de código de barras, o EAN-13.

4.1 EXTENSÕES

A grande área de aplicabilidade de limiarização e SR, abre perspectivas para futuros

trabalhos. Pode-se agregar novas funcionalidades ou aperfeiçoar as já existentes no presente

trabalho. A SR pode ser aplicada em várias áreas, entre elas, imagens espaciais e de

sensoriamento remoto, como também imagens médicas.

Uma relação das possíveis extensões para o trabalho desenvolvido é apresentado a

seguir:

Page 40: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

39

a) implementar o reconhecimento do código de barras e a direção deste na imagem, para

não haver a necessidade de centraliza-lo;

b) implementar a decodificação de outros tipos de códigos de barras ou códigos 2D

como, por exemplo, QR Code, já que este tipo é cada vez mais utilizado;

c) utilizar a técnica de limiarização para reconhecimento de impressões digitais.

Page 41: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

40

REFERÊNCIAS BIBLIOGRÁFICAS

ALMEIDA, Leandro L.; TOMMASELLI, Antonio M. G. Melhoramento da resolução a partir de seqüências de imagens. Boletim de Ciências Geodésicas, Curitiba, v. 9, n. 2, p.163-178, jul./dez. 2003. Disponível em: <http://ojs.c3sl.ufpr.br/ojs2/index.php/bcg/article/viewFile/1442/1196>. Acesso em: 22 ago. 2011.

ARTERO, Almir O.; SANTOS, Tiago H. T. Processamento digital de imagens de códigos de barras usando telefones celulares. Presidente Prudente, 2010. Disponível em: <http://iris.sel.eesc.usp.br/wvc/anais_WVC2010/artigos/poster/72797.pdf>. Acesso em: 14 de out. 2011.

AZEVEDO, Eduardo; CONCI, Aura; LETA, Fabiana R. Computação gráfica: teoria e prática. 2. ed. Rio de Janeiro: Elsevier, 2008.

APPLE INC. ClearCam for iPhone and iPod touch on the iTunes App Store. [S.l.], 2011a. Disponível em: <http://itunes.apple.com/pt/app/clearcam/id364930963?mt=8#>. Acesso em: 15 set. 2011.

______. Target-action. [S.l.], 2011b. Disponível em: <http://developer.apple.com/library/ios/#documentation/General/Conceptual/Devpedia-CocoaApp/TargetAction.html>. Acesso em: 12 set. 2011.

______. Tutorial overview and design patters. [S.l.], 2011c. Disponível em: <http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhone101/Articles/01_Overview.html>. Acesso em: 11 set. 2011.

FACON, Jacques. Limiarização adaptativa de Bernsen. [S.l.], 2004. Disponível em: <http://www.ppgia.pucpr.br/~facon/Binarizacao/LimiarAdaptativaBernsen3.PDF>. Acesso em: 10 out. 2011.

FARIA, Alessandro O. Zebra Barcode Reader: lendo código de barras com a sua Webcam no Linux. [S.l.], 2008. Disponível em: <http://www.vivaolinux.com.br/artigo/Zebra-Barcode-Reader-Lendo-codigo-de-barras-com-a-sua-Webcam-no-Linux?pagina=1>. Acesso em: 10 set. 2011.

KANG, Moon G.; PARK, Sung C.; PARK, Min K. Super-resolution image reconstruction: a technical overview. IEEE Signal Processing Magazine, [S.l.], v. 20, n. 3, p. 21-36, May. 2003. Disponível em: <http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.114.6852&rep=rep1&type=pdf >. Acesso em: 4 set. 2011.

Page 42: FRAMEWORK PARA SUPER-RESOLUÇÃO DE IMAGENS DIGITAIS EM IOScampeche.inf.furb.br/tccs/2011-II/TCC2011-2-17-VF... · Seu mercado começa a crescer no final da década de 90, com a popularidade

41

LARA, Daniel S. D. Estudo comparativo de seis métodos para super resolution: 2 versões para Pocs, Iterated Back Projection, Robust Super Resolution, Structure-Adaptive Normalized Convolution e composição de imagens realçadas. [Belo Horizonte], 2008. Disponível em: <http://www.verlab.dcc.ufmg.br/_media/cursos/aerea/g3/superresolution.pdf?id=cursos:aerea:g3:index&cache=cache>. Acesso em: 23 ago. 2011.

MARQUES FILHO, Ogê; VIEIRA NETO, Hugo. Processamento digital de imagens. Rio de Janeiro: Brasport, 1999. MATOS, Luis (Ed.). Desvendando a fotografia digital. São Paulo: Digerati Books, 2004. Disponível em: <http://www.google.com.br/search?q=Desvendando+a+fotografia+digital&hl=pt-BR&source=lnms&tbs=bks:1&ei=ZpKNTL73HIGC8gbaodzqCQ&sa=X&oi=mode_link&ct=mode&ved=0CA8Q_AU&prmdo=1>. Acesso em: 16 ago. 2011.

SEBASTIANI, Regis L. Módulo de processamento de imagens de exames médicos para aplicação em software de ensino de medicina. 2009. 76 f. Trabalho de Conclusão de Curso (Bacharel em Ciências da Computação) - Curso de Ciências da Computação, Centro Universitário Feevale, Novo Hamburgo. Disponível em: <tconline.feevale.br/tc/files/0001_1929.doc>. Acesso em: 8 out. 2011.

SILVA, Fernanda B. Super-resolução utilizando quadros chave em seqüências de vídeo de resolução mista. 2009. 110 f. Dissertação (Mestrado em Engenharia Elétrica) - Faculdade de Tecnologia, Universidade de Brasília, Brasília. Disponível em: <http://image.unb.br/queiroz/papers/tese_fernanda_msc.pdf>. Acesso em: 15 ago. 2011.

SILVA, Maíra S. Binarização de imagens de cheque. 2009. 58 f. Trabalho de Conclusão de Curso (Bacharel em Engenharia da Computação) – Curso de Engenharia da Computação, Universidade de Pernambuco, Recife. Disponível em: <http://dsc.upe.br/~tcc/20091/Tcc_MairaSaboia_BinarizacaoImagensCheque_2009.1.pdf>. Acesso em: 12 out. 2011.

VERAS, Auerê. Usando a câmera do celular como leitor de código de barras numa aplicação web. [S.l.], 2011. Disponível em: <http://www.auere.com.br/blog/html/usando-a-camera-do-celular-como-leitor-de-codigo-de-barras-numa-aplicao-web>. Acesso em: 13 set. 2011.

WALT, Stéfan J. V. D. Super-resolution Imaging. 2010. 156 f. Dissertação (Doutorado em Filosofia em Engenharia) – Matemática Aplicada, Universidade de Sttelenbosch, África do Sul.

ZIBETTI, Marcelo V. W. Super-resolução simultânea para sequência de imagens. 2007. 167 f. Tese (Doutorado em Engenharia Elétrica) – Programa de Pós-Graduação em Engenharia Elétrica, Universidade Federal de Santa Catarina, Florianópolis. Disponível em: <http://pessoal.utfpr.edu.br/marcelozibetti/arquivos/tese.pdf>. Acesso em: 15 ago. 2011.

ZXING. Barcode Scanner. [S.l.], 2011. Disponível em: <http://code.google.com/p/zxing/>. Acesso em: 13 set. 2011.