• Nenhum resultado encontrado

Eficiência, qualidade e compressão do processamento digital de imagem/vídeo

N/A
N/A
Protected

Academic year: 2021

Share "Eficiência, qualidade e compressão do processamento digital de imagem/vídeo"

Copied!
158
0
0

Texto

(1)

UNIVERSIDADE ESTADUAL DE CAMPINAS

Faculdade de Engenharia Elétrica e de Computação

Daniel Rodrigues Ferraz Izario

Eficiência, qualidade e compressão do

processamento digital de imagem/vídeo

Campinas

2019

(2)

UNIVERSIDADE ESTADUAL DE CAMPINAS

Faculdade de Engenharia Elétrica e de Computação

Daniel Rodrigues Ferraz Izario

Eficiência, qualidade e compressão do processamento digital de

imagem/vídeo

Dissertação apresentada à Faculdade de Engenharia Elétrica e de Computação da Universidade Estadual de Campinas como parte dos requisitos exigidos para a ob-tenção do título de Mestre em Engenharia Elétrica, na Área de Telecomunicações e Telemática.

Orientador: Prof. Dr. Yuzo Iano.

ESTE EXEMPLAR CORRESPONDE À VER -SÃO FINAL DA DISSERTAÇÃO DEFENDIDA PELO ALUNO DANIEL RODRIGUES FER -RAZ IZARIO, E ORIENTADA PELO PROF. DR. YUZOIANO.

Campinas

2019

(3)

Ficha catalográfica

Universidade Estadual de Campinas Biblioteca da Área de Engenharia e Arquitetura

Rose Meire da Silva - CRB 8/5974

Izario, Daniel Rodrigues Ferraz,

Iz1e IzaEficiência, qualidade e compressão do processamento digital de

imagem/vídeo / Daniel Rodrigues Ferraz Izario. – Campinas, SP : [s.n.], 2019.

IzaOrientador: Yuzo Iano.

IzaDissertação (mestrado) – Universidade Estadual de Campinas, Faculdade de Engenharia Elétrica e de Computação.

Iza1. Processamento de imagem assistida por computador. 2. Equações diferenciais parciais. I. Iano, Yuzo, 1950-. II. Universidade Estadual de Campinas. Faculdade de Engenharia Elétrica e de Computação. III. Título.

Informações para Biblioteca Digital

Título em outro idioma: Efficiency, quality and compression of digital image/video

processing

Palavras-chave em inglês:

Computer aided image processing Partial differential equations

Área de concentração: Telecomunicações e Telemática Titulação: Mestre em Engenharia Elétrica

Banca examinadora:

Yuzo Iano [Orientador] Cristiano Akamine Rosivaldo Ferrarezi

Data de defesa: 16-08-2019

Programa de Pós-Graduação: Engenharia Elétrica Identificação e informações acadêmicas do(a) aluno(a)

- ORCID do autor: https://orcid.org/0000-0002-8024-0324 - Currículo Lattes do autor: http://lattes.cnpq.br/9174775045358016

(4)

COMISSÃO JULGADORA - TESE DE MESTRADO

Candidato:Daniel Rodrigues Ferraz Izario | RA: 210314 Data da Defesa:16 de AGOSTO de 2019.

Título da Tese:

“Eficiência, qualidade e compressão do processamento digital de imagem/vídeo”.

Comissão Julgadora:

Prof. Dr. Yuzo Iano (Presidente, FEEC/UNICAMP); Prof. Dr. Cristiano Akamine (Titular, MACKENZIE); Prof. Dr. Rosivaldo Ferrarezi (Titular, UNIP);

A ata de defesa, com as respectivas assinaturas dos membros da Comissão Julgadora, encontra-se no processo de vida acadêmica do aluno.

(5)
(6)

Agradecimentos

Gostaria de agradecer a Deus por me guiar, iluminar e me dar tranquilidade para seguir em frente com os meus objetivos e não desanimar com as dificuldades.

Esta tese é fruto da colaboração de várias pessoas, que apoiaram várias fases deste trabalho tornando possível a sua realização. Agradeço a todos e em especial:

Ao meu pai, Prof. Dr. Helcio José Izario Filho e à minha mãe, Neuzeli Aparecida Rodrigues Ferraz Izario, por toda a educação, carinho e confiança depositados em mim durante o desenvolvimento desta tese.

Ao meu irmão, Me. Bruno Rodrigues Ferraz Izario, pelo apoio dado durante todo o processo de pesquisa.

À minha esposa, Karine Mendes Siqueira Rodrigues Ferraz Izario, pela paciência e apoio em todo passo a passo para preparação das fases e resultados da pesquisa.

Ao meu filho, Daniel Rodrigues Ferraz Izario Filho, pelos sorrisos dados durante a reta final desta tese.

Ao meu orientador e incentivador, Prof. Dr. Yuzo Iano, pela oportunidade, con-selhos, sugestões e correções que propiciaram a finalização desta tese.

Por fim, ao LCV-UNICAMP (Laboratório de Comunicações Visuais - UNICAMP) e todos os amigos feitos por lá, que participaram das etapas deste trabalho, principal-mente, ao amigo Me. Diego Arturo Pajuelo Castro.

(7)

’Os encantos dessa sublime ciência se revelam apenas àqueles que tem coragem de irem a fundo nela.’ (Carl Friedrich Gauss)

(8)

Resumo

A pesquisa apresenta três técnicas para a aplicação do processamento digital de ima-gem/vídeo, sendo elas: Partial Differential Equation, High Dynamic Range e Discrete Co-sine Transform, utilizando o máximo dos processadores (Central Process Unit e Graphics Processing Unit), com o uso intensivo e preciso das threads.

Todas as técnicas citadas passam por um processo chamado de “Planilha de Pixels e Gráficos”, no qual, uma varredura sobre a imagem/quadro gera uma planilha de pi-xels, ou seja, gerar uma matriz MxN e executar uma análise de padronização de vizi-nhança, criando um processo inteligente de renderização de múltiplas cópias de cada pixel e a interpolação entre eles, recebendo um ganho de qualidade.

Ao contrário das técnicas convencionais, será possível ganhar em termos de tempo de processamento, manipulação de pixels, qualidade de imagem e armazenamento em banco de dados. Todas as técnicas foram testadas e comprovadas através de imagens reais, podendo também ser aplicadas em vídeo. Os algoritmos criados usam as lingua-gens de programação JavaScript, Java e Clojure (Lisp), combinadas com modelos mate-máticos no domínio do tempo e no domínio da frequência.

Como resultado, a melhoria no processamento e desempenho da imagem/quadro di-gital, sendo visualizado por gráficos de tempo, histogramas RGB (R - Red, G - Green e B - Blue), razão entre o sinal-ruído e uma análise do perfil da imagem/quadro em termos de qualidade dos pixels, comparando matricialmente.

Palavras-chaves: Clojure; Discrete Cosine Transform; Filtros; High-Dynamic Range; His-tograma; Java; JavaScript; Lisp; Partial Differential Equation; Processamento Digital de Imagem/Vídeo.

(9)

Abstract

The research presents three techniques for the application of digital image/video pro-cessing: Partial Differential Equation, High Dynamic Range and Discrete Cosine Trans-form, using the maximum of the processors (Central Process Unit and Graphics Pro-cessing Unit), with the intensive and precise use of threads.

All the mentioned techniques go through a process called "Pixels and Graphs Work-sheet", in which a scan on the image/frame generates a pixel sheet, that is, generate an MxN matrix and perform a neighborhood standardization analysis, creating an in-telligent process of rendering multiple copies of each pixel and interpolating between them, receiving a quality gain.

Unlike conventional techniques, it will be possible to gain in terms of processing time, pixel manipulation, image quality and database storage. All the techniques have been tested and proven through real images, and can also be applied in video. The algo-rithms created use JavaScript, Java and Clojure (Lisp) programming languages, com-bined with mathematical models in time domain and frequency domain.

As a result, the improvement in the processing and performance of the digital image/frame is visualized by time graphs, RGB histograms (R Red, G Green and B -Blue), signal-noise ratio and image/frame in terms of pixel quality, comparing matrix. Keywords: Clojure; Digital Image/Video Processing; Discrete Cosine Transform; Fil-ters; High-Dynamic Range; Histogram; Java; JavaScript; Lisp; Partial Differential Equa-tion.

(10)

Lista de Ilustrações

Figura 1.1 – Processo de evolução das revoluções industriais. . . 25

Figura 2.1 – Modelo de hierarquia das etapas do PDI. . . 28

Figura 2.2 – Espectro eletromagnético. . . 30

Figura 2.3 – Visão geral do olho humano. . . 31

Figura 2.4 – Comparação entre o olho humano e um sensor fotográfico. . . 32

Figura 2.5 – Modelo cromático RGB. . . 33

Figura 2.6 – Histograma do modelo cromático RGB. . . 34

Figura 2.7 – Modelo cromático CMY. . . 34

Figura 2.8 – Representação de uma imagem/quadro digital bidimensional. . . 36

Figura 2.9 – Representação em camada de uma imagem/quadro digital RGB -Exemplo 1. . . 37

