Académique Documents
Professionnel Documents
Culture Documents
Computac~ao Graca
Sumario
1 Introduc~ao
1.1
1.2
1.3
1.4
1.5
1.6
1.7
2 Cor
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
A reas Correlatas . . . . . .
Paradigma dos Universos .
Escopo . . . . . . . . . . . .
Estrutura do Livro . . . . .
Objetivos e Pre-Requisitos .
Refer^encias Bibliogracas .
Exerccios . . . . . . . . . .
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
3.1
3.2
3.3
3.4
3.5
3.6
3.7
4 Imagem
4.1
4.2
4.3
4.4
4.5
Modelo de Imagem . . . . . . . . . .
Discretizac~ao . . . . . . . . . . . . .
Representac~ao Matricial . . . . . . .
Classicaca~o para Imagem Digital .
Quantizac~ao . . . . . . . . . . . . . .
3
.
.
.
.
.
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
9
10
10
11
12
13
13
14
15
16
18
21
22
25
28
33
33
35
36
39
40
47
48
51
51
52
52
53
54
SUMARIO
4.6 Dithering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.7 Codicaca~o de Imagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.8 Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5 Geometria
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
Geometria Euclideana . . . . . . . . . . . . . . . . . . . . . .
Transformac~oes Lineares . . . . . . . . . . . . . . . . . . . . .
Transformaco~es Rgidas . . . . . . . . . . . . . . . . . . . . .
Geometria Projetiva . . . . . . . . . . . . . . . . . . . . . . .
Transformaco~es Projetivas . . . . . . . . . . . . . . . . . . . .
Composic~ao de Transformaco~es Projetivas bi-dimensionais . .
Transformaco~es tri-dimensionais . . . . . . . . . . . . . . . . .
Transformac~ao Perspectiva . . . . . . . . . . . . . . . . . . .
Exerccios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 Modelagem Geometrica
6.1
6.2
6.3
6.4
6.5
6.6
Esquemas de Representaca~o . . . . . . . . . .
Representac~ao por Bordo . . . . . . . . . . .
Representac~ao Implcita . . . . . . . . . . . .
Convers~ao entre Representac~oes . . . . . . . .
Ambiguidade e Unicidade de Representac~oes .
Exerccios . . . . . . . . . . . . . . . . . . . .
7 Sistemas de Modelagem
7.1
7.2
7.3
7.4
7.5
8 Visualizac~ao
8.1
8.2
8.3
8.4
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
.
.
.
.
.
Espacos de Refer^encia . . . . . .
Especicac~ao da Visualizac~ao . .
Transformac~oes de Visualizac~ao .
Exerccios . . . . . . . . . . . . .
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
.
.
.
.
.
.
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
.
.
.
.
.
.
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
.
.
.
.
.
.
..
..
..
..
..
.
.
.
.
.
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
.
.
.
.
.
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
.
.
.
.
.
..
..
..
..
.
.
.
.
..
..
..
..
.
.
.
.
.
.
.
.
..
..
..
..
.
.
.
.
..
..
..
..
.
.
.
.
.
.
.
.
..
..
..
..
.
.
.
.
9 Recorte
65
65
66
68
69
69
73
74
76
78
79
79
80
83
87
90
91
99
99
100
101
102
102
105
106
107
109
116
117
10 Rasterizac~ao
10.1
10.2
10.3
10.4
.
.
.
.
.
.
.
.
..
..
..
..
.
.
.
.
..
..
..
..
.
.
.
.
.
.
.
.
..
..
..
..
.
.
.
.
..
..
..
..
.
.
.
.
.
.
.
.
..
..
..
..
.
.
.
.
123
124
132
136
137
SUMARIO
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
143
144
144
145
146
147
148
150
152
153
154
154
155
12 Iluminac~ao
157
13 Colorizac~ao
165
Colorizaca~o Constante . . . . . . . . .
Colorizaca~o de Gouraud . . . . . . . .
Colorizaca~o de Phong . . . . . . . . .
Colorizaca~o por Tracado de Raios . . .
Integrac~ao da Equac~ao de Iluminac~ao
Exerccios . . . . . . . . . . . . . . . .
14 Mapeamentos
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
.
.
.
.
.
.
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
.
.
.
.
.
.
..
..
..
..
..
..
.
.
.
.
.
.
.
.
.
.
.
.
..
..
..
..
..
..
.
.
.
.
.
.
166
167
169
170
170
171
173
SUMARIO
Cap
tulo 1
Introduc~ao
O objetivo deste texto e servir como base a um curso introdutorio de Computac~ao Graca.
Considerando a Computaca~o Graca, em ultima analise, como uma forma de matematica
aplicada, isto signica que ir~ao ser utilizados, na maioria das vezes, modelos matematicos
simplicados, cando para os cursos mais avancados o estudo dos modelos mais complexos,
que procuram retratar a realidade mais elmente.
1.1 Areas
Correlatas
O primeiro ponto a ser discutido e: qual o objetivo da Computaca~o Graca? Colocando de
maneira extremamente espartana, pode-se armar que o objetivo primordial da Computac~ao
Graca e transformar dados em imagens. Assim, existe o problema da modelagem dos dados
(criac~ao, estruturac~ao e analise dos dados) e o problema da visualizaca~o destes dados.
O objetivo inverso, ou seja, a recuperac~ao dos dados a partir de uma imagem (analise de
imagem), corresponde a area de Vis~ao Computacional, que e muito importante, por exemplo,
em robotica. Por m, ainda existe a necessidade de manipulac~ao de imagens com o objetivo
de processar, de alguma forma, uma imagem, para produzir uma nova imagem, a partir de
operac~oes de ltragem e de deformac~ao, ou simplesmente com o objetivo de compactac~ao.
Estes problemas s~ao tratados na area de Processamento de Imagens. Tanto a area de Vis~ao
Computacional como a area de Processamento de Imagens n~ao ser~ao abordadas neste texto.
A gura 1.1 busca esquematizar os relacionamentos entre as areas citadas.
1.2 Paradigma dos Universos
Um paradigma de abstrac~ao util consiste em estabelecer quatro universos (conjuntos) distintos:
o universo fsico F , que contem os objetos do mundo real que pretende-se estudar;
o universo matematico M , que contem uma descric~ao matematica abstrata dos objetos
do universo fsico, em geral, idealizados (simplicados), para permitir a sua descric~ao
atraves de um modelo matematico simples;
7
~
CAPITULO 1. INTRODUC
AO
Sintese de
Imagens Realistas
MODELAGEM
VISUALIZACAO
Computacao
Grafica
DADOS
IMAGEM
Visao
Computacional
RECONHECIMENTO
DE PADROES
Processamento
de Imagens
Universo
Fisico
Universo
Matematico
Universo de
Representacao
Universo de
Codificacao
1.3. ESCOPO
Este modelo conceitual vai ser utilizado em quase todos os captulos, de forma a que
o leitor tenha sempre em mente qual o nvel de abstraca~o correto a cada momento. Para
isto, no incio de cada captulo, existe uma ilustraca~o com o modelo conceitual apropriado
e um texto explicativo, que vai se tornando mais resumido a medida que os captulos v~ao
avancando, pois espera-se que o leitor ja esteja devidamente familiarizado com ele.
1.3 Escopo
Este texto se atem a correta conceitualizac~ao do problema de Sntese de Imagens de Cenas
Tridimensionais e ao estudo dos pricincipais metodos e algoritmos envolvidos. As areas de
aplicac~ao s~ao diversas, podendo ser citadas as seguintes:
Entretenimento
Televis~ao
Filmes
Jogos
CAD / CAM
Engenharia
Arquitetura
Design
Visualizac~ao Cientca
Medicina
Biologia
Matematica
N~ao e o objetivo deste texto tratar os seguintes assuntos: Gracos bidimensionais, Processamento de imagens e Interac~ao Homem-Maquina. Como areas de aplicac~ao citam-se:
Editoraca~o Eletr^onica
Illustraca~o
Sistemas de Pintura
Layout de Pagina
Processamento de Imagens
Vis~ao Computacional
Efeitos para Vdeo
Reconhecimento de Padr~oes
Projeto de Interfaces
Sistemas de Gerenciamento de Interface com o Usuario
Sistemas de Janela
Toolkits
10
~
CAPITULO 1. INTRODUC
AO
^
1.6. REFERENCIAS
BIBLIOGRAFICAS
11
12
~
CAPITULO 1. INTRODUC
AO
Implementac~ao
Harrington [12]
Gems [13] [14] [15] [16] [17]
Outros
Samet [18]
Pavlidis [19]
Rogers [20]
1.7 Exerccios
1.1 Faca uma comparac~ao entre as areas de Computac~ao Graca, Processamento de Imagens e Vis~ao Computacional. D^e pelo menos dois exemplos de aplicaca~o em cada uma
dessas areas.
1.2 Explique o Paradigma dos Universos. Discuta a natureza de cada nvel de abstraca~o.
1.3 Considere o seguinte problema: Implementar no computador um sistema para desenhos
de discos metalicos. Discuta detalhadamente esse problema do ponto de vista do paradigma
dos quatro universos (incluindo implementac~ao).
Cap
tulo 2
Cor
Uma imagem e denida, em ultima analise, pela cor dos seus pontos. Surge a o primeiro problema: o que e cor? Embora seja um termo utilizado amplamente no cotidiano, e
de difcil formalizac~ao. O paradigma dos quatro universos fornece a conceitualizac~ao necessaria. No universo fsico o fen^omeno a ser estudado e a luz que corresponde, no universo
matematico, a um modelo que descreve o fen^omeno luz adequadamente. Ja no universo
de representac~ao existem esquemas que fornecem uma representac~ao nita para o modelo
adotado, conforme pode ser visto na gura 2.1.
Luz
Modelo
Espectral
Representacao
Tricromatica
Sistemas
de Cor
do espectro visvel.
13
14
CAPITULO 2. COR
+1
C ()s ()d;
i
C () =
n
X
c P ():
k
=1
Para compreender melhor o processo de amostragem e reconstruc~ao de cor, considerese o que ocorre quando se utiliza uma c^amara de televis~ao para captar uma imagem da
natureza, que e ent~ao transmitida por tele-difus~ao. A luz que atinge a lente e focada,
gerando uma imagem no tubo da c^amara, e os circuitos eletr^onicos da c^amara fazem uma
varredura da imagem, gerando um determinado numero de linhas (que depende do padr~ao
de vdeo adotado). A imagem e transmitida desta forma. As ondas s~ao ent~ao captadas por
15
~ DISCRETA DE COR
2.3. REPRESENTAC
AO
uma antena e o sinal original e reconstrudo pelo monitor da televis~ao. A cor reconstruda
e id^entica (perceptualmente) a cor original devido ao fen^omeno do metamerismo, denido
na proxima sec~ao. A gura 2.3 ilustra o processo.
antena
Cena
Sinal
Reconstruido
amostragem
camara
TV
(R,G,B)
Sinal
Original
Transmissao
Reconstrucao
)) 2 <
Esta representac~ao dene uma transformac~ao linear, pois: R(af1 + bf2) = aR(f1)+ bR(f2):
E claro que este processo de amostragem acarreta em perda de informac~ao (g. 2.4) (a
representaca~o e ambgua, ou seja, um mesmo vetor pode representar mais de uma func~ao).
Este tipo de representaca~o e valida, no entanto, porque o problema de cor deve ser
abordado do ponto de vista perceptual e n~ao do ponto de vista fsico (na realidade e um
problema psico-fsico). Em 1807, Young concluiu, a partir de experimentos, que o olho humano possui tr^es tipos de receptores luminosos (celulas) que s~ao mais sensveis ao intervalo
(da radiac~ao) que corresponde aos comprimentos de onda na faixa do vermelho, verde e
azul, respectivamente. Estes tr^es tipos de receptores fazem uma amostragem da radiaca~o
nestes tr^es comprimentos de onda. Desta forma, o espaco perceptual de cor e um espaco
de dimens~ao nita (dimens~ao tr^es). Isto signica que uma mesma sensaca~o de cor pode ser
obtida a partir de distribuico~es espectrais distintas, um fen^omeno conhecido por metamerismo. Gracas a isto a televis~ao produz imagens aceitaveis ao ser humano, uma vez que o
conjunto de distribuic~oes espectrais existentes na natureza e muito mais rico do que aquele
que pode ser produzido articialmente no monitor de uma televis~ao.
16
CAPITULO 2. COR
x1
x2
blue
(400 nm)
x3
(comprimento de onda)
red
(700 nm)
n
X
c P ();
k
=1
+1
C ()r ()d:
k
A resposta espectral do sistema pode ser obtida experimentalmente. Para isto usam-se
quatro emissores de luz. Os tr^es primeiros correspondem as cores primarias e podem ter
as intensidades controladas. O quarto emite a luz monocromatica que se deseja igualar.
Direcionando os tr^es fachos de luz provenientes dos tr^es emissores primarios para um unico
ponto, e ajustando as suas intensidades ate que, para um observador padr~ao, a cor resultante
seja id^entica a cor do quarto emissor, obt^em-se as componentes da luz monocromatica de
teste em relaca~o a base de primarias (g. 2.7). Algumas cores n~ao s~ao igualadas, a menos
que se adicione uma primaria junto com a cor de teste. Matematicamente, isto corresponde
a uma intensidade negativa.
Neste ponto o leitor ja deve ter percebido que o objetivo e escrever uma dada cor como
17
2.4. ESPAC
OS DE COR
1.0
2.4
0.8
2.2
2.0
546 - green
1.8
1.6
1.4
1.2
1.0
0.8
0.6
0.4
700 - red
0.6
0.4
0.2
0.4
0.6
0.8
0.2
435.8 - blue
0.2
2.8
2.6
Y
y
-1.6-1.4-1.2-1.0-0.8-0.6-0.4-0.2
1.0
1.78
1.97
1.80
XYZ
1.22
1.00
1.06
446
446
RGB
555 599
543
770
604
18
CAPITULO 2. COR
r2
r3
P2
P3
r1
P1
(metamerismo)
19
O conceito de cor complementar de uma cor c tambem pode ser denido de forma
analoga. E uma cor que se misturada com a cor c nas proporc~oes apropriadas produz
branco (c1 + c2 = cor acromatica(branco)). O ponto acromatico deve estar contido no
segmento de reta que une c a sua cor complementar (por que?).
2.5.1 Decomposic~ao Lumin^ancia-Cromin^ancia
20
CAPITULO 2. COR
Ponto
Acromatico
(1/3,1/3,1/3)
Cor c
Comprimento de
onda dominannte
da cor c
cor
complementar
1
R
Linha Purpura
1
B
dim(Ker(L)) + dim(Im(L)) = n:
L(c1 c2 ) = 0 ) c1
c2 2 ker(L):
21
^
2.6. LUMINANCIA
c1-c2
ker(L)
c1-c2
c1
c2
2.6 Lumin^ancia
Apos a discus~ao sobre decomposic~ao cromin^ancia-lumin^ancia, o leitor deve estar se perguntando o que e, anal de contas, a lumin^ancia. Para compreender este conceito, suponha-se
uma luz monocromatica com pot^encia constante de 1 watt. Sera que a resposta do olho
a este estmulo e linear, ou seja, perceptualmente, se variarmos o comprimento de onda,
sera que um observador padr~ao concluira que as luzes tem brilho constante? A resposta e
n~ao. A resposta e maxima para comprimento de onda igual a 555 nm (faixa do verde). A
gura 2.10 mostra a sensibilidade relativa do olho em func~ao do comprimento de onda.
sensibilidade
relativa
1.0
V(
400
555
700
(nm)
22
CAPITULO 2. COR
colorimetrica que corresponde aos termos perceptuais de brilho (para emissores) ou luminosidade (para re
etores).
Se a luz n~ao for monocromatica, mas sim caracterizada por uma distribuica~o espectral
C (), tem-se que:
L(C ()) = K ()
Isto pode ser expresso em func~ao da representac~ao de C no sistema CIE4 -RGB por
L(C ()) =< L; c >=< (0:177; 0:812; 0:0106); (c ; c ; c ) > :
r
23
~ CIE-XYZ
2.7. PADRAO
a)
b)
(-0.5,1)
(1.5,1)
(0.5,1)
(0,1)
(0,1)
(0.5,0)
(1,0) (1.5,0)
(1,1)
(1,0)
T(1,0) = (1,0)
T(0,1) = (0.5,1)
T(1,0) = (1,0)
T(0.5,1) = (0,1)
T(0,1) = (-0.5,1)
10
A@
ab
ba
ab
ab
24
CAPITULO 2. COR
Ha uma innidade de planos no espaco XY Z que se projetam sobre o diagrama, perdendo
a lumin^ancia nesse processo. Projetando uma cor no plano de Maxwell tem-se:
X
Y
Z
; y=
; z=
;
X +Y +Z
X +Y +Z
X +Y +Z
x
z
x 1 x y
:
X = Y; y = Y; Z = Y ) (X; Y; Z ) = Y ; 1;
y
y
y
y
As coordenadas xyY permitem que se faca uso do diagrama de cromaticidades na espex=
cicac~ao de cores.
$ XY Z
A mudanca do sistema RGB para o sistema XYZ n~ao pode ser feita diretamente a partir
da tabela 2.1 porque as coordenadas la presentes s~ao coordenadas de cromaticidade. Ent~ao
procura-se uma matriz que represente a transformaca~o apropriada:
X1 0
xC
@Y A = @
yC
Z
(1 x y )C
onde C = X + Y + Z ; C
10
0
xC
R1
C R1
A@GA = M @C GA;
yC
(1 x y )C B
CB
; C = X +Y +Z :
Na realidade so dispoem-se das coordenadas xyz e precisa-se determinar o valor dos tr^es
escalares C ; C ; C , que escalam apropriadamente os vetores da base. E necessario ent~ao
0
xC
yC
(1 x y )C
=X +Y +Z
g
X
@ Y
Z
0
w
w
C
A = M @C
C
1
g
b
C
A ) @C
C
1
g
b
X
A = M 1@ Y
Z
1
1
w
10
A@
10
A@
25
Os sistemas padr~ao s~ao aqueles homologados por alguma instituic~ao normativa. Pode-se
citar o sistema de cor CIE-RGB, criado em 1931, que xa uma base de primarias composta
pelas cores monocromaticas de comprimento de onda 700 m(Red); 546 m(Green) e 435.8
m(Blue); o sistema CIE-CMY, que utiliza como primarias as cores complementares ciano (azul-piscina), magenta (violeta) e amarelo para simular um sistema subtrativo de cor
(g. 2.12); e o sistema CIE-XYZ, cuja base de primarias, chamadas X, Y e Z, esta fora do
espectro visvel.
A principal nalidade de um sistema padr~ao e que, por ser independente de qualquer
dispositivo fsico, possibilita a mudanca de coordenadas entre sistemas distintos e fornece
uma maneira de armazenamento de imagens que independe de um dispositivo particular.
2.8.2 Sistemas dos Dispositivos
Os sistemas dos dispositivos s~ao denidos pelas bases de primarias dos dispositivos. O gamute de um dispositivo (o conjunto de cores realizaveis pelo dispositivo) e um tri^angulo
contido no diagrama de cromaticidade (por que?). Os sistemas dos dispositivos t^em uma
import^ancia intrnseca porque, em ultima analise, s~ao com eles que as imagens s~ao reconstrudas. O espaco de cor de um dispositivo e um subconjunto do solido de cor que, em
geral, tem a forma de um paraleleppedo cujas faces s~ao paralelogramos. Quando se efetua
a mudanca de coordenadas tem-se ent~ao um cubo (g. 2.12).
2.8.3 Sistemas Computacionais
Os sistemas computacionais s~ao sistemas utilizados tanto para sntese de imagens como no
processamento de imagens. Podem ser, por exemplo, sistemas padr~ao, ou sistemas com
alguma caracterstica propria, tal como utilizar uma base com mais de tr^es primarias.
2.8.4 Sistemas de Interface
Sistemas de cor baseados em espacos vetoriais s~ao praticos do ponto de vista computacional,
mas s~ao muito ruins para serem usados na interface com o usuario. Os sistemas de interface
objetivam oferecer uma interface adequada a especicaca~o de cores por um usuario comum,
26
CAPITULO 2. COR
branco
preto
27
brilho
tintas
branco
tonalidade
cor pura
tons
cinzas
shades
saturacao
preto
28
CAPITULO 2. COR
valor
tonalidade
saturacao
M
Preto
2.9 Exerccios
2.1 O que e metamerismo? D^e exemplos de metamerismo em nosso cotidiano.
2.2 Dena o espaco espectral de cor.
2.3 D^e uma justicativa para mostrar que o espaco espectral de cor tem dimens~ao innita.
2.4 Mostre que o solido das cores visveis e um conjunto convexo e apresente uma visualizaca~o 3D do sistema CIE-RGB.
2.5 Justique por que as cores espectrais est~ao situadas no bordo do diagrama de cromaticidade.
29
2.9. EXERCICIOS
valor
saturacao
tonalidade
30
CAPITULO 2. COR
d) Diga como pode ser feita uma interpolac~ao entre duas cores no sistema HSV.
2.14 Considere o solido de cor de um dispositivo graco e uma cor que n~ao pode ser
representada acuradamente neste dispositivo.
a) Quais s~ao os tipos de situac~ao que podem causar este problema.
b) Proponha metodos de aproximar esta cor no dispositivo.
c) Discuta os aspectos positivos e negativos de cada metodo proposto.
2.15 Calcule as coordenadas de cromaticidade de uma cor com coordenadas C = (r; g; b).
2.16 Dado que a mistura de duas cores, segundo as leis de Grassman, pode ser calculada
pela adic~ao de suas coordenadas tricromaticas (X,Y,Z) e que os valores de cromaticidade
(x; y; z) de uma cor s~ao
X
Y
Z
x=
;
y=
;
z=
(X + Y + Z )
(X + Y + Z )
(X + Y + Z ) ou
xY
(1 x y)Y ;
;
Y =Y;
Z=
y
y
determine as coordenadas de cromaticidade da mistura das tr^es cores c1 ; c2 ; c3 dadas no
sistema CIE-xyY, respectivamente, por (0.1,0.3,10.0), (0.35,0.2,10.0), (0.2,0.5,10.0).
X=
= Yy11 ; T2 = Yy22 ;
= (x1T1 ; Y1; (1 x1
= (x2T2 ; Y2; (1 x2
T1
X1
X2
X12 = X1 + X2
X12x + X12y + X12z
y1 )T1 );
y2 )T2 ):
y2 )T2 ) )
x2 T2 y2 T2
(2.1)
(2.2)
31
2.9. EXERCICIOS
x2
x1
X1
X12
x12 X2
x1 T1 + x2 T2 = a (T1 + T2 );
c1 + c2 = a (2:2) ) : y1 T1 + y2 T2 = a (T1 + T2 );
Y1 + Y2 = y1 T1 + y2 T2 = 1:
8
<
a (T1 + T2 ) = 1 ) (T1 + T2 ) =
y
x2
1 )T = 1
2
a
a
y
x
x1 T1
a (T1 + T2 ) x1 T1
y
;
=
1
T2
T1
y
a (T1 + T2 ) y1 T1 1 y1 T1
= 1 T ;
T2
1
y
1 Y1:
(2.3)
T1 :
y2
Y2
=
=
(2.4)
2.19 Dados dois espacos tricromaticos de cor A e B com bases (A1 ; A2 ; A3 ) e (B1 ; B2 ; B3 ),
respectivamente, e a matriz [a ] de mudanca de base entre A e B .
ij
32
CAPITULO 2. COR
Cap
tulo 3
Uso
Funcoes
Formato
Estrutura
Aplicacao
Modelo
Tipo de Dados
Tecnologia
34
CAPITULO 3. DISPOSITIVOS GRAFICOS
No formato vetorial, os dados s~ao representados por unidades basicas de informac~ao, descritas por coordenadas em um espaco vetorial. Estes elementos s~ao associados a posic~oes
ou a vetores deste espaco. No primeiro caso, eles podem ser usados na especicaca~o dos
pontos iniciais e nais de segmentos de reta, vertices de polgonos e malhas de controle
de curvas ou superfcies parametricas. Ja no segundo caso, eles podem especicar forcas,
direc~oes ou orientaco~es. A dimens~ao do espaco vetorial determina o numero de coordenadas
de seus elementos basicos. Alem disso, o espaco pode ser contnuo ou discreto, tendo suas
coordenadas representadas por numeros reais ou inteiros, respectivamente.
As informac~oes geometricas, em muitos casos, precisam ser complementadas por informac~oes topologicas para especicar completamente o modelo de um objeto graco. Este
assunto sera discutido em profundidade nos captulos dedicados a Modelagem.
As imagens digitais s~ao tratadas no captulo 4. Entretanto, no que se segue, dene-se este
conceito de uma forma um tanto limitada, porem suciente, ao proposito de estudo dos
equipamentos gracos.
Uma imagem digital e uma matrix M N onde cada elemento da matriz e um elemento
de um espaco vetorial V . O caso mais comum e quando V e um espaco de cor. Chama-se
de resoluc~ao da imagem a ordem M N da matriz. De modo analogo, dene-se imagem
volumetrica tomando matrizes de ordem M N P , onde cada entrada tambem e um
elemento do espaco de cor. E comum utilizarem-se os termos imagens bidimensionais e
imagens tridimensionais para cada um dos dois casos, respectivamente.
O formato matricial de dados permite a representaca~o de imagens bidimensionais e volumetricas. Note-se que a estrutura da matriz determina implicitamente a conectividade de
seus elementos. Cada elemento e chamado de pixel.
3.1.3 Convers~ao entre Formatos
~ DOS DISPOSITIVOS
3.2. CLASSIFICAC
AO
35
(a)
(b)
Figura 3.4: Convers~ao entre Formatos.
36
CAPITULO 3. DISPOSITIVOS GRAFICOS
A evoluca~o dos equipamentos gracos re
ete, de uma certa forma, o desenvolvimento da
computac~ao graca como um todo. Inicialmente, quando havia uma grande preocupac~ao
com a modelagem geometrica, os dispositivos vetoriais eram mais populares. Depois, com
a ^enfase na sntese de imagens sosticadas, os equipamentos matriciais passaram a ser
mais utilizados. Atualmente, a tend^encia e a busca de soluco~es integradas, combinando
dispositivos do tipo vetorial e matricial nas diversas fases do processo da computac~ao graca
para atender classes especcas de aplicac~oes. De um modo geral, os dispositivos vetoriais
est~ao vinculados a especicaca~o e manipulac~ao dos modelos geometricos, enquanto que os
dispositivos matriciais est~ao relacionados com a exibic~ao e o processamento de imagens.
Alem disso, varios fatores de natureza tecnica, industrial e econ^omica, determinaram a
evoluc~ao dos equipamentos gracos. Os dispositivos do tipo matricial necessitam do uso de
muita memoria para armazenar a imagem. Por outro lado, os dispositivos do tipo vetorial se
beneciaram da tecnologia de radar, numa epoca em que o custo da memoria inviabilizava
o uso de dispositivos de formato matricial (decada de 60 e 70). Ja os dispositivos do
tipo matricial foram impulsionados na decada de 80 por dois fatores: a queda do preco de
memoria, e a revoluca~o nas comunicaco~es que a televis~ao provocou (neste captulo sera visto
que os dispositivos de sada graca mais comuns utilizam o formato matricial e se baseiam na
tecnologia de monitores de televis~ao). Os avancos recentes nas areas da supercomputac~ao e
da computaca~o paralela t^em tido um impacto signicativo nos dispositivos de processamento
graco.
3.2.1 Criterios de Classicac~ao
No estudo dos dispositivos gracos e necessario criar abstrac~oes das suas caractersticas
operacionais, de modo que o vnculo entre programas e equipamentos n~ao se transforme num
fator de depend^encia. Varios aspectos contribuem para o estabelecimento de criterios para
uma classicac~ao dos equipamentos gracos. Nessa analise ha categorias de equipamentos
estruturadas, hierarquicamente, segundo dois pontos de vista: o funcional, e o do formato
dos dados gracos.
Em relac~ao ao criterio funcional, dividem-se os dispositivos gracos em:
equipamentos de entrada;
equipamentos de processamento;
equipamentos de sada.
Quanto ao formato de dados os dispositivos gracos se dividem em equipamentos do tipo
vetorial e do tipo matricial. O diagrama da gura 3.5 mostra como essas classicac~oes se
relacionam.
37
3.3. EQUIPAMENTOS DE ENTRADA GRAFICA.
Graphics
Devices
Input
Vector
Matrix
Process
Vector
Matrix
Hybrid
Output
Vector
Matrix
38
CAPITULO 3. DISPOSITIVOS GRAFICOS
A estrutura dos dispositivos de entrada do tipo matricial consiste em um sensor que capta
sinais no espaco ambiente e um circuito digitalizador que converte esses sinais analogicos
para o formato matricial.
O processo de convers~ao de uma imagem para uma imagem digital e conhecido como
digitalizac~ao. Os dispositivos de entrada matricial s~ao, em sua maioria, destinados a digitalizac~ao de imagens. Dependendo do meio no qual se encontra a imagem a ser digitalizada
3.4. EQUIPAMENTOS DE PROCESSAMENTO GRAFICO
39
40
CAPITULO 3. DISPOSITIVOS GRAFICOS
Os dispositivos do tipo vetorial se destinam principalmente ao processamento de modelos geometricos. Eles atuam portanto sobre as coordenadas das diversas componentes dos
modelos, tais como segmentos de reta, polgonos, e etc. Em func~ao do numero de processadores, podem-se ter dispositivos do tipo SISD (single-instruction, single data stream), ou
MISD (multiple-instruction, single data stream).
Os dispositivos do tipo SISD s~ao uniprocessadores que possuem instruc~oes especiais para
processamento de dados geometricos, do tipo multiplicaca~o de matrizes por vetores.
Os dispositivos do tipo MISD s~ao pipelines compostas de varios processadores organizados sequencialmente. O processamento graco e dividido em etapas, onde cada processador
e especializado numa classe de operac~oes gracas, como projeca~o, recorte, etc.
3.4.2 Dispositivos de Processamento Matricial
41
3.5. EQUIPAMENTOS DE SAIDA GRAFICA
Perifericos
CPU
BUS
Memory
Video
Controler
Frame
Buffer
Monitor
(a)
CONTROLADOR DE VIDEO
end.
x
F
R
A
M
E
B
U
F
F
E
R
inicia ou
incrementa
sinal de
deflexao
endereco
linear
raster.
end.
y
valor do
pixel
inicia ou
decrementa
sinal de
cor ou
conversor video
luminancia D/A
CONVERSOR D/A
(b)
Figura 3.6: Dispositivo de Vdeo.
O monitor de vdeo (g. 3.7) consiste em um tubo de raios catodicos com uma tela e um
canh~ao que produz um ou mais feixes de eletrons controlado por um sistema de focalizac~ao
e exploraca~o. Em cada ponto da tela se colocam uma ou mais camadas de fosforo, de
modo que, ao atingir um desses pontos, o feixe de eletrons provoca a emiss~ao de radiac~ao
eletromagnetica na faixa visvel do espectro. O funcionamento basico de qualquer monitor
de vdeo e bastante similar ao funcionamento de um monitor de televis~ao. No sistema
NTSC1 e PAL-M2 existem 525 linhas (483 visveis) e 644 pixels por linha (raz~ao de aspecto
4:3). Monitores para aplicaco~es gracas, no entanto, costumam ter uma resoluc~ao muito
maior, algo em torno de 1024 1024 pontos enderecaveis.
O espaco de cor do monitor de vdeo depende do numero de camadas de fosforo em cada
ponto. Os monitores monocromaticos, ou de dois nveis (bitmapped), utilizam uma unica
camada de um fosforo que e sensibilizado com voltagem mnima ou maxima; os monitores
que permitem a exibica~o de tons de cinza (gray scale) utilizam uma unica camada de fosforo
cuja sensibilidade produz uma radiaca~o com a lumin^ancia proporcional a voltagem aplicada
1 National Television System Cometee.
2 Phase Alternating Lines.
42
CAPITULO 3. DISPOSITIVOS GRAFICOS
luz
visivel
feixe
defletido
feixe de eletrons
catodo
(-)
grade de
foco (-)
amplificador
de
deflexao horizontal
anodo
(+)
cobertura de
fosforo
3.5. EQUIPAMENTOS DE SAIDA GRAFICA
43
Varredura Aleatoria
44
CAPITULO 3. DISPOSITIVOS GRAFICOS
de uma forma mais rapida e
exvel, alem de permitir que a coorec~ao gama seja feita por
intermedio da look-up table. Nesse caso o esquema correto para os dispositivos de cor real
e como mostrado na gura 3.9 (c).
Frame Buffer
CRT matricial
registrador
DAC
conversor D/A
(a)
Frame Buffer
3
CRT matricial
Canhoes
registradores
1
DAC
BLUE
DAC
GREEN
0
1
DAC
RED
conversores D/A
(b)
Frame Buffer
Look-up Table
CRT matricial
registrador
conversor D/A
DAC
canhao
BLUE
255
(c)
Figura 3.9: Memoria de Exibic~ao.
Nos dispositivos vetoriais, a memoria de exibic~ao contem instruc~oes de desenho com as
coordenadas de tela dos objetos gracos. Este conjunto de instruc~oes, denominado de lista
de exibic~ao (\display list"), e executado ininterruptamente pela controladora de vdeo para
3.5. EQUIPAMENTOS DE SAIDA GRAFICA
45
M x,y
D x,y
Display List
Controller
pela SIGGRAPH para denir quem pode pertencer ao grupo dos Pioneiros da Computac~ao Graca. A
pessoa deve ter trabalhado na area antes do aparecimento do primeiro display DVST da Tektronix
46
CAPITULO 3. DISPOSITIVOS GRAFICOS
Frame Buffer
LUT
47
~
3.6. ESTAC
OES
GRAFICAS
INTERATIVAS
Laser
espelho
lente
cilindro de
selenium
(-)
papel
fuser
+
toner (-)
HOST
Graphics
Processor
Display
Processing
Unit
Monitor
Keyboard
Tablet
Dials
48
CAPITULO 3. DISPOSITIVOS GRAFICOS
CPU
+
Memory
FrameBuffer
+
BitBlt
Monitor
Keyboard
Tablet
Etc
CPU
+
Memory
Pipeline
Frame
Buffer
Monitor
Parallel
Proc
3.7 Exerccios
3.1 Explique a diferenca entre os formatos gracos vetorial e matricial.
3.2 Discuta o problema da convers~ao de dados gracos. D^e exemplos praticos de aplicac~oes.
3.7. EXERCICIOS
49
3.4 Descubra a resoluc~ao espacial e de cor das placas CGA, EGA, VGA, SuperVGA e
de uma impressora matricial padr~ao Epson. Elas possuem look-up table? Com quantas
entradas? Qual o universo (tamanho da palete) de cor?
3.5 Liste a funcionalidade basica de um subsistema graco 2D e 3D.
50
CAPITULO 3. DISPOSITIVOS GRAFICOS
Cap
tulo 4
Imagem
A imagem digital e a materializac~ao de grande parte dos processos de Computac~ao Graca,
servindo como elo de ligac~ao entre o usuario e esses processos, evidenciando, desta forma,
os seus resultados. E valido armar-se que a imagem esta presente em todas as areas da
Computac~ao Graca, seja como produto nal, como no caso da visualizac~ao, ou como parte
essencial do processo de interac~ao, no caso da Modelagem. Por este motivo, e de fundamental import^ancia a perfeita compreens~ao do signicado da imagem nos diversos contextos.
Neste captulo vai-se desenvolver uma conceitualizac~ao da imagem digital, apresentando-se
modelos abstratos para uma imagem e diversas formas de representac~ao. Aqui, mais uma
vez, o paradigma dos quatro universos e bastante apropriado para obter-se um perfeito
entendimento dos diversos modelos de imagem que v~ao-se estudar (g. 4.1).
Imagem
Modelo
Continuo
Representacao
Matricial
Imagem
Digital
52
CAPITULO 4. IMAGEM
4.2 Discretizac~ao
O processo de discretizaca~o produz uma imagem discreta, a partir de um numero nito
de amostras colhidas da imagem contnua. Isto signica que a func~ao e amostrada num
subconjunto discreto U 0 U :
U = [a; b] [c; d] = f(x; y) 2 <2 ; x 2 [a; b]; y 2 [c; d]g;
U 0 = f(x ; y ) 2 U ; x = ix; y = j y; i; j 2 Z; x; y 2 <:g
Para codicar uma imagem, em geral, discretiza-se, tambem, o espaco de cor, para que
a informaca~o de cor possa ser armazenada com um numero nito de bits. A discretizac~ao
do espaco de cor e chamada de quantizaca~o. A rigor, quando se trabalha com numeros em
ponto
utuante, signica que ja foi feita uma quantizac~ao, no entanto, ignora-se esse fato.
Uma imagem digital e uma imagem discretizada no domnio espacial e no espaco de cor
(g. 4.2).
i
1 Isto n~ao quer dizer que a func~ao e contnua. Em geral, ela n~ao e.
53
Imagem Continua
discretizacao
reconstrucao
Imagem Discreta
quantizacao
decodificacao
(i,j)
n
p
o
n
t
o
s
dy
dx
i
m pontos
54
CAPITULO 4. IMAGEM
4.5 Quantizac~ao
A quantizaca~o tem dois propositos principais: permitir que a imagem digital seja exibida
em um dispositivo com uma resoluc~ao de cor menor ou ent~ao servir como uma forma de
compactaca~o da imagem.
O processo de quantizac~ao costuma fazer surgir contornos de quantizac~ao, que marcam a
transic~ao de um nvel para outro. Em imagens monocromaticas, o numero mnimo de tons,
para obter-se um gradiente de cor razoavel, e 64 (6 bits). O ideal, para evitar o surgimento de
contornos de quantizac~ao, s~ao 256 (8 bits) tons. No entanto, existem aplicac~oes importantes,
por exemplo impress~ao em papel, onde e necessario fazer a quantizac~ao para 1 bit, ou duas
cores { preto e branco.
Uma fotograa pode ser digitalizada por um scanner gerando uma representac~ao matricial, na qual a cor de cada ponto pode ser armazenada em 8 bits, por exemplo. No processo
de impress~ao desta imagem digital, uma impressora laser faz a quantizac~ao para 1 bit. E
claro que a intenc~ao n~ao e obter uma imagem chapada em dois tons. Para que a imagem
seja visualmente aceitavel empregam-se os algoritmos de dithering.
Fotograa!Scanner!Impressora Laser.
Imagem!quantizaca~o!dithering!exibic~ao.
Formalizando, a quantizac~ao para m bits
q : S1 ! S2; S2 S1;
: U ! ) 0 : U ! 0 ; 0 (x; y) = q((x; y))
e uma transformac~ao sobrejetiva que para toda cor c 2 S 1 , representada com n bits, associa
q(c) 2 S 2 representada por m bits, m < n.
Logicamente, a quantizac~ao e um processo de partic~ao do espaco de cor. Cada celula
da partic~ao e chamada de celula de quantizac~ao. Todas as cores contidas em uma celula
de quantizac~ao s~ao mapeadas em uma certa cor chamada de nvel (valor) de quantizac~ao.
Dada uma celula de quantizaca~o % , com nvel de quantizac~ao c , ent~ao para toda cor c 2 % ,
d(c; c ) e o seu erro de quantizac~ao (g. 4.4).
i
55
~
4.5. QUANTIZAC
AO
Niveis de Quantizacao
c1
c2
c3
c4
S
S1
Celulas de Quantizacao
m
(2 conjuntos)
Neste texto, v~ao-se considerar dois algoritmos de quantizaca~o: o algoritmo por populosidade e o algoritmo do corte mediano.
4.5.1 O Algoritmo de Populosidade
f1
f2
f3
c1
c2
cn
Cor
56
CAPITULO 4. IMAGEM
O algoritmo do corte mediano, criado por Paul Heckbert em 1982, determina, em primeiro
lugar, as celulas de quantizac~ao. O objetivo do algoritmo e que cada celula de quantizac~ao
possua mais ou menos o mesmo numero de cores da imagem.
O primeiro passo e determinar o menor ret^angulo no espaco de cor (bounding box) que
engloba todas as cores da imagem. Em seguida ele ordena as cores usando como chave
a componente (r; g ou b) que corresponde ao eixo coordenado paralelo a maior dimens~ao
do ret^angulo. Por m ele calcula a mediana deste conjunto ordenado levando em conta
o histograma de frequ^encia das cores. Por denic~ao a mediana de um conjunto ordenado
" = f1 2 ::: 1 g e:
;
n impar: ( n+1
2 )
n par: (( n2 ) + ( n2 +1) )=2.
Feito isto, corta-se o ret^angulo por um plano que contem a mediana do conjunto de
cores e e perpendicular ao eixo coordenado escolhido. Este processo e repetido ent~ao,
recursivamente, para cada sub-ret^angulo resultante, ate que se atinja o numero de celulas
de quantizac~ao desejado.
Os nveis de quantizac~ao podem ser escolhidos, por exemplo, tomando-se a media das
cores de cada celula de quantizac~ao. O algoritmo do corte mediano e o melhor algoritmo
de quantizaca~o para 8 bits conhecido. A implementac~ao eciente do algoritmo necessita de
uma estrutura de dados espaciais adequada ao processo de subdivis~ao recursiva do espaco.
n
4.6 Dithering
Dithering e um processo de ltragem para minimizar a percepc~ao dos contornos de quantizac~ao. Em certos casos, mesmo utilizando-se bons algoritmos de quantizaca~o ca difcil
n~ao perceber os contornos de quantizaca~o, por exemplo, na quantizac~ao para dois nveis.
Em geral, quando se faz uma quantizac~ao comete-se um erro. Os contornos de quantizac~ao surgem devido a forte correlac~ao entre a cor de um pixel e a cor dos seus vizinhos.
Geometricamente trata-se de uma curva conexa, o que acarreta que a passagem entre os
diferentes nveis de quantizac~ao seja perceptvel.
O objetivo de um algoritmo de dithering e descorrelacionar o erro de quantizac~ao. O
erro torna-se crtico quando a quantizac~ao e para 1 bit apenas. Neste caso, existem somente
duas celulas de quantizaca~o, que correspondem a dois nveis de quantizac~ao, conforme pode
ser visto na gura 4.6.
4.6.1 Por que Funciona?
57
4.6. DITHERING
c1
C1
c2
C2
Os algoritmos de meio tom para industria graca datam do incio do seculo. O metodo
utiliza um processo fotograco tradicional. A imagem e refotografada com uma retcula
sobreposta. Regi~oes de alta lumin^ancia (claras) geram pontos pequenos enquanto regi~oes
de baixa lumin^ancia (escuras) geram pontos grandes que se superp~oem.
Os algoritmos de dithering devem preservar as altas frequ^encias, que correspondem aos
contornos das areas de interesse, e substituir as baixas frequ^encias, que correspondem as
texturas presentes no interior das areas, por outras perceptualmente equivalentes.
A classicaca~o dos algoritmos e feita utilizando padr~oes produzidos em areas de intensidade constante. De acordo com a regularidade dos padr~oes, estes podem ser periodicos ou
aperiodicos e de acordo com a estrutura podem estar aglomerados ou dispersos.
periodicos: processos determinsticos que usam grades de amostras regulares.
aperiodicos: minimizam o erro distribuindo-o globalmente.
dispersos: criam os tons de cinza com pontos individuais uniformemente distribudos
(indicado para dispositivos com controle preciso, ex. monitores de vdeo).
aglomerados: concentram os pontos em pequenos grupos de mesmo valor (indicado
para dispositivos sem controle preciso, ex. impressoras).
4.6.3 Dithering com Modulac~ao Aleatoria
O algoritmo de dithering com modulac~ao aleatoria aplica uma pequena perturbac~ao aleatoria, uniformemente distribuda no intervalo das intensidades, ao valor de uma cor c antes
de quantiza-la:
58
CAPITULO 4. IMAGEM
q(c) = (c + random()) 2 C1 ? c1 : c2 :
O algoritmo de dithering ordenado utiliza uma pertubac~ao aleatoria de media nula, dada
sob a forma de uma matriz quadrada D de numeros pseudo-aleatorios:
Q(k; l) = (f (k; l) > D(i; j )); i = k%n; j = l%n:
Esta matriz funciona como um ltro2 de passa baixa.
n
max
35
30
18
22
31
36
35
29
15
10
17
21
32
29
14
16
20
14
13
11
19
13
28
24
25
28
34
27
12
23
26
33
34
35
30
18
22
31
36
35
59
4.6. DITHERING
Apos processar a imagem pelo ltro acima, a imagem resultante apresenta a repetic~ao
do padr~ao da gura 4.7:
intensidade constante acima da media (+clara) : regi~ao clara (branco) e aumentada.
intensidade constante abaixo da media (+escura): regi~ao clara (branco) e diminuda.
intensidade variavel: area do aglomerado varia.
4.6.6 Dithering Ordenado com Dispers~ao Pontual
0)
1)
2)
3)
4)
60
CAPITULO 4. IMAGEM
bons resultados. Isto signica que o dispositivo de exibic~ao deve ter uma resoluc~ao entre
150 8 = 1200 dpi3 e 150 10 = 1500 dpi.
4.6.7 Algoritmo de Dithering Aperiodico
=
=
+=
+=
+=
(f(i,j)>0.5);
Q(i,j) - f(i,j);
erro*3/8;
erro*3/8;
erro*1/4;
Como consequ^encia do modo com que o erro e propagado, surge um contorno de quantizac~ao
que se propaga na direc~ao da diagonal da imagem.
(i,j)
(i+1,j)
(i,j+1)
(i+1,j+1)
4.8. EXERCICIOS
61
4.8 Exerccios
4.1 Dena e explique a correc~ao gama.
4.2 Dena quantizac~ao de uma imagem.
4.3 Discuta o problema de um sistema de cor para armazenamento de imagens.
4.4 Considere o algoritmo de populosidade para quantizac~ao de cor.
a) Qual o procedimento de ordenac~ao mais adequado ao algoritmo?
b) Em que condic~oes o algoritmo apresenta resultados insatisfatorios?
c) Escreva um pseudo-codigo para o algoritmo.
d) Faca uma analise da complexidade do algoritmo.
62
CAPITULO 4. IMAGEM
a) Qual o criterio utilizado pelo algoritmo do corte mediano para escolher a direc~ao e o
ponto de subdivis~ao?
b) Qual a raz~ao desta escolha?
c) Sugira um outro criterio de subdivis~ao.
4.6 Considere o conjunto de cores, e a tabela de frequ^encia dessas cores numa imagem
digital, mostrado na gura 4.10. Obtenha a quantizaca~o da imagem para quatro nveis.
a) Determine a func~ao de quantizaca~o para o algoritmo de populosidade.
b) Esboce as celulas de quantizac~ao pelo algoritmo do corte mediano.
C6
Cor
C1
C2
C3
C4
C5
C5
C7
C4
C3
C2
C8
C9
C6
C7
C8
C9
Freq
2
3
2
1
2
1
1
1
2
C1
4.8 Como transformar uma imagem digital colorida em uma imagem em preto e branco
(ou seja, \descolorizar" a imagem)?
63
4.8. EXERCICIOS
4.9 Como pode ser denido o mapa de cor de uma look-up table de modo a mostrar o
negativo de uma imagem em gray-scale?
4.10 Considere-se um dispositivo raster com 4 bits por pixel e uma LUT(look-up table) com
12 bits por entrada (4 bits para R, G e B). Suponha-se que os quatro planos de memoria s~ao
particionados para armazenar duas imagens: imagem A nos dois planos de mais alta ordem
e imagem B nos dois planos de mais baixa ordem. Sabendo-se que as atribuico~es de cor para
os 2 bits dos valores dos pixels de cada imagem s~ao: 00 = R; 01 = G; 10 = B e 11 = W:
a) Mostre como carregar a LUT para que somente a imagem A seja exibida.
b) Mostre como caregar a LUT para que somente a imagem B seja exibida.
4.11 Dadas uma LUT com 16 entradas 12 bits e imagens com 2 bits por pixel, mostre
como a tabela deve ser carregada para produzir uma fus~ao entre duas imagens A e B ,
correspondendo a express~ao, A t + B (1 t), para valores de t = 0:0; 0:25; 0:5; 1:0. As
atribuico~es de cor s~ao as mesmas do item anterior.
4.12 Um dos problemas de uma imagem digital e o erro de quantizaca~o.
a) Dena \dithering" e explique o seu objetivo frente ao problema apontado.
b) Escreva o pseudo-codigo do algoritmo de dithering de
oyd-steinberg.
c) Escreva o pseudo-codigo de um algoritmo de dithering ordenado.
d) Que tipos de dispositivo s~ao adequados ao uso de um algoritmo de dithering com dispers~ao pontual?
e) Que tipos de dispositivo s~ao adequados ao uso de um algoritmo de dithering com aglomerac~ao de pontos?
4.13 Considere-se o algoritmo de run-length encoding que codica imagens usando o seguinte formato:
m; n; L1 I1 ; L2 I2 ; :::; L I ;
onde m e n s~ao numeros inteiros de 32 bits e especicam a resoluc~ao da imagem; os pares
(L I ); j = 1; :::; k s~ao numeros de 8 bits e indicam respectivamente o comprimento e a
intensidade do j esimo bloco de elementos da imagem com valor de intensidade constante
igual a I .
k
64
CAPITULO 4. IMAGEM
Cap
tulo 5
Geometria
As transformaco~es Geometricas ocupam uma posic~ao de destaque em Computac~ao Graca.
Elas permitem o reposicionamento de objetos no espaco, favorecendo o agrupamento desses
objetos e a gerac~ao de famlias de modelos a partir de um modelo basico. Os objetos
geometricos representados por estes modelos podem ser transformados aplicando-se uma
transformac~ao geometrica a um numero nito de pontos, por exemplo, nos vertices de
curvas poligonais ou de polgonos de controle de curvas algebricas por partes.
Espacos
Geometria
Relacoes
Operacoes
65
66
CAPITULO 5. GEOMETRIA
Neste captulo vai ser visto que, embora seja natural denir os objetos no espaco Euclideano, a geometria projetiva e a mais adequada para a computaca~o graca, pois estende a
geometria Euclideana com uma serie de vantagens.
Vai-se iniciar o estudo das transformac~oes lineares bi-dimensionais considerando o seu efeito
sobre os pontos do plano. Como foi visto anteriormente, um operador linear bi-dimensional
pode ser representado por uma matriz 2 2. O resultado da multiplicaca~o de um vetor
coluna (x; y) , que contem as coordenadas de um ponto, por uma matriz 2 2 generica
pode ser escrito como:
+ cy = x :
T (X ) = ab dc xy = ax
bx + dy
y
Atribuindo valores aos elementos a; b; c; d, pode-se obter uma relac~ao entre o ponto transformado e o ponto original, conforme mostrado abaixo.
a; d > 0; b = c = 0
! x = ax; y = dy { escalamento das componentes x e y.
a = 1; d = 1; b = c = 0 ! x = x; y = y { re
ex~ao em relac~ao ao eixo y.
a = 1; d = 1; b = c = 0 ! x = x; y = y { re
ex~ao em relac~ao ao eixo x.
a = d = 1; b = c = 0 ! x = x; y = y { re
ex~ao em relac~ao a origem.
T
67
~
5.2. TRANSFORMAC
OES
LINEARES
a = d = 0; b = c = 1
a = d = 0; b = c = 1
a = d = 1; b = 0
a = d = 1; c = 0
Um objeto geometrico qualquer pode ser transformado por um operador linear, aplicando-se a matriz de transformaca~o a cada um de seus pontos. A area do objeto transformado e
dada pelo produto do determinante da matriz de transformac~ao pela area do objeto original.
Uma mudanca de variavel no < e dada por T : < ! < , onde T e um operador
continuamente diferenciavel. Sendo R < com fronteira constituda por um numero nito
de conjuntos diferenciaveis e supondo-se que R e sua fronteira est~ao contidos no domnio
de T , e que:
T e injetiva em R;
det T 0, o determinante jacobiano de T , e diferente de zero em R;
ent~ao, se a func~ao f e limitada e contnua em T (R) (a imagem de R por T ), tem-se:
(u; v) (u; v) :
fdv = (f:T ) det T 0 dv;
T0 =
(u; v) (u; v)
( )
n
T R
@x
@x
@u
@y
@v
@y
@u
@v
y
T(R)
R
Dominio de T
T(R)
68
CAPITULO 5. GEOMETRIA
Se T e uma transformac~ao linear de < em < com matriz A, ent~ao T multiplica volumes
pelo fator jdet Aj :
V (T (R)) =
dv = jJ j dv = jJ j V (R):
( )
Afortunadamente, a transformac~ao de segmentos de reta pode ser obtida apenas pela
transformaca~o das suas extremidades1, existindo uma correspond^encia um a um entre os
pontos do segmento transformado e os pontos do segmento original:
T [p1 p2 ] = T [(1 t)p1 + tp2 ] = (1 t)T [p1 ] + tT [p2 ]:
Um operador linear aplicado a segmentos de reta paralelos sempre produz segmentos
paralelos. Pode ser mostrado que se dois segmentos AB e EF s~ao paralelos com inclinac~ao
m ent~ao os segmentos transformados possuem inclinaca~o m = (b + dm)=(a + cm). Isto
signica que paralelogramos s~ao transformados em paralelogramos.
Quando um operador linear e aplicado a um par de segmentos que se interceptam, o
resultado e um par de segmentos que tambem se interceptam. Alem disso, o ponto de
intersec~ao dos segmentos originais e transformado no ponto de intersec~ao dos segmentos
transformados. Entretanto, dois segmentos perpendiculares que se interceptam podem ser
transformados em dois segmentos que se interceptam e n~ao s~ao perpendiculares ou viceversa, ou seja, os ^angulos, em geral, n~ao s~ao preservados. Como vai ser visto adiante, os
^angulos s~ao preservados se a matriz de transformac~ao for ortonormal.
Denic~ao: Uma matriz A; n n, e ortonormal quando os seus vetores linha (ou coluna)
formam uma base ortonormal, ou seja:
a :a = 0 se i 6= j e a :a = 1; 8i; j 2 [1::n]:
Neste caso, AA = I , uma vez que o elemento (i; j ) e obtido pelo produto da i-esima linha
de A com a j -esima coluna de A , justamente a e a . Segue que A = A 1 tambem e uma
matriz ortonormal.
Alem dos efeitos de escalamento, re
ex~ao e cisalhamento, o efeito de rotac~ao de um
objeto, por um ^angulo ao redor da origem, tambem pode ser obtido por um operador
linear representado por uma matriz da forma:
cos() sin() :
R = sin
() cos()
Claramente, R e uma matriz ortonormal.
n
T R
69
a2 + b2 = 1; c2 + d2 = 1;
ac + bd = 0; ad bc = 1.
70
CAPITULO 5. GEOMETRIA
Linha do Horizonte
Cena Original
Transformacao
nao Linear
Fotografia
x y
; ;1 ;
z z
( = 1=z). Os pontos
z = 1. Tem-se, desta
71
~
5.5. TRANSFORMAC
OES
PROJETIVAS
Indica-se por a aplicaca~o que associa a cada ponto v = (x; y; z) no espaco am <3, o
ponto [x; y; z] do plano projetivo (isto e, (x; y; z) = [x; y; z] e a reta do espaco Euclideano
denida pelo vetor v). Essa aplicac~ao e chamada de aplicac~ao quociente.
(x,y,z)
z
RP
ponto projetivo
retas projetivas
(x/z,y/z,1)
Plano Afim
r2
y
x
Reta Ideal
(plano xy)
ponto ideal
~
(intersecao
de r1 e r2)
,
B
B
@
a
b
c
d
j
j
m
n
1
C
C
A
10
A@
10
A@
72
CAPITULO 5. GEOMETRIA
Em ambos os casos, v^e-se que pontos do plano am s~ao levados em pontos do plano am e
que pontos ideais s~ao levados em pontos ideais.
Para mostrar o efeito de p; q 6= 0 na terceira linha da matriz, considere-se o seguinte:
X
x
1 0 0 x
x
Y = y = 0 1 0
y =
y
:
Z
z
p q 1
1
px + qy + 1
Agora, um ponto do plano am, expresso em coordenadas homog^eneas, e levado para um
ponto do espaco tri-dimensional denido por z = px + qy + 1. Aplicando esta mesma
transformac~ao a um ponto ideal obtem-se:
M (x; y; 0) = (x; y; px + qy) :
Observando as equac~oes acima, v^e-se que n~ao ocorre o efeito de invari^ancia dos casos
anteriores: pontos ideais podem ser transformados em pontos do plano am e vice-versa.
Geometricamente, se um ponto ideal e transformado em um ponto P0 do plano am, ent~ao
a famlia de retas paralelas, que se interceptam nesse ponto ideal, s~ao transformadas em
uma famlia de retas incidentes no ponto P0 (g. 5.5). O ponto P0 e chamado de ponto de
fuga da transformaca~o. Um ponto de fuga correspondendo a uma direca~o paralela a um
dos eixos coordenados e chamado ponto de fuga principal. Como no plano am existem no
maximo duas direc~oes ortogonais, podem-se ter transformac~oes projetivas com no maximo
dois pontos de fuga principais. Cada um desses pontos de fuga e a imagem do ponto ideal
que corresponde a estas direco~es: [x; 0; 0] e [0; y; 0]. A exist^encia desses pontos de fuga e
controlada pelos elementos p e q, correspondendo as direc~oes x e y, respectivamente.
0
10
A@
z
RP
2
r2
r
Plano Afim
ponto
de fuga
Reta Ideal
(plano xy)
y
transformacao
perspectiva
x y
; ; 1 ; z = px + qy + 1:
z z
~ DE TRANSFORMAC
~
5.6. COMPOSIC
AO
OES
PROJETIVAS BI-DIMENSIONAIS
73
10
A@
74
CAPITULO 5. GEOMETRIA
B
B
B
B
B
@
C
C
C
C
C
A
75
~
5.7. TRANSFORMAC
OES
TRI-DIMENSIONAIS
B
B
@
C
C
A
B
B
@
C
C
A
B
B
@
C
C
A
76
CAPITULO 5. GEOMETRIA
Rodar o vetor normal ao plano de re ex~ao, em relaca~o a origem, ate que coincida com
10
B
B
@
CB
CB
A@
C
C
A
B
B
@
C
C
A
Aplicando a transformac~ao perspectiva ao ponto ideal [0; 0; 1; 0], que corresponde a intersec~ao das retas paralelas ao eixo z, obtem-se [0; 0; 1; r]. O ponto [x0; y0 ; z0 ; 1] = [0; 0; 1=r; 1]
representa a imagem deste ponto ideal. Dessa forma, v^e-se que as retas paralelas a direc~ao
z convergem para um ponto de fuga, de coordenada 1=r, sobre o eixo z . Isto signica que
o semi-espaco innito 0 z 1 e transformado no semi-espaco nito 0 z0 1=r.
Quando mais de um elemento da submatriz (1 3) e n~ao nulo, t^em-se transformaco~es
perspectivas com dois ou tr^es pontos de fuga. A transformac~ao perspectiva com tr^es pontos
5 Esta matriz e singular (n~ao e invertvel), pois possui as terceiras linha e coluna, nulas.
77
~ PERSPECTIVA
5.8. TRANSFORMAC
AO
B
z
1/r
ponto de fuga
segmento AB transformado
pela transf. perspectiva.
y
B
B*
A*
segmento AB projetado
no plano z=0.
-1/r
centro de projecao
,~
10
B
B
@
CB
CB
A@
C
C
A
B
B
@
C
C
A
B
B
@
C
C
A
B
B
@
C
C
A
pf
rz
78
CAPITULO 5. GEOMETRIA
5.9 Exerccios
5.1 Faca um estudo comparativo das Geometrias Euclideana e Am, incluindo uma discuss~ao dos principais conceitos, tipos de transformaco~es e invariantes.
5.2 Explique as principais vantagens do uso da Geometria Projetiva em Computac~ao
Graca.
5.3 Mostre, a partir de um exemplo 2D e um 3D, que transformaco~es geometricas n~ao s~ao
comutativas.
5.4 Discuta um metodo que permita rodar um objeto 3D em torno de um eixo de rotac~ao
arbitrario e re
et-lo em relac~ao a um plano arbitrario.
5.5 Prove que uma transformac~ao linear preserva paralelismo. Em seguida, construa uma
transformac~ao projetiva que leve um quadrado unitario num quadrilatero arbitrario (em
2D).
5.6 D^e uma justicativa geometrica para o fato de uma transformaca~o projetiva transformar uma c^onica em outra c^onica qualquer, por exemplo, um crculo em uma hiperbole.
5.7 Verique que a transformac~ao am
x
y
leva o crculo x2 + y2
=
=
x1
y1 x1
1 na elipse 2x21
=x
= x+y
2x1 y1 + y12 1.
x1
y1
=
=
=
x1 y1
w1
x1 + y1
w2 na hiperbole w12
x1
y1
w1
= (w + x)=2
= (w x)=2
=y
4x1 y1.
Cap
tulo 6
Modelagem Geometrica
A Modelagem Geometrica ocupa uma posic~ao central em Computac~ao Graca devido ao
seu imapcto sobre os processos industriais automatizados de projeto e manufatura (sistemas
CAD/CAM). Desde o seu surgimento, na decada de 60, esta area vem evoluindo sensivelmente. Inicialmente, o problema que se colocava eram os sistemas de desenho, tanto bi
como tri-dimensionais1. Estes sistemas utilizavam modelos bastante ing^enuos, que nada
mais eram do que conjuntos de pontos ligados por segmentos de reta, conhecidos como
modelos de arame (wire frame models).
O principal problema dos modelos de arame e que eles n~ao conseguem captar a noca~o de
solido2, que e caracterizado por propriedades fsicas (como massa, volume, area, momento
de inercia, etc...) e, por conseguinte, n~ao atendem as demandas da industria. Na realidade,
faltava, nessa epoca, uma conceituaca~o precisa do que e um objeto solido.
79
80
CAPITULO 6. MODELAGEM GEOMETRICA
Formas
Representacoes
Modelos
Estruturas
de Dados
Estes dois tipos de descrica~o originam dois tipos de representaca~o de solidos a saber:
Representac~ao por bordo, B-rep (Boundary representation);
Representac~ao implcita, CSG (Constructive Solid Geometry).
1
u
v
~ POR BORDO
6.2. REPRESENTAC
AO
81
@f
= ( sinsin; cossin; 0) (coscos; sincos; sin):
@
Se = ou = 0 a normal a esfera n~ao esta denida, por esta parametrizac~ao, nos polos.
Assim, o domnio U desta parametrizac~ao e dado por:
U = f(; ) 2 <2 ; 0 < < ; 0 < 2g:
6.2.1 Representac~ao Linear por partes
Uma superfcie parametrizada e geometricamente complexa pode ser aproximada por uma
superfcie linear por partes. Um metodo bastante empregado consiste em poligonizar o
domnio da parametrizaca~o (em geral s~ao utilizados tri^angulos ou quadrilateros). Cada
vertice no domnio poligonal e levado para a superfcie pela parametrizac~ao e ligado aos
vertices adjacentes. Este processo cria uma superfcie poligonizada, chamada de malha
poligonal. Com isto, obtem-se uma geometria aproximada mas, em compensac~ao, bastante
simples.
Uma malha poligonal nada mais e do que uma decomposica~o celular5 poligonal denida
por uma colec~ao conexa de vertices, arestas e polgonos, tal que cada aresta e compartilhada
por no maximo dois polgonos e a intersec~ao de dois polgonos quaisquer e uma aresta, um
vertice ou e vazia. Algumas operac~oes basicas com malhas poligonais correspondem a:
achar todas as arestas que incidem em um vertice;
achar os polgonos que compartilham uma aresta ou um vertice;
achar as aresta que delimitam um polgono;
exibir a malha.
Existem quatro formas basicas para codicar uma malha poligonal:
codicac~ao explcita;
5 Um complexo am homeomorfo a superfcie.
82
CAPITULO 6. MODELAGEM GEOMETRICA
Nesta codicaca~o, cada polgono armazena explicitamente uma lista de coordenadas de
vertices: P = f(x1 ; y1 ; z1 ); (x2 ; y2 ; z2 ); :::; (x ; y ; z )g. Esta codicac~ao e adequada para
armazenar um unico polgono. No entanto, produz redund^ancia de informac~ao, quando o
objetivo e armazenar varios polgonos, uma vez que s~ao armazenados vertices duplicados.
Alem disso, cada aresta compartilhada e desenhada duas vezes na exibic~ao da malha, o que
e problematico quando se utilizam plotadoras ou lme. A execuc~ao de querys tambem e
complicada, porque os relacionamentos de adjac^encia entre vertices, arestas e polgonos n~ao
s~ao armazenados explicitamente (obriga a execuca~o de algoritmos geometricos).
n
Neste tipo de codicaca~o, os vertices s~ao armazenados separadamente, em uma lista de
vertices. Cada polgono faz refer^encia aos seus vertices, na lista de vertices, por meio de
ponteiros (g. 6.3).
V2
E2
E1
P1
E4
V3
P2
V1
E5
E3
V4
Esta codicac~ao proporciona uma maior economia de espaco, pois cada vertice e armazenado uma unica vez. Alem disso, as coordenadas de um vertice podem ser alteradas
facilmente. Porem, ainda e dicl determinar os polgonos que compartilham uma aresta e
as arestas compartilhadas ainda s~ao desenhadas duas vezes.
~ IMPLICITA
6.3. REPRESENTAC
AO
83
Se, alem de uma lista de vertices, for introduzida tambem uma lista de arestas, os polgonos
agora fazem refer^encia as suas arestas, na lista de arestas, atraves de ponteiros (g. 6.3).
V = fV1 = (x1 ; y1 ; z1 ); V2 = (x2 ; y2; z2 ); V3 = (x3 ; y3; z3 ); V4 = (x4; y4 ; z4 )g;
E1 = fV1; V2 ; P1 ; g;
E2 = fV2; V3 ; P2 ; g;
E3 = fV3; V4 ; P2 ; g;
E4 = fV2; V4 ; P1 ; P2 g;
E5 = fV4; V1 ; P1 ; g;
P1 = fE1 ; E4 ; E5 g;
P2 = fE2 ; E3 ; E4 g:
Agora, desenham-se todas as arestas a partir da lista de arestas e n~ao mais percorrendo
a fronteira dos polgonos. A determinac~ao das arestas que incidem em um vertice ainda
requer um algoritmo geometrico. Se for introduzido para cada aresta as refer^encias para os
dois polgonos que a compartilham (, se houver apenas um), ca imediata a determinac~ao
dos polgonos que incidem na aresta.
Codicac~ao com Arestas Aladas
A codicac~ao com arestas aladas surgiu em 1974 e foi um marco no desenvolvimento de
codicac~oes para representac~ao por fronteira. Criada por Baungart, ela armazena uma
serie de informaco~es na estrutura associada a arestas, pois o numero de campos necessario
e xo (uma aresta e delimitada por dois vertices e delimita dois polgonos, chamados faces).
S~ao mantidas uma lista de vertices, uma lista de arestas e uma lista de faces. Cada aresta
possui, ent~ao, ponteiros para as duas faces que a compartilham, para o seu vertice inicial
e para as quatro arestas que a sucedem e antecedem no ciclo ordenado de arestas ao redor
das duas faces (g. 6.4).
Todos os nove tipos de relacionamentos de adjac^encia que podem ser formados a partir de
vertices, faces e arestas s~ao obtidos, diretamente, da estrutura de dados. A atualizac~ao da
estrutura de dados neste tipo de codicac~ao e uma tarefa complexa e e feita, normalmente,
com o emprego dos chamados operadores de Euler, para garantir que apos cada atualizac~ao
o modelo continua satisfazendo a equac~ao de Euler: V A + F = 2.
84
CAPITULO 6. MODELAGEM GEOMETRICA
Ecw
Eccw
F1
F2
E
Ecw
Eccw
@F @F @F
8p 2 F (c) ) rF = @x ; @y ; @z j 6= 0:
interessam apenas os casos em que n = 2 ou n = 3, onde
1
Neste texto
se t^em curvas e
superfcies implcitas, respectivamente.
Considere-se a func~ao F (x; y) = x2 + y2 que dene um paraboloide no <3. Fixando
um valor constante c para F , obt^em-se as curvas de nvel da func~ao que, neste caso, s~ao
crculos, se c > 0. Esta e uma forma de denir um crculo implicitamente. Note-se que
85
~ IMPLICITA
6.3. REPRESENTAC
AO
rF = (2x; 2y) se anula na origem. Neste caso, 0 n~ao e um valor regular de F e, por
conseguinte, F (x; y) = 0 n~ao dene uma superfcie implcita6. Pode-se mostrar que o vetor
gradiente e perpendicular a curva de nvel em cada ponto (faca-o!).
F(x,y)
y
-1
F(c)
= y2 x2 x3;
= (2y; 3x2 2x); ou na forma parametrica,
= t2 1;
= t(t2 1):
(6.1)
Note-se que a curva de nvel 0 de F e um laco, que apresenta uma singularidade na origem
(g. 6.6):
z = F (x; y) = y2 x2 x3 = 0:
Se olhar-se agora para F(x,y) como superfcie de nvel 0 da func~ao
H : <3 ! <;
H (x; y; z ) = z + y2 x2 x3 ;
rH = ( 3x2 2x; 2y; 1);
rH(0 0 0) = (0; 0; 1);
6 F 1 (0) = (0; 0).
; ;
86
CAPITULO 6. MODELAGEM GEOMETRICA
v^e-se que todos os pontos s~ao regulares, pois o gradiente de H e diferente de (0; 0; 0) em
todos os pontos do <3. Conclui-se ent~ao que o graco de F no <3 e realmente graco de
uma funca~o.
t=
y
F(x,y) > 0
20/27
t=0
F(x,y) < 0
-1
-2/3
x
t = +-1
t=-
87
~ ENTRE REPRESENTAC
~
6.4. CONVERSAO
OES
F
c
-1
F
Um metodo efetivo para construir objetos complexos, a partir de objetos simples, e atraves
de operac~oes CSG (Constructive Solid Geometry). Este esquema e baseado em operac~oes
booleanas regularizadas de conjuntos de pontos: [; \; = (uni~ao, intersec~ao e diferenca).
Um objeto e regular se o fecho do interior do seu conjunto de pontos e igual ao proprio
conjunto de pontos. Um modelo CSG e codicado por uma arvore, onde os nos cont^em
operac~oes de conjunto ou transformac~oes geometricas e as folhas cont^em objetos primitivos.
Um solido CSG e denido como um conjunto de pontos do < que satisfaz F (X ) 0
para algum F : <3 ! < de classe C 1. As operac~oes booleanas s~ao denidas por (prove!):
F1 [ F2 = min(F1 ; F2 );
F1 \ F2 = max(F1 ; F2 );
F1 =F2 = F1 \ F2 = max(F1 ; F2 ):
n
88
CAPITULO 6. MODELAGEM GEOMETRICA
Algoritmo1
Conversao
R2
Algoritmo 2
89
~ ENTRE REPRESENTAC
~
6.4. CONVERSAO
OES
a)
M
-
+
+
+
+
b)
A gerac~ao de imagens medicas, a partir de dados colhidos atraves de aparelhos de tumograa computadorizada, envolve, justamente, a convers~ao de uma representac~ao implcita
(estes aparelhos retornam as densidades dos diferentes tecidos) para uma representaca~o por
bordo (neste processo, o bordo e aproximado por uma superfcie poligonal composta por
milhares de tri^angulos).
Note-se que a convers~ao CSG ! B-rep e mais complicada, pois est~ao envolvidos varios
objetos implcitos. Neste caso, interessa apenas a fronteira externa. Os polgonos devem
ser recortados e aqueles contidos no interior do objeto nal devem ser descartados.
A convers~ao da representac~ao por bordo para a implcita se da atraves de uma subdivis~ao
espacial. O espaco e particionado em celulas e, em seguida, s~ao enumeradas as celulas
que interceptam o objeto (n~ao existe ocupac~ao parcial). As estruturas quadtree e octree,
encontradas na literatura, n~ao s~ao esquemas de representac~ao propriamente ditos, mas
apenas estruturas de dados para a decomposic~ao celular do espaco.
Uma octree e codicada como uma arvore na qual a raz corresponde a um cubo do <3
que contem todo o modelo. Em seguida, este cubo e subdividido em oito cubos congruentes,
90
CAPITULO 6. MODELAGEM GEOMETRICA
p7
p3
p6
p2
p5
p4
a)
(p0; p1 ; p3 ; p7)
(p0; p2 ; p3 ; p7)
(p0; p4 ; p5 ; p7)
p1
p0
b)
(p0; p1 ; p5; p7 )
(p0; p2 ; p6; p7 )
(p0; p4 ; p6; p7 )
Figura 6.10: Triangulac~ao CFK.
chamados octantes, por tr^es planos ortogonais aos eixos coordenados. Cada octante e ent~ao
classicado em:
cheio - completamente contido no interior do objeto;
vazio - completamente contido no exterior do objeto;
incompleto - uma parte esta contida no interior e a outra no exterior do objeto.
Octantes incompletos s~ao subdivididos, recursivamente, ate um nvel maximo. Neste ponto,
os octantes incompletos s~ao considerados cheios.
91
6.6. EXERCICIOS
Universos
nao unicidade
ambiguidade
6.6 Exerccios
6.1 Discuta a obtenc~ao dos relacionamentos de adjac^encia, entre vertices, arestas e faces,
a partir das seguintes estruturas de dados:
lista de faces;
ponteiros para lista de vertices;
ponteiros para listas de arestas;
winged edge.
6.2 Considerando apenas vertices, arestas e faces e possvel formar 9 tipos de relacionamentos de adjac^encia diferentes. Por exemplo, F(A) refere-se ao conjunto de arestas
em torno de uma face, F(V) ao conjunto de vertices em torno da face, etc. Quais destes
conjuntos podem ser ordenados?
6.3 Como alterar a estrutura de dados baseada em ponteiros para lista de arestas de forma
a que a determinac~ao das faces que compartilham uma aresta possa ser executada ecientemente?
6.4 Prove as seguintes igualdades:
F1 \ F2 = max(F1 ; F2 );
F1 [ F2 = min(F1 ; F2 );
F1 F2 = max(F1 ; F2 );
92
CAPITULO 6. MODELAGEM GEOMETRICA
onde F : < ! < s~ao func~oes que determinam um objeto implcito como a imagem inversa
do ponto zero (assumindo que zero e um ponto regular de F ). Qual a import^ancia deste
resultado?
i
6.5 Construa um programa para gerar uma aproximac~ao poligonal para uma superfcie
implcita de dimens~ao 1 (curva), compacta e sem bordo.
6.6 Estenda a implementac~ao do exerccio anterior de forma a a aproximar tambem superfcies implcitas de dimens~ao 2.
6.7 Discuta as vantagens e desvantagens da representaca~o por bordo, que usa uma descric~ao parametrica do solido, e volumetrica, que usa uma descric~ao implcita do solido. Que
tipos de aplicac~ao se adequam mais a cada uma destas representac~oes? Por que?
6.8 Construa uma parametrizac~ao, : <2 ! <3 , para um tri^angulo no espaco, dado pelas
coordenadas dos seus tr^es vertices.
Sugest~ao: utilize coordenadas baric^entricas.
6.9 Um esquema de representac~ao para poli-linhas usando segmentos de reta associa a uma
poli-linha L o conjunto f(x0 ; y0 ; x1 ; y1 ); (x1 ; y1 ; x2 ; y2 ); :::; (x 1 ; y 1 ; x ; y )g onde (x ; y ; x +1 ; y +1 )
representam as coordenadas iniciais e nais de cada segmento de reta que comp~oe a polilinha.
n
a) Especique um tipo abstrato de dados (TAD) para implementar essa representac~ao.
b) Relacione as operac~oes associadas a esse TAD com operaco~es no modelo.
c) Investigue as possveis inconsist^encias topologicas e geometricas que podem ocorrer nessa representac~ao.
d) Descreva procedimentos para identicar as inconsist^encias no item anterior.
6.11 Considere o universo dos polgonos convexos de n lados e elabore metodos de representac~ao geometrica para descrever os elementos desse universo.
a) Usando um esquema construtivo.
b) Usando um esquema de decomposic~ao.
c) Usando um esquema de aproximac~ao.
93
6.6. EXERCICIOS
A-B
+
T (2,0)
S (2,0.5)
T (0.5,-1)
+
T (-2,0)
S (0.5,0.5)
T (-2,0)
T = Translaca~o
S = Escalamento
S (2,1)
Q
+ = Uni~ao de Conjuntos
- = Diferenca de Conjuntos
Figura 6.12: A rvore CSG.
94
CAPITULO 6. MODELAGEM GEOMETRICA
-20
-35
-30
-30
-20
-30
-10
+5
+7
-45
+15
+10
+15
-20
-50
+10
+20
+25
-15
-55
-10
-5
-10
-50
-45
-43
-40
-25
-25
-30
x(t)
95
6.6. EXERCICIOS
y = tx + t
(x(t), y(t))
(-1, 0)
t
x
x
y
w
= s
= t
= (s2 + t2)=2s:
x(t)
y(t)
= 2=(1 + t2)
= 2t=(1 + t2 ):
96
CAPITULO 6. MODELAGEM GEOMETRICA
t>0
(0,0,1)
t=0
t=-
t=
x
y
t<0
x
x
y
w
=
=
=
x1 + uy1 ;
vy1 ;
w1 ;
x(t)
d) Entenda o que foi feito desenhando cada passo no plano projetivo. No caso presente,
a interpretac~ao geometrica e que a c^onica original, que representa uma hiperbole, e
levada em uma elipse por uma rotaca~o.
97
6.6. EXERCICIOS
6.19 O teorema de Bezout diz que duas curvas algebricas de grau m e n se interceptam
em exatamente mn pontos ou t^em uma componente comum.
a) Explique o metodo de parametrizaca~o de c^onicas e cubicas, baseado na intersec~ao de
retas com a curva, em face ao teorema de Bezout.
b) Uma curva algebrica possui um numero nito de pontos multiplos. Um monoide e uma
curva algebrica de grau n com um ponto de multiplicidade n 1. Generalize o metodo
de parametrizac~ao do item anterior para monoides.
6.20 Suponha que se deseja ter apenas planos com coecientes racionais. Uma rota
ca~o de
um a^ngulo em torno de um eixo qualquer pode fazer com que o plano transformado passe
a ter coecientes irracionais.
a) Dado qualquer encontre um novo ^angulo 0 tal que (u; v) = (cos(0 ); sin(0 )) seja
racional.
Sugest~ao: use a parametrizac~ao racional do crculo unitario do exerccio 6.15, onde
t = m=n = tan(0 =2).
b) Encontre os novos coecientes (racionais) do plano rodado em torno do eixo z .
c) Componha tr^es rotac~oes racionais para obter a rotac~ao racional em torno de um eixo
arbitrario.
98
CAPITULO 6. MODELAGEM GEOMETRICA
Cap
tulo 7
Sistemas de Modelagem
Os Sistemas de Modelagem s~ao sistemas, geralmente interativos, que permitem a criaca~o e
manipulaca~o de modelos, no computador, por um usuario. Ao longo do tempo, varios sistemas de modelagem surgiram com os mais diferentes propositos. Sistemas CAD/CAM, por
exemplo, tornaram-se viaveis a partir do surgimento de sistemas de modelagem poderosos,
robustos e de facil utilizaca~o (sera?).
Um sistema de modelagem pode ser caracterizado do seguinte modo (g. 7.1):
pela sua interface com o usuario;
por um conjunto de operac~oes utilizadas para construir os modelos;
pelo conjunto de tecnicas de modelagem que ir~ao implementar, efetivamente, as operac~oes sobre os modelos.
e por um esquema de representac~ao interna (arquitetura);
Interface
Tecnicas de
Modelagem
Operacoes
Arquitetura
100
Operac~oes de Combinaca~o
Operac~oes de Conjunto
Blending
Operac~oes Geometricas
Movimentos Rgidos
Deformac~oes
A classe de operac~oes topologicas e muito utilizada para construir representac~oes por
bordo, e deve garantir a consist^encia topologica do modelo resultante. Em geral, utilizamse operadores de Euler que constroem modelos que satisfazem a formula de Euler. As
operac~oes topologicas costumam ser empregadas para "costurar" as diversas partes do modelo a medida que elas v~ao sendo criadas. Elas atuam, diretamente, sobre a topologia do
modelo, construindo o seu grafo de adjac^encias.
As operac~oes de combinaca~o constroem um modelo a partir da combinaca~o de dois outros modelos pre-existentes. As operac~oes de conjunto utilizam as operac~oes booleanas para
construir modelos complexos a partir de modelos simples, que s~ao instanciados e posicionados, apropriadamente, no espaco. Ja as operac~oes de blending s~ao utilizadas para combinar
dois objetos implcitos, por meio do blending (da ponderaca~o) das func~oes implcitas que
os denem. As operac~oes de combinac~ao s~ao excenciais numa representac~ao CSG.
As transformac~oes geometricas atuam diretamente sobre a geometria dos modelos, reposicionando-os, atraves de movimentos rgidos, ou deformando-os com o uso de transformac~oes
de deformac~ao.
101
varredura (sweep).
superfcies tubulares
superfcies de extrus~ao
7.2.1 Revoluc~ao
Uma superfcie de revoluc~ao e criada a partir de uma curva plana (possivelmente poligonal),
chamada de perl, que e rotacionada em torno de um eixo de revoluc~ao.
7.2.2 Formas Livre
Uma superfcie com forma livre e esculpida atraves da manipulac~ao de uma malha de
controle poligonal, que dene uma superfcie algebrica descrita atraves dos seus coecientes
em relac~ao a uma base qualquer, por exemplo, base de Bezier ou B-spline.
7.2.3 Lofting
102
7.5. EXERCICIOS
103
a) Varredura (Sweep)
b) Extrus~ao
c) Revoluc~ao
Especique os par^ametros de cada tipo de modelo.
7.2 Especique uma linguagem para a implementac~ao de um Sistema de Modelagem CSG
com:
a) Primitivas: esferas.
b) Operac~oes: uni~ao, intersec~ao e diferenca.
104
Cap
tulo 8
Visualizac~ao
A visualizac~ao e uma disciplina da Computac~ao Graca que tem como objetivo produzir
imagens, em um dispositivo de exibic~ao, a partir de um modelo representado de alguma
forma no computador. A grosso modo, e dependendo do modelo utilizado, tem-se a visualizac~ao bi-dimensional, a visualizac~ao de superfcies tri-dimensionais e a visualizac~ao
volumetrica. Aqui, vai-se tratar apenas da visualizac~ao de superfcies tri-dimensionais.
Visualizacao
Camera
Transformacoes
Operacoes
Matriciais
106
~
CAPITULO 8. VISUALIZAC
AO
O processo de visualizaca~o divide-se, basicamente, nas seguintes etapas (n~ao necessariamente nesta ordem):
Seleca~o das partes dos objetos contidas no campo de observaca~o da c^amara virtual
(recorte).
Calculo da func~ao de iluminac~ao.
Projeca~o das superfcies de cada objeto no plano da imagem e o mapeamento destas
projec~oes em areas correspondentes no suporte de exibica~o (transformac~ao de visualizac~ao).
Determinac~ao das areas visveis dos objetos do ponto de vista da c^amara virtual (determinac~ao da visibilidade: ordenac~ao e rasterizac~ao).
Calculo da func~ao de colorizac~ao (amostragem).
As transformac~oes de visualizac~ao, no seu conjunto, objetivam mapear as superfcies
dos objetos em cena para o suporte de exibica~o. A sua principal nalidade e propiciar a
execuc~ao mais eciente das diversas etapas do processo de visualizaca~o. Para atingir-se este
objetivo, os objetos devem ser transformados para sistemas de coordenadas (ou espacos de
refer^encia) nos quais se torne mais natural e conveniente a realizac~ao das tarefas inerentes
a cada etapa do processo.
Corresponde aos sistemas de coordenadas nos quais os objetos primitivos est~ao descritos.
Geralmente, o objeto esta posicionado na origem, possui dimens~oes que s~ao multipos inteiros
da unidade e esta alinhado com os eixos principais, sendo chamado, neste caso, de um
objeto padronizado. Note-se que e muito mais facil manipular a geometria de um objeto
padronizado, de forma a reorienta-lo, reposiciona-lo ou aplicar-lhe um fator de escala.
~ DA VISUALIZAC
~
8.2. ESPECIFICAC
AO
AO
107
Espaco da Cena
E um espaco isometrico ao espaco da cena. A c^amara esta na origem do sistema de coordenadas, dois eixos principais s~ao perpendiculares a direc~ao de vis~ao e o plano de projec~ao
esta sobre o terceiro eixo.
Espaco Normalizado
108
~
CAPITULO 8. VISUALIZAC
AO
view plane
VUP
v
n = VPN
left hand
window
sv
view
distance
su
(cu,cv)
F
near
far
Vp= COP
109
~
~
8.3. TRANSFORMAC
OES
DE VISUALIZAC
AO
px
py
pz
u
Bv
V = BA = B
@n
0
u
v
n
u
v
n
u:V
v:V
n:V
C
C
A
u
Bu
V 1=B
@u
0
x
y
v
v
v
x
y
n
n
n
x
y
V
V
V
px
py
C
C
A
0 0 0 1
0 0 0 1
O proximo passo e calcular a transformaca~o de normalizac~ao para que o volume de vis~ao
seja transformado no volume can^onico (pir^amide normalizada), denido pelos planos:
x = z; x = z; y = z; y = z; z = z ; z = 1:
As etapas necessarias s~ao:
Aplicar um cizalhamento de forma a que o segmento de reta que une o COP ao centro
da janela seja posicionado sobre o eixo z (g. 8.3).
Aplicar fatores de escala, em relaca~o aos tr^es eixos, para que o volume de vis~ao seja
mapeado no volume can^onico (g. 8.4).
x
min
pz
110
~
CAPITULO 8. VISUALIZAC
AO
y, x
view plane
(cu,cv)
sv
sv
COP
COP
(-1,-1,1)
B
B
@
C
C
A
111
~
~
8.3. TRANSFORMAC
OES
DE VISUALIZAC
AO
min
min
0
0 0
0
d=
(
s
f
)
0 0
D=
0
0 1=f 0 :
0
0
0 1
N e a matriz resultante, que leva os pontos para o espaco normalizado.
d=(s f )
0
c =(s f ) 0
0
d=
(
s
f
)
c =(s f ) 0 ;
N = DC =
0
0
1=f
0
0
0
0
1
s f=d
0 c f=d 0
0 s f=d c f=d 0 :
N 1=
0
0
f
0
0
0
0 1
O ultimo passo e encontrar a transformac~ao projetiva da pir^amide normalizada no prisma
retangular unitario:
1 x 1; 1 y 1; 0 z 1:
Esta etapa e executada em tr^es passos:
1) Translada-se z para a origem (g 8.5);
2) Escala-se na direc~ao z para que o plano traseiro coincida com o plano z = 1;
3) Aplica-se a transformac~ao perspectiva (g. 8.6):
0
d=(s f )
B
B
@
C
C
A
B
B
@
B
B
@
C
C
A
C
C
A
min
1
translac~ao = T1 = 00
0
0
B
B
@
0
1
0
0
0
0
1
0
0
0
z
1
min
1
C
C
A
112
~
CAPITULO 8. VISUALIZAC
AO
x,y
z
1
zmin
COP
1-zmin
zmin
COP
x, y = -z
y, x
1
zmin
view plane
-zmin
______
1-zmin
zmin
1
COP
0
B
B
@
0
0
1
0
0 1=(1 z )
0
0
0
0
1
0
0
1
0 (1 z )=z
min
min
0
0
0
1
1
C
C
A
min
0
0
0
1
1
C
C
A
113
~
~
8.3. TRANSFORMAC
OES
DE VISUALIZAC
AO
1 0
0
0
T3 T2 T1 = 00 10 1=(1 0 z ) z =(10 z ) :
0 0 1=z
0
A matriz P , que leva os pontos para o espaco da ordenaca~o, difere da matriz acima por um
fator de escala 1=z em x, y e z. Este fator de escala e necessario porque a transformac~ao
perspectiva empregada n~ao altera os pontos sobre o plano z = 0, logo o tronco de pir^amide
foi levado no prisma com dimens~oes 2z , em x e y, e z em z.
1=z
0
0
0
0 1=z
0
0
S T3 T2 T1 =
0
0 1=(z (1 z )) 1=(1 z ) :
0
0
1=z
0
Por m, multiplicando-se esta ultima matriz por z obtem-se a matriz P . Isto pode
ser feito uma vez que a multiplicaca~o de uma matriz que representa uma transformac~ao
projetiva por um escalar n~ao altera a transformaca~o (no nal a divis~ao por w "compensa"o
efeito).
1 0
0
0
1 0
0
0
0
0 :
P = 00 10 1=(1 0 z ) z =(10 z ) ; P 1 = 00 10
0
1
0 0
1
0
0 0 1 1=z 1=z
Neste processo, a origem e levada para o innito, ou seja, o COP passa a estar no innito,
de maneira que projetar neste espaco signica executar uma projec~ao paralela ortograca
(ignorar a coordenada z).
As transformac~oes projetivas utilizadas nas etapas anteriores se caracterizavam por manter os pontos do espaco am2, e os pontos ideais3, invariantes, ou seja, pontos do espaco am
eram transformados em pontos do espaco am e pontos ideais em pontos ideais. No entanto,
o ultimo passo exige um tipo de transformaca~o projetiva, chamada transformaca~o perspectiva, que n~ao possui esta caracterstica de invari^ancia (a imagem de pelo menos um ponto
ideal e um ponto do espaco am, o que cria um ponto
de fuga). Um ponto P = (x ; y ; z ; 1)
0
do espaco am e transformado em um ponto P = (x; y; z; w) do espaco projetivo. Para
obter o ponto correspondente do espaco am e necessario dividir cada coordenada de P 0 por
w: (x ; y ; z ; 1) = (x=w; y=w; z=w; 1). Como z n~ao varia linearmente com z | a medida
que z se aproxima do plano traseiro, z se aproxima de 1 mais rapidamente | surgem
problemas quando se deseja interpolar quantidades, afora posic~oes, no espaco de Ordenac~ao
(por exemplo, na colorizac~ao de Gouraud, onde e feita uma interpolaca~o de intensidades).
Como ja foi dito, sem justicativa, o espaco de Ordenac~ao n~ao e o espaco no qual a
func~ao de iluminaca~o deve ser avaliada. Isto porque, esta avaliac~ao envolve, entre outras
coisas, o produto escalar entre a normal e a direca~o da fonte de luz, no ponto a ser iluminado.
0
B
B
@
C
C
A
min
min
min
min
min
min
min
min
B
B
@
min
min
min
min
C
C
A
min
min
B
B
@
C
C
A
B
B
@
C
C
A
min
min
min
min
min
114
~
CAPITULO 8. VISUALIZAC
AO
Uma vez que as transformac~oes de visualizac~ao n~ao s~ao isometricas (envolvem cizalhamento,
fatores de escala distintos em cada direc~ao e perspectiva), os ^angulos n~ao s~ao preservados e,
consequentemente, o produto escalar tambem n~ao. Por este motivo, avalia-se a func~ao de
iluminac~ao no espaco da Cena, ou em qualquer espaco isometrico a ele, por exemplo, o espaco
da C^amara. Na colorizaca~o de Phong, por exemplo, e necessario fazer uma interpolaca~o de
normais em cada pixel. Neste caso, e aplicada a transformaca~o inversa, de forma a mapear
o ponto de volta ao espaco da C^amara e al avaliar a func~ao de iluminac~ao.
Um quest~ao importante e como aplicar transformac~oes projetivas a normais. Considerando o caso simples em que a superfcie e poligonal, isto signica transformar a normal a
um plano. Sendo N = ( A B C D ), um plano e denido como o conjunto dos pontos
P = ( x y z 1 ) tais que N:P = 0 ou, na forma de matriz, N :P = 0. Supondo-se que
todos os pontos do plano foram transformados por uma matriz M , para manter N :P = 0
para os pontos transformados, deve-se transformar N por uma matriz Q, a ser determinada,
tal que: (Q:N ) :M:P = 0. Reescrevendo esta express~ao como N :Q :M:P = 0, concluise que Q :M deve ser um multiplo da matriz identidade. Se o fator multiplicativo for 1,
chega-se a Q =0 (M 1 ) , signicando que o vetor normal N 0 do plano transformado por M
e dado por: N = (M 1 ) :N . Esta express~ao tem aplicaca~o importante em modelagem geometrica, onde e comum aplicarem-se deformaco~es aos objetos e as normais (que costumam
fazer parte do banco de dados) devem sofrer as mesmas deformac~oes.
T
max
0
0
1
0
max
0:5
0:5
0
1
1
C
C
A
4 Em alguns dispositivos, as coordenadas (0; 0) correspondem ao canto superior esquerdo da tela, devendo-se, neste
y.
115
~
~
8.3. TRANSFORMAC
OES
DE VISUALIZAC
AO
y
(2,2,0)
(1,1,0)
(1,1,0)
(-1,-1,0)
max
min
B
B
@
min
max
min
min
max
B
B
@
C
C
A
max
min
min
min
max
C
C
A
min
B
B
@
C
C
A
min
2= 0
0
(r + 1)=
0
2
=
0
(r + 1)= :
D 1=
0
0 1= (Z + 0:5)=
0
0
0
1
Esta e a ultima etapa nas transformaco~es de visualizaca~o. O mapeamento completo, do
espaco da cena para o espaco da imagem, e dado ent~ao pela matrix DP NV . Apos aplicarse esta matriz a um ponto, basta truncar as coordenadas resultantes para obterem-se as
coordenadas inteiras de tela correspondentes (isto pode ser feito, em C, pela func~ao
oor).
O mapeamento inverso, do espaco da imagem para o espaco da cena, e dado pela matrix
V 1N 1P 1D 1.
0
B
B
@
min
C
C
A
116
~
CAPITULO 8. VISUALIZAC
AO
8.4 Exerccios
8.1 Quais s~ao as principais operac~oes de visualizac~ao?
8.2 Enumere os espacos de refer^encia para especicaca~o das operac~oes de visualizaca~o e
descreva as suas caractersticas. Explique por que eles s~ao adequados as respectivas operac~oes.
8.3 Descreva os par^ametros que especicam uma c^amara virtual.
8.4 Discuta o processamento das transformaco~es de visualizaca~o para modelos parametricos
e implcitos.
8.5 Mostre que no caso da projec~ao paralela a matriz P N deve ser substituda pela matriz
O dada abaixo:
1=s 0
0
0
1
=s
0
O=
0 0 1=(f n)
0 0
0
c =s 1
c =s C
C
n=(f n) A ; O
B
B
@
0
0
s
1=
0 0
0 0
0
B
B
@
0 c
0 c
f n n
0 1
C
C
A
8.6 Um plano de recorte traseiro no innito acarreta problemas nas transformaco~es apresentadas neste captulo. Por exemplo, a matrix N ca com todos os elementos nulos exceto
N [4][4] = 1 (o que isso signica?). Neste caso, e necessario que se dena um novo volume
de vis~ao can^onico para o recorte. Recomenda-se deixar o plano traseiro no innito, ao inves
de mapea-lo para o plano z = 1, mapeando-se o plano de vis~ao z = d no plano z = 1.
a) Derive um mapeamento que leve z
em 0 e deixe z = 1 inalterado (z
= n=d),
em seguida mapeie o plano traseiro (no innito) no plano z = d=(d n). Ent~ao,
pre-multiplicando por (d n)=d, obtenha:
min
1=s 0
0 1=s
N1 =
0 0
0 0
c =(s d)
c =(s d)
1=d
B
B
@
min
0
0 ;
0
1
1
C
C
A
1
P1 = 00
0
0
1
0
0
0
B
B
@
0
0
1
1
0
0
n=d
0
1
C
C
A
b) No caso da projec~ao paralela, derive o mapeamento que leva o plano frontal no plano
z = 0 e o plano de vis~ao no plano z = 1, para obter:
1=s 0
0
0 1=s
0
O1 =
0 0 1=(d n)
0 0
0
0
B
B
@
c =s 1
c =s C
C
n=(d n) A :
u
Cap
tulo 9
Recorte
O recorte e uma operac~ao muito importante no contexto da Computac~ao Graca devido a
variedade de suas aplicaco~es. Uma denic~ao precisa de recorte e a seguinte:
Denic~ao: Dada uma superfcie M fechada de co-dimens~ao 1 do < , o complemento de
M , < M , possui duas componentes conexas. Se S e um subconjunto do < , chama-se
de recorte de S por M a operaca~o que consiste em determinar os subconjuntos de S que
est~ao em cada uma das componentes conexas de M (g. 9.1).
n
Recorte
Separacao
Intersecao
Algoritmos
118
CAPITULO 9. RECORTE
O recorte pode ser empregado como um metodo padr~ao para implementar a operac~ao
de pick. Para isto, um pequeno ret^angulo circundando o cursor, chamado janela de pick,
e usado para determinar que primitivas est~ao na vizinhanca do cursor. A maioria das
primitivas s~ao trivialmente rejeitadas e, dentre as aceitas, aquela de mais alta prioridade e
a selecionada.
Na modelagem solida, o recorte e empregado de maneiras diversas, dentre as quais se
destaca o seu uso em operac~oes CSG. Sistemas de interface com o usuario baseados em
janela utilizam recorte no processo de superposica~o de varias janelas.
O recorte aplicado aos algoritmos de visibilidade tem como nalidade primaria eliminar
todos os objetos fora do campo de vis~ao da c^amara virtual. Essa operac~ao se faz necessaria
por motivo de eci^encia e, principalmente, para evitar que objetos atras do centro de projec~ao sejam mapeados erroneamente no plano de projec~ao.
Existem outras tecnicas que, em alguns casos, podem ser aliadas ao recorte na execuc~ao
desta tarefa. Um exemplo e a eliminac~ao de polgonos de superfcies fechadas, orientados
na direc~ao oposta a da c^amara virtual que, por este motivo, n~ao s~ao visveis.
Os algoritmos de recorte podem operar com uma congurac~ao especca ou arbitraria.
No primeiro caso, a geometria da superfcie de recorte e pre-denida, de modo a simplicar
a execuc~ao do algoritmo. As transformac~oes de visualizac~ao deformam a pir^amide de vis~ao
com este intuito.
Dependendo do sistema de visualizac~ao, o recorte pode operar com tipos diferentes de
dados geometricos. Os tipos mais comuns s~ao segmentos de reta e polgonos. Outras primitivas geometricas, tais como superfcie algebricas e parametricas, requerem um processo
mais complexo de recorte e podem, alternativamente, ser aproximadas por polgonos, antes
da visualizaca~o.
O metodo empregado no recorte pode envolver uma soluc~ao direta ou recursiva. No
primeiro caso, a intersec~ao e calculada analiticamente, enquanto que, no segundo, o objeto
a ser recortado e subdividido recursivamente, ate que as suas partes estejam inteiramente
dentro ou fora do volume de recorte.
O calculo do recorte pode ser exato ou aproximado. Muitas vezes, n~ao e necessario um
calculo preciso da interseca~o. Metodos recursivos de recorte, geralmente, operam dentro de
uma determinada toler^ancia.
119
muito grande que contem quase todos os segmentos, ou no caso de um ret^angulo muito
pequeno, onde ocorre a situac~ao inversa (quase todos os segmentos s~ao rejeitados).
O grande merito do algoritmo esta na forma de testar se um segmento pode ser trivialmente aceito ou rejeitado. Para isto, no caso bi-dimensional, as arestas do ret^angulo s~ao
prolongadas, dividindo o plano em nove regi~oes, conforme explicitado na gura 9.2. Cada
uma dessas regi~oes possui um codigo de 4 bits, determinado pelo lado em que a regi~ao esta
em relac~ao aos semi-planos criados pelas arestas do ret^angulo (1 signica que a regi~ao n~ao
esta no mesmo semi-plano do ret^angulo de recorte).
p1
1001
1000
1010
p2
cod1=cod2=0
0010
0000
0001
0110
0100
0101
a esquerda da janela
a direita da janela
cod and 2 = 2
cod and 1 = 1
max
; y<y
min
; x<x
min
; x>x
max
Um codigo 0001 signica que o ponto esta abaixo da aresta superior, acima da aresta
inferior, a direita da aresta esquerda e a direita da aresta direita. Se o codigo de ambas as
extremidades for 0000 signica que o segmento pode ser trivialmente aceito. Se a operaca~o
logica AND entre os bits correspondentes de cada codigo n~ao resultar em 0000, o segmento
pode ser trivialmente rejeitado:
(c1 & c2 ) ! = 0 ! rejeito,
(c1 == 0 && c2 == 0) ! aceito.
A intersec~ao de um segmento com a reta y = Y pode ser facilmente calculada parametricamente:
Y P1 :y
y = (1 t)P1 + tP2 ou y = P1 :y + t(P2 :y P1 :y) ) t =
(P2 :y P1 :y) :
Assim, y = Y e x = P1 :x + t (P2 :x P1:x): Os codigos de operaca~o tambem s~ao facilmente
determinados:
cod = (P1 :y > Y ) ? 8 : ((P1 :y < Y ) ? 4 : 0);
Y
120
CAPITULO 9. RECORTE
9.3. EXERCICIOS
121
122
CAPITULO 9. RECORTE
Cap
tulo 10
Rasterizac~ao
A descrica~o dos objetos em cena e dada, geometricamente, em uma forma vetorial (pontos,
polgonos, curvas e superfcies parametricas ou implcitas, etc.). Esses objetos denem
superfcies e curvas que comp~oem a partic~ao da tela virtual em regi~oes visveis, nas quais a
func~ao de iluminaca~o sera calculada.
O problema que se coloca e a convers~ao de dados no formato vetorial para o formato
matricial | que e o formato aceito por grande parte dos dispositivos gracos | o que,
matematicamente, corresponde a discretizacao da func~ao de iluminac~ao a partir da partic~ao
uniforme da tela virtual em um certo numero nito de elementos chamados pixels, com o
entuito de obter-se uma representac~ao nita. A rasterizac~ao enumera ent~ao os pontos de
uma regi~ao digital da tela virtual, associada as regi~oes visveis da cena, que correspondem
aos pontos nos quais a func~ao de iluminaca~o deve ser amostrada.
Conversao
Vetorial - Matricial
Discretizacao
Amostragem
Rasterizacao
124
~
CAPITULO 10. RASTERIZAC
AO
125
~ DE ELEMENTOS LINEARES
10.1. RASTERIZAC
AO
A abordagem mais simples consiste em calcular a inclinac~ao m = dy=dx para | incrementando x de uma unidade, a partir do ponto inicial | calcular, para cada x , o valor de
y = mx + B e acender o pixel na posica~o (x , round(y )). Este metodo escolhe, em cada
passo, o pixel mais proximo a linha, ou seja, aquele cuja dist^ancia a linha e menor. O seu
incoveniente e que a cada iterac~ao s~ao necessarias operac~oes de ponto
utuante: multiplicac~ao, adica~o e chamada a func~ao round. A multiplicaca~o pode ser eliminada, notando-se
que (g. 10.3):
y +1 = mx +1 + B = m(x + x) + B = y + mx;
e se x = 1, ent~ao y +1 y = m. Isto signica que um incremento em x de uma unidade
muda y de m, que e a inclinac~ao da linha. Para todos os pontos (x ; y ) sobre a linha, tem-se
que se x +1 = x + 1, ent~ao y +1 = y + m2 .
A inicializaca~o corresponde a atribuir os valores inteiros da extremidade esquerda a
(x0 ; y0). Se jmj > 1, um passo unitario em x cria um passo > 1 em y. Neste caso, os papeis
de x e y devem ser invertidos, ou seja, y e incrementado de uma unidade e x por x = 1=m.
Na implementaca~o deste algoritmo, as variaveis m e y devem ser reais, porque a inclinac~ao
e uma frac~ao. Alem do mais, a avaliac~ao da func~ao round toma tempo.
i
(xi+ x,yi+ y)
y
(xi,yi)
)m
x
x0 > 0;
126
~
CAPITULO 10. RASTERIZAC
AO
(xp+1,yp+1)
M NE = (xp+2,yp+3/2)
(xp+2,yp+1)
NE
E
M E = (xp+2,yp+1/2)
(xp+2,yp)
M=(xp+1,yp+1/2)
(xp,yp)
(xp+1,yp)
NE
NE
NE
old
old
127
~ DE ELEMENTOS LINEARES
10.1. RASTERIZAC
AO
z=F(x,y)
n=(-a,-b,1)=(-dy,dx,1)
-B/m
m
B
y
F(x,y)<0
F(x,y)>0
x
F(x,y)=0
old
old
NE
128
~
CAPITULO 10. RASTERIZAC
AO
x > x0 =
dx
y B
dy
ou
ou seja: F (x; y) = xdy ydx + Bdx > 0 para pontos a direita do segmento. Para pontos
sobre o segmento, F (x; y) = 0 e para pontos a esquerda do segmento, F (x; y) < 0.
Se for escolhido NE , a variavel d deve ser avaliada, na proxima iterac~ao, no ponto
(x + 3=2; y + 2):
3
3
d = F x + ; y + 2 = a x + + b(y + 2) + c:
2
2
Subtraindo o valor anterior de d de d , obtem-se:
d = d + a + b = d + dy dx:
Se for escolhido o pixel N , a variavel d deve ser avaliada no ponto (x + 1=2; y + 2):
1
1
d = F x + ; y + 2 = a x + + b(y + 2) + c:
2
2
Subtraindo o valor anterior de d de d , obtem-se: d = d + b = d dx. do seu valor
no passo corrente. O valor inicial de d e calculado a partir do ponto inicial (x0 ; y0):
1
1
d0 = F x0 + ; y0 + 1 = a x0 + + b(y0 + 1) + c
2
2
p
NE
NE
NE
old
old
old
old
NE
129
~ DE ELEMENTOS LINEARES
10.1. RASTERIZAC
AO
d0 = dy 2dx;
d = 2dx, se d 0,
N
d
NW
dy > 0
y
dN,dNW
Inc y
dN,dNE
Inc y
1
x-1
y+1
Inc x
dx > 0
x+1
y+1
Inc x
x+1
y-1
x+1
y+1
dE,dNE
x+1
y+1
x+1
y-1
Inc x
x+1
y+1
x-1
y+1
dx > 0
Inc x
dE,dSE
-1
Inc y
Inc y
dy > 0
130
~
CAPITULO 10. RASTERIZAC
AO
10.1.2 Preenchimento de Areas
linha de varredura
1
spans
131
~ DE ELEMENTOS LINEARES
10.1. RASTERIZAC
AO
min
min
min
max
min
min
min
max
min
5 Intersec~oes mpares s~ao pontos de entrada e as pares s~ao pontos de sada do polgono.
min
132
~
CAPITULO 10. RASTERIZAC
AO
ba
bc
ea
dc
Y-1
ymin
AET
ba
ea
dc
bc
133
~ DE ELEMENTOS NAO
~ LINEARES
10.2. RASTERIZAC
AO
ambas minimas
2
minima
1=3
1=1
pontos dentro
maxima
1 = 1 dentro
horizontal --> ignore
ambas maximas
minima
1
num intersecoes:
dentro
(-x,y)
3
(-y,x)
(-y,-x)
8
6
(-x,-y)
(y,x)
x
(y,-x)
7
(x,-y)
134
~
CAPITULO 10. RASTERIZAC
AO
Como acontece em todo algoritmo baseado no ponto medio, existe uma func~ao implcita
| de decis~ao ou de densidade | que e avaliada no ponto medio entre dois pixels e que e
usada para determinar se o ponto medio esta dentro ou fora do crculo. No segundo octante,
se o pixel corrente esta em (x ; y ), a funca~o d e avaliada no ponto (x + 1; y 1=2) | o
ponto medio entre E e SE (g. 10.12). Se o proximo pixel for o pixel E , o proximo ponto
medio estara em (x + 2; y 1=2). Assim:
1 = (x + 1)2 + y 1 2 R2 ;
d = F x + 1; y
2
2
1 = (x + 2)2 + y 1 2 R2 ; se d < 0:
d = F x + 2; y
2
2
Verica-se que d = d + (2x + 3). Se o proximo pixel for o pixel SE , tem-se:
3 = (x + 2)2 + y 3 2 R2; se d 0:
d = F x + 2; y
2
2
Assim, d = d + (2x 2y + 5). A condica~o inicial e calculada assumindo-se R inteiro
e que o crculo inicia em (0; R). O primeiro ponto medio e calculado em (1; R 1=2):
1 = 1 + R 1 2 R2 = 5 R:
d0 = F 1; R
2
2
4
p
old
old
old
SE
SE
(xp+1,yp)
(xp+2,yp-1)
(xp,yp)
E
M=(xp+1,yp-1/2)
SE
=(xp+2,yp-1/2)
(xp+1,yp-1)
M
=(xp+2,yp-3/2)
SE
(xp+2,yp-2)
135
~ DE ELEMENTOS NAO
~ LINEARES
10.2. RASTERIZAC
AO
z=F(x,y)
F(x,y)=0
F(x,y)<0
y
F(x,y)>0
x
old
136
~
CAPITULO 10. RASTERIZAC
AO
SE
old
SE
old
old
SE
old
old
SE
10.3 Amostragem
Quando foi discutido o paradigma dos quatro universos, frisou-se que, na passagem do
universo matematico para o universo de representaca~o, era-se obrigado a fazer uma discretizac~ao do modelo para obter-se uma representac~ao nita. Para discretizar uma funca~o7 ,
deve-se colher um numero nito de amostras, que servir~ao para caracteriza-la, conforme
pode ser visto na gura 10.14.
Para obter-se novamente a func~ao original deve-se fazer algum tipo de interpolac~ao dos
dados amostrados. Esse processo de interpolac~ao e conhecido como a reconstruc~ao da func~ao
ou do sinal. A reconstruca~o pode ser entendida como um processo de descrever uma func~ao
6 a2 (yp 1=2) b2 (xp + 1).
7 Designignada, em engenharia, como um sinal.
137
~ EXATA
10.4. RECONSTRUC
AO
se 0 x 1;
x+1
se
1 x < 0;
0 se
x<
1 ou
x > 1:
138
~
CAPITULO 10. RASTERIZAC
AO
10.5 Aliasing
Quando o sinal n~ao e de banda limitada, ou a amostragem e feita abaixo do limite de
Nyquist, pode acontecer que uma componente de alta frequ^encia presente no sinal seja
reconstruda como uma componente de baixa frequ^encia, dita um alias da componente
original. Este fen^omeno e designado por aliasing (g. 10.16). As tecnicas de anti-aliasing,
que visam minimizar o problema, ou aumentam a taxa de amostragem ou ltram as altas
frequ^encias presentes no sinal.
pixel
8 Embora alguns puristas digam que a qualidade sonora ca comprometida, por causa da eliminac~ao dos harm^onicos.
139
Pixel
A3
A4
A2
A1
pixel
i;j
=1
mn
onde I (i; j ) dene a cor do sub-pixel (i; j ). No limite, quando o numero de sub-pixels vai
para innito (m; n ! 1), a superamostragem e equivalente a amostragem por area9 .
Quando existe o canal alpha, que dene a opacidade do pixel, e possvel usa-lo para
compor imagens com anti-aliasing embutido.
140
~
CAPITULO 10. RASTERIZAC
AO
10.7 Exerccios
10.1 Quais s~ao os principais metodos de rasterizaca~o? Descreva as suas estrategias.
10.2 Discuta as relac~oes entre rasterizac~ao e amostragem.
10.3 Qual e o algoritmo de rasterizaca~o mais adequado para:
a) Modelos Implcitos
b) Modelos Poligonais
c) Retalhos Bi-cubicos
Justique a sua resposta.
10.4 Implemente o algoritmo do ponto medio para rasterizaca~o de linhas, inclusive suportando estilos de linha (tracejado, pontilhado, traco ponto, etc.) e espessura de linha. Em
seguida:
a) Explique o funcionamento do algoritmo.
b) Em que caso a rasterizac~ao depende da direca~o do segmento? Como contornar esse
problema?
c) Discuta maneiras de "casar", adequadamente, linhas com estilo e com espessura.
Sugest~ao: utilize dois bytes (16 bits) para especicar o padr~ao (estilo) da linha. Assim,
especica um traco com quatro pontos e um espaco de quatro pontos,
criando uma linha tracejada.
1111000011110000
10.5 Implemente o algoritmo do ponto medio para rasterizaca~o de crculos. Assuma que
o centro e o raio do crculo s~ao arbitrarios, porem inteiros.
10.6 Demonstre que o algoritmo do ponto medio para rasterizac~ao de linhas forca uma
escolha apropriada de sinal, que produz um movimento correto, mesmo em casos degenerados, nos quais o pixel selecionado (x; y) e a interseca~o real para a proxima abcissa (x + 1)
n~ao acontece entre os valores de ordenada y e y + 1, por exemplo (g. 10.18):
a) Entre y e y
b)
10.7 O algoritmo do ponto medio assume que as extremidades dos segmentos possuem
coordenadas inteiras. Crie um algoritmo que elimine esta restrica~o.
10.8 Descreva um procedimento para rasterizac~ao recursiva de um crculo unitario:
S 1 = f(x; y) 2 <2 ; x2 + y2 = 1g:
141
10.7. EXERCICIOS
(2,2)
(3,2)
(3,3)
(7,5)
(7,2)
(0,0)
(2,1)
(3,1)
142
~
CAPITULO 10. RASTERIZAC
AO
Cap
tulo 11
Visibilidade
A quest~ao da visibilidade foi um dos aspectos centrais da Computac~ao Graca durante
uma parte do seu desenvolvimento: foi o primeiro passo na direc~ao do fotorealismo e a
sua soluc~ao tinha relac~oes profundas com as outras operac~oes do processo de visualizac~ao.
Este papel privilegiado se justica na medida em que os algoritmos de visibilidade precisam
estruturar as operac~oes de visualizac~ao para a obtenc~ao da imagem (g. 11.1):
As transformac~oes de visualizac~ao devem ser realizadas numa determinada ordem, de
modo a levar os objetos para um sistema de coordenadas que permita uma ordenac~ao
eciente, levando em conta a transformaca~o perspectiva.
A determinaca~o da regi~ao digital da tela virtual associada as regi~oes visveis (rasterizac~ao) pode ser combinada de diversas formas com as etapas de um algoritmo de
visibilidade.
Uma vez determinadas as superfcies visveis, o calculo da func~ao de iluminac~ao indicara
a cor dos elementos correspondentes da imagem (pixels).
Visibilidade
Sistemas de
Coordenadas
Ordenacao
Particao da
Tela Virtual
144
145
B
B
@
C
C
A
min
1z
b=
z1 a
min
1z
>c=
z2 a
min
min
) P (z1 ) =
min
1
b+
< P (z2 ) =
1
c+
146
ang < 90
ang > 90
N
visivel
obstruido
>0
<0
11.4 z-Buer
O algoritmo z-Buer, criado por Catmull, e, talvez, o algoritmo de visibilidade mais simples
de ser implementado tanto em software como em hardware. Este algoritmo requer que, alem
de um frame buer que armazena os valores de cor para cada pixel, exista um z-Buer, com
o mesmo numero de entradas, no qual o valor da coordenada z de cada pixel e armazenado.
O z-Buer e inicializado com um, que representa o valor de z do plano de recorte traseiro
e o frame buer com a cor de fundo. O menor valor z que pode ser colocado no z-Buer
corresponde ao valor do plano de recorte frontal. Os polgonos s~ao rasterizados em qualquer ordem. Durante o processo de rasterizac~ao, se o ponto corrente do polgono sendo
rasterizado possuir um valor z menor do que o valor correspondente ja armazenado no zBuer (signicando que n~ao esta mais afastado do observador do que o ponto previamente
armazenado), os seus valores de cor e de z substituem os valores dos buers.
Para calcular o valor z de um pixel, deve-se resolver a equac~ao do plano para a variavel
z , obtendo-se
D + Ax + By
z=
:
C
No entanto, para todos os pixels na mesma linha (y e constante), dado o valor z1 do primeiro
147
11.5. SCAN-LINE
Um calculo incremental similar pode ser executado para descobrir o primeiro valor de z na
proxima linha (x e constante):
B y
;
y = 1:
z z1 =
C
O algoritmo do z-Buer pode ser empregado com qualquer tipo de objeto, desde que um
valor de cor e de z possa ser determinado para cada ponto na sua projeca~o.
11.5 Scan-Line
Os algoritmos scan-line criam uma imagem por varredura3, linha por linha. Eles operam na
precisam da imagem determinando, incrementalmente, a intersec~ao de cada objeto da cena
com planos denidos pelo ponto de vista e pelas linhas da imagem (em geral, planos da forma
y = cte) e se baseiam no tradicional algoritmo de rasterizac~ao de polgonos, que exploram
a coer^encia de arestas e linhas. A visibilidade e resolvida para intervalos correspondentes a
segmentos unidimensionais.
A diferenca em relaca~o ao processo de rasterizac~ao de um polgono e que, agora, existe
mais de um polgono a ser considerado. A tabela de arestas (ET ) contem todas as arestas
de todas as projeco~es dos polgonos (arestas horizontais s~ao ignoradas) e uma identicac~ao,
para cada aresta, do polgono que a possui. Existe, tambem, uma tabela de polgonos
(P T ) que contem os coecientes da equac~ao do plano do polgono, informac~ao de cor e um
ag, inicializado com falso, a ser usado durante a rasterizaca~o, para indicar se a linha de
varredura corrente (LC ) esta dentro ou fora do polgono.
A
C
scan
3 Os processos de varredura buscam determinar a cor dos pixels, enumerando-os, um a um, a partir da primeira
148
11.6 z-Sort
O algoritmo de z-Sort se baseia em uma lista de prioridades, assumindo que uma imagem
correta ira resultar se os objetos forem exibidos de acordo com as suas prioridades. Por
exemplo, se os objetos n~ao interferem na direc~ao z, tudo o que e necessario e ordena-los
em ordem decrescente de coordenada z, e depois exib-los nesta ordem. Os objetos mais
distantes ao observador (valores z maiores ) s~ao obstrudos pelos objetos mais proximos, a
medida que os pixels destes se sobrep~oem aos daqueles. Mesmo que haja interfer^encia na
direc~ao z, ainda assim e possvel determinar a ordem apropriada. Neste caso, se os objetos
se sobrep~oem ciclicamente ou se penetram, uma etapa de recorte e necessaria.
Ordene todos os polgonos de acordo com o valor da coordenada z mnima de cada um.
Resolva quaisquer ambiguidades causadas por uma sobreposic~ao na direc~ao z, recortando os polgonos.
Rasterize os polgonos em ordem decrescente de coordenada z mnima.
Alguns sistemas gracos (GKS, PHIGS) permitem a atribuic~ao explcita de prioridades,
que tomam o lugar do valor z mnimo. Assim, nunca ha ambiguidade, uma vez que cada
prioridade funciona como se os objetos estivessem em planos z = cte diferentes. Esta vers~ao
simplicada do algoritmo e conhecida como algoritmo do pintor, fazendo uma analogia ao
modo de como um pintor desenha os objetos mais proximos sobre aqueles mais distantes. O
algoritmo do pintor pode ser aplicado ordenando-se os polgonos de acordo com a coordenada
z mnima de cada um, ou ordenando-se as coordenadas dos seus centroides. No entanto,
isto nem sempre funciona, conforme pode ser visto na gura 11.4.
Seja P o polgono (com maior z) no incio da lista ordenada. Antes que este polgono
seja rasterizado, deve-se testa-lo contra cada polgono Q, que interra com ele na direc~ao
149
11.6. Z-SORT
x,y
P
Observador
ordem correta:
P --> Q
Q
z
em ordem decrescente de zmin:
Q --> P
para provar que P n~ao obstrui Q, podendo, neste caso, ser rasterizado antes de Q.
Abaixo est~ao colocados cinco testes, em ordem crescente de complexidade, de forma a que,
assim que um deles seja satisfeito, tenha-se certeza de que P n~ao obscurece Q e o proximo
polgono Q, interferindo com P , e testado. Se todos os polgonos passarem, ent~ao P pode
ser rasterizado.
Os testes 1) e 2) s~ao executados normalmente baseados apenas nas bounding box 3D dos
polgonos. Ja o teste 5) e bastante trabalhoso de ser implementado e costuma ser ignorado.
1) Os polgonos n~ao interferem em x?
2) Os polgonos n~ao interferem em y?
3) P esta completamente no semi-espaco, gerado pelo plano de Q, oposto ao do observador? (g. 11.5a)
4) Q esta completamente no mesmo semi-espaco, gerado pelo plano de P , do observador?
(g. 11.5b)
5) As projec~oes de P e Q no plano xy n~ao se sobrep~oem?
Se todos os testes falharem, e Q n~ao estiver marcado, assume-se, pelo momento, que P
obscurece Q e testa-se se Q pode ser rasterizado antes de P . Os testes 1,2 e 5 n~ao precisam
ser refeitos e os testes 3 e 4 s~ao executados trocando-se P por Q e vice-versa. Caso um
destes dois novos testes funcione, Q e marcado5 e movido para o incio da lista, tornando-se
o novo P . Caso contrario (Q marcado ou os dois testes falharam), P ou Q deve ser recortado
contra o plano do outro. O polgono original e descartado e os pedacos s~ao inseridos na
lista na posica~o apropriada.
4 zQ min < zP max zQ max ou zP min < zQ max zP max :
5 A marcac~ao e necessaria para evitar um ciclo innito, com P e Q se revezando no incio da la.
150
a)
b)
z
P
P
Q
Q
Observador
Observador
R
Q
P
Q
Figura 11.6: Casos em que um Ciclo Innito Ocorre se n~ao Houver Marcac~ao.
151
~ DO ESPAC
11.7. PARTIC
AO
O - BSP
mesmo lado
da normal
lado oposto
a normal
1
2
2
5
Observador
3, 4, 1, 2, 5
152
11.8 Subdivis~ao de Area
Algoritmos de subdivis~ao de area seguem uma estrategia de dividir para conquistar, particionando, recursivamente, o quadrado, que corresponde a janela, no plano de projec~ao.
O algoritmo de Warnock, inicialmente, divide este quadrado em 4 partes iguais. Em cada
etapa do processo recursivo de subdivis~ao, a projec~ao de cada polgono se enquadra em uma
dentre quatro possveis relaco~es com a area de interesse, conforme a gura 11.8:
O polgono circunda, completamente, a area.
O polgono intercepta a area.
O polgono esta completamente contido na area, dito contido.
O polgono esta completamente fora da area, dito disjunto.
153
polgono que circunda a area e esta mais proximo ao observador. A area e preenchida
com a cor deste polgono. A determinac~ao da proximidade com o observador e realizada computando os valores das coordenadas z, dos planos dos polgonos em quest~ao,
nos quatro cantos da area. Se houver um polgono circundante cujos quatro valores
calculados sejam menores que todos os outros, ent~ao este satisfaz o teste.
As areas que n~ao se enquadram nesses casos s~ao divididas em mais quatro areas iguais.
Apos esta subdivis~ao, os polgonos disjuntos ou circundantes a area original continuam a
ser disjuntos ou circundantes, respectivamente.
Agora, qual o criterio para parar o processo de subdivis~ao? Uma possibilidade e interromp^e-lo quando a resoluc~ao do dispositivo for alcancada. Se, ao ser atingido o numero
maximo de subdivis~oes, nenhum dos quatro casos tiver ocorrido, ent~ao a profundidade dos
polgonos pertinentes e calculada no centro do pixel. Aquele com menor coordenada z dene
a colorizac~ao (o shading) da area.
154
observador
Para estender um algoritmo de tracado de raios para que seja capaz de tratar um novo tipo de superfcie, basta escrever uma rotina que calcule a intersec~ao de uma reta com a
superfcie.
11.12. EXERCICIOS
155
como sendo igual ao numero de polgonos, voltados para o observador, que o obstruem.
Quando a linha passa por tras de um polgono V O, sua invisibilidade quantitativa e incrementada de uma unidade e quando ela sai de tras deste polgono, sua invisibidade quantitativa e decrementada de uma unidade. A linha esta visvel quando sua invisibilidade vale
zero. Se n~ao forem permitidos polgonos inter-penetrantes, a invisibilidade muda somente
quando a linha passa por tras de uma linha de contorno9 .
Uma linha de contorno passa pela frente da aresta em considerac~ao quando ela atravessa
o tri^angulo formado pelo ponto de vista e os dois vertices da aresta. O ponto sobre a
aresta onde ocorre o cruzamento e obtido projetando-se a linha de contorno sobre a aresta,
o que pode ser obtido, recortando-se a aresta contra o plano denido pelo ponto de vista
e a linha de contorno. O algoritmo requer que os polgonos sejam percorridos num sentido
consistente, de forma a que o sinal da mudanca de visibilidade possa ser determinado pelo
sinal do produto vetorial entre a direca~o da aresta e a direc~ao da linha de contorno.
Em primeiro lugar, o algoritmo computa a invisibilidade de um vertice, que funciona
como a semente para o algoritmo. Isto e feito, calculando-se o numero de intersec~oes, entre
o projetor que passa pela semente e os polgonos V O, mais proximos ao observador do que
a semente. Em seguida, propaga-se este valor para as arestas que emanam da semente,
incrementando ou decrementando este valor sempre que a aresta passar por tras ou pela
frente de um polgono V O, respectivamente. Somente os segmentos com invisibilidade
zero s~ao desenhados. Quando um outro vertice e atingido, a invisibilidade neste ponto e
propagada a todas as arestas que emanam deste vertice.
Vertices compartilhados por linhas de contorno necessitam de uma correc~ao antes que
se propague a sua invisibilidade. Isto porque, a invisibilidade pode mudar subtamente,
uma vez que uma ou mais arestas emanando deste vertice podem ser obstrudas por um ou
mais polgonos V O compartilhando este vertice. Esta mudanca pode ser levada em conta,
testando-se a aresta contra os polgonos V O que compartilham o vertice.
11.12 Exerccios
11.1 Que tipos de algoritmo de visibilidade s~ao mais indicados a uma representaca~o por
bordo? E a uma representac~ao implcita? Por que?
11.2 No algoritmo de scan-line e realmente necessario reordenar as arestas da AET a
cada nova linha de varredura ou basta apenas inser-las ordenadamente? Em func~ao da sua
resposta, discuta a complexidade do algoritmo.
11.3 D^e um exemplo em que, no algoritmo de z-sort, surge um ciclo innito, onde os
mesmos polgonos cam se revezando no incio da la de prioridades. Qual a soluca~o para
este problema?
11.4 Analise o problema da visibilidade ao longo de um raio para o caso de modelos representados em CSG.
9 Uma linha de contorno, ou de silhueta, e uma aresta compartilhada por um polgono voltado para o observador
e outro de costas para o observador. Pode ser, tambem, uma aresta de um unico polgono, que esta voltado para o
observador.
156
11.5 Discuta o calculo das superfcies visveis pelo metodo de A-buer. Mostre quais s~ao
as aproximac~oes utilizadas.
Cap
tulo 12
Iluminac~ao
O modelo de c^amara virtual utilizado ate agora serve para projetar a geometria da cena
sobre a tela virtual e emprega as transformac~oes de visualizac~ao para levar os objetos para
sistemas de coordenadas apropriados as diversas etapas da visualizac~ao:
recorte que e uma operac~ao vetorial e serve para eliminar os objetos fora do campo de
vis~ao da c^amara;
visibilidade que e a responsavel pela partic~ao da tela virtual;
e a rasterizaca~o (1D ou 2D, curvas ou superfcies) que descreve os objetos a partir dos
pixels.
Plano de
Recorte
P=(x,y,z)
N
Ponto
Nodal
Filme
Fonte
de Luz
157
158
~
CAPITULO 12. ILUMINAC
AO
Luz e Materia
Modelos de
Iluminacao
Solucao
Aproximada
Calculo
159
~
12.1. MODELOS DE ILUMINAC
AO
A forma de re
ex~ao da luz pode ser caracterizada como especular ou difusa. Um objeto
que re
ete luz preferencialmente em uma direc~ao e chamado de objeto re
etivo, enquanto
aquele que re
ete a luz iqualmente em todas as direc~oes e dito difuso (g 12.3).
L
N
O
I=<L.N>
N
L
160
~
CAPITULO 12. ILUMINAC
AO
1s
A
O
dr
dr
dg
dg
db
db
161
~
12.2. CALCULO
DO VETOR DE REFLEXAO
O
R
N
O
m
X
Ik
a
m
X
=1
=1
I (k cos(
l
) + k cos ( )) =
e
Este modelo de iluminaca~o e chamado de modelo local porque n~ao leva em conta a
troca de energia entre os diversos objetos em cena (a intensidade luminosa em um ponto
depende apenas das fontes diretas de luz). Isto signica que as regi~oes da cena que est~ao
na sombra n~ao podem ser determinadas a partir do modelo de iluminaca~o, obrigando que
sejam executados algoritmos para determinac~ao explcita das regi~oes sombrias.
162
~
CAPITULO 12. ILUMINAC
AO
D
=
=
L
a
R
=
jLj = jRj = jN j = 1
D = 2 < L; N >
cos(a) =< L; N >=< R; N >
de uma fonte de luz de modo que o realce especular por ela produzido seja maximo e esteja
localizado no ponto P .
163
12.3. EXERCICIOS
N
L
H
R
B
O
164
~
CAPITULO 12. ILUMINAC
AO
Anteparo Refletor
B
L
L
N
Fonte Pontual
P
Cap
tulo 13
Colorizac~ao
No captulo 12 foram estudados os modelos computacionais utilizados no calculo da func~ao
de iluminaca~o I no espaco da cena. Chama-se de func~ao de colorizac~ao, ou funca~o de
intensidade de cor I , a func~ao denida no espaco da tela virtual e dada por
I (x; y) = I (x0 ; y0 ; z 0 );
onde (x0 ; y0; z0 ) e o unico ponto visvel do ambiente correspondente ao ponto (x; y) da tela
virtual1.
O calculo da funca~o de colorizac~ao e que permite a gerac~ao efetiva dos valores de intensidade dos pixels da imagem. O domnio da func~ao I e a tela virtual, que consiste em um
ret^angulo no qual s~ao projetados os objetos geometricos do espaco da cena.
Como o objetivo e gerar uma imagem matricial, dene-se na tela virtual um reticulado uniforme de pontos. Cada ret^angulo neste reticulado e chamado de pixel virtual ou,
simplesmente, pixel. Cada pixel virtual corresponde a um pixel na imagem digital, sendo
a unidade basica da tela virtual. Um subconjunto da tela virtual (um conjunto nito de
pixels) sera chamado de regi~ao digital. Deve-se calcular a func~ao I em cada pixel virtual
de acordo com o modelo de iluminac~ao utilizado. O calculo da func~ao de colorizac~ao e feito
em quatro etapas:
visibilidade;
rasterizaca~o;
amostragem;
e o calculo propriamente dito.
A visibilidade determina a regi~ao da tela virtual onde a func~ao de colorizaca~o deve ser
calculada. Essa regi~ao e formada pela projec~ao na tela virtual de todas as superfcies visveis
dos objetos em cena.
A descric~ao dos objetos em cena e dada geometricamente em uma forma vetorial (pontos,
polgonos, equaco~es parametricas, etc.). Esses objetos denem superfcies que comp~oem a
partic~ao da tela virtual em regi~oes visveis, nas quais a func~ao de colorizac~ao deve ser
c
165
= x0 ; y = y 0 .
166
~
CAPITULO 13. COLORIZAC
AO
Colorizacao
Funcao
de Color.
Amostragem
Tecnologia
de Exibicao
167
~ DE GOURAUD
13.2. COLORIZAC
AO
v8
v7
P3
v4
P4
N
v1
v3
P0
P2
v2
v1
P1
v5
v6
168
~
CAPITULO 13. COLORIZAC
AO
I0
I2
Ir
Il
Ip
I1
I3
y
y1
y
y3
x
x
=
=
=
y0
(I I ) + I0;
y0 1 0
y2
(I I ) + I2;
y2 3 2
x
(I I ) + I :
x
l
(13.1)
3
X
i
=1
v;
i
> 0;
3
X
=1
= 1;
169
~ DE PHONG
13.3. COLORIZAC
AO
= y1 +2 y2 ;
ent~ao I = I1 +2 I2 ;
s
mas z 6= z1 +2 z2 :
s
Ponto de
Fuga
Transf. Perspectiva
Centro de
Projecao
170
~
CAPITULO 13. COLORIZAC
AO
L2
L1
raio refletido
O
O 2
R1
2 N2
O1
R2
O
N1 1
raio refratado
13.6. EXERCICIOS
171
um valor de intensidade para cada elemento, considerando-se a troca de energia entre todos
os elementos e assumindo-se um ambiente fechado.
A combinaca~o do metodo de tracado de raios com o metodo de radiosidade produz as
melhores imagens ja geradas ate hoje. Note-se que isto apenas melhora o calculo da func~ao
de iluminac~ao.
Uma outra abordagem possvel para melhorar a qualidade das imagens e melhorar a
propria equac~ao de iluminac~ao. Uma equac~ao de iluminac~ao exata, chamada "The Rendering Equation" foi proposta por Jim Kajya. Trata-se de uma equac~ao integral (a func~ao
de iluminac~ao esta dentro do integrando). As tecnicas para a resoluca~o de equac~oes integrais s~ao estudadas em calculo numerico e, basicamente, existem duas abordagens possveis:
Monte Carlo e Elementos Finitos. A primeira tecnica e empregada no metodo de tracado
de raios distribudo e a segunda no metodo de radiosidade.
13.6 Exerccios
13.1 Prove que o resultado da interpolac~ao de dados associados aos vertices de um polgono,
ao longo das suas arestas e das linhas da imagem, frente ao metodo de rasterizaca~o incremental, independe de orientac~ao no caso de tri^angulos. Mostre que isso n~ao e verdade no
caso de polgonos com mais de tr^es lados. Qual a consequ^encia deste fato numa animac~ao?
13.2 Apresente um caso no qual o uso de
at shading produz um resultado melhor do que
o metodo de Phong ou Gouraud.
13.3 Qual o efeito da compress~ao n~ao linear, ao longo do eixo z , apos a transformaca~o
perspectiva, na interpolac~ao de quantidades que n~ao sejam dist^ancias, por exemplo, intensidade luminosa? Como atenuar este problema?
13.4 E possvel levar em conta, de alguma forma, o realce no interior de polgonos usando
a interpolac~ao de Gouraud?
13.5 Discuta a relac~ao entre a resoluca~o de aproximac~oes poligonais de uma superfcie e
o fen^omeno de Match banding causado pelo calculo da iluminaca~o com a interpolac~ao de
Gouraud.
13.6 Considere um esquema para o calculo de iluminaca~o usando um mapa de cor de 24
bits associado a uma imagem de 12 bits por pixel, de tal modo que mudancas na iluminac~ao
impliquem apenas em mudanca no mapa de cor.
a) Descreva o metodo.
b) Qual a natureza da informac~ao armazenada na imagem?
c) Descreva o calculo da iluminac~ao.
d) Quais as limitac~oes do metodo?
172
~
CAPITULO 13. COLORIZAC
AO
13.7 Verique que o calculo de normais em um vertice, utilizando a equaca~o dos planos
dos polgonos que compartilham o vertice, ou o produto vetorial das arestas que incidem
no vertice, d~ao resultados diferentes, tanto em direc~ao como em magnitude. Explique o
motivo.
Sugest~ao: utilize um tronco de pir^amide.
Cap
tulo 14
Mapeamentos
A interac~ao da luz com a superfcie de um objeto dene o que se costuma chamar da textura
do objeto. Se, por algum processo, esta interac~ao for manipulada, a percepc~ao da textura
e modicada. Isto permite a criaca~o de efeitos interessantes. Os objetivos do mapeamento
s~ao:
alterar informac~oes estruturais;
modelar a micro geometria do objeto;
alterar a func~ao de iluminac~ao.
Os par^ametros da func~ao de iluminac~ao (normal, coeciente de re
ex~ao difusa, coeciente
de re
ex~ao especular, etc.) podem ser modulados por uma func~ao de textura. Os problemas
que se colocam de forma natural s~ao:
Quais os par^ametros a serem modulados?
Qual a funca~o de mapeamento?
Como resolver os problemas de amostragem e reconstruc~ao?
Como gerar a textura?
De acordo com o par^ametro modulado t^em-se tipos de mapeamentos diferentes a saber:
modulac~ao do coeciente de re
ex~ao difusa (modulac~ao da "cor" do objeto) ! mapeamento de textura;
modulac~ao do coeciente de re
ex~ao especular ! mapeamento de ambiente (environment mapping);
modulac~ao da normal ! mapeamento de rugosidade (Bump Mapping);
modulac~ao do coeciente de transpar^encia ! mapeamento de transpar^encia;
modulac~ao do coeciente de refraca~o ! mapeamento de refraca~o.
173
174
vis
T
vis
P
T
Espaco da Textura
-1
-1
T . T
vis
Eq. ilum
* (modulacao)
T
175
Textura
Objeto
176
O=R
L=p
Objeto
178
[17]
[18]
[19]
[20]
^
REFERENCIAS
BIBLIOGRAFICAS