Curso de Matlab

27
Curso de MATLAB Prof. Nelson D. A. Mascarenhas Maurício F. L. Pereira Universidade Federal de São Carlos Departamento de Computação

Transcript of Curso de Matlab

Page 1: Curso de Matlab

Curso de MATLAB

Prof. Nelson D. A. Mascarenhas Maurício F. L. Pereira

Universidade Federal de São Carlos

Departamento de Computação

Page 2: Curso de Matlab

Objetivo do curso

Utilização dos comandos básicos do MATLAB

Otimizações de laços Apresentação das principais

funções do toolbox de Processamento de Imagens

Obtendo Ajuda e Diretório de trabalhoHelp

help comando

Exemplo: help plot help sin

cd {drive ou path_name}

cd h: cd jluiz

dir ou ls {lista o conteúdo do diretório}

Page 3: Curso de Matlab

Variáveis no MATLAB

varáveis são dimensionadas à medida que são usadas.

who – lista as variáveis do workspace

clear x – retira variável x do workspace

exit ou quit – Sai do sistema e limpa todas as variáveis do workspace

save { nome_arq } – coloca as variáveis do workspace em um arquivo {nome_arq}.mat

load {nome_arq} – restaura as variáveis

Page 4: Curso de Matlab

Entrando com Matrizes e Números Complexos

x=[1 2 3 -4 -5] { vetores } A=[1, 2, 3 ; 4, 5,6 ; 7,8,9] { matriz

3x3 } B=[1 exp(-0.02) sqrt(2) 3] { matriz 2x2 }

E = 2 * pi ; { escalar }

Números complexos uso dos escalares i ou j, predefinidos pelo Matlab

x = 1 + sqrt(3)*j

x = 2*exp(pi/3)*j

y=[1+2*j, 3+4*j]

Page 5: Curso de Matlab

Transposta e conjugada transposta

B=A’ {apóstrofo denota transposta para matrizes reais}

A = [ 1 3 ; 3 2 ; 3 5 ]; { matriz 3 X 2 }

B = 1 3 3 3 2 5

D=C’ {apostrofo denota conjugada transposta para matrizes complexas}

C=[1, j; -j*5, 2]

D = 1.0000 0 - 5.0000i 0 + 1.0000i 2.0000

Page 6: Curso de Matlab

Operações básicas com matrizes

A=[2, 3; 4, 5] B=[1, 0; 2, 3] C=A+B ou D = A - B

3 3 1 3 6 8 2 2

E = A*B F = A / 5; 8 9 0.4000

0.6000 14 15 0.8000

1.0000

Ponto a ponto Uso do operador ‘. ‘ modifica a

operação de multiplicação C ( i, j ) = A(i,j)*B(i,j) 2 0 8 15

Page 7: Curso de Matlab

Potenciação de Vetores e Matrizes

X=[1 2; 3 4] Y=X^n

Calcula X*X....*X

Z = X.^n Eleva cada elemento de X a

potência n

B1=X.^2 B2 = X^2 = X*X

B1= 1 4 B2 = 7 10 9 16 15 22

n

Page 8: Curso de Matlab

Gerando Vetores Igualmente Espaçados

t=1:5 t = [ 1 2 3 4 5 ]

t=1:0.5:3 { incrementa de .5 em .5 } t = [ 1 1.5 2 2.5 3]

t=5:-1:1 { incremento negativo } x=linspace(-10,10,5)

Gera 5 pontos entre –10 e 10 x=[-10 –5 0 5 10 ]

x([1 2 3]) {os três primeiros elementos}

A(3,1) {Denota o elemento da

terceira linha e primeira coluna da matriz A}

Page 9: Curso de Matlab

Laços - for, while

For x=[];for i= 1 : 10 , x = [ x, i ^2 ], end;ou for i= 10 : - 1:1 , x(i) = [i ^2 ],

end;

Whilen = 0;

while (2^n < 1024 )n = n + 1;

end

Page 10: Curso de Matlab

Condicional - If

if If condição { comandos } { elseif condição }

{ comandos} {else { comandos } } end if max(A) < 10 resp = 10;else resp = max(A)

Page 11: Curso de Matlab

Funções

Permite estender as funções do Matlab

Estrutura de função

function [ par_saída] = nome_função ( par_entrada )

%comentários de help{ comandos}

Variável nargin : quantidade de argumentos de entrada

Variavel nargout : quantidade de argumentos de saída

function a=mediaprova(n1,n2,n3)% MEDIAPROVA Calcula a media ponderada das provas

a = ( n1 + n2*2 + n3*2 ) / 5 ;

Page 12: Curso de Matlab

Funções para construção de matrizes

Nome da função

Ação

eye( n ) Matriz identidade (nxn)

zeros(n, m) Matriz de zeros ( nxm)

diag( ) Extrai ou cria uma matriz diagonal

triu( matriz ) Extrai matriz triangular superior

tril (matriz ) Extrai matriz triangular inferior

rand() Gera uma matriz aleatória

