• Nenhum resultado encontrado

Informática para Ciências e Engenharias (B) 2015/16. Teórica 6

N/A
N/A
Protected

Academic year: 2021

Share "Informática para Ciências e Engenharias (B) 2015/16. Teórica 6"

Copied!
79
0
0

Texto

(1)

Informática para Ciências e

Engenharias (B)


2015/16

(2)

Na aula de hoje

l  Representação de imagens

pixels, sistema RGB l  Gráficos em MATLAB

Gráficos simples

Imagens 2D •  Exemplo: difusão

Gráficos 3D

•  Exemplo: simulação estocástica de um incêndio

(3)

Ecrã, Imagens e Pixels

(4)

Ecrã, Imagens e Pixels

l  Representação de imagens

pixels, sistema RGB

l  O ecrã é uma matriz de picture elements (pixels)

a resolução é normalmente indicada pelo seu número de linhas x colunas:

•  1024 x 768, 800 x 600, ... (4:3),

•  1280 x 720, 1366 x 178, 1920×1080, … (16:9)

(5)
(6)

Imagens e Pixels

(7)

Cores

l  No formato True Color, cada pixel tem 3 bytes (24 bits) para

representar a cor

RGB

•  1 byte (8 bits) para vermelho (Red)

•  1 byte (8 bits) para verde (Green)

•  1 byte (8 bits) para azul (Blue)

Hexadecimal

•  números representados com 0, 1, …, 9, A, …, F

(8)
(9)

Cores

l  “Cubo das cores”

(10)

Manipulação do Ecrã

l  CPU dá instruções de escrita l  na RAM de vídeo

normalmente na placa gráfica.

(11)

Manipulação do Ecrã

l  O controlador do ecrã na placa gráfica

actualiza os pixels no ecrã

(12)

Gráficos 2D

(13)

Gráficos 2D

l  Gráficos simples podem ser feitos em MATLAB através da

função pre-definida plot.

l  function plot(x, y, opts)

x é um vector com as abcissas

y é um vector com as coordenadas

opts é uma string especificando símbolos e cores

l  Nota: Existem várias variantes desta função pré-definida/

(14)
(15)
(16)

Gráficos 2D

Exemplo:

l  Juntar gráficos

(17)

Gráficos 2D

l  Hold on

Mantém o gráfico anterior

l  Adicionar legendas

octave:1> x=-pi:0.1:pi; octave:2> y=sin(x);