Figura 2.10–Representação em camada de uma imagem/quadro digital RGB -Exemplo 2. . . 37

Figura 2.11–Representação em camada de uma imagem/quadro digital RGB -Exemplo 3. . . 38

Figura 2.12–Influência da variação do número de amostras e de níveis de quan-tização na qualidade de uma imagem/quadro digital. . . 40

Figura 3.1 – Primeiros passos do PDI nas aplicações (JavaScript e Java). . . 41

Figura 3.2 – Escolha dos próximos passos nas aplicações (JavaScript e Java). . . 42

Figura 3.3 – Estrutura da aplicação web (JavaScript). . . 43

Figura 3.4 – Modelo básico do PDI (Java). . . 45

Figura 3.5 – Relação entre RParameter e o EParameter. . . 47

Figura 3.6 – Relação entre o Parameter e o RError sem correção. . . 47

Figura 3.7 – Relação entre o Parameter e o RError com correção. . . 48

Figura 3.8 – Processamento de imagem/quadro usando Fourier. . . 50

Figura 3.9 – Os passos da filtragem no domínio de Fourier. . . 53

Figura 3.10–Resultado da filtragem passa baixa. . . 54

Figura 3.11–Resultado da filtragem passa alta. . . 55

Figura 3.12–Resultado do filtro Gabor, com o parâmetro f incorreto e correto. . . 57

Figura 3.13–Resultado do filtro Gabor, com o parâmetro θ incorreto e correto. . . . 57

Figura 3.14–Processo de convolução por filtragem espacial usando máscara. . . . 58

Figura 3.15–Descontinuidades nas intensidades da imagem/quadro. . . 59

Figura 3.16–Filtro Blur em vídeo. . . 64

Figura 3.17–Filtro Brightness em vídeo. . . 65

Figura 3.18–Filtro Contrast em vídeo. . . 66

(11)

Figura 3.20–Filtro Hue-rotate em vídeo. . . 67

Figura 3.21–Filtro Invert em vídeo. . . 68

Figura 3.22–Filtro Opacity em vídeo. . . 69

Figura 3.23–Filtro Saturate em vídeo. . . 70

Figura 3.24–Filtro Sepia em vídeo. . . 70

Figura 3.25–Filtro Blue em imagem/quadro. . . 72

Figura 3.26–Filtro GrayScale em imagem/quadro. . . 73

Figura 3.27–Filtro Green em imagem/quadro. . . 73

Figura 3.28–Filtro Invert em imagem/quadro. . . 74

Figura 3.29–Filtro Red em imagem/quadro. . . 75

Figura 3.30–Filtro Saturation em imagem/quadro. . . 76

Figura 3.31–Filtro Sepia em imagem/quadro. . . 77

Figura 3.32–Filtro Thresholding em imagem/quadro. . . 78

Figura 3.33–Filtro Gaussian em imagem/quadro. . . 79

Figura 3.34–Filtro Highpass em imagem/quadro. . . 79

Figura 3.35–Filtro Laplacian em imagem/quadro. . . 80

Figura 3.36–Filtro Lowpass em imagem/quadro. . . 81

Figura 3.37–Filtro Prewitt em imagem/quadro. . . 82

Figura 3.38–Filtro Sharpen em imagem/quadro. . . 83

Figura 3.39–Filtro Roberts em imagem/quadro. . . 84

Figura 3.40–Filtro Sobel em imagem/quadro. . . 84

Figura 3.41–Exemplo do processo da equalização histogrâmica. . . 86

Figura 3.42–Técnica Tone Mapping. . . 90

Figura 3.43–Resultante HDR. . . 91

Figura 4.1 – Etapas da técnica de Pixels e Gráficos. . . 93

Figura 4.2 – Comparação entre a Ioriginalcom ruído e a Iresult. . . 96

Figura 4.3 – Localização da GPU na placa de vídeo. . . 107

Figura 4.4 – Processador Intel Core i9-8950HK. . . 110

Figura 4.5 – Placa de vídeo GeForce GTX 1070 Ti. . . 111

Figura 4.6 – Comparativo do PDI, entre CPU e GPU. . . 114

Figura 4.7 – Exemplo de uma imagem/quadro em blocos 8x8. . . 117

Figura 4.8 – Comparação entre a imagem/quadro original e a IDCT. . . 121

Figura 5.1 – Comparativo do tempo de processamento da filtragem. . . 122

Figura 5.2 – Aplicação da técnica de filtragem - Exemplo 1. . . 124

Figura 5.3 – Aplicação da técnica de filtragem - Exemplo 2. . . 125

Figura 5.4 – Aplicação da técnica de filtragem - Exemplo 3. . . 126

Figura 5.5 – Comparativo do histograma das imagens/quadros filtrados. . . 127

Figura 5.6 – Imagem resultante HDR utilizada no primeiro teste. . . 128

(12)

Figura 5.8 – Comparativo do histograma da imagem HDR. . . 129

Figura 5.9 – Comparativo na qualidade da imagem HDR. . . 130

Figura 5.10–Comparativo do tempo de processamento da técnica HDR/Tone Map-ping. . . 131

Figura 5.11–Aplicação da técnica HDR/Tone Mapping - Exemplo 1. . . 132

Figura 5.12–Aplicação da técnica HDR/Tone Mapping - Exemplo 2. . . 133

Figura 5.13–Aplicação da técnica HDR/Tone Mapping - Exemplo 3. . . 134

Figura 5.14–Aplicação da técnica HDR/Tone Mapping - Exemplo 4. . . 135

Figura 5.15–Aplicação da técnica HDR/Tone Mapping - Exemplo 5. . . 136

Figura 5.16–Aplicação da técnica HDR/Tone Mapping - Exemplo 6. . . 137

Figura 5.17–Comparativo do tempo de processamento na DCT/IDCT. . . 138

Figura 5.18–Comparativo na qualidade da imagem/quadro usando DCT/IDCT - Exemplo 1. . . 139

Figura 5.19–Comparativo na qualidade da imagem/quadro usando DCT/IDCT - Exemplo 2. . . 140

Figura 5.20–Comparativo do histograma das imagens/quadros com DCT/IDCT. 141 Figura 5.21–Gráficos das etapas dos pixels na DCT/IDCT. . . 142

Figura 5.22–Aplicação da técnica DCT/IDCT - Exemplo 1. . . 143

(13)

Lista de Tabelas

Tabela 2.1 – Comprimento de onda das cores primárias RGB. . . 33

Tabela 2.2 – Combinação de primárias nos modelos RGB e CMY. . . 34

Tabela 2.3 – Representação das cores por valores decimais e inteiros. . . 35

Tabela 2.4 – Número de bytes para uma imagem monocromática. . . 39

Tabela 2.5 – Número de bytes para uma imagem colorida. . . 40

Tabela 4.1 – Características Específicas - Central Process Unit. . . 106

Tabela 4.2 – Características Específicas - Graphics Processing Unit. . . 108

Tabela 4.3 – Características - Processador: Intel Core i9-8950HK. . . 111

Tabela 4.4 – Características - Placa de vídeo: GeForce GTX 1070 Ti. . . 112

(14)

Lista de Algoritmos

Algoritmo 3.1 Implementação em Java para conversão. . . 49

Algoritmo 3.2 Implementação em JavaScript para conversão. . . 49

Algoritmo 3.3 Implementação em JavaScript da convolução. . . 61

Algoritmo 3.4 Implementação em Java da convolução. . . 62

Algoritmo 3.5 Implementação em Lisp do CSS filtre. . . 63

Algoritmo 3.6 Implementação do filtro Blur em CSS. . . 64

Algoritmo 3.7 Implementação do filtro Brightness em CSS. . . 65

Algoritmo 3.8 Implementação do filtro Contrast em CSS. . . 67

Algoritmo 3.9 Implementação do filtro Grayscale em CSS. . . 67

Algoritmo 3.10 Implementação do filtro Hue-rotate em CSS. . . 68

Algoritmo 3.11 Implementação do filtro Invert em CSS. . . 68

Algoritmo 3.12 Implementação do filtro Opacity em CSS. . . 69

Algoritmo 3.13 Implementação do filtro Saturate em CSS. . . 71

Algoritmo 3.14 Implementação do filtro Sepia em CSS. . . 71

Algoritmo 3.15 Implementação em JavaScript do filtro Blue. . . 72

Algoritmo 3.16 Implementação em JavaScript do filtro GrayScale. . . 73

Algoritmo 3.17 Implementação em JavaScript do filtro Green. . . 74

Algoritmo 3.18 Implementação em JavaScript do filtro Invert. . . 74

Algoritmo 3.19 Implementação em JavaScript do filtro Red. . . 75

Algoritmo 3.20 Implementação em JavaScript do filtro Saturation. . . 76

Algoritmo 3.21 Implementação em JavaScript do filtro Sepia. . . 77

Algoritmo 3.22 Implementação em JavaScript do filtro Thresholding. . . 78

Algoritmo 3.23 Implementação em JavaScript do filtro Gaussian. . . 79

Algoritmo 3.24 Implementação em JavaScript do filtro Highpass. . . 80

