You are on page 1of 27

Universidade Federal de So Carlos Departamento de Computao

Curso de MATLAB

Prof. Nelson D. A. Mascarenhas Maurcio F. L. Pereira

Objetivo do curso
Utilizao dos comandos bsicos do MATLAB Otimizaes de laos Apresentao das principais funes do toolbox de Processamento de Imagens

Obtendo Ajuda e Diretrio de trabalho


Help help comando Exemplo: help plot help sin

cd {drive ou path_name}
cd h: cd jluiz dir ou ls {lista o contedo do diretrio}

Variveis no MATLAB
varveis so dimensionadas medida que so usadas.
who lista as variveis do workspace clear x retira varivel x do workspace exit ou quit Sai do sistema e limpa todas as variveis do workspace save { nome_arq } coloca as variveis do workspace em um arquivo {nome_arq}.mat load {nome_arq} restaura as variveis

Entrando com Matrizes e Nmeros 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 } Nmeros 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]

Transposta e conjugada transposta


B=A {apstrofo 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 + 1.0000i 0 - 5.0000i 2.0000

Operaes bsicas 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 8 9 14 15 F = A / 5; 0.4000 0.6000 0.8000 1.0000

Ponto a ponto Uso do operador . modifica a operao de multiplicao C ( i, j ) = A(i,j)*B(i,j) 2 8 0 15

Potenciao de Vetores e Matrizes


X=[1 2; 3 4] Y=X^n Calcula X*X....*X n Z = X.^n Eleva cada elemento de X a potncia n B1=X.^2 B1= 1 4 9 16

B2 = X^2 = X*X B2 = 7 10 15 22

Gerando Vetores Igualmente Espaados


t=1:5 t=[12345]

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 trs primeiros elementos} A(3,1) {Denota o elemento da terceira linha e primeira coluna da matriz A}

Laos - for, while


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

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

Condicional - If
if If condio { comandos } { elseif condio } { comandos} {else { comandos } } end if max(A) < 10 resp = 10; else resp = max(A)

Funes
Permite estender as funes do Matlab Estrutura de funo function [ par_sada] = nome_funo ( par_entrada ) %comentrios de help { comandos} Varivel nargin : quantidade de argumentos de entrada Variavel nargout : quantidade de argumentos de sada function a=mediaprova(n1,n2,n3) % MEDIAPROVA Calcula a media ponderada das provas a = ( n1 + n2*2 + n3*2 ) / 5 ;

Funes para construo de matrizes


Nome da funo eye( n ) zeros(n, m) diag( ) triu( matriz ) Ao Matriz identidade (nxn) Matriz de zeros ( nxm) Extrai ou cria uma matriz diagonal Extrai matriz triangular superior

tril (matriz )
rand()

Extrai matriz triangular inferior Gera uma matriz aleatria

Funes escalares
sin asin exp abs cos acos log sqrt tan atan rem round

Funes de vetores
max sum mean min prod std sort median any

Funes de matrizes
eig inv lu poly roots det Autovalores e autovetores inversa Decomposio LU Polinmio caracterstico Encontra razes de um polinmio Determinante

size

Tamanho do arranjo

Fazendo Grficos
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)

Otimizaes
Utilizar o operador : - Gerao de vetores com valores igualmente espaados deve-se o operador : - Exemplo : - vetor = -30 : 3 : 30

Evitando loops - Lentido dos loops for i=0:999, x(i) = sin(2*pi*i/100);


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

Toolbox de Processamento Imagens (PI)


Funes especficas para processamento de imagens Leitura/escrita de imagens Transformaes de imagens, de pixels, realce e outros Filtragens no domnio espacial e da freqncia. Transformada de Fourier (FFT)

Morfologia Matemtica

ToolBox de Processamento de Imagens


4 tipos de imagens Indexadas 2 matrizes (pontos e tonalidades) Intensidade 1matriz ( 0 < tonalidades 1 ) Binrias Dois tons: preto (0) e branco (1) RGB 3 matrizes Com cada componente Funes de leitura/escrita imread e imwrite Imagens GIF, TIFF,BMP,PCX Load , Save Imagem indexadas

Exibio de imagens
imshow ( X ) load trees imshow(X,map); Funo subplot( n, m , i ) Permite plotar vrias imagens n n de linhas m n de colunas i posio da imagem

Transformaes Geomtricas
imrotate( X , Ang, met ); X Imagem Ang ngulo de rotao met Mtodo de interpolao Vizinho mais prximo ( nearest ) Bilinear (bilinear) Bi-cbica (bicubic) imresize(X, prop, met) prop proporo do imresize ou tamanho do vetor nxm

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

Realce e anlise 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

Funes de Filtragem Espacial


Utilizao de filtros no domnio espacial tais como Mdia Mediana Deteco de bordas Sobel Passa alta Passa baixa Laplaciano Aplicao de rudos nas imagens

Funes de Filtragem Espacial


filter2( filtro, imagem ) 2 maneiras de gerar o filtro filtro = [ 1 1 1; 1 1 1 ; 1 1 1 ] / 9 ; Atravs da funo da funo fspecial. fspecial( nome do filtro,[parmetros]) Gera os filtros automaticamente em matrizes Filtros possveis : gaussian sobel prewitt laplacian log average unsharp

Funes de Filtragem Espacial


medfilt2 ( Imagem ) Aplica o filtro mediana na imagem edge (Imagem , mtodos) Detecta bordas de uma imagem ; Mtodos que podem ser utilizados: sobel prewitt roberts log canny zerocross imnoise ( Imagem, tipo_de_rudo ) Adiciona rudo a Imagem Tipos de rudo salt & pepper gaussian speckle

Funes de Filtragem no domnio da Freqncia


Transformada Rpida de Fourier (FFT) Inversa da FFT Filtragens no domnio da freqncia. Passa-Baixas Passa-Altas fft2( Imagem); Calcula a FFT de uma imagem ifft2 (imagem_freqncia ) Calcula a inversa da FFT fftshif ( Imagem_freqncia ); Desloca os quadrantes da transformada Exemplo : Y = fftshift( fft2(Imagem))

Imagem original

imrotate(Im,45,crop)

Histeq(Im, 256)

edge(Im, canny)

edge(Im, sobel,vertical)

Imagem original

imnoise(Im, 'gaussian');

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

You might also like