pesquisa aplicada à computação utilizando matlab® anderson vinícius alves ferreira...

52
Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira [email protected] Leonardo Vidal Batista (Tutor) [email protected] www.pet.di.ufpb.br

Upload: william-figueiroa-de-vieira

Post on 07-Apr-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Pesquisa Aplicada à Computação utilizando MatLab®

Anderson Vinícius Alves [email protected] Vidal Batista (Tutor)

[email protected]

www.pet.di.ufpb.br

Page 2: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Sumário

Imagens Digitais Monocromáticas e Coloridas

Operações com Imagens Operações Pontuais: Negativo e Controle de Brilho Operações Locais: Eliminação de Ruídos e Detecção

de Bordas MatLab®

O que é? Por que usar? A linguagem MatLab® MatLab® aplicado ao Processamento de Imagens

Page 3: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Imagens Digitais Imagens Digitais são utilizadas e aplicadas a

diversos fins, dentre eles: TV Digital; Câmeras e filmadoras digitais, scanners, celulares,

DVDs; Sistemas de teleconferência; Monitoramento da superfície terrestre e previsão

climáticas por imagens de satélites; Detecção de movimento; Diagnóstico médico: ultrassonografia, tomografia,

ressonância magnética, contagem de células, etc.; Identificação biométrica: reconhecimento de face, íris

ou impressões digitais; Controle de qualidade; Granulometria de minérios.

Page 4: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Imagens Monocromáticas

y

x

Função Im(x, y) (x, y) : coordenadas espaciais Im(x, y) : intensidade luminosa (ou brilho, ou nível de cinza)

da imagem em (x, y)

Page 5: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Imagens Monocromáticas

95...163163............

142...161161142...161161

Representação Matricial Uma imagem é uma matriz bidimensional

observada de forma pictórica Cada elemento (i, i) da matriz representa o

valor da intensidade ou brilho na imagem

Page 6: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Imagens Coloridas (Imagens RGB)

Imagem com três matrizes combinadas Banda R: matriz com os valores de intensidade

de VERMELHO na imagem; Banda G: matriz com os valores de intensidade

de VERDE na imagem; Banda B: matriz com os valores de intensidade

de AZUL na imagem;

Page 7: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Imagens Coloridas (Imagens RGB)

Banda R Banda G Banda B

Imagem RGB

Page 8: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Operações com Imagens (Pontuais) Negativo

RGB R = 255 – R; G = 255 – G; B = 255 – B;

Controle de Brilho Brilho Aditivo

Pixel_resultante = Pixel_atual + C;

Brilho Multiplicativo Pixel_resultante = Pixel_atual * C;

Page 9: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Operações com Imagens (Pontuais)

Imagem Original Negativo da Imagem

Page 10: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Operações com Imagens (Locais) O valor resultante do pixel depende dos valores atuais

dos pixels na vizinhança

i

j

Vizinhança de (i, j)

i

j

f g

Page 11: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Operações com Imagens (Locais)

Eliminação de Ruídos Filtro da Média

O valor do pixel g(i, j) é a média dos valores dos pixels de f em uma vizinhança de (i, j) contendo n pixels.

Page 12: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Operações com Imagens (Locais) Detecção de Bordas

Gradiente de Prewitt O valor do pixel g(i, j) é uma aproximação discreta do

módulo do vetor gradiente nas coordenadas (i, j) da imagem f de entrada

Page 13: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Operações com Imagens (Locais)

Page 14: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

MatLab®

Page 15: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

O que é MatLab®?

MatLab® (MATrix LABoratory)

Linguagem de programação de alta performance voltada à computação técnica

Ambiente de programação, visualização e computação, extremamente fácil de usar e muito intuitivo – problemas e soluções são expressos em uma notação matemática familiar

Page 16: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Por que usar o MatLab®?

Facilidade e rapidez na prototipação de aplicativos;

É de rápido aprendizado, possuindo uma vasta documentação;

Enorme biblioteca de funções para processamento de imagens;

Muitas ferramentas para visualização; Muito utilizado no ensino e pesquisa em