Algoritmo 3.25 Implementação em JavaScript do filtro Laplacian. . . 80

Algoritmo 3.26 Implementação em JavaScript do filtro Lowpass. . . 81

Algoritmo 3.27 Implementação em JavaScript do filtro Prewitt. . . 82

Algoritmo 3.28 Implementação em JavaScript do filtro Sharpen. . . 83

Algoritmo 3.29 Implementação em JavaScript do filtro Roberts. . . 84

Algoritmo 3.30 Implementação em JavaScript do filtro Sobel. . . 85

Algoritmo 3.31 Implementação em JavaScript do histograma. . . 87

Algoritmo 3.32 Implementação em Java do histograma. . . 88

Algoritmo 4.1 Implementação em JavaScript do Tone Mapping Global. . . 100

Algoritmo 4.2 Implementação em Java do Tone Mapping Global. . . 101

Algoritmo 4.3 Implementação em JavaScript do Tone Mapping Local. . . 103

(15)

Algoritmo 4.5 Implementação em CG/HLSL do CUDA . . . 109

Algoritmo 4.6 Implementação em Clojure do multithreaded (Parte 1). . . 113

Algoritmo 4.7 Implementação em Clojure do multithreaded (Parte 2). . . 114

Algoritmo 4.8 Implementação em JavaScript do multithreaded extra. . . 115

Algoritmo 4.9 Implementação em JavaScript da DCT/IDCT (Parte 1). . . 117

(16)

Abreviaturas, Acrônimos e Siglas

3Ds Três Dimensões.

API Application Programming Interface. BD Banco de Dados.

bit Binary Digit. byte Binary Term. CG C for Graphics.

CIE Comission Internationale de l’Eclairage. CMY C - cyan, M - magenta e Y - yellow. CPU Central Process Unit.

CSS Cascading Style Sheets.

CUDA Compute Unified Device Architecture. DCT Discrete Cosine Transform.

DDR Double Data Rate. deg Degree.

DFT Discrete Fourier Transform. DMI Direct Media Interface. ELT Erro Local de Truncamento. EParameter Estimated Parameter.

FFmpeg Programa de computador que grava, converte e cria stream de áudio e vídeo. FFT Fast Fourier Transform.

GB Unidade de armazenamento em computador, 1.073.741.824 bytes. GDDR Graphics Double Data Rate.

GHz Gigahertz.

(17)

GPU Graphics Processing Unit. GT Gigatransfers.

GTX Indica melhor performance para jogos e uso profissional de gráficos (NVIDIA). HDR High-Dynamic Range.

HDRi High-Dynamic Range imaging.

HK H - Processor Line e K - Letter Suffix (Intel). HLSL High Level Shading Language.

HTML Hypertext Markup Language. Hz hertz.

I Componente Imaginária. i9 Brand Modifier(Intel).

IEC International Electrotechnical Commission. IoT Internet of Things.

IDCT Inverse Discrete Cosine Transform.

Ioriginal Imagem Original.

Iresult Imagem Resultante.

ISO International Organization for Standardization. J joule.

JDK Java Development Kit. JNA Java Native Access.

JPEG Joint Photographic Experts Group. JRE Java Runtime Environment.

JSON JavaScript Object Notation. JVM Java Virtual Machine.

kB Unidade de armazenamento em computador, 1.024 bytes. LPDDR Low Power Double Data Rate.

(18)

MB Unidade de armazenamento em computador, 1.048.576 bytes. MHz Megahertz.

MSAA MultiSample Anti-Aliasing. MSE Mean Squared Error.

MVVM Model-View-View-Model. nm Nanometro.

NPM Node Package Manager. PDE Partial Differential Equation.

PDI Processamento Digital de Imagem.

PDI/V Processamento Digital de Imagem/Vídeo. PDV Processamento Digital de Vídeo.

PHP Hypertext Preprocessor. PNG Portable Network Graphics.

POO Programação Orientada a Objetos. PSNR Peak Signal to Noise Ratio.

px Pixel.

R Componente Real.

RAM Random Access Memory. RError Relative Error.

RGB R - red, G - green e B - blue. RParameter Real Parameter. RWD Responsive Web Design. s Segundos.

SGBD Sistema de Gerenciamento de Banco de Dados. SIMD Single Instruction Multiple Data.

(19)

SO Sistema Operacional. SPA Single-Page Applications. SQL Structured Query Language. STMD Single Thread Multiple Data. TDP Thermal Design Power

TempE Tempos de Exposição.

Ti Nomenclatura utilizada para determinar alta performance (NVIDIA). TMms Tone Mapping de escala múltipla.

TMss Tone Mapping de escala única.

UC Unidade de Controle. UI User Interface.

ULA Unidade Lógica e Aritmética.

VLCj API para desenvolvimento em java de um player de vídeo open-source. W watt.

web Referência à rede mundial de computadores.

(20)

Sumário

1 Introdução . . . . 22 1.1 Considerações Iniciais . . . 22 1.2 Motivação . . . 24 1.3 Objetivos . . . 26 1.4 Estrutura do Trabalho . . . 27 2 Revisão da Literatura . . . . 28

2.1 Processamento Digital de Imagem . . . 28

2.1.1 Natureza da Luz . . . 29 2.1.2 Olho Humano . . . 30 2.1.3 Modelos Cromáticos . . . 33 2.1.4 Imagem Digital . . . 35 2.1.5 Amostragem e Quantização . . . 38 3 Metodologia . . . . 41

3.1 Aplicações: JavaScript e Java . . . 41

3.1.1 Vídeo . . . 46

3.1.2 Filtros . . . 50

3.1.2.1 Domínio da Frequência . . . 50

3.1.2.1.1 Filtro Passa Baixa . . . 54

3.1.2.1.2 Filtro Passa Alta . . . 55

3.1.2.1.3 Filtro de Gabor . . . 55

3.1.2.2 Domínio Espacial . . . 57

3.1.2.3 Convolução de Imagem . . . 60

3.1.2.4 Filtros Personalizados - Vídeo . . . 63

3.1.2.5 Filtros Personalizados - Imagem . . . 71

3.1.3 Histograma . . . 85

3.1.4 High Dynamic Range . . . 89

4 Algoritmo/Equações . . . . 92

4.1 Planilha de Pixels e Gráficos . . . 92

4.2 Partial Differential Equation . . . 94

4.3 High Dynamic Range . . . 97

4.4 Processadores . . . 105

4.4.1 Central Process Unit . . . 106

4.4.2 Graphics Processing Unit . . . 107

4.4.3 Threads . . . 110

4.5 Discrete Cosine Transform . . . 116

(21)

5.1 Partial Differential Equation . . . 122

5.2 High Dynamic Range . . . 128

5.3 Discrete Cosine Transform . . . 138

6 Conclusão . . . 145

7 Trabalhos Futuros . . . 146

7.1 Doutorado . . . 146

Referências . . . 147

Apêndices

154

APÊNDICE A Publicações do Autor . . . 155

(22)

22

1 Introdução

1.1

Considerações Iniciais

O processamento digital de imagem/vídeo (PDI/V) entende-se como um pro-cesso de manipulação de uma imagem (em vídeo, chamado de quadro) por compu-tador de modo que a entrada e a saída do processo sejam imagens [1]. Contudo, o conceito de imagem ganha diferentes interpretações ao longo dos anos, através da his-tória da filosofia e das artes visuais [2]. Etimologicamente, a palavra “imagem”, tem como registro uma definição de “representação artificial que aparenta a uma pessoa ou coisa”. Porém, para a língua portuguesa o termo vem do francês image, antes imagene (século XI), do latim imaginen (do nominativo imago). Denota “cópia, estátua, picture, ideia ou aparência”, que vem de imitari enquanto “copiar/imitar” [3].

Mas não adianta entender a palavra “imagem”, sem entender a ideia de “ima-gem”, a partir dos filósofos e da tradição oral filosófica que vem de imago do latim. O primeiro foi Aristóteles (384 a.C. - 322 a.C.) [4], que estava ligado às coisas materiais, tanto pela sensação como pela percepção. Depois vieram os Estoicos (111 a.C. - I d.C.) que diferenciavam as imagens sensíveis das não sensíveis e passaram a usar a pala-vra imaginação para imagem interior. Já os Epicuristas (111 a.C. - 11 a.C.) acreditavam na verdade das imagens por estas serem produzidas e, tão somente, por aquilo que existe. Estes conceitos cruzaram a Idade Média através de São Tomás de Aquino, que os utiliza como forma de esclarecimento entre a natureza divina e a humana [5].

Registra-se, além dessas anteriores, o termo imagismo como o nome dado ao mo-vimento em poesia para referir-se à busca da clareza de expressão através do uso de imagens visuais precisas, por exemplo, hard light (“luz contrastada”) e clear edges (“ni-tidez, contornos nítidos”), criado por Ezra Pound [6]. Na modernidade, estes conceitos mudam. Para Bacon (1561-1626) e Hobbes (1588-1679) [7], a imagem passa a ser o ato de sentir, e o termo imagem passa a perder espaço para a designação ideia, inicialmente

(23)

Capítulo 1. Introdução 23