octave:3> plot(x,y,'*-r’)

octave:4> plot(x,-y,'+b; -seno(x);') octave:5> hold on

(18)

Gráficos 2D

l  Em resumo:

Gráficos simples podem ser feitos em MATLAB através da função pre-definida

•  plot(x, y, opts)

l  Para melhorar o aspecto gráfico, podem ainda ser usados os

comandos

Title(titulo da imagem);

Xlabel(legenda do eixo dos xx);

(19)

Gráficos 2D

l  Nota:

Em MATLAB (MATrix LABoratory) muitas operações comuns são estendidas a matrizes e vectores.

(20)

Gráficos 2D

l  “Manchas gráficas” podem ser especificadas em MATLAB

através da função pre-definida fill.

l  função fill(vx, vy, vCor)

vx vector com coordenadas x de 4 pontos

vy vector com coordenadas y de 4 pontos

(21)
(22)

Gráficos 2D

l  colormap e image

com colormap definimos um mapa de cores.

•  Matriz de 3 colunas, com uma cor RGB por linha

a função image representa uma matriz com as cores definidas

•  Cada célula da matriz indica o índice (linha) da cor no

(23)

Gráficos 2D

mapaCores=([1,0,0;0,1,0;0,0,1]) imagem=floor(rand(50)*3)+1;

(24)

Simulação de Difusão

Exemplo 1:

(25)

Simulação de Difusão

l  Vamos simular a difusão de X numa solução (em 2D)

Representação:

•  Uma matriz (de pixels) com concentrações

Simulação:

•  Discreta: Simular a difusão por passos

•  Em cada passo de simulação:

•  calcular quanto difunde para os 8 vizinhos

(26)

Simulação de Difusão

l  Vamos simular a difusão de X numa solução (em 2D)

Representação:

•  Uma matriz (de pixels) com concentrações

Simulação:

•  Discreta: Simular a difusão por passos

•  Condição fronteira (não há 8 vizinhos)

•  As células nos extremos são constantes

(27)

Simulação de Difusão

l  Vamos usar 2 funções :

é bom ter os cálculos numa parte:

function novaConc = passodifusao(matConc, coefDif)

•  função para calcular um passo de difusão

e os gráficos noutra:

function difusao(matConcs, coefDif, iteracoes)

(28)
(29)

Simulação de Difusão

Normalmente evita-se aninhar muitos ciclos remetendo parte para outra função.

Mas este caso exigiria copiar toda a matriz

matConc, pelo que é mais eficiente deixar

(30)

Simulação de Difusão

A indentação é muito importante nestes casos.

Sem indentação correcta o código fica

(31)
(32)

Simulação de Difusão

(33)

Simulação de Difusão

(34)

Simulação de Difusão

Para todos os vizinhos da célula em (l, c)

(35)

Simulação de Difusão

Calcular quanto se difunde e actualizar na matriz da nova concentração.

(36)
(37)
(38)

Simulação de Difusão

(39)

Simulação de Difusão

Para cada iteração

•  calcular um passo de difusão •  desenhar a imagem.

•  comando axis square evita a distorção da imagem

(40)

Simulação de Difusão

l  Gota

concs=zeros(30);

(41)
(42)

Simulação de Difusão

l  Gravar o resultado numa série de imagens

•  Nota: print não faz parte da matéria

print(nome) (sprintf veremos mais tarde)

(43)

Gráficos 3D

(44)

Gráficos 3D

l  Para fazer um gráfico em 3D precisamos de

Matrizes X, Y

•  Formam a “grelha de base” (mesh grid)

Matriz Z

•  associa um valor z a cada par (x,y)

(45)

Gráficos 3D

l  Nota:

matrizes são indexadas por (linha, coluna)

mas x varia na horizontal e y na vertical

logo, x é a coluna e y a linha

•  é preciso atenção a esta convenção

(46)

Gráficos 3D

l  Para fazer um gráfico em 3D precisamos de

Matrizes X, Y, Z

•  X e Y podem ser criadas com a função meshgrid

e.g. [xx,yy] = meshgrid(1:5, 1:5)

Chamar uma das funções

•  mesh(x,y,z) traça uma rede 3D

(47)

Gráficos 3D

l  Para fazer um gráfico em 3D ...

•  mesh(x,y,z) •  traça uma rede 3D

•  surf(x,y,z)

•  traça uma superfície

(48)

Gráficos 3D

l  Especificar cores:

Podemos acrescentar uma matriz para indicar quais as cores a usar

•  tem de ter a mesma dimensão das outras

•  as cores são as do colormap corrente, interpoladas.

•  o menor valor da matriz C corresponde à primeira cor do mapa de cores

•  o maior valor da matriz C corresponde à última cor do mapa de cores

(49)

Gráficos 3D

c=ones(5) c(1,1)=2; c(4,4)=3; colormap([1,0,0;0,1,0;0,0,1]); surf(x,y,z,c) Célula (1,1)

(cor 2 do color map) Green -[0,1,0])

Célula (4,4)

(50)

Gráficos 3D

l  Para mudar a orientação:

view(azimute, elevação)

•  azimute e elevação em graus

•  por omissão:

•  Azimute = -37.5º

(51)

Gráficos 3D

l  Para rodar o ponto de vista:

Com os ponteiros do relógio: aumentar azimute >> view(-20,+30)

•  Contra os ponteiros do relógio: diminuir azimute

(52)

Gráficos 3D

l  Para variar a elevação:

Ver mais “de baixo”: diminuir o ângulo de elevação >> view(-37.5,+15)

(53)

Simulação de um Incêndio

Exemplo 2:

(54)

Simulação de um Incêndio

l  Objectivo

(55)

Simulação de um Incêndio

l  Objectivo

Modelando a elevação do terreno com uma matriz 3D

Queremos simular como um incêndio se propaga no terreno

•  Considerando alguns factores

•  Pode haver vento

(56)

Simulação de um Incêndio

l  Simulação

numa matriz, cada célula indica que a vegetação está

•  1- normal

•  2- queimada

•  3- a arder

a que está a arder pode propagar o fogo aos 8 vizinhos

•  com uma probabilidade que depende do

•  do declive,

•  do vento,

(57)

Simulação de um Incêndio

l  Simulação

numa matriz, cada célula indica que a vegetação está

•  1- normal

•  2- queimada

•  3- a arder

a probabilidade de propagar o fogo a cada vizinho pode ser dada por