indústrias e universidades.

Page 17: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

A linguagem MatLab®

Linguagem de alto nível baseada em MATRIZES, com instruções de controle de fluxo, funções, estrutura de dados, entrada/saída, e características de POO

Possui uma vasta coleção de algoritmos computacionais para cálculos de funções elementares (soma, seno, cosseno, aritmética de números complexos) até as mais sofisticadas (inversão de matrizes, autovetores de matrizes, funções de Bessel, transformada rápida de Fourier), como também uma extensa gama de funções relacionadas ao processamento de sinais

Page 18: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

A Linguagem MatLab®

Tudo (TUDO MESMO) no MatLab® é uma MATRIZ!

É uma linguagem interpretada (não é necessário compilar o código)

Não é necessário: Declarar variáveis (e suas dimensões) Alocar memória e usar ponteiros

Os programas podem ser depurados passo a passo, com acesso às suas variáveis, funções, etc.

Page 19: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

A Linguagem MatLab®

O COMANDO MAIS IMPORTANTE

Fornece ajuda para qualquer outro comando.

Outro comando também importante é o lookfor, que procura entre todas as funções do MatLab® a palavra-chave especificada.

HELP

Page 20: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

A Linguagem MatLab®

Comando HELP

Comando LOOKFOR

Page 21: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

A Linguagem MatLab®

Tipos de Dados

Page 22: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

A Linguagem MatLab®

Operadores Aritméticos

Page 23: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

A Linguagem MatLab®

Operadores Relacionais e Lógicos

Page 24: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

A Linguagem MatLab®

Um exemplo simples:a = 1

while (length(a) < 10),

a = [0 a] + [a 0]

end;

a = 1a = 1 1a = 1 2 1a = 1 3 3 1a = 1 4 6 4 1a = 1 5 10 10 5 1a = 1 6 15 20 15 6 1a = 1 7 21 35 35 21 7 1a = 1 8 28 56 70 56 28 8 1a = 1 9 36 84 126 126 84 36 9 1

Gera o triângulo de Pascal:

Page 25: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

A Linguagem MatLab®

Outro exemplo simples (1):t = 0:pi/100:2*pi;

y = sin(t);

plot(t,y);

Page 26: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

A Linguagem MatLab®

Outro exemplo simples (2):t = 0:pi/100:2*pi;

y = sin(t);

plot(t,y)

TUDO NO MATLAB É UMA MATRIZ!Lembrem-se

Cria uma matriz 1 x 201:

Cria outra matriz 1 x 201 (o resultado):

Plota o resultado versus a primeira matriz!

Page 27: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Matrizes

Qualquer dado no MatLab® é armazenado como uma matriz Um único número é, na verdade, uma matriz

1x1 Qualquer variável pode receber qualquer

matrizLinhas e Colunas sempre têm indexação

iniciada por “1” Elementos individuais são referenciados

(acessados) pela linha e pela coluna

Page 28: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Matrizes

Mat

riz

6 x

10Se “m” é esta matriz, então:m(5,4) = 19 (linha, coluna)

No Matlab, as linhas e colunas são numeradas a partir de “1”!

Page 29: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Matrizes

Construindo matrizes com “[ ]”: A = [2 7 4]

A = [2; 7; 4]

A = [2 7 4; 3 8 9]

B = [ A A ]

2 7 4

274

2 7 43 8 9

?

Page 30: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Matrizes

Construindo matrizes com “[ ]”: A = [2 7 4]

A = [2; 7; 4]

A = [2 7 4; 3 8 9]

B = [ A A ]

2 7 4

274

2 7 43 8 9

2 7 43 8 9

2 7 43 8 9

Page 31: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Matrizes

Operando com matrizes: Em várias linguagens deve-se escrever laços (loops)

para trabalhar com os elementos de uma estrutura de dados (um vetor, por exemplo).

No Matlab, laços podem (e DEVEM) ser evitados. Por exemplo,

a = [4 5 1 ; 3 6 8] + 1 => a = [5 6 2 ; 4 7 9]

O número “1” foi adicionado a cada um dos elementos da matriz “a”