conceituada como essência, ideal ou modelo do que é multíplice, e logo depois em Descartes (1596-1650) e Wolff (1679-1754) [8], a imagem ou ideia passa a ser vista como representação, por semelhança do objeto, representação de algo. Kant (1724-1804) [9] a define como ato ou manifestação cognitiva independente de semelhança. Os termos “ideia” e “representação” persistem na filosofia contemporânea e o termo “imagem” hoje, encontra-se ligado ao caráter ou origem sensível das ideias ou representações de que o ser humano dispõe.

No uso comum, uma imagem é um artefato que reproduz a semelhança a um objeto, normalmente objeto físico ou pessoa, sendo bidimensionais, como uma fotogra-fia, ou tridimensionais, como uma estátua. São tipicamente produzidas por aparelhos ópticos, tais como câmeras, espelhos, lentes, telescópios, microscópios, computadores etc. e objetos e fenômenos naturais como o olho humano ou superfícies de água, por exemplo. Em outros contextos científicos e técnicos, “imagem” refere-se a um “sinal bidimensional”, como um fenômeno físico que pode ser modelado como uma função do domínio bidimensional. Em computação gráfica e processamento digital, que é o ponto que está sendo analisado a fundo no contexto, a palavra quase sempre se re-fere à imagem digital ou, por extensão, a qualquer produção imagética gerada pelo computador [1].

Portanto, gerar uma imagem é algo fácil, pode ser no próprio imaginário e o decorrer da história humana demonstra isso, mas produzir uma imagem/quadro de alta resolução digital com perfeita qualidade e rapidez no alto processamento dos pi-xels, isso ainda não foi realizado. No atual processamento digital de imagem/vídeo existem vários tipos de degradações e distorções, inerentes aos processos de aquisição, transmissão e visualização de imagens/quadros, que contribuem para limitar cada vez mais a qualidade de todo o processo.

(24)

Capítulo 1. Introdução 24

1.2

Motivação

O processamento digital de imagem/vídeo surgiu como um processo fundamen-tal na garantia da qualidade ou da informação a ser gerada em três aspectos funda-mentais: qualidade, manipulação e interpretação. Além da grande evolução durante os anos, como citado por [10]:

“A área de processamento digital de imagem/vídeo vem evoluindo con-tinuamente ao longo dos anos, com um aumento significativo de estudos envolvendo morfologia matemática, redes neurais, processamento de ima-gens coloridas, compressão de imaima-gens, reconhecimento de imaima-gens e sis-temas de análise de imagens baseados em conhecimento.”

Tudo se deu início na Revolução Industrial, a primeira delas foi um processo de grandes transformações econômico-sociais que começou na Inglaterra no século XVIII, o processo que levou à substituição das ferramentas pelas máquinas, da energia humana pela energia motriz e do modo de produção doméstico (ou artesanal) pelo sistema fabril. A partir do final do século XIX, a segunda Revolução Industrial se esta-belece com as bases do progresso tecnológico e científico, visando a invenção e o cons-tante aperfeiçoamento dos produtos e técnicas, para melhor desempenho industrial. A terceira Revolução Industrial, teve o ponto culminante do desenvolvimento industrial, em termos de tecnologia, teve início em meados do século XX, com o desenvolvimento da eletrônica, que permitiu o desenvolvimento da informática e a automação das in-dústrias [11].

A quarta Revolução Industrial é um conceito de indústria proposto recentemente e que engloba as principais inovações tecnológicas dos campos de automação, controle e tecnologia da informação, aplicadas aos processos de manufatura. A partir de siste-mas cyber-físicos, internet das coisas e internet dos serviços, os processos de produção tendem a se tornar cada vez mais eficientes, autônomos e customizáveis. Isso signi-fica um novo período no contexto das grandes revoluções industriais. Com as fábricas inteligentes, diversas mudanças ocorrerão na forma em que os produtos serão

(25)

manu-Capítulo 1. Introdução 25

faturados, causando impactos em diversos setores do mercado [12], como visualizado na Figura 1.1.

Figura 1.1 – Processo de evolução das revoluções industriais.

A quarta Revolução Industrial é uma realidade que se torna possível devido aos avanços tecnológicos da última década, aliados às tecnologias em desenvolvimento nos campos de tecnologia da informação e engenharia. A internet das coisas (Internet of Things - IoT) é um dos pontos principais e consiste na conexão em rede de objetos físicos, ambientes, veículos e máquinas por meio de dispositivos eletrônicos embarca-dos que permitem a coleta e troca de daembarca-dos. Outro ponto é o Digital Data/Image/Video Processing, base desse trabalho, que fazem todo o reconhecimento dos padrões e dados. E por último, o big data analytics são estruturas de dados muito extensas e complexas que utilizam novas abordagens para a captura, análise e gerenciamento de informações [12].

(26)

Capítulo 1. Introdução 26

1.3

Objetivos

O principal objetivo é avaliar e melhorar as técnicas apresentadas nos softwares comerciais de processamento digital de imagem/vídeo, desenvolvendo duas aplica-ções idênticas em funcionalidades, mas diferentes em seus métodos de usabilidade, instalação e algoritmo de desenvolvimento, a primeira aplicação é web (JavaScript) e a outra, instalável (Java), como software computacional.

Nessas aplicações uma nova técnica computacional será inserida no contexto de programação, na qual, amplia a visão do processo, em termos de qualidade, tempo de processamento, nível dos pixels, distribuição no histograma e armazenamento. Esse novo modelo de algoritmo será capaz de fazer a varredura de todos os pixels presentes em uma imagem/quadro e avaliar todas as características presentes, podendo corrigir todos os pixels de vizinhança errados ou contendo informação distorcida do estado real nas camadas de cor e, com isso, efetuar filtragens e processamentos com alta precisão e qualidade.

Como objetivo secundário, a criação de um repositório online e disponibilidade parcial dos algoritmos desenvolvidos para estudo de alunos, cientistas e profissionais da área, construindo uma rede de aprendizado e fechando um ciclo, no qual, o diálogo permanecerá presente, com ideias, dúvidas e assuntos relevantes para o contexto.

Todo esse estudo e desenvolvimento se deu início devido ao alto consumo de tempo e processamento nas imagens/quadros digitais utilizados em pequenos proces-sos computacionais, mas que podem, por consequência, unir em procesproces-sos complexos de filtragem, armazenamento ou manipulação de uma zona em certa imagem/quadro e os softwares comerciais não suprem o mercado com eficiência, qualidade e compres-são do processamento digital de imagem/vídeo.

(27)

Capítulo 1. Introdução 27

1.4

Estrutura do Trabalho

Capítulo 1: Introdução, apresenta o que significa o termo “imagem” e a visão dos filósofos durante o passar dos anos, as motivações para o desenvolvimento da pesquisa, os objetivos e a organização dos capítulos.

Capítulo 2: Revisão da Literatura, apresenta uma revisão sobre o que é proces-samento digital de imagem, como subtópicos, explicações sobre a natureza da luz, o olho humano, modelos cromáticos, como se forma a imagem digital e sua importância, amostragem e quantização.

Capítulo 3: Metodologia, apresenta sobre as aplicações desenvolvidas, JavaScript e Java, como subtópicos, o processamento digital de vídeo, o processo de filtragem, histograma e high dynamic range.

Capítulo 4: Algoritmo/Equações, apresenta as técnicas desenvolvidas, no qual, é uma união de vários fatores divididos em tópicos e explicado passo a passo sobre os algoritmos e equações das planilhas de pixels, partial differential equation, high dynamic range, dos processadores (Central Process Unit, Graphics Processing Unit e threads) e do armazenamento usando discrete cosine transform.

Capítulo 5: Resultados, apresenta os resultados gerados durante todos os testes executados, levando em consideração a qualidade, histograma, tempo de processa-mento e nível dos pixels.

Capítulo 6: Conclusão, apresenta a conclusão obtida durante a pesquisa, fa-zendo uma síntese dos resultados.

Capítulo 7: Trabalhos Futuros, apresenta as próximas pesquisas relacionadas ao Doutorado, voltadas para animações 3Ds (três dimensões) inteligentes e com alto desempenho no processamento dos dados.

(28)

28

2 Revisão da Literatura

2.1

Processamento Digital de Imagem

Não existe tarefa simples em termos de processamento digital de imagem (PDI), na realidade envolve um conjunto de tarefas interconectadas, como visualizado na Fi-gura 2.1. A primeira etapa do processo é a captura da imagem, a qual, normalmente, corresponde à iluminação que é refletida na superfície dos objetos. Logo após, é digi-talizada, que é a forma apropriada para tratamento computacional, podendo também ser capturada por sensor e salva na forma digital, diretamente.

Figura 2.1 – Modelo de hierarquia das etapas do PDI (baseado em [13]).

Qualquer imagem gerada é limitada por um plano retangular, no qual, cada po-sição nesse plano contém a informação de cor relativa, ou seja, a imagem neste caso é um sinal de cor 2D contínuo, onde o domínio é o plano e o contradomínio é o espaço de cor. A imagem contínua é modelada matematicamente por Equação 2.1, sendo x e y números reais, limitados ao intervalo de 0 a X, e de 0 a Y, respectivamente.

