Baixe o app para aproveitar ainda mais
Prévia do material em texto
COMPUTAÇÃO GRÁFICA 1- Computação gráfica: transformações geométricas, projeções geométricas, modelagem e representação de objetos, modelagem 3D usando VRML. 2- Processamento de imagens: Propriedades sobre os pixels, filtragem de imagem, segmentação de imagem e processamento de imagens coloridas. 3- Análise de imagens: noções de extração de características e reconhecimento de objetos. Exemplos de aplicações: computação gráfica (síntese de imagens) Produz imagens a partir de primitivas geométricas (linhas, círculos, superfícies, etc.) Exemplos de aplicações: processamento de imagens Engloba operações realizadas sobre uma imagem para análise, realce, compressão, detecção de padrões não perceptíveis ao olho humano. Exemplos de aplicações: análise de imagens (visão computacional) Estima primitivas geométricas e obtém dados a partir de uma imagem. Síntese de imagens: Técnicas destinadas à criação e manipulação de imagens sintéticas a partir de modelos matemáticos e geométricos. Exemplo: uma aplicação de modelagem 3D Processamento de imagens: Técnicas destinadas à manipulação de imagens bitmap (matricial). Análise de imagens: Técnicas destinadas à extração de informações a partir de uma imagem. Imagem vetorial: É um tipo de imagem formada a partir de descrições geométricas de formas. Normalmente é composta por curvas, elipses, polígonos, textos, entre outros elementos, isto é, utilizam vetores matemáticos para sua descrição. Exemplo: O objeto abaixo poderia ser definido da seguinte forma: 1- Tipo de Curva = Circunferˆencia 2- Raio = 1 cm 3- Preenchimento = amarelo 4- Contorno = azul Se guardarmos os atributos, como Circunferência, preenchida de amarelo, contornada por azul e com raio de 1 cm, qualquer computador poderia reproduzi-la. Formatos de arquivos: SVG / CDR / WMF / ESS / CNX Mais sobre o algorjtmo svg: https://tableless.com.br/ imagens-em-alta-resolucao-utilizando-svg/ Vantagens: São leves Não perdem qualidade ao serem ampliadas Desvantagens: Precisa de RENDERIZAÇÃO, isto é, de uma conversão dos elementos básicos (pontos, círculos, retas, ...) na forma de uma imagem bitmap. Imagem bitmap (ou mapa de bits ou imagem raster) É um arranjo espacial que representa uma cena composta por pequenos quadradinhos, cada um, com uma cor. Os Quadradinhos chamam-se pixels. Vantagens: Modelo matricial (o conteúdo pode ser representado por uma matriz) Aquisição pode ser feita por câmeras Desvantagens: Tamanho dos arquivos são grandes Perdem qualidade ao serem ampliadas Formatos de arquivos: JPG / PNG / BMP / TIF / PPM / PGM / Chamamos de pixel uma coordenada válida da imagem. O domínio da imagem é o conjunto de pixels da imagem, ou seja, todas as coordenadas (ou localizações) da imagem. Chamamos de intensidade (ou cor) o valor associado ao um pixel da imagem. Uma imagem bitmap pode ser representada por uma função: F : D -> {0, 1, ..., 2bits 1}bandas Exercícios 1- A Síntese de Imagens é definida como? Uma subárea da Computação Gráfica que visa a criação de ima… [10:56, 20/5/2019] Marcelo Jr: Aula 2 - Computação gráfica - CONCEITOS DE PIXELS, RESOLUÇÃO, RASTERIZAÇÃO E CÁLCULO DE MEMÓRIA Dispositivos Gráficos; • Os dispositivos gráficos podem ser classificados de duas maneiras: – Quanto à finalidade: Dispositivo de entrada ou de saída. – Quanto ao formato dos dados: Dispositivos matriciais ou vetoriais. Para dispositivos de entrada o termo matricial define uma classe de dispositivos em que os dados (pontos) são colhido sem conjunto e armazenados em forma de matrizes. Exemplo: Câmera digital Por outro lado dispositivos vetoriais de entrada de notam equipamentos através dos quais se pode colher dados (pontos) de forma isolada. Exemplo: Mouse Para dispositivos de saída, por sua vez, o termo matricial designa dispositivos cuja geração de imagens dá-se pelo "acendimento" ou "apagamento" de pontos sobre uma matriz. Exemplo: Monitor Por outro lado, dispositivos vetoriais de saída são aqueles em que as imagens são criadas através de comandos específicos para a geração de entidades como, por exemplo, retas e círculos. Exemplo: Traçadores gráficos ou "plotters”. Dispositivos de entrada e saída da CG • Entrada – Scanner (bitmap) – Mesa digitalizadora (vetorial) – Teclado (vetorial) – Mouse (vetorial) – Câmera fotográfica (bitmap) – Leitor biométrico (bitmap) • Saída – Impressora (bitmap) – monitor (bitmap) – Plotter (vetorial) – Projetor (bitmap) Uma imagem bitmap pode ser representada por uma função: f : D ⊂ Z2 →{0,1,..., 2b −1}k (Geralmente, representamos por uma matriz ou vetor) Tipo de dado da matriz ou vetor Exemplo: • byte - 8bits • short - 16bits • int - 24bits • int/float - 32bits • long - 64bits Note que: D: é o domínio da função (imagem) f; b: é a quantidade de bits da imagem (também conhecido como profundidade da imagem); k: é a quantidade de bandas de um sistema de cores. Imagem: f : D ⊂ Z2 →{0,1,..., 2b −1}k • Quando b = 1 e k = 1 chamamos f de imagem binária, isto é: f : D ⊂ Z2 →{0,1} • A imagem binária pode assumir somente duas cores. Pergunta: Quantos bits são necessários para armazenar uma imagem binária com resolução 7 x 7? • Imagem: F : D ⊂ Z2 →{0,1,..., 2b −1}k • Quando b > 1 e k = 1 chamamos f de imagem em níveis de cinza, isto é: f : D ⊂ Z2 →{0,1,..., 2bits −1} • A imagem em níveis de cinza pode assumir valores entre 0 a 2bits-1 Exemplo: uma imagem de 3 bits os valores ficam entre 0 a 23-1=7 Pergunta: Quantos níveis de cinza pode ter em uma imagem de 10 bits? Ideia: 2bits= quantidade de cores Pergunta: Quantos bits são necessários para representar uma imagem com até 256 cores? Ideia: log2 (cores) = quantidade de bits • Imagem: F : D ⊂ Z2 →{0,1,..., 2b −1}k • Quando b > 1 e k > 1 chamamos f de imagem multibanda Exemplo: imagem RGB, isto é: – Cada pixel da imagem contém 3 valores correspondendo aos níveis de intensidade de vermelho (R), verde (G) e azul (B). Resolução espacial: É a quantidade de pixel horizontal x a quantidade de pixels na vertical Exemplo: Dada a resolução de uma câmera que é de 1024 x 768, q… [10:56, 20/5/2019] Marcelo Jr: Aula 2_ Resumo Para descobrir a resolução por cores (dividir) Conversão Bit> Byte (%8) Byte > Kbyte (%1024) Kbyte > Mbyte (%1024) Conversão ao contrário Byte > Bit (x8) Kbyte > Byte (x1024) Para descobrir bit: 2 elevado 6 = 64 2 elevado 7 = 128 2 elevado 8 = 256 2 elevado 9 = 512 2 elevado 10 = 1024 2 elevado 11 = 2048 2 elevado 12 = 4096 Exercícios 1- 640x480 -> pegar o número elevado mais próximo 1024x512x8(bits) = 4.194.304 bits 2- Formula: log(qtd cor) % log (nrbit2) log(65.536) % log(2) = 16 1024x1024x16= 16.777.216 [10:56, 20/5/2019] Marcelo Jr: Aula 3 - INTRODUÇÃO AO PYTHON Python é uma linguagem de programação interpretada – Interpreta instruções de programação ou blocos de instruções (scripts) – Tem recurso para programação imperativa, orientado a objetos e funcional – A tipagem é dinâmica, ou seja, não dizemos qual é o tipo das variáveis, o tipo de retorno de uma função, etc. Estrutura básica de python Programa Instruções <- ínicio do programa Enquanto condição: -> dois pontos obrigatórios -> Instruções <- Inicio de um bloco Se condição: -> Instruções <- Outro bloco <- Senão: -> Instruções <- fim dos dois blocos <- <- Instruções <- fim do programa Usar o python como uma calculara • Os operadores aritméticos são: – Adição ( + ) => Exemplo: 5 + 2 – Subtração ( - ) => Exemplo: 5 - 3 – Multiplicação ( * ) => Exemplo: 5 * 3 – Divisão ( / ) => Exemplo: 5 / 3 – Divisão inteira ( // ) => Exemplo 5 // 3 – Resto da divisão ( % ) => Exemplo 5 % 2 Declarar e inicializarvariáveis • Simplesmente nomeVariavel = valor da variável variavel1, variavel2 = valor1, valor2 Sintaxe do If if <condição>: <bloco de código> elif <condição>: <bloco de código> elif <condição>: <bloco de código> else: <bloco de código> Operadores relacionais: Igual: == Diferente: != Maior: > Maior ou igual: >= Menor: < Menor ou igual: <= Operadores lógicos: Não: not E: and OU: or Sintaxe de laços • While while <condição>: <bloco de código> • For for <variável> in <sequencia> <bloco de código> Importar bibliotecas • Python apresenta uma vasta biblioteca de módulos e pacotes que é distribuída com o interpretador. Alguns módulos importantes da biblioteca padrão são: – Matemática: math, cmath, decimal e random. – Sistema: os, glob, shutils e subprocess. – Threads: threading. – Tempo: time e datetime. • Comando para importar uma biblioteca import <nome-pacote> [10:56, 20/5/2019] Marcelo Jr: Aula 4 - ALGORITMOS FUNDAMENTAIS PARA O TRAÇADO DE PRIMITIVAS GRÁFICAS Rasterização É o nome dado para o processo de conversão da representação vetorial para matricial que pode ser representado na maioria dos dispositivos de saída, onde cada posição da matriz pode indicar quando um determinado pixel deve ser ativado ou desativado e em qual cor. Algoritmos fundamentais para o traçado de primitivas gráficas • Normalmente, gráficos são definidos através de primitivas gráficas como: pontos, reta, círculos, textos, etc. • Chamamos de primitivas gráficas os comandos e funções que manipulam e alteram os elementos gráficos de uma imagem • Também entram na definição de primitivas, os elementos básicos de gráficos a partir dos quais são construídos outros mais complexos. Representação vetorial x matricial • Primitivas geométricas, como reta e círculos, são definidos de forma vetorial – Representação vetorial • Dispositivos gráficos, como os monitores, são definidos como matrizes de pixels (rasters) – representação matricial • Pode parecer simples traçar uma reta no vídeo, mas, no entanto, esse tipo de rotina não é tão simples quanto parece. Importar as bibliotecas • Faremos uso de três bibliotecas – OpenCV: biblioteca de processamento de imagens e visão computacional desenvolvida pela intel – NumPy: biblioteca para manipular matrizes usada para representar imagens pela OpenCV – MatPlotLib: biblioteca usada para exibir imagens e gráficos import cv2 as cv import numpy as np from matplotlib import pyplot as plot Ler imagem • Para ler uma imagem de um arquivo usamos a função imread da OpenCV • É preciso fornecer dois parâmetros: • O nome do arquivo • O tipo da imagem • É retornado uma matriz do numpy com os dados da imagem imgBGR = cv.imread('./imagem.jpg', cv.IMREAD_COLOR) imgBGR = cv.imread('./imagem.jpg', cv.GRAYSCALE) Exibir uma imagem • Para exibir uma imagem na tela usamos a função imshow da biblioteca matplotlib imgRGB = cv.cvtColor(img BRG, cv.COLOR_BGR2RBG) plot.imshow(imgRBG) Desenhando na imagem [10:56, 20/5/2019] Marcelo Jr: Aula 5 - MODELO DE REPRESENTAÇÃO DE OBJETOS E TRANSFORMAÇÕES GEOMÉTRICAS Modelo de representação • Em computação gráfica (CG), a representação dos componentes do espaço físico é feita a partir dos modelos de representação matemática. • Esses modelos são obtidos empregando-se ferramentas da geometria analítica. • A partir da representação é possível perceber as relações existentes entre os componentes geométricos (ponto, reta e plano) capazes de caracterizar elementos do espaço físico. Espaço físico -> coodernadas -> geometria analítica-> modelo de representação. Translação • Movimentação da figura pelo deslocamento de suas coordenadas. Escala • Ampliação ou redução de uma figura obtida pela multiplicação das coordenadas por um fator de escala horizontal e vertical. Rotação • A partir de um ângulo de rotação θ, as coordenadas de uma figura tem seu posicionamento alterado através de um deslocamento angular θ no sentido do eixo y positivo. Espelhamento • A reflexão em torno de um eixo produz um novo objeto como se o objeto anterior fosse visto por um espelho Cisalhamento • Cisalhar um objeto é deformá-lo linearmente ao longo do eixo x ou do eixo y ou de ambos Transformações geométricas • Todas as transformações geométricas podem ser representadas na forma de equações algébricas. • Mas na prática, equações matriciais são mais usadas para representar transformações geométricas. – Uma vantagem da utilização na forma matricial é que várias transformações podem ser combinadas, resultando em uma única matriz denominada matriz de transformação. [10:56, 20/5/2019] Marcelo Jr: Coordenadas Homogêneas • Um ponto no espaço 3D, é dado pela 3-upla (x, y, z) que posicionam o ponto no espaço em relação ao centro de coordenadas. – Uma coordenada homogênea é dada pela 4-uplas: (x', y', z', M). – A transformação do sistema homogêneo para o cartesiano se dá pela seguinte relação: (x, y, z) = (x'/M, y'/M, z'/M). – Dizemos que duas coordenadas homogêneas: (x, y, z, M) e (x', y', z', M), representam o mesmo ponto se, e somente se, uma é múltipla da outra (2, 3, 4, 6) e (4, 6, 8, 12) é o mesmo ponto com diferentes representações. • Quando M=1, a transformação entre os espaços é direta de modo que, (x, y, 1), no sistema homogêneo, tem os mesmos valores no espaço cartesiano 2D: (x, y). • Assim, para as transformações geométricas apresentadas a seguir, iremos utilizar as coordenadas dos pontos 2D como (x, y, 1) e dos pontos 3D como (x, y, z, 1). [10:56, 20/5/2019] Marcelo Jr: 1- Observe a situação representada acima, em que o triângulo identificado por A sofre transformações geométricas que o levam para a situação identificada por A’. Considerando-se dx e dy parâmetros de translação e s, o fator de escala, então o triângulo A’ pode ser obtido a partir da aplicação da seguinte sequencia de transformações aos vértices do triângulo A: tanslação com parâmetros de deslocamento dx = -xc e dy = -yc; rotação em torno do ponto (xc, yc); translação com parâmetros de deslocamento dx = xc e dy = yc; escala com fator uniforme s = 0,5. [10:56, 20/5/2019] Marcelo Jr: Aula 6 - Resumo DA PRIMEIRA PARTE DO CURSO Pixel é uma coordenada. Intensidade (ou cor) é o valor associado ao um pixel. Os valores associados as cores estão no intervalo de 0 até 2 bits − 1. Uma imagem pode ter até 2bits de cores. Por exemplo: 8 bits podem ter até 28 = 256 cores 10 bits pode ter até 210 = 1024 cores 8 bits para cada banda RGB pode ter até 28×3 = 224 = 16.777.216 cores A quantidade de bits é log(quantCores) dividido log(2) Cálculo de memória de Vídeo Memória de Vídeo é uma área de armazenamento em que cada posição indica quando um determinado pixel na tela deve estar apagado ou aceso e em qual cor. Esta memória fica localizada na placa de vídeo, que ´e responsável pela geração das imagens que vemos na tela. Muitos pensam que quanto mais memória possuir a placa de vídeo, mais rápida ela será, o que não é verdade. A quantidade de memória, determina apenas a resolução e a quantidade de cores que a placa poderá exibir. [10:56, 20/5/2019] Marcelo Jr: Exercício • Implemente o operador de limiarização e aplique na imagem dos parafusos disponível no AVA. O objetivo é separar os parafusos e porcas do fundo da imagem. • Dicas: – Importe as bibliotecas – Abra a imagem no formato nível de cinza – Adquira as dimensões da imagem – Crie uma nova imagem para armazenar o resultado do processamento, por exemplo: – Aplique o processamento na imagem: imgSaida[linha,coluna] = 0, se imgEntrada[linha, coluna]≤LIMIAR 255, casocontrário [10:56, 20/5/2019] Marcelo Jr: Exercício • Implemente o operador de limiarização e aplique na imagem dos parafusos disponível no AVA. O objetivo é separar os parafusose porcas do fundo da imagem.
Compartilhar