Page 32: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Matrizes

Funções de operação com matrizes Multiplicação matricial e multiplicação ponto a ponto

Page 33: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Matrizes

Funções de operação com matrizes eye – Matriz Identidade ones – Cria uma matriz de “1s” zeros – Cria uma matriz de “0s” find – Localização de valores size – Dimensão de matrizes : (dois pontos) – Vetor regularmente espaçado rand – Cria uma matriz de números

randômicos uniformemente distribuídos cat – Concatena matrizes

Page 34: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Matrizes

Funções de operação com vetor (matriz-linha) sum – Soma dos elementos prod – Produto dos elementos sort – Ordena os elementos em ordem ascendente cumsum – Soma cumulativa cumprod – Produto cumulativo max – Máximos elementos de um vetor min – Mínimos elementos de um vetor mean – Média ou valor médio de vetores

Page 35: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Matrizes

Dimensões

Page 36: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Matrizes

Uma matriz pode ser indexada através de outra matriz, de tal maneira que seja produzido um subconjunto dos seus elementos: a = [100 200 300 400 500 600 700] b = [2 4 7] c = a(b)

200 400 700

Page 37: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Matrizes

Para obter uma subseção de uma matriz, pode-se utilizar a matriz-índice a partir do operador “:” (dois pontos): a(2:5)

Funciona também em duas dimensões c(2:3, 1:2), por exemplo, produz uma

submatriz 2 x 2.

200 300 400 500

Page 38: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Controle de Fluxo

if, else, e elseif

Page 39: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Controle de Fluxo

switch, case, e otherwise

Page 40: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Controle de Fluxo

for

while

Page 41: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Criação de Funções MatLab®

Arquivos .m Sintaxe:

function [ret1,ret2,...,retn] = nome da função (input1,input2,...,inputn)%Comentarios

corpo da função;end;

Page 42: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Processamento de Imagens

E o que o MatLab® tem a ver com o

Processamento de Imagens?

Page 43: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Processamento de Imagens

Simples:

Imagens podem ser tratadas como

matrizes!

Page 44: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Processamento de Imagens

Carregando e exibindo uma imagem:a = imread(‘picture.jpg’);

imshow(a);

Page 45: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Processamento de Imagens

Imagens RGB: Uma imagem

RGB pode ser double (contendo valores na faixa [0,1]) ou uint8 (contendo valores na faixa [0,255]).

Page 46: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Processamento de Imagens

Imagens RGB: Nesta única matriz com dimensões m-por-n-

por-3, “m” e “n” são a quantidade de linhas e colunas dos pixels na imagem, enquanto que a terceira dimensão consiste de três planos contendo as intensidades vermelha, verde e azul.

Para cada pixel na imagem, os valores vermelho verde e azul são combinados para formar a cor real do pixel.

Page 47: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Processamento de Imagens

Tamanho da imagem (matriz):

size(a)

384 512 3

R G B

384

512

Page 48: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Processamento de Imagens

Imagens coloridas: Mostrando o plano R.a(:,:,2:3) = 0;

imshow(a);

Page 49: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Processamento de Imagens

Imagens coloridas: Mostrando o plano G.a(:,:,[1 3]) = 0;

imshow(a);

Page 50: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Processamento de Imagens

Imagens coloridas: Mostrando o plano B.a(:,:,1:2) = 0;

imshow(a);

Page 51: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

Processamento de Imagens

Abrir imagem im = imread(‘nome do arquivo’);

Exibir imagem imshow(nome da variavel);

Salvar imagem imwrite(nome da variavel, ‘nome do arquivo’);

Page 52: Pesquisa Aplicada à Computação utilizando MatLab® Anderson Vinícius Alves Ferreira anderson_vinicius@msn.com Leonardo Vidal Batista (Tutor) leonardo@di.ufpb.br

E por falar nisso...

O MatLab® também pode lidar com: Filmes; Objetos em três dimensões; …

Conclusão: O MatLab® é uma ferramenta para

manipulação de sinais digitais muito poderosa, já que sinais podem ser tratados como matrizes.