(29)

Capítulo 2. Revisão da Literatura 29

imagem(x, y) ↔ pixel(x, y) (2.1)

Já a imagem digital é obtida a partir de uma amostragem ou de uma quantização, modelada matematicamente por Equação 2.1, onde x e y são números inteiros. A partir disso, é gerado uma matriz de valores, no qual, cada valor representa o pixel da cor. Com isso, se faz um pré-processamento, o qual envolve passos como a filtragem de ruídos introduzidos pelos sensores e a correção de distorções geométricas causadas pelo sensor [13].

Próximo passo é fazer uma análise e identificação de objetos, para isso, caracte-rísticas ou atributos das imagens precisam ser extraídos, tais como as bordas, texturas, movimentos e vizinhanças [14]. Em seguida, objetos precisam ser separados do plano de fundo (background), o que significa que é necessário identificar, através de um pro-cesso de segmentação, características constantes e descontinuidades. Para essa tarefa, são necessárias técnicas mais avançadas, como regularização, modelagem, restauração e reconstrução [13].

A partir dos objetos obtidos pelo processo, resultante da segmentação, pode-se utilizar operadores morfológicos para analisar, modificar e extrair informações, as quais podem ser úteis na sua classificação geral [15].

2.1.1

Natureza da Luz

Como explicado na seção 2.1, a luz é necessária para que uma imagem possa existir, ela apresenta um comportamento ondulatório caracterizado por sua frequência ( f ) e comprimento de onda (λ). A faixa do espectro eletromagnético à qual o sistema visual humano é sensível se estende aproximadamente de 400nm a 770nm e denomina-se luz visível, como visualizado na Figura 2.2.

A radiação eletromagnética com comprimentos de onda fora da faixa de luz vi-sível não é percebida pelo olho humano. Dentro dessa faixa, o olho percebe compri-mentos de onda diferentes como cores distintas, sendo que fontes de radiação com um

(30)

Capítulo 2. Revisão da Literatura 30

único comprimento de onda denominam-se monocromáticas [16].

Figura 2.2 – Espectro eletromagnético (adaptado de [16]).

2.1.2

Olho Humano

Quando se olha na direção de um objeto, a imagem atravessa a córnea e chega à íris, que regula a quantidade de luz recebida por meio de uma abertura chamada pupila. Quanto maior a pupila, mais luz entra no olho. Passada a pupila, a imagem chega ao cristalino e é focada sobre a retina [16], como visualizado na Figura 2.3.

A lente do olho produz uma imagem invertida, e o cérebro a converte para a po-sição correta. Na retina, mais de cem milhões de células fotorreceptoras transformam as ondas luminosas em impulsos eletroquímicos, que são decodificados pelo cérebro.

Inspirado no funcionamento do olho, o homem criou a máquina fotográfica. Por-tanto, nos olhos a córnea funciona como a lente da câmera, permitindo a entrada de luz no olho e a formação da imagem na retina. Localizada na parte interna do olho, a retina seria o filme fotográfico, onde a imagem se reproduz. A pupila funciona como o diafragma da máquina, controlando a quantidade de luz que entra no olho. Ou seja, em ambientes com muita luz a pupila se fecha e em locais escuros a pupila se dilata com o intuito de captar uma quantidade de luz suficiente para formar a imagem [10].

A focalização apropriada da cena implica a formação nítida de sua imagem in-vertida sobre a retina. A retina contém dois tipos de fotos sensores, os cones (sensíveis

(31)

Capítulo 2. Revisão da Literatura 31

a cores e com alta resolução, operantes apenas em cenas suficientemente iluminadas) e os bastonetes (insensíveis a cores, com baixa resolução, operantes em condições de baixa luminosidade), encarregados do processo de conversão da energia luminosa em impulsos elétricos que serão transmitidos ao cérebro, para posterior interpretação [17].

Figura 2.3 – Visão geral do olho humano (adaptado de [16]).

A visualização de um objeto consiste do posicionamento do olho pela estrutura nervosa e muscular que o controla, implicando a projeção da imagem do objeto so-bre a fóvea [10]. Em essência, toda câmera fotográfica é uma câmera escura, projetada para reter a energia luminosa proveniente de uma cena, produzindo uma imagem ade-quada. Trata-se de uma extensão do olho humano, o qual compõe imagens a partir de excitação luminosa e as transmite ao cérebro sob a forma de impulsos bioelétricos. A pálpebra do olho tem uma função análoga àquela do obturador da câmara [17].

(32)

Capítulo 2. Revisão da Literatura 32

O diafragma (ou íris, no olho) de uma câmera funciona analogamente à íris do olho humano, controlando a quantidade de luz que atravessa a lente. A lente da câ-mera é análoga ao conjunto formado pelo cristalino do olho, a córnea e, em menor grau, o humor aquoso e o humor vítreo. Ambos têm o propósito de focalizar a luz, de modo a tornar nítidas as imagens que se formarão invertidas no plano focal [10]. A diferença é que o cristalino se deforma para focalizar a imagem, enquanto a lente é dotada de um mecanismo manual ou automático para o ajuste da distância focal, à exceção das lentes das câmeras de foco fixo, projetadas para dar foco a partir de uma distância mínima (usualmente a partir de 1,5m). A coroide funciona como a câmera es-cura de uma câmera fotográfica e a retina corresponde ao sensor da câmera fotográfica (componente digital ou filme) [16], como visualizado Figura 2.4.

(33)

Capítulo 2. Revisão da Literatura 33

2.1.3

Modelos Cromáticos

Todo e qualquer objeto que emite luz visível é percebido em função da soma das cores espectrais emitidas, conhecido como processo aditivo, que pode ser interpretado como uma combinação variável de componentes monocromáticas nas faixas espectrais associadas às sensações das cores primárias. Com isso, foi criado o modelo cromático RGB (R - red, G - green e B - blue) [10] [18], como visualizado na Figura 2.5, no qual a Comissão Internacional de Iluminação (Comission Internationale de l’Eclairage - CIE), estabeleceu o comprimento de onda das cores primárias, reconhecida pela Organiza-ção Internacional de NormalizaOrganiza-ção (International Organization for Standardization - ISO) e pela Comissão Eletrotécnica Internacional (International Electrotechnical Commission -IEC) [19], como visualizado na Tabela 2.1.

Figura 2.5 – Modelo cromático RGB.

Tabela 2.1 – Comprimento de onda das cores primárias RGB (baseado em [18]).

Sigla Primária λ (nm)

R Vermelho 700,0

G Verde 546,1

B Azul 435,8

O histograma (explicado na subseção 3.1.3) do modelo cromático RGB, identifica as porções de cores por cada camada, como visualizado na Figura 2.6. Com isso, é im-portante conhecer sobre as três cores primárias RGB, a primeira é o vermelho, que do latim vermiculos, é uma das sete cores do espectro solar sendo denominada fundamen-tal ou primitiva. A verde, que do latim viridis, no qual, se interpõe entre o céu e o sol. O azul, tem sua origem no árabe e no persa lázúrd e, é a cor do céu sem nuvens, dando a sensação para o infinito [14].

(34)

Capítulo 2. Revisão da Literatura 34

Figura 2.6 – Histograma do modelo cromático RGB.

A combinação dessas cores, duas a duas e em igual intensidade, produz as cores secundárias, conhecidas como modelo cromático CMY (C cyan, M magenta e Y -yellow) [16], como visualizado na Figura 2.7. As cores primárias no modelo CMY são definidas em função da absorção de uma cor primária da luz branca incidente e da reflexão das demais componentes, ou seja, as cores primárias são as secundárias do modelo RGB, como visualizado na Tabela 2.2.

Figura 2.7 – Modelo cromático CMY.

Tabela 2.2 – Combinação de primárias nos modelos RGB e CMY (baseado em [16]). Modelo Combinação de Primárias Secundária Resultante

RGB Vermelho + Verde Amarelo

RGB Vermelho + Azul Magenta

RGB Verde + Azul Ciano

CMY Ciano + Magenta Azul

CMY Magenta + Amarelo Vermelho

(35)

Capítulo 2. Revisão da Literatura 35

Em vídeo, a formação dos quadros se dá por emissão de radiação eletromagné-tica visível, em um processo que integra, em diferentes proporções, as cores vermelha, verde e azul. Há vários outros modelos cromáticos nos quais a caracterização da cor não se dá conforme o comportamento fisiológico da retina humana, mas sim em função de outros atributos de percepção cromática empregados por seres humanos [14]. É im-portante notar, que as cores podem ser representadas por valores decimais e inteiros, como visualizado na Tabela 2.3.

Tabela 2.3 – Representação das cores por valores decimais e inteiros (baseado em [14]).

Cor Valor Decimal Valor Inteiro

Preto (0, 0, 0) (0, 0, 0) Vermelho (1, 0, 0) (255, 0, 0) Verde (0, 1, 0) (0, 255, 0) Azul (0, 0, 1) (0, 0, 255) Branco (1, 1, 1) (255, 255, 255) Amarelo (1, 1, 0) (255, 255, 0) Ciano (0, 1, 1) (0, 255, 255) Magenta (1, 0, 1) (255, 0, 255)