Page 13: Curso de Matlab

Funções escalares

sin cos tan

asin acos atan

exp log rem

abs sqrt round

Funções de vetores

max min sort

sum prod median

mean std any

Page 14: Curso de Matlab

Funções de matrizes

eig Autovalores e autovetores

inv inversa

lu Decomposição LU

poly Polinômio característico

roots Encontra raízes de um polinômio

det Determinante

size Tamanho do arranjo

Page 15: Curso de Matlab

Fazendo Gráficos

plot(x,y) {x e y vetores de igual dimens.}

plot(x1,y1,x2,y2) {curvas multiplas}

fplot(‘function’,[intervalo])

fplot(‘sin’,[0 2*pi])

[x,y]=fplot(‘sin’, [0 2*pi])

plot(x,y)

plot(x,y,’o’)

Page 16: Curso de Matlab

Otimizações

Utilizar o operador ‘ : ’- Geração de vetores com valores

igualmente espaçados deve-se o operador ‘ : ’

- Exemplo :- vetor = -30 : 3 : 30

Evitando loops- Lentidão dos loopsfor i=0:999, x(i) =

sin(2*pi*i/100);

Pode ser substituído por

x = sin(2*pi*[0:999]/100);

Page 17: Curso de Matlab

Toolbox de Processamento Imagens (PI)

Funções específicas para processamento de imagens

Leitura/escrita de imagens

Transformações de imagens, de pixels, realce e outros

Filtragens no domínio espacial e da freqüência.

Transformada de Fourier (FFT)

Morfologia Matemática

Page 18: Curso de Matlab

ToolBox de Processamento de Imagens

4 tipos de imagens Indexadas

2 matrizes (pontos e tonalidades)

Intensidade 1matriz ( 0 < tonalidades 1 )

Binárias Dois tons: preto (0) e branco

(1) RGB

3 matrizes Com cada componente

Funções de leitura/escrita imread e imwrite

Imagens GIF, TIFF,BMP,PCX Load , Save

Imagem indexadas

Page 19: Curso de Matlab

Exibição de imagens

imshow ( X )» load trees » imshow(X,map);

Função subplot( n, m , i ) Permite plotar várias imagens n – n º de linhas m – n º de colunas i – posição da imagem

Page 20: Curso de Matlab

Transformações Geométricas

imrotate( X , Ang, met ); X – Imagem Ang – Ângulo de rotação met – Método de interpolação

Vizinho mais próximo ( nearest )

Bilinear (bilinear) Bi-cúbica (bicubic)

imresize(X, prop, met) prop – proporção do imresize

ou tamanho do vetor nxm

imcrop(X, ret ) ret – [ coluna, linha, cols, lins ]

Page 21: Curso de Matlab

Realce e análise de imagens

imhist( X, tons ) X – imagem tons – n º de tons do

histograma

histeq( X, tons ) Equaliza o histograma Melhora o contraste da imagem

grayslice( X , P ); Implementa pseudocores P – n º de pseudocores

Page 22: Curso de Matlab

Funções de Filtragem Espacial

Utilização de filtros no domínio espacial tais como Média Mediana Detecção de bordas Sobel Passa alta Passa baixa Laplaciano

Aplicação de ruídos nas imagens

Page 23: Curso de Matlab

Funções de Filtragem Espacial

filter2( filtro, imagem ) 2 maneiras de gerar o filtro

filtro = [ 1 1 1; 1 1 1 ; 1 1 1 ] / 9 ;

Através da função da função fspecial.

fspecial( nome do filtro,[parâmetros]) Gera os filtros automaticamente

em matrizes Filtros possíveis :

gaussian sobel prewitt laplacian log average unsharp

Page 24: Curso de Matlab

Funções de Filtragem Espacial

medfilt2 ( Imagem ) Aplica o filtro mediana na imagem

edge (Imagem , métodos) Detecta bordas de uma imagem ; Métodos que podem ser

utilizados: sobel prewitt roberts log canny zerocross

imnoise ( Imagem, tipo_de_ruído ) Adiciona ruído a Imagem Tipos de ruído

salt & pepper gaussian speckle

Page 25: Curso de Matlab

Funções de Filtragem no domínio da Freqüência

Transformada Rápida de Fourier (FFT)

Inversa da FFT Filtragens no domínio da freqüência.

Passa-Baixas Passa-Altas

fft2( Imagem); Calcula a FFT de uma imagem

ifft2 (imagem_freqüência ) Calcula a inversa da FFT

fftshif ( Imagem_freqüência ); Desloca os quadrantes da

transformadaExemplo : Y =

fftshift( fft2(Imagem))

Page 26: Curso de Matlab

Imagem original imrotate(Im,45,’crop’)

Histeq(Im, 256) edge(Im, ‘canny’)

edge(Im, ‘sobel’,vertical)

Page 27: Curso de Matlab

Imagem original imnoise(Im, 'gaussian');

F = fftshift( fft2(Im) );imagesc( log ( 1 + abs( F ) ) )