Upload
glaciano-maia
View
78
Download
1
Embed Size (px)
Citation preview
Curso de MATLAB
Prof. Nelson D. A. Mascarenhas Maurício F. L. Pereira
Universidade Federal de São Carlos
Departamento de Computação
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}
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
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]
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
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
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
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}
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
Condicional - If
if If condição { comandos } { elseif condição }
{ comandos} {else { comandos } } end if max(A) < 10 resp = 10;else resp = max(A)
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 ;
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
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
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
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’)
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);
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
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
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
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 ]
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
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
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
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
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))
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 ) ) )