2.1.4

Imagem Digital

Uma imagem monocromática é uma função bidimensional contínua f(x, y), na qual x e y são coordenadas espaciais e o valor de f em qualquer ponto(x, y)é proporci-onal à intensidade luminosa (brilho ou nível de cinza) no ponto considerado. Como os computadores e sensores não são capazes de processar imagens contínuas, mas apenas arrays de números digitais, é necessário representar imagens como arranjos bidimensi-onais de pontos [13] [17].

Cada ponto na grade bidimensional que representa a imagem digital é denomi-nado elemento de imagem ou pixel. A matriz é a notação usual para a localização de um pixel no arranjo de uma imagem bidimensional, como visualizado na Figura 2.8. O primeiro índice é a posição da linha (m), na qual o pixel se encontra, enquanto o se-gundo é a posição da coluna (n). Se a imagem digital contiver M linhas e N colunas, o índice m varia de 0 a M−1, enquanto n varia de 0 a N−1.

(36)

Capítulo 2. Revisão da Literatura 36

Figura 2.8 – Representação de uma imagem/quadro digital bidimensional.

A intensidade luminosa no ponto(x, y)pode ser decomposta em i componente de iluminação (i(x, y)), associada à quantidade de luz incidente sobre o ponto(x, y)e a componente de reflectância r(x, y), associada à quantidade de luz refletida pelo ponto (x, y), apresentado na Equação 2.2.

f(x, y) = i(x, y)r(x, y) (2.2)

Onde 0 < i(x, y) < ∞ e 0 < r(x, y) < 1, sendo i(x, y) dependente das carac-terísticas da fonte de iluminação, enquanto r(x, y) das características das superfícies dos objetos. Em uma imagem digital colorida no sistema RGB, um pixel pode ser visto como um vetor cujas componentes representam as intensidades de vermelho, verde e azul de sua cor [20]. A imagem colorida pode ser vista como a composição de três imagens monocromáticas, como apresentado na Equação 2.3.

f(x, y) = fR(x, y)fG(x, y)fB(x, y) (2.3)

No qual, fR(x, y), fG(x, y) e fB(x, y)representam as intensidades luminosas das

componentes RGB no ponto(x, y), como visualizado na Figura 2.9 (Exemplo 1) e na Fi-gura 2.10 (Exemplo 2). Outra forma de representar a imagem decomposta em camadas RGB, é visualizado na Figura 2.11 (Exemplo 3), que separa as cores dos pixels naquele exato ponto e não sua conversão para a escala de cinzas.

(37)

Capítulo 2. Revisão da Literatura 37

Figura 2.9 – Representação em camada de uma imagem/quadro digital RGB -Exemplo 1.

Figura 2.10 – Representação em camada de uma imagem/quadro digital RGB -Exemplo 2.

(38)

Capítulo 2. Revisão da Literatura 38

Figura 2.11 – Representação em camada de uma imagem/quadro digital RGB -Exemplo 3.

2.1.5

Amostragem e Quantização

Para que uma imagem possa ser armazenada ou processada, é necessário fazer a discretização em nível de coordenadas espaciais e de valores de brilho. O processo de discretização das coordenadas espaciais é a amostragem, enquanto a discretização dos valores de brilho é a quantização. No caso, ambos os processos são uniformes, o que força o processo da amostragem da imagem f(x, y)ser em pontos igualmente es-paçados, distribuídos na forma de uma matriz MxN, sendo cada elemento uma apro-ximação do nível de cinza da imagem no ponto amostrado para um valor no conjunto 0, 1, ..., L−1 [21], como apresentado na Equação 2.4.

F ≈          f(0, 0) f(0, 1) · · · f(0, N−1) f(1, 0) f(1, 1) · · · f(1, N−1) .. . ... ... ... f(0, M) f(1, M) · · · f(M−1, N−1)          (2.4)

O limite inferior (0) da faixa de níveis de cinza de um pixel é associado ao preto, e o limite superior (L−1) ao branco, pixels com valores entre 0 e L−1 serão visualizados em diferentes tons de cinza, os quais serão tão mais escuros quanto mais próximo de zero forem seus valores. Uma vez que os processos de amostragem e quantização

(39)

Capítulo 2. Revisão da Literatura 39

implicam na eliminação de informação de uma imagem analógica, seu equivalente digital é uma aproximação, no qual, a qualidade depende essencialmente dos valores de M, N e L [20]. Com isso, o número de valores de brilho (L) é associado a potências de 2, como apresentado na Equação 2.5.

L =2l (2.5)

Onde l ∈ ℵ (os números Aleph (ℵ) são uma sequência de números usados para representar os tamanhos de conjuntos infinitos [20]), assim sendo, o número de bits necessário para representar uma imagem digital de dimensões MxN é apresentado na Equação 2.6.

b =MNl (2.6)

Com o uso da Equação 2.6, o aumento de M, N e l implica na elevação da quali-dade da imagem, o aumento do número de bits necessários para a codificação binária da imagem e o aumento do volume de dados a serem armazenados, processados e transmitidos [20]. O número de bytes empregado na representação de uma imagem di-gital monocromática para alguns valores típicos de M e N, com L igual a 2, 32 e 256 níveis de cinza, são visualizados na Tabela 2.4.

Tabela 2.4 – Número de bytes para uma imagem monocromática (baseado em [21]).

M N L=2 L =32 L=256

480 640 38400 192000 307200

600 800 60000 300000 480000

768 1024 98304 491520 786432

1200 1600 240000 1200000 1920000

Para entender o número de amostras e de níveis de cinza necessários para a representação de uma imagem digital de qualidade, é preciso saber as características da imagem, como suas dimensões e complexidade da aplicação (JavaScript e Java) à qual se destina. A influência dos parâmetros de digitalização na qualidade visual de uma imagem monocromática é visualizado na Figura 2.12.

(40)

Capítulo 2. Revisão da Literatura 40

Figura 2.12 – Influência da variação do número de amostras e de níveis de quantização na qualidade de uma imagem/quadro digital: (A) 200x200

pixels/256 níveis; (B) 100x100 pixels/256 níveis; (C) 25x25 pixels/256 níveis; e (D) 200x200 pixels/2 níveis.

O número de cores que um pixel pode assumir em uma imagem RGB é LRLGLB.

Usando logaritmo, lR = log2(LR), lG =log2(LG)e lB =log2(LB), o número de bits por

pixel necessários para representar as cores será igual a lR+lG+lB e o número de bits

necessário para representar uma imagem digital de dimensões MxN é apresentado na Equação 2.7.

b= MN(lR+lG+lB) (2.7)

O número de bytes empregado na representação de uma imagem digital colorida para alguns valores típicos de M e N, com L igual a 2, 32 e 256 níveis de cinza, são visualizados na Tabela 2.5.

Tabela 2.5 – Número de bytes para uma imagem colorida (baseado em [21]).

M N L=2 L =32 L=256

480 640 115200 576000 921600

600 800 180000 900000 1440000

768 1024 294912 1474560 2359296

(41)

41

3 Metodologia

3.1

Aplicações: JavaScript e Java

As aplicações (web e local) tem exatamente as mesmas funcionalidades imple-mentadas e seguem a mesma ordem de execução do processamento digital de ima-gem/vídeo. Primeiramente, a imagem/quadro é capturada por uma câmera/sensor ou escolhida do próprio sistema, após isso, faz a análise do seu tamanho para poder gerar a planilha de pixels (explicada na seção 4.1) e gerar o histograma RGB (explicada na subseção 3.1.3), como visualizado na Figura 3.1.

(42)

Capítulo 3. Metodologia 42

Após isso, a imagem/quadro está padronizada, podendo escolher entre efetuar a filtragem com Partial Differential Equation (PDE) (explicado na seção 4.2) ou gerar o High Dynamic Range (HDR) (explicado na seção 4.3). Todo o processamento é feito utilizando de threads (explicado na seção 4.4) e a imagem/quadro resultante armazenada usando a técnica Discrete Cosine Transform (DCT) (explicada na seção 4.5), como visualizado na Figura 3.2.

Figura 3.2 – Escolha dos próximos passos nas aplicações (JavaScript e Java).

As aplicações JavaScript [22] e Java [23] foram criadas somente para gerar os re-sultados das técnicas criadas durante a pesquisa.

(43)

Capítulo 3. Metodologia 43

A estrutura da aplicação web, visualizada na Figura 3.3, foi desenvolvida utili-zando vários conceitos e tecnologias do que há de mais moderno no mercado. Para de-senvolver o website e sua estrutura base, foi utilizado a linguagem de marcação HTML (Hypertext Markup Language) e o CSS (Cascading Style Sheets) que é uma linguagem de folha de estilos, a qual, tem a função de tornar uma página apresentável na web, relaci-onada diretamente com o design e aparência [24].

Figura 3.3 – Estrutura da aplicação web (JavaScript).

O sistema precisa ser padronizado e visualizado em todo e qualquer tamanho de tela, para isso foi um implementado o Responsive Web Design (RWD), que é uma abor-dagem para tornar as páginas da web renderizadas em uma variedade de dispositivos

