Post on 07-Apr-2016
Pesquisa Aplicada à Computação utilizando MatLab®
Anderson Vinícius Alves Ferreiraanderson_vinicius@msn.comLeonardo Vidal Batista (Tutor)
leonardo@di.ufpb.br
www.pet.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
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.
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)
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
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;
Imagens Coloridas (Imagens RGB)
Banda R Banda G Banda B
Imagem RGB
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;
Operações com Imagens (Pontuais)
Imagem Original Negativo da Imagem
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
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.
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
Operações com Imagens (Locais)
MatLab®
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
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.
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
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.
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
A Linguagem MatLab®
Comando HELP
Comando LOOKFOR
A Linguagem MatLab®
Tipos de Dados
A Linguagem MatLab®
Operadores Aritméticos
A Linguagem MatLab®
Operadores Relacionais e Lógicos
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:
A Linguagem MatLab®
Outro exemplo simples (1):t = 0:pi/100:2*pi;
y = sin(t);
plot(t,y);
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!
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
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”!
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
?
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
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”
Matrizes
Funções de operação com matrizes Multiplicação matricial e multiplicação ponto a ponto
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
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
Matrizes
Dimensões
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
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
Controle de Fluxo
if, else, e elseif
Controle de Fluxo
switch, case, e otherwise
Controle de Fluxo
for
while
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;
Processamento de Imagens
E o que o MatLab® tem a ver com o
Processamento de Imagens?
Processamento de Imagens
Simples:
Imagens podem ser tratadas como
matrizes!
Processamento de Imagens
Carregando e exibindo uma imagem:a = imread(‘picture.jpg’);
imshow(a);
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]).
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.
Processamento de Imagens
Tamanho da imagem (matriz):
size(a)
384 512 3
R G B
384
512
Processamento de Imagens
Imagens coloridas: Mostrando o plano R.a(:,:,2:3) = 0;
imshow(a);
Processamento de Imagens
Imagens coloridas: Mostrando o plano G.a(:,:,[1 3]) = 0;
imshow(a);
Processamento de Imagens
Imagens coloridas: Mostrando o plano B.a(:,:,1:2) = 0;
imshow(a);
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’);
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.