Download - Curso de Matlab
![Page 1: Curso de Matlab](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/26.jpg)
Imagem original imrotate(Im,45,’crop’)
Histeq(Im, 256) edge(Im, ‘canny’)
edge(Im, ‘sobel’,vertical)
![Page 27: Curso de Matlab](https://reader033.vdocuments.pub/reader033/viewer/2022061613/55721033497959fc0b8cc9cb/html5/thumbnails/27.jpg)
Imagem original imnoise(Im, 'gaussian');
F = fftshift( fft2(Im) );imagesc( log ( 1 + abs( F ) ) )