Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

38
Fundamentos de Processamento Digital de Imagens Com projetos práticos no GNU Octave By Jotacísio

Transcript of Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Page 1: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Fundamentos de Processamento Digital de Imagens

Com projetos práticos no

GNU Octave

By Jotacísio

Page 2: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Matematicamente falando, o que é uma imagem monocromática?

● É uma função de duas dimensões, f(x,y), em que x e y são coordenadas espaciais (plano), e a amplitude de f de qualquer par de coordenadas (x, y) é chamada de intensidade ou nível de cinza.

● Se temos um conjunto finito e discreto de valores para f, x e y podemos chamar uma imagem de imagem digital.

● Cada elemento que compõe a imagem chamamos de pixels, uma abreviação de picture elements.

● A nível de programação podemos dizer que uma imagem seria um vetor bidimensional, ou matriz.

Page 3: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Matematicamente falando, o que é uma imagem monocromática?

Origem

x

y

● x é a coordenada espacial da vertical

● y é a coordenada espacial da horizontal

● f(x,y) é um valor finito que define a intensidade ou nível de cinza

● f(x,y) varia de 0 a 255

f(x,y)

Page 4: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Expandindo para ver melhor os pixels, como fica?

Page 5: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Então, o que seria processamento digital de imagens?

Page 6: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

O conceito de PDI

● De forma ampla PDI abrange uma grande escala de Hardware, Software e fundamentos teóricos. Mas numa visão bem específica podemos dizer que é um conjunto de códigos algorítmicos que tem a finalidade específica de manipular uma imagem.

● Sendo assim, a entrada e saída de um programa feito para PDI sempre será uma imagem.

Page 7: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Algumas áreas que utilizam PDIRadiologia

Tomografia axial computadorizada

Radiografia torácica

Page 8: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Algumas áreas que utilizam PDIAgricultura

Milho infectado por fungoÍndice de Vegetação da Diferença Normalizada

Page 9: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Algumas áreas que utilizam PDIHardware

PCB (placa de circuito impresso)

Page 10: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Algumas áreas que utilizam PDIMeteorologia

Furacão Katrina

Page 11: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Algumas áreas que utilizam PDIJogos

MultiSample Anti-Aliasing(30% de perda de desempenho)

Page 12: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Algumas áreas que utilizam PDIJogos

Tecnologia Nvidia para melhoramento de resolução de jogos que usa o filtro gaussiano

Page 13: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Algumas áreas que utilizam PDIJogos

Tecnologia AMD para melhoramento de resolução de jogos que simula o SSAA, um tipo de antisserrilhamento.

Page 14: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais

Page 15: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais

● Adquirir ou receber uma imagem digital;

● Geralmente envolveum pré- processamento, por exemplo o redimensionamento.

Page 16: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais

● Processo de manipular uma imagem de forma que o resultado seja mais adequado que o original para uma aplicação específica;

● Baseia-se em preferências humanas subjetivas.

Page 17: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais

● Melhora visual de uma imagem cujas técnicas tendem a se basear em modelos matemáticos ou probabilísticos;

● Mais objetivo do que o realce.

Page 18: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais

● Processamento básico de cores e modelos de cores de um ambiente digital;

● A cor também é utilizada para extração de características.

Page 19: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais

● As wavelets constituem os fundamentos para representação de imagens em vários níveis de resolução;

● Compressão de dados e subdivisão da imagem de regiões menores.

Page 20: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais

● Lida com as técnicas de redução do armazenamento necessário para salvar uma imagem, ou a largura de banda necessária para transmiti-la.

Page 21: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais

● Lida com ferramentas para a extração de componentes de imagens úteis na representação da forma.

Page 22: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais

● Os procedimentos de segmentação dividem uma imagem em suas partes ou objetos constituintes;

● Aumentam as chances de sucesso para problemas que requerem a identificação individual dos objetos.

Page 23: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais

● Quase sempre partem do resultado da segmentação, correspondendo à fronteira de uma região ou aos pontos dentro dela;

● A descrição (ou seleção de características) lida com a extração de atributos que resultem em informações de interesse.

Page 24: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais

● O reconhecimento é o processo que atribui um rótulo a um objeto com base em seus descritores.

Page 25: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Passos Fundamentais● A codificação do

conhecimento sobre o problema a ser abordado;

● Na prática é uma base de dados que pode ser armazenado de um banco e consultado quando preciso.

● Ela dispensa um especialista em problemas onde é preciso fazer uma análise das imagens ao longo do processo ou no final dele.

Page 26: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Não era pra usa software livre? Então por favor, sejamos mais

práticos.

GNU Octave

Page 27: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Os famosinhos do PDI

USD 625 Livre Livre

Page 28: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Vantagens do octave

● Sintaxe de orientação matemática com poderosas ferramentas de visualização e plotagem embutidos

● Software livre, roda em GNU/Linux, macOS, BSD e Windows

● Sintaxe amplamente compatível com Matlab

● É facilmente extensível e personalizável através de funções definidas pelo usuário escritas na própria linguagem do Octave, ou usando módulos carregados dinamicamente escritos em C ++, C, Fortran ou outras linguagens.

Page 29: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Alguns comandos do terminalVariáveis

● who: Lista os nomes das variáveis.

● whos: Lista o nome e o tipo das variáveis.

● clear: Elimina todas as variáveis da área de trabalho. Para se apagar uma ou maisvariáveis utiliza-se o comando clear seguido dos nomes das variáveis separadas por espaço.

● save: Salva as variáveis em arquivo, podendo utilizá-las novamente na próxima vezque o programa for inicializado ou mesmo quando executado o comando clear.

● load: Recupera as variáveis previamente salvas em arquivo pelo comando save.

● clc: Limpa a janela de comandos.

Page 30: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Alguns comandos do terminalConcatenação de palavras

>> a=‘Duas’;

>> b=‘ ’;

>> c=‘palavras.’;

>> [a b c]

ans =

Duas palavras.

Page 31: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Alguns comandos do terminalMatrizes

>> [1,2;3,4]

ans =

1 2

3 4

>> [ans [5;6]]

ans =

1 2 3

4 5 6

Page 32: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Operadores Lógicos

Page 33: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Estruturas Condicionais

Page 34: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Estruturas Condicionais

Page 35: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Estruturas de Repetição

Page 36: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Primeiro exemplo prático1. Ler a imagem – imread

2. Exibir a imagem – imshow

3. Manipular os pixels da imagem individualmente

4. Inserir um degradê na imagem

Page 37: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Segundo exemplo prático

1. Elaborar um algoritmo que leia uma imagem e aplique a moldura conforme mostrado ao lado.

Page 38: Processamento digital de imagens com gnu octave jotacisio araujo oliveira flisol 2017 natal

Terceiro exemplo prático1. Leia a imagem Lena.jpg (im);

2. Mostre o tamanho da imagem im na janela de comando;

3. Transforme para escalas de cinza (imCinza);

4. Mostre o tamanho da imagem imCinza na janela de comando e compare osresultados;

5. Utilizando o laço de repetição “for”, aumente o valor de cada pixel de imCinzaem 40%, gerando a imagem saida1;

6. Utilizando o laço de repetição “for”, diminua o valor de cada pixel de imCinzaem 40%, gerando a imagem saida2;

7. Mostre em três janelas diferentes, com os nomes dos arquivos nos títulos dasjanelas, as imagens imCinza, saida1 e saida2;

8. Escreva as imagens imCinza, saida1 e saida2 no disco;

9. Substitua os laços “for” por atribuições diretas;

10. Conte os tempos de execuções com e sem laços de repetição e compare osresultados.