•  uma matriz de 3x3 (pontos cardiais e colaterais)

•  assim podemos simular vento ou outros factores dando valores diferentes para direcções diferentes

(58)

Simulação de um Incêndio

l  Simulação

probabilidade de propagar o fogo:

modificada pelo declive

•  somar um factor dependente da diferença de elevação

•  mais provável propagar-se a subir

(59)

Simulação de um Incêndio

l  Simulação

a cada iteração da simulação temos de

•  propagar o fogo de todas as áreas a arder

•  testar as áreas a arder para determinar quais se

apagam

para a simulação temos de

•  calcular cada iteração

•  representar graficamente o progresso do incêndio

(60)

Simulação de um Incêndio

l  Simulação

Assinaturas das funções:

•  function novoEstado = propaga(estado, ...

mapa, probPropagar, efeitoDeclive)

•  function estado = extingue(estado, probApagar)

•  function incendio(mapa, focoInicial, ...

(61)

Simulação de um Incêndio

(62)
(63)

Para todos os vizinhos por arder dessa célula.

(64)

Calculamos a probabilidade de propagação modificando o valor da matriz pelo declive

(65)

Se propaga, marcamos no novoEstado (e não no estado para evitar propagar imediatamente esse novo foco).

(66)

Simulação de um Incêndio

(67)

Simulação de um Incêndio

l  Para simular

preparar o gráfico

ciclo das iterações

•  propagar

•  extinguir

(68)

Simulação de um Incêndio

(69)

Simulação de um Incêndio

Cria a matriz com o estado inicial da vegetação do

(70)

Simulação de um Incêndio

Prepara as matrizes para o gráfico 3D. Nota: x é colunas, y linhas.

(71)

Simulação de um Incêndio

A cada iteração propaga e

(72)

Simulação de um Incêndio

Depois desenha o gráfico, orienta-o adequadamente

(73)

Simulação de um Incêndio

probPropagar = 0.10000 0.14000 0.10000 0.14000 0.00000 0.14000 0.10000 0.14000 0.10000 efeitoDeclive = 0

(74)

Simulação de um Incêndio

probPropagar = 0.10000 0.14000 0.10000 0.14000 0.00000 0.14000 0.10000 0.14000 0.10000 efeitoDeclive = 0.1

(75)

Simulação de um Incêndio

l  Com vento e declive

probPropagar =

0.04000 0.02000 0.04000

(76)

Resumo

l  Gráficos 2D (pontos, linha)

plot(vectorX, vectorY, opções)

hold on, hold off

Clf

l  Imagens 2D (pontos, linha)

fill(coordsX, coordsY ,corRGB)

colormap(matrizCoresRGB)

(77)

Resumo

l  Gráficos 3D

meshgrid(x,y),

mesh ou surf (x,y,z), ou (x,y,z,c)

(78)

Para estudar esta aula

l  Manual Octave

Capítulo 15, plotting

l  MATLAB plotting functions

http://www.mathworks.com/help/matlab/creating_plots/using-high-level-plotting-functions.html

l  Por curiosidade (para a próxima aula)

Método Monte Carlo:

(79)

Referências

Documentos relacionados

M ATERIAIS RESTAURADORES DEFINITIVOS : RESINAS COMPOSTAS FOTOPOLIMERIZÁVEIS  Usadas para todas as classes de cavidades  Sistema de polimerização física-luz.  Compostas

O browser contacta a máquina com aquele endereço IP na porta 80 para o protocolo HTTP... World

•   Neste caso, se as strings não tiverem o mesmo comprimento, as mais pequenas são preenchidas com brancos.. Acesso

l  Os parâmetros da função são variáveis, separadas por vírgulas l  A variável nomeResultado, recebe o valor da função..

Os estudos originais encontrados entre janeiro de 2007 e dezembro de 2017 foram selecionados de acordo com os seguintes critérios de inclusão: obtenção de valores de

Considerando o endereço inicial e final definido pelo usuário, escrever no arquivo texto o conteúdo da memória em formato similar ao da opção 2 (que exibe na tela).. e-mail

Artigos Pele de tilápia, curativo biológico, uma alternativa para queimaduras • Lesões de pele e tratamento de feridas sob o escopo do enfermeiro: Relato de experiência

ado a necessidade de modificar o pré- se manter o dorso do frango à 95C por 30 minutos, este procedimento desnaturava o colágeno, formando um gel scrito