© Julio Arakaki 1
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
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 3
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, …) – …
O que é Computação Gráfica e Proc. de Imagens?
Relacionada com a criação, armazenamento e manipulação de modelos e imagens, onde:
Imagens Modelos
(Matemático,
…)
Análise de Imagem
(reconhecimento de “pattern”.
Visão computacional)
Síntese de Imagem
(Renderização, visualização)
Modelagem Processamento
Objetos físicos,
reais
© Julio Arakaki 5
Os modelos são provenientes de vários campos, incluindo a física, matemática, artístico, biológico, entre outras.
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,
O que é Computação Gráfica e Proc. de Imagens?
© Julio Arakaki 7
O que é Computação Gráfica e Proc. de Imagens?
Processamento de imagens
Análise de imagens
O que é Computação Gráfica e Proc. de Imagens?
© Julio Arakaki 9
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
Aplicação
Tela
entrada imagem
“feedback”
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 11
Onde trabalhar com CG e PI?
Get a Job working for PIXAR
Get a Job working for George Lucas at Industrial Light and Magic.
Program and
Design Computer Games
Design Operating Systems
Applications Programming
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
– desenvolvem Java 3D, OpenGL, DirectX, ...
© Julio Arakaki 13
Aplicações
Computação Gráfica Outras ...
Física
Medicina
Psicologia
Artes
Matemática
Eng.
Eletrônica
• Arte: Efeitos especiais, modelagens criativas, esculturas e pinturas.
• Medicina: Exames, diagnósticos, estudo, planejamento de procedimentos.
• Arquitetura: Perspectivas, projetos de interiores e paisagismo.
• Engenharia: Em todas as suas áreas (mecânica, civil, aeronáutica, etc.)
• Geografia: Cartografia, GIS, georreferenciamento, previsão de colheitas.
• Meteorologia: Previsão do tempo, reconhecimento de poluição.
• Astronomia: Tratamento de imagens, modelagem de superfícies.
• Marketing: Efeitos especiais, tratamento de imagens, projetos de criação.
• Segurança Pública: Definição de estratégias, treinamento, reconhecimento.
• Indústria: Treinamento, controle de qualidade, projetos
• 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.
• Educação: Aprendizado, desenvolvimento motor, reabilitaçã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 15
Uma breve história…
• No início, dificuldades inclusive para visualização de textos …
Manchester Mark I
Display
Uma breve história…
• 1926 - J.L. Baird inventa a televisão (30 linhas – verticais)
• 1885 - CRT (Cathode Ray Tube)
© Julio Arakaki 17
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”)
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 19
Uma breve história…
• 1966 – Ralph Baer cria o primeiro produto de consumo baseado em C.G.
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 21
Uma breve história…
• 1972 – Atari (PONG)
Uma breve história…
Westworld (1973)
Primeiro filme com características de Computação Gráfica
© Julio Arakaki 23
Uma breve história…
• 1974 – Intel desenvolve o processador 8080
• 1975 – Mandelbrot cria os “fractais”
• Bill Gates inicia a Microsoft
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 25
Uma breve história…
1978 1979
• 1980 – “Tron” da Disney foi o
primeiro filme com 20 minutos de animação feito por computador
1980
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 27
Uma breve história…
1983
1984 - PIXAR
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 29
Uma breve história…
1995 – “Toy Story”, primeiro desenho animado
3D, totalmente no computador 1997
1996 – “Independence Day”
1997
“Geri ’s Game”
(Pixar)
Uma breve história…
• 1998 – “Armageddon”, “Mouse Hunt” e
“Bugs Life”
• 1998 – “Matrix”, “Star Wars: The Phantom Menace”
e “Tarzan” (Disney)
© Julio Arakaki 31
Uma breve história…
• 2000 – PlayStation II (Sony), “Shrek”
(Disney), “Walking with Dinosaurs”
• ... PS3, WII, TV Digital, HDMI,
BlueRay, IPhone, IPad, Cinema 3D, TV 3D ...
• 2002 – Xbox (Microsoft)
História – ferramentas (bibliotecas/SO)
1978-core 1985-GKS 1988-PHIGS 1990-PEX 1991-GL
1993-OpenGL 1996-Direct 3D
…
1984-Macintosh
1987-XWindow v.11 1988-Motif
1990-Windows 3.0 1993-Visual Basic v.3 1995-Delphi
1996-Java
…
© Julio Arakaki 33
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
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 35
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”)
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 37
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
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 39
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
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 41
História - Exemplos
DAC: primeiro sistema CAD (IBM 1959)
SpaceWars: primeiro game baseado em Computação Gráfica (MIT 1961)
Imagem texturizada (Catmull 1974) SketchPad: primeiro sistema gráfico interativo (1961)
História - Exemplos
(Blinn 1978)
© Julio Arakaki 43
História - Exemplos
Star Wars (1977): utilizando GRASS
História - Exemplos
Tron (1980)
Computação Gráfica utilizada pela primeira vez para definir sequências de ações.
© Julio Arakaki 45
História - Exemplos
Starfighter (1982)
Star trek II: efeito genesis (1983)
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)