Introdução - PUC-SP

Propaganda
Computação Gráfica
1. Introdução
Computação Gráfica e Processamento de Imagens
Prof. Dr. Julio Arakaki ([email protected])
www.pucsp.br/~jarakaki
Ciência da Computação
PUC-SP
© Julio Arakaki
Ciência da Computação
1
Computação Gráfica
1. Introdução
O que é Computação Gráfica e Proc. de Imagens?
Computação Gráfica
criação, manipulação e armazenamento de modelos
e imagens
© Julio Arakaki
Ciência da Computação
2
Computação Gráfica
1. Introdução
O que é Computação Gráfica e Proc. de Imagens?
• O termo Computação Gráfica, foi utilizado por William Fetter da
empresa Boeing em 1960.
• Tudo que está relacionado com a representação visual no
computador, incluindo:
– Interfaces Gráficas - GUI (“Graphics User Interface”)
– Imagens e processamento no computador
– 3D (efeitos especiais, jogos, animação, …)
– Visualização científica
– Algoritmos, teorias (física, matemática, computação, …)
– Dispositivos gráficos, “hardware” (placas gráficas, monitores, …)
– …
© Julio Arakaki
Ciência da Computação
3
Computação Gráfica
1. Introdução
O que é Computação Gráfica e Proc. de Imagens?
Objetos
físicos,
reais
Relacionada com a criação, armazenamento e manipulação de
modelos e imagens, onde:
Análise de Imagem
Modelos
(Matemático,
…)
(reconhecimento de “pattern”.
Visão computacional)
Imagens
Síntese de Imagem
(Renderização,
visualização)
Modelagem
(geométrica)
© Julio Arakaki
Ciência da Computação
Processamento
de Imagem
4
Computação Gráfica
1. Introdução
O que é Computação Gráfica e Proc. de Imagens?
Os modelos são provenientes de vários campos, incluindo a física,
matemática, artístico, biológico, entre outras.
© Julio Arakaki
Ciência da Computação
5
Computação Gráfica
1. Introdução
O que é Computação Gráfica e Proc. de Imagens?
- Síntese de imagens: envolve técnicas destinadas a
criação e manipulação de imagens a partir de modelos
matemáticos e geométricos
- Análise de imagens: é o processo inverso da síntese.
Neste caso a imagem existe e de alguma forma é passada
ao computador através de equipamentos como mesas
digitalizadoras, câmeras, “scanner”. Ex: extração de
características para visão robótica.
- Processamento de imagens: uma imagem capturada
conterá ruídos (“noise”). Algoritmos de processamento
de imagens (filtros) para melhorar as características
visuais da imagem, como aumentar o contraste, foco,
reduzir ruídos e distorções.
© Julio Arakaki
Ciência da Computação
6
Computação Gráfica
1. Introdução
O que é Computação Gráfica e Proc. de Imagens?
© Julio Arakaki
Ciência da Computação
7
Computação Gráfica
1. Introdução
O que é Computação Gráfica e Proc. de Imagens?
Processamento de imagens
Análise de imagens
© Julio Arakaki
Ciência da Computação
8
Computação Gráfica
1. Introdução
O que é Computação Gráfica Interativa ?
• O usuário controla o conteúdo, a estrutura e a aparência dos objetos
apresentados, através de uma realimentação (“feedback”) visual.
Usuário
“feedback”
Tela
imagem
entrada
Aplicação
© Julio Arakaki
Ciência da Computação
9
Computação Gráfica
1. Introdução
O que é Computação Gráfica Interativa ?
• Os componentes básicos de um sistema gráfico interativo são: entrada
(“mouse”, “tablet”, “light-pen”, “scanner”, …), processamento,
armazenamento e visualização/saída (tela, impressora, “plotter”, …)
Primeiro sistema gráfico
verdadeiramente interativo, foi
implementado por Ivan
Sutherland em 1963 (tese de
PhD.)
Utilizava um monitor tipo CRT,
“light-pen” e painel com
teclado de funções)
© Julio Arakaki
Ciência da Computação
10
Computação Gráfica
1. Introdução
Onde trabalhar com CG e PI?
Get a Job working for PIXAR
Get a Job working for George
Lucas at Industrial Light and
Magic.
Design Operating
Systems
Applications Programming
© Julio Arakaki
Ciência da Computação
Program and
Design Computer
Games
11
Computação Gráfica
1. Introdução
Quem trabalha com CG e PI
Usuários de programas/aplicativos
–
usam para produzir desenhos e imagens
Customizadores
–
adaptam programas existentes
Desenvolvedores/Programadores de aplicações específicas
–
desenvolvem “Reconhecedor de Digitais”, Editor de
Circuito Integrado, AutoCAD, Corel, ...
Desenvolvedores de ferramentas
–
© Julio Arakaki
Ciência da Computação
desenvolvem Java 3D, OpenGL, DirectX, ...
12
Computação Gráfica
1. Introdução
Aplicações
• Arte: Efeitos especiais, modelagens criativas, esculturas e pinturas.
Física
• Medicina: Exames, diagnósticos, estudo, planejamento de
procedimentos.
• Arquitetura: Perspectivas, projetos de interiores e paisagismo.
Outras ...
• Engenharia: Em todas as suas áreas (mecânica, civil, aeronáutica, etc.)
Matemática
• Geografia: Cartografia, GIS, georreferenciamento, previsão de
colheitas.
• Meteorologia: Previsão do tempo, reconhecimento de poluição.
Computação
Gráfica
Medicina
• Astronomia: Tratamento de imagens, modelagem de superfícies.
• Marketing: Efeitos especiais, tratamento de imagens, projetos de
criação.
Psicologia
Eng.
Eletrônica
• Segurança Pública: Definição de estratégias, treinamento,
reconhecimento.
• Indústria: Treinamento, controle de qualidade, projetos
Artes
• Turismo: Visitas virtuais, mapas, divulgação e reservas.
• Moda: Padronagem, estamparias, criação, modelagens, gradeamentos.
• Lazer: Jogos, efeitos em filmes, desenhos animados, propaganda.
• Processamento de Dados: Interface, projeto de sistemas, mineração de
dados.
• Psicologia: Terapias de fobia e dor, reabilitação.
© Julio Arakaki
Ciência da Computação
• Educação: Aprendizado, desenvolvimento motor, reabilitação.
13
Computação Gráfica
1. Introdução
Interdisciplinar – Teoria e Prática
Ciência da Computação
Algoritmos e Estrutura de Dados
Matemática
Matemática de curvas e superfícies, geometria
Física
Ótica, mecânica, Física da luz e cores
Engenharia
“Hardware” (processadores gráficos, dispositivos de I/O) e “Software” (bibliotecas gráficas, sistemas de
janelamento (“window systems”) e engenharia de “software”)
Projeto de estruturas (Eng. Civil e Eng. Mecãnica/Mecatrônica)
Psicologia
Cores: harmonia e percepção
Artes e “Design”
…
© Julio Arakaki
Ciência da Computação
14
Computação Gráfica
1. Introdução
Uma breve história…
• No início, dificuldades inclusive para visualização de textos …
Manchester Mark I
Display
© Julio Arakaki
Ciência da Computação
15
Computação Gráfica
1. Introdução
Uma breve história…
• 1885 - CRT (Cathode Ray Tube)
• 1926 - J.L. Baird inventa a televisão (30 linhas – verticais)
© Julio Arakaki
Ciência da Computação
16
Computação Gráfica
1. Introdução
Uma breve história…
• 1950 - computador com CRT (MIT)
• 1960 - doutorado de Ivan Sutherland Sketchpad
–
Estrutura de dados e técnicas interativas
–
Lightpen
–
Estruturas em memória para armazenar
objetos
–
rubber-banding
–
zoom in, zoom out
–
PDP-1 (DEC)
• ~1960 - GM desenvolveu o CAD (“Computer Aided Design”) e CAM
(“Computer Aided Manufacturing”)
© Julio Arakaki
Ciência da Computação
17
Computação Gráfica
1. Introdução
Uma breve história…
• 1962 – Steve Russel Space War
–
Primeiro jogo para computador
–
“multiplayer”
–
Teclas: a,s,d,f, k, l, ... controla as naves
• 1963 – IBM cria o primeiro “mainframe”(modelo 360) de
propósito geral.
• 1963 - SRI desenvolve o “mouse”
© Julio Arakaki
Ciência da Computação
18
Computação Gráfica
1. Introdução
Uma breve história…
• 1966 – Ralph Baer cria o primeiro produto de consumo baseado em
C.G.
© Julio Arakaki
Ciência da Computação
19
Computação Gráfica
1. Introdução
Uma breve história…
• 1967 – GE implementa o primeiro
simulador (“real time”)
totalmente colorido para a NASA
• ~1968 Tektronix – tubos
• ~1970 Boeing – CAD/CAM
• ~1970 “workstations” e PCs surgiram separadamente
© Julio Arakaki
Ciência da Computação
20
Computação Gráfica
1. Introdução
Uma breve história…
• 1972 – Atari (PONG)
© Julio Arakaki
Ciência da Computação
21
Computação Gráfica
1. Introdução
Uma breve história…
Westworld (1973)
Primeiro filme com características de
Computação Gráfica
© Julio Arakaki
Ciência da Computação
22
Computação Gráfica
1. Introdução
Uma breve história…
• 1974 – Intel desenvolve o processador 8080
• 1975 – Mandelbrot cria os “fractais”
• Bill Gates inicia a Microsoft
© Julio Arakaki
Ciência da Computação
23
Computação Gráfica
1. Introdução
Uma breve história…
• 1976 – Steve Jobs e Steve Wozniac funda a
Apple
• 1977 – Categoria de efeitos especiais é
introduzido no Oscar
• 1977 – “Star Wars” vence o
Oscar
© Julio Arakaki
Ciência da Computação
24
Computação Gráfica
1. Introdução
Uma breve história…
1978
1979
1980
• 1980 – “Tron” da Disney foi o
primeiro filme com 20 minutos de
animação feito por computador
© Julio Arakaki
Ciência da Computação
25
Computação Gráfica
1. Introdução
Uma breve história…
• 1980 – Seagate cria tecnologia de HDs para
PCs
• 1981 – IBM cria o IBM PC (8088 de 16 bits)
• 1982 – “Startrek II ” os efeitos
visuais foram feitos totamente no
computador
© Julio Arakaki
Ciência da Computação
26
Computação Gráfica
1. Introdução
Uma breve história…
1983
1984 - PIXAR
© Julio Arakaki
Ciência da Computação
27
Computação Gráfica
1. Introdução
Uma breve história…
1985 – animação realística por
computador (modelos altamente
detalhados)
• 1990 – Windows 3.0, “decola”
• 1993 – “Myst”
• 1994 – Playstation e N64
© Julio Arakaki
Ciência da Computação
28
Computação Gráfica
1. Introdução
Uma breve história…
1995 – “Toy Story”, primeiro desenho animado
3D, totalmente no computador
1997
1996 – “Independence Day”
1997
“Geri ’s Game”
(Pixar)
© Julio Arakaki
Ciência da Computação
29
Computação Gráfica
1. Introdução
Uma breve história…
• 1998 – “Armageddon”, “Mouse Hunt” e
“Bugs Life”
• 1998 – “Matrix”, “Star Wars: The Phantom Menace”
e “Tarzan” (Disney)
© Julio Arakaki
Ciência da Computação
30
Computação Gráfica
1. Introdução
Uma breve história…
• 2000 – PlayStation II (Sony), “Shrek”
(Disney), “Walking with Dinosaurs”
• 2002 – Xbox (Microsoft)
• ... PS3, WII, TV Digital, HDMI,
BlueRay, IPhone, IPad, Cinema 3D,
TV 3D ...
© Julio Arakaki
Ciência da Computação
31
Computação Gráfica
1. Introdução
História – ferramentas (bibliotecas/SO)
1978-core
1985-GKS
1988-PHIGS
1990-PEX
1991-GL
1993-OpenGL
1996-Direct 3D
…
© Julio Arakaki
Ciência da Computação
1984-Macintosh
1987-XWindow v.11
1988-Motif
1990-Windows 3.0
1993-Visual Basic v.3
1995-Delphi
1996-Java
…
32
Computação Gráfica
1. Introdução
História - Sistemas notáveis
•
Tektronix comandos em BASIC (meados-1970)
•
HP (Hewlett Packard)
•
Microsoft BASIC (para PCs) comandos gráficos (aprox. 1980)
•
QuickDraw (Apple Macintosh)
•
X (MIT)
•
OpenGL (Silicon Graphics)
•
SRGP (Simple Raster Graphics Package)
•
SPHIGS (Simple PHIGS)
•
MS Windows
•
Java AWT
© Julio Arakaki
Ciência da Computação
33
Computação Gráfica
1. Introdução
Evolução da Computação Gráfica
Inicialmente, o desenvolvimento da Computação gráfica foi
lenta:
– Alto custo dos equipamentos (principalmente memória)
– Necessidades de recursos computacionais significantes
– Dificuldade para desenvolvimento de “software”
– Falta de padronização e portabilidade
– Falta de ferramentas para construção de “ software”
© Julio Arakaki
Ciência da Computação
34
Computação Gráfica
1. Introdução
Evolução da Computação Gráfica
Atualmente:
– O custo dos equipamentos diminuiu bastante
– Maioria dos computadores tem recursos necessários para os
gráficos
– Surgimento de padronizações, implementações e ferramentas
– Permanece a carência no desenvolvimento de “software” em
relação ao desenvolvimento tecnológico dos equipamentos
(“hardware”)
© Julio Arakaki
Ciência da Computação
35
Computação Gráfica
1. Introdução
Associações/Comitês profissionais
ACM SIGGRAPH
- “Association for Computing Machinery Special Interest Group in
Graphics”
IEEE
- “The Institute of Electrical and Electronics Engineers, Technical
Committee on Computer Graphics”
© Julio Arakaki
Ciência da Computação
36
Computação Gráfica
1. Introdução
Padronizações
ANSI = “American National Standard Institute”
ISO = “International Standards Organization”
ANSI é um membro da ISO
Padrões gráficos oficiais
• 1977 and 1979 - 3D SIGGRAPH CORE (ACM SIGGRAPH)
• 1985 - GKS (Graphical Kernel Systems) ANSI X3.124-1985
• 1988 - GKS-3D (ISO 8805 and ANSI)
• 1988 - PHIGS (Programmer's Hierarchical Interactive Graphics
System) ANSI
• 199x - OpenGL
© Julio Arakaki
Ciência da Computação
37
Computação Gráfica
1. Introdução
Tecnologia em Circuitos Integrados (graphics cards)
Novas plataformas de “games”, utilizam processadores de alta
performance (128-bit e grande capacidade gráfica)
SGI/Nintendo 64
Sega Dreamcast
Sony Playstation 2
3Dfx Voodoo3
nVidia GeForce (23 milhões de transistores)
PixelFusion FUZION
…
© Julio Arakaki
Ciência da Computação
38
Computação Gráfica
1. Introdução
Requisitos para bons sistemas Gráficos
Habilidade para controlar os pontos (pixels) do “display”
Habilidade para controlar as formas primitivas na tela
Uso de cores, luzes e sombras
Construção de bibliotecas (“library”) ou pacotes (“packages”)
para extender linguagens
Conhecimento de “hardware”
Transformação e representação matemática
© Julio Arakaki
Ciência da Computação
39
Computação Gráfica
1. Introdução
Requisitos para bons sistemas Gráficos
Habilidade para armazenar blocos de informações
Computadores de alta performance
Algoritmos gráficos
Entendimento e manipulação de estrutura de dados
Bons princípios de engenharia de “software”
Fatores humanos
Alguns prinçípios artísticos
E muito esforço…
© Julio Arakaki
Ciência da Computação
40
Computação Gráfica
1. Introdução
História - Exemplos
SketchPad: primeiro sistema gráfico interativo (1961)
SpaceWars: primeiro game baseado em Computação
Gráfica (MIT 1961)
© Julio Arakaki
Ciência da Computação
DAC: primeiro sistema CAD (IBM 1959)
Imagem texturizada (Catmull 1974)
41
Computação Gráfica
1. Introdução
História - Exemplos
(Blinn 1978)
(Whitted 1980)
© Julio Arakaki
Ciência da Computação
(Cook 1984)
42
Computação Gráfica
1. Introdução
História - Exemplos
Star Wars (1977): utilizando GRASS
© Julio Arakaki
Ciência da Computação
43
Computação Gráfica
1. Introdução
História - Exemplos
Tron (1980)
Computação Gráfica utilizada pela primeira vez
para definir sequências de ações.
© Julio Arakaki
Ciência da Computação
44
Computação Gráfica
1. Introdução
História - Exemplos
Starfighter (1982)
Star trek II: efeito genesis (1983)
© Julio Arakaki
Ciência da Computação
45
Computação Gráfica
1. Introdução
Referência Bibliográfica
• “Computer Graphics – C version”, Donald Hearn e M. Pauline Baker.
2a edição. Prentice Hall. 1997.
• “3D Computer Graphics”, Alan Watt. 3a edição. Addison Wesley.
2000.
• Diversos (livros, artigos de revistas, internet)
© Julio Arakaki
Ciência da Computação
46
Download