(44)

Capítulo 3. Metodologia 44

e tamanhos de janelas ou telas. Na estrutura do CSS, foi utilizado quatro modelos de framework/bibliotecas, que é uma abstração que une códigos comuns, provendo uma funcionalidade genérica, mas pode atingir uma funcionalidade específica, por configu-ração, durante a programação da aplicação.

O Foundation, fornece grade responsiva, componentes de interface HTML e CSS [25], modelos de código, para formulários, botões, navegação e outros elementos de interface. O Bootstrap, melhora a experiência do usuário em um site amigável e respon-sivo. O Materialize CSS, utiliza bibliotecas que se destinam a facilitar as estilizações da página web. O último, o Semantic UI, é uma biblioteca de componentes de User Interface (UI).

Mas o que resume toda a aplicação web é a linguagem de programação inter-pretada JavaScript, é com ela que todas as funcionalidades são criadas. Na estrutura do JavaScript, foi utilizado três modelos de framework/bibliotecas. O Angular, auxilia na execução de Single-Page Applications (SPA), no qual, consiste de uma única página web com o objetivo de fornecer uma experiência de usuário melhor, construído sob o padrão Model-View-View-Model (MVVM). O jQuery [26] é uma biblioteca que interage com o HTML, desenvolvida para simplificar os scripts interpretados no navegador do cliente (client-side). O último, o React [27], é o mais eficiente em criar as User Interface (UI).

O Node [28] foi escolhido como um interpretador de código JavaScript, focado em migrar o JavaScript do lado do cliente para servidores, ou seja, seu objetivo é criar apli-cações de alta escalabilidade (como um servidor web), com códigos capazes de mani-pular dezenas de milhares de conexões simultâneas, numa única máquina física. Sendo assim, o NPM (Node Package Manager) foi escolhido para o gerenciamento e execução de tarefas, ele é um gerenciador de pacotes padrão para o ambiente de execução JavaS-cript/Node.

Para testes nas linhas de código e de execução, foram escolhidos o Mocha e o Jest. O Mocha é um modelo de teste JavaScript/Node, com suporte a navegador, teste assíncrono, relatórios de cobertura de teste e uso de qualquer biblioteca de asserção. O

(45)

Capítulo 3. Metodologia 45

Jest é usado para testar todo o código JavaScript, incluindo React.

Por fim, o Banco de Dados (BD) escolhido foi o diskDB, que é um banco de da-dos JSON (JavaScript Object Notation), baseado em disco leve com uma API (Application Programming Interface) do tipo MongoDB (software de banco de dados orientado a do-cumentos livre) para Node. O JSON [29] é um formato compacto, de padrão aberto independente, de troca de dados simples e rápida entre sistemas.

A estrutura da aplicação local, diferente da aplicação web, foi utilizado somente Java, que é uma linguagem de Programação Orientada a Objetos (POO). Como fra-mework/bibliotecas, foi utilizado o Java 2DTM e o VLCj (juntamente com a JNA (Java Native Access)). Dentro do Java 2DTM, as classes de imagem de modo imediato e as in-terfaces fornecem técnicas para lidar com imagens mapeadas por pixel cujos dados são armazenados na memória, além de, suportar o acesso a dados de imagem em vários formatos de armazenamento e a manipulação de dados de imagem por meio de vários tipos de operações de filtragem, sendo o modelo básico do processamento digital de imagem visualizado na Figura 3.4. O VLCj é uma biblioteca de vídeo com vários tipos de formato de áudio/vídeo.

Figura 3.4 – Modelo básico do PDI (Java).

Para o Java funcionar corretamente ele precisa do seu JDK (Java Development Kit), que é um conjunto de utilitários que permitem criar sistemas de software para a plata-forma Java, e o JRE (Java Runtime Environment), que é utilizado para executar as aplica-ções da plataforma Java.

(46)

Capítulo 3. Metodologia 46

3.1.1

Vídeo

Nas aplicações desenvolvidas (web e local), o processamento digital de vídeo (PDV) é uma das técnicas inserida ao sistema. Como por trás de toda a ação e do mo-vimento que é visto em qualquer tipo de vídeo, um algoritmo transforma o vídeo em várias imagens (quadros), o cérebro interpreta como movimento esses vários quadros consecutivos em um curto período de tempo.

Durante a obtenção e/ou transmissão do vídeo, os ruídos aparecem, compro-metendo o desempenho dos sensores de captura, por fatores climáticos, vida útil dos equipamentos e interferências nos canais de transmissão, com isso, existem dois mode-los de ruídos em processamento digital de imagem/vídeo (PDI/V), o ruído aditivo e o multiplicativo. No caso, o aditivo é um dos mais usados na prática, tanto no domínio espacial quanto no domínio da frequência [30], explicados na subseção 3.1.2.

O ruído aditivo simulado está próximo do real, ou seja, modela a soma de várias pequenas fontes de ruído. A função que representa a função de densidade de probabi-lidade gaussiana de uma variável aleatória x é dada na Equação 3.1, onde x representa o nível de cinza presente por filtragem, µ é a média dos valores de cinza e α é seu desvio padrão [30]. ρ(x) = √ 1 2πα2e −(x−µ)2 2α2 (3.1) Parameter= RParameter−EParameter RParameter (3.2)

Se aplicar na Equação 3.1, por exemplo, o filtro blur (esse filtro aplicará desfoque gaussiano às imagens), o gráfico apresentado na Figura 3.5, comprova a relação do Real Parameter (RParameter) e o Estimated Parameter (EParameter) em uma matriz imagem, executando cálculos dentro de um limiar (valor 0 para pixels com ruídos).

Com a Figura 3.5 é possível analisar os valores reais e os estimados de uma cap-tura de imagem analisada por pixels com ruídos. Desse modo, a aplicação extrai as informações específicas com uma taxa de Relative Error (RError) grande, dada na

(47)

Equa-Capítulo 3. Metodologia 47

ção 3.2, como apresentado na Figura 3.6.

Figura 3.5 – Relação entre RParameter e o EParameter.

(48)

Capítulo 3. Metodologia 48

Para as taxas de RError superiores a 1, a aplicação fica vulnerável e é necessá-rio corrigir os ruídos encontrados no processo de captura. Para a correção é aplicado uma filtragem inversa antes da visualização do usuário, esse é um método simples de restauração que aproxima o vídeo a um modelo sem ruídos, com uma taxa de Relative Error (RError) próxima de zero [30], como apresentado na Figura 3.7.

Figura 3.7 – Relação entre o Parameter e o RError com correção.

Para chegar ao RError próximo de zero foi aplicado a Equação 3.3. A aplicação da filtragem inversa tem como resultado a aproximação da imagem original multipli-cando valor a valor da matriz de ruído G(u,v) por H(1u,v), onde este representa a inver-são de cada valor da matriz e não a inverinver-são da matriz por inteiro [30]. Após aplicação da filtragem inversa, os filtros podem ser aplicados.

F(u, v) = 1

H(u, v)G(u, v) (3.3)

O Algoritmo 3.1 e Algoritmo 3.2, foram criados com base no FFmpeg, que é uma biblioteca gratuita para manusear dados multimídia. O FFmpeg foi escrito usando a lin-guagem de programação C, e encontra-se disponível para várias plataformas, sistemas operacionais e linguagens de programação [31].

(49)

Capítulo 3. Metodologia 49

Algorithm 3.1Implementação em Java para conversão.

public byte[] criarImagemDoVideo(byte[] bytes) (throwsIOException { InputStream inputStream = (newByteArrayInputStream(bytes); Java2DFrameConverter converter = (newJava2DFrameConverter();

FFmpegFrameGrabber grabber = (newFFmpegFrameGrabber(inputStream); grabber.setImageWidth(x);

grabber.setImageHeight(y); grabber.start();

Frame frame = grabber.grabImage();

BufferedImage grabbedImage = converter.convert(frame); ByteArrayOutputStream byteArrayOutputStream =

(newByteArrayOutputStream();

ImageIO.write(grabbedImage, "jpg", byteArrayOutputStream); byteArrayOutputStream.flush();

byte[] imageInByte = byteArrayOutputStream.toByteArray(); byteArrayOutputStream.close();

returnimageInByte; }

Algorithm 3.2Implementação em JavaScript para conversão.

varsampleVideoData;

functionretrieveSampleVideo() {

varoReq =newXMLHttpRequest(); oReq.open("GET", "webm",true); oReq.responseType = "arraybuffer"; oReq.onload=function(oEvent) {

vararrayBuffer = oReq.response;

if(arrayBuffer) {

sampleVideoData =newUint8Array(arrayBuffer); }

}; oReq.send(null); }

functiongetDownloadLink(fileData, fileName) {

vara =document.createElement(’a’);

a.download = fileName;

varblob =newBlob([fileData]);

varsrc =window.URL.createObjectURL(blob); a.href = src;

a.textContent = ” + fileName +;

returna; }

varresult = ffmpeg_run(module); result.forEach(function(file) {

getDownloadLink(file.data, file.name); });

(50)

Capítulo 3. Metodologia 50

3.1.2

Filtros

O objetivo principal de efetuar uma filtragem na imagem/quadro é melhorar a qualidade. Isso pode ser feito, através da ampliação do seu contraste, eliminação de padrões periódicos ou aleatórios, melhoria no seu foco e acentuação de características. Existem diversos modelos de classificação para filtragem, o primeiro é o domínio ou espaço em que atuam, sendo da frequência ou espacial. Depois, se observa o tipo de frequência, se é passa baixa, passa alta ou passa faixa. A classificação em linearidade, tem a identificação de linear ou não linear. E por último, o tipo de aplicação, ou seja, se é suavização, contraste, adaptativos, globais, janelados ou locais.

3.1.2.1 Domínio da Frequência

No domínio da frequência, as técnicas fundamentadas são baseadas no teorema da convolução, explicado na subseção 3.1.2.3, que é uma das propriedades da transfor-mada de Fourier. Com isso, o processamento digital de imagem/vídeo no domínio da frequência é realizado seguindo alguns passos, no primeiro a imagem é transformada do domínio espacial para o da frequência (transformada de Fourier). Depois, são feitas operações de filtragem na imagem e realiza-se o processo inverso, onde a imagem no domínio da frequência é transformada para o domínio espacial, para que a imagem possa ser exibida e vista pelo olho humano [14], como visualizado pela Figura 3.8.

Figura 3.8 – Processamento de imagem/quadro usando Fourier (baseado em [14]).

A transformada de Fourier (desenvolvida pelo matemático francês Jean Baptiste Joseph Fourier) é uma ferramenta matemática fundamental na solução de problemas na área de processamento digital de imagem/vídeo. A utilização de suas formas dis-creta (DFT - Discrete Fourier Transform) e rápida (FFT - Fast Fourier Transform) e o enten-dimento de suas propriedades são muito importantes, já que, a mudança de domínio

(51)

Capítulo 3. Metodologia 51

do espaço para o domínio da frequência e vice-versa, ocorre através dessas transfor-madas. Na transformada de Fourier, não há perda da informação durante a mudança de domínios, apenas a informação visual da imagem está representada de uma ou-tra forma, no domínio da frequência [14]. A ou-transformada de Fourier de uma função contínua f(x)de uma variável real x é modelada matematicamente na Equação 3.4.

F(u) = Z ∞

−∞ f(x)exp[−j2πux]dx (3.4)

Onde j = √−1. A partir de F(u), pode-se obter f(x) através da transformada inversa de Fourier, representada na Equação 3.5.

f(x) = Z ∞

−∞F(u)exp[j2πux]du (3.5)

A Equação 3.4 e Equação 3.5, são chamadas de par de transformada de Fourier e podem existir se forem integráveis e se f(x) for contínua. A transformada de Fourier de uma função f(x), é uma função complexa e pode ser expressa pela soma de suas componentes, real (R) e imaginaria (I), representada na Equação 3.6.

F(u) = R(u) +jI(u) (3.6)

É usual, para obter-se o espectro de Fourier e o ângulo de fase da função f(x), expressar a Equação 3.6 na forma exponencial, como representado na Equação 3.7.

F(u) = |F(u)|e(u) (3.7)

Com isso obtêm-se o espectro de Fourier, representado na Equação 3.8.

|F(u)| = hR2(u) +I2(u)i 1 2

(52)

Capítulo 3. Metodologia 52

E o ângulo de fase, representado na Equação 3.9.

φ(u) = tan−1 I(u) R(u)



(3.9)

Além disso, pode-se obter o espectro de potência da função, elevando-se ao qua-drado, como representado na Equação 3.10.

P(u) = R2(u) +I2(u) (3.10)

A transformada de Fourier de uma função unidimensional pode ser implemen-tada para uma função bidimensional f(x, y), como representada na Equação 3.11.

F(u, v) = Z ∞

−∞ Z ∞

−∞ f(x, y)exp[−j2π(ux+vy)]dxdy (3.11)

E a partir de F(u, v), pode-se obter f(x, y) através da transformada inversa de Fourier, como representada na Equação 3.12.

f(x, y) = Z ∞

−∞

Z ∞

−∞F(u, v)exp[j2π(ux+vy)]dudv (3.12)

A transformada de Fourier bidimensional de uma função de f(x, y)é uma função complexa e pode ser expressa pela soma de componentes reais (R) e imaginárias (I), representada na Equação 3.13.

F(u, v) = R(u, v) +jI(u, v) (3.13)

Como no caso unidimensional, o espectro de Fourier (Equação 3.14), o ângulo de fase (Equação 3.15) e o espectro da potência (Equação 3.16) podem ser representados.

F(u, v) = h R2(u, v) +I2(u, v)i 1 2 (3.14)

(53)

Capítulo 3. Metodologia 53

φ(u, v) = tan−1 I(u, v) R(u, v)



(3.15)

P(u, v) = R2(u, v) +I2(u, v) (3.16)

Como o objetivo é a utilização da transformada de Fourier aplicada ao proces-samento de digital de imagem/vídeo. Uma imagem/quadro pode ser representada através de uma função bidimensional I(x, y)e esta pode ser transformada em um con-junto de frequências espaciais F(u, v). Um único ponto F(u, v), representa quanto de frequência espacial é contida pela imagem, no domínio da frequência. Ao produto F(u, v)H(u, v) (H(u, v) representa o filtro) é aplicada a inversa da transformada de Fourier para retornar ao domínio espacial, onde se tem a imagem processada I0(x, y) [14], como visualizado pela Figura 3.9.

(54)

Capítulo 3. Metodologia 54

3.1.2.1.1 Filtro Passa Baixa

A força de uma imagem/quadro, geralmente está concentrada nas componentes de baixa frequência, ou seja, as componentes de alta frequência representam pouca força da imagem/quadro. Portanto, utilizando um filtro passa baixa obtém-se uma imagem menos nítida ou suavizada, no qual, ocorre uma perda de detalhes que são os componentes de altas frequências [13].

No espectro de Fourier da Figura 3.10, é fácil perceber a presença dos ruídos representados pelas altas frequências, ou seja, as informações que estão mais afastadas da origem. Neste caso, as baixas frequências serão mantidas e as altas frequências, fora do círculo de raio r, presentes na transformada da imagem F(u, v), serão removidas.

Figura 3.10 – Resultado da filtragem passa baixa (adaptado de [13]).

Na Equação 3.17, o filtro é chamado de passa baixa ideal, já que todas as frequên-cias, dentro do círculo de raio r, são passadas sem atenuação e todas as fora do círculo são retidas completamente.

H(u, v) =      1∴ u2+v2 <r2 0∴ u2+v2 ≥r2 (3.17)

(55)

Capítulo 3. Metodologia 55

3.1.2.1.2 Filtro Passa Alta

A filtragem passa alta é uma operação contrária à filtragem passa baixa, já que, as componentes de alta frequência da transformada de Fourier não são alterados, en-quanto os de baixa frequência são removidos. Isto faz com que os detalhes finos da imagem sejam enfatizados [13], como visualizado na Figura 3.11.

Figura 3.11 – Resultado da filtragem passa alta (adaptado de [13]).

Na Equação 3.18, o filtro é chamado de passa alta ideal, já que todas as frequên-cias, fora do círculo de raio r, são passadas sem atenuação e todas as dentro do círculo são retidas completamente.

H(u, v) =      0∴ u2+v2 <r2 1∴ u2+v2 ≥r2 (3.18) 3.1.2.1.3 Filtro de Gabor

O filtro de Gabor é linear bidimensional, não variante com o deslocamento e pode ser entendido como o produto de uma função gaussiana, simétrica em relação à origem e uma função cossenoidal. Com aplicações variadas como, a segmentação de imagens, o reconhecimento de faces, o reconhecimento de assinaturas e a melhoria e identifica-ção de impressões digitais [32] [33]. Matematicamente expressa como representada na Equação 3.19.

Referências

Documentos relacionados

A pesquisa pode ser caracterizada como exploratória e experimental em uma primeira etapa (estudo piloto), na qual foram geradas hipóteses e um conjunto de observáveis, variáveis

Otto: Este filósofo e teólogo toma como base para sua definição de religião a experiência religiosa e introduz na discussão um conceito que muito vai influenciar a compreensão

No final, os EUA viram a maioria das questões que tinham de ser resolvidas no sentido da criação de um tribunal que lhe fosse aceitável serem estabelecidas em sentido oposto, pelo

Para analisar as Componentes de Gestão foram utilizadas questões referentes à forma como o visitante considera as condições da ilha no momento da realização do

Neste estudo foram estipulados os seguintes objec- tivos: (a) identifi car as dimensões do desenvolvimento vocacional (convicção vocacional, cooperação vocacio- nal,

Figure 8 shows the X-ray diffraction pattern of a well-passivated metallic powder and a partially oxidized uranium metallic powder.. Figure 7 - X-ray diffraction pattern of

The context of both regimes were very different, Velasco Alvarado govern Peru during the Cold War, while Hugo Chávez was the leader of Venezuela in the XXI century, with a