Professional Documents
Culture Documents
Aula Prática nº 1
Universidade de Aveiro
2017-2018
Sumário
1 Introdução e generalidades
3 Exercícios introdutórios
2 / 32
Paradigma geral das aulas práticas
3 / 32
Livro de Matlab para processamento de imagem
4 / 32
Metodologia dos exercícios nas aulas
5 / 32
Realização dos exercícios em único ficheiro
Na opção de usar todos os exercícios de uma aula no mesmo ficheiro,
os exercícios devem ficar em secções distintas, demarcadas com
comentários duplos, como no seguinte exemplo com dois exercícios:
7 / 32
Imagens e matrizes
8 / 32
Tipos de imagem
1
http://www.mathworks.com/help/images/image-types-in-the-toolbox.html
9 / 32
Tipos de imagem principais e valores dos pixels
10 / 32
Exercício inicial de Matlab – a realizar na linha de
comandos da janela principal.
A=imread('rice.png');
imshow(A)
B=255*(A>128); %Comentar o procedimento
figure(2) %para que serve?
imshow(B) %Comentar o resultado.
11 / 32
Exercício 1a) - Criar uma imagem vazia
Criar um script Matlab (por exemplo o ficheiro aula1.m) onde o
código será escrito (usar o menu ou o comando edit na linha de
comando para criar o ficheiro).
Os nomes dos ficheiros .m a criar não devem ter nomes com espaços,
hífens (-) ou carateres acentuados, nem devem começar por
algarismos!!!
Escrever código para implementar a seguinte operação:
Sintetizar uma imagem 100×200 preta e vizualizá-a.
Recordar a relação entre linhas e colunas e as dimensões da imagem
Os comandos podem ser escritos diretamente na linha de comando um
por um ou, preferencialmente, escritos num ficheiro para permitir a
fácil repetição da execução.
12 / 32
Exercício 1b)
13 / 32
Ex. 2a) - Inserir um quadrado numa imagem vazia
14 / 32
Ex. 2b) - Influência dos tipos de dados
Repetir o exercício anterior de duas formas:
Usando ’doubles’
%% Ex 2b
Z=zeros(100,200); %gera doubles
Z(30:70, 50:90)=1; %porque^?
Z(30:70, 120:160)=0.5; %porque^?
imshow(Z)
Usando ’uint8’
Z=zeros(100,200,'uint8')); %gera uint8 (0-255)
%ou em alternativa: Z=uint8(zeros(100,200)))
Z(30:70, 50:90) = 255;
Z(30:70, 120:160) = 128;
imshow(Z)
16 / 32
Exercício 3a) – Criação de uma função
17 / 32
Exercício 3b) – Invocação de uma função
18 / 32
Exercício 3c) – Uso do ciclo for-end
Criar um ciclo para gerar múltiplos quadrados (de 20 em 20 pixels):
19 / 32
Exercício 3d) – Um ciclo mais complexo
20 / 32
Ex. 4) - Desafio: como criar círculos?
21 / 32
Ex. 4a) - Abordagem da geometria analítica
22 / 32
Abordagem matricial para o exercício
23 / 32
As matrizes de coordenadas (X,Y)
24 / 32
Como construir as matrizes de coordenadas (X,Y)
25 / 32
Resultado da operação anterior
x =
1 2 3 4
y =
1 2 3 4 5
X =
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
Y =
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
26 / 32
As matrizes de coordenadas X,Y da imagem em
uso
27 / 32
Ex. 4b)-Como utilizar as matrizes X,Y obtidas?
Sendo:
Z uma matriz qualquer
C uma matriz booleana de dimensões iguais a Z
a um escalar qualquer
Z(C) = a é equivalente ao seguinte código matlab:
for x=1:size(Z,2)
for y=1:size(Z,1)
if C(x,y) == 1 %True
Z(x,y) = a;
end
end
end
29 / 32
Ex. 4c) – Criar uma função para adicionar círculos
a uma imagem
30 / 32
Ex. 4d) – Criar uma imagem com vários círculos
(ciclos for)
31 / 32
Ex. 4e) – Criar uma imagem com círculos de raio
aleatório
32 / 32