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