Computação Gráfica: Kernels e Quantização Prof. Rafael Vieira (Calibre seu monitor!) THIS WORK IS LICENSED UNDER THE CREATIVE COMMONS ATTRIBUTION-SHAREALIKE 4.0 INTERNATIONAL LICENSE. TO VIEW A COPY OF THIS LICENSE, VISIT HTTP://CREATIVECOMMONS.ORG/LICENSES/BY-SA/4.0/ OR SEND A LETTER TO CREATIVE COMMONS, PO BOX 1866, MOUNTAIN VIEW, CA 94042, USA. CREATED BY RAFAEL S. T. VIEIRA <RAFASTV@PROTONMAIL.COM>
Kernel: Identidade Não altera o estado dos vértices (produto neutro). 𝐼 𝑝𝑥 = 0 0 0 0 1 0 0 0 0 http://masaxy.blogspot.com.br/2013_08_01_archive.html
Kernel: Escala de Cinza Converte a imagem para usar apenas um espectro de Cor. Simplificar as cores de uma imagem pode auxiliar alguns Algoritmos. e.g., Segmentação e ML. 𝐶 𝑝𝑥 = 1 3 0 0 0 0 𝑅+𝐺+𝐵 0 0 0 0 http://masaxy.blogspot.com.br/2013_08_01_archive.html
Kernel: Preto e Branco Converte a imagem para usar apenas 1 bit por pixel. 𝑆 𝑝𝑥 = 0 0 0 0 𝑟𝑜𝑢𝑛𝑑 1 1+ 𝑒 −𝑅−𝐺−𝐵 3 0 0 0 0 A função sigmoide possui Aplicações em economia e CG sendo usada para classificação. http://masaxy.blogspot.com.br/2013_08_01_archive.html
Kernel: Blur Gaussiano Borra a imagem, misturando suas cores. 𝑆 𝑝𝑥 = 0.0003 0.0009 0.0023 0.0043 0.0062 0.0071 0.0062 0.0043 0.0023 0.0009 0.0003 0.0005 0.0015 0.0038 0.0071 0.0103 0.0117 0.0103 0.0071 0.0038 0.0015 0.0005 0.0007 0.0023 0.0056 0.0104 0.0152 0.0173 0.0152 0.0104 0.0056 0.0023 0.0007 0.0010 0.0030 0.0074 0.0138 0.0201 0.0228 0.0201 0.0138 0.0074 0.0030 0.0010 0.0011 0.0036 0.0087 0.0163 0.0238 0.0269 0.0238 0.0163 0.0087 0.0036 0.0011 0.0012 0.0038 0.0092 0.0173 0.0251 0.0285 0.0251 0.0173 0.0092 0.0038 0.0012 0.0011 0.0036 0.0087 0.0163 0.0238 0.0269 0.0238 0.0163 0.0087 0.0036 0.0011 0.0010 0.0030 0.0074 0.0138 0.0201 0.0228 0.0201 0.0138 0.0074 0.0030 0.0010 0.0007 0.0023 0.0056 0.0104 0.0152 0.0173 0.0152 0.0104 0.0056 0.0023 0.0007 0.0005 0.0015 0.0038 0.0071 0.0103 0.0117 0.0103 0.0071 0.0038 0.0015 0.0005 0.0003 0.0009 0.0023 0.0043 0.0062 0.0071 0.0062 0.0043 0.0023 0.0009 0.0003 http://masaxy.blogspot.com.br/2013_08_01_archive.html
Kernel: Detecção de Contornos Tenta extrair as contornos da figura. 𝐻 𝑝𝑥 = −1 8 −1 8 −1 8 −1 8 1 −1 8 −1 8 −1 8 −1 8 Repare que o kernel resultará em 0, caso todos possuam a mesma cor. http://setosa.io/ev/image-kernels/ http://masaxy.blogspot.com.br/2013_08_01_archive.html
Repare que o kernel resultará em 1, caso todos possuam a mesma cor. Kernel: Sharp Realça os contornos da imagem (Remove a mistura). Contornos + Identidade. 𝐻 𝑝𝑥 = −1 8 −1 8 −1 8 −1 8 2 −1 8 −1 8 −1 8 −1 8 Repare que o kernel resultará em 1, caso todos possuam a mesma cor. http://masaxy.blogspot.com.br/2013_08_01_archive.html
Kernel: Detecção de Linhas (Sobel) Tenta extrair arestas (verticais, horizontais, e outras orientações) da imagem pelo uso de derivadas. 𝑆𝑜 𝑝𝑥 = 1 0 −1 2 0 −2 1 0 −1 𝑆𝑜 𝑝𝑥 = 1 2 1 0 0 0 −1 −2 −1 Repare que o kernel resultará em 0, caso não exista variação da cor. http://setosa.io/ev/image-kernels/ http://masaxy.blogspot.com.br/2013_08_01_archive.html
Kernel: Criação de Relevo (Emboss) Usando Sobel + Identidade é possível criar a ilusão de relevo. (Bump mapping.) 𝐸 𝑝𝑥 = 2 1 0 1 1 −1 0 −1 −2 Estamos usando Sobel com 45 graus para a inclinação dos segmentos http://masaxy.blogspot.com.br/2013_08_01_archive.html
Quantização de Cores Quantização é um método de classificação para diminuir a quantidade de cores em uma imagem. Imagem quantizada para 16 cores. Quantização é necessária para compressão, Para ajustar o gamute de cores a um dispositivo, Para simplificar uma imagem, e para Segmentar uma imagem. http://masaxy.blogspot.com.br/2013_08_01_archive.html
Quantização de Cores (Subdivisão Uniforme) Usar uma subdivisão do espaço uniforme e atribuir uma cor para cada região de forma aleatória ou pela média das cores existentes, como sugerido antes, funciona, contudo os resultados não são tão bons. Pode-se obter cores fora do gamute da imagem.
Histograma O Histograma de uma imagem nos oferece uma nova forma de estudar e analisar uma imagem de forma a identificar que cores aparecem com mais frequência. Também é possível fazer o histograma de imagens coloridas usando como escala o espectro vísivel da luz.
Quantização de Cores (Populosidade) Com a informação de um histograma podemos então fazer uma escolha mais inteligente de cores, escolhendo as N cores mais frequentes da imagem.
Mediana Mediana é valor que reside exatamente no meio de um conjunto de dados S de tamanho N(S), considerando-se apenas sua posição. 𝑀= 𝑒 𝑖𝑚𝑝𝑎𝑟 𝑁 𝑆 2 +1 ∨ 𝑒 𝑝𝑎𝑟,1 𝑁 𝑆 2 + 𝑒 𝑝𝑎𝑟,2 𝑁 𝑆 2 +1 2 𝑆= 1,2,2,2,4,4,5,6,7,8,9,10}; 𝑀 𝑠 = 𝑒 12 2 +𝑒 12 2 +1 2 =4,5 𝑆= 12,14,15,42,51,70,90};𝑀=𝑒 7 2 +1 =42 Não confunda com média!
Quantização de Cores (Corte Mediano) A maneira mais comum utilizada atualmente, apesar do algoritmo de populosidade oferecer resultados razoáveis. No espaço de cores: 1) Escolhe-se o espectro de cor com mais variação. 2) Divide-se o espaço pela mediana em 2 pedaços, considera-se a frequência das cores. 3) Repete 1 e 2 até que o número de cores seja atingido. 4) Usa-se a média das cores para representar os pedaços finais. Kd-tree é um método eficaz para se implementar o algoritmo do corte mediano. http://groups.csail.mit.edu/graphics/classes/6.838/S98/meetings/m13/kd.html
Quantização de Cores (K-means) Outra maneira de popular de quantizar cores é o algoritmos das K-médias. No espaço de cores: 1) Escolhe-se K-médias (pontos aleatórios) que coincidam com as cores existentes. 2) Calcula-se quais são os pontos mais próximos para cada uma das K-médias. 3) Calcula-se a média dos pontos que pertencem a um determinado grupo K. 4) Move-se a K-média para essa nova posição. 5) Repete-se 1-4 até convergir. Pode-se aplicar o algoritmos das K-médias varias vezes até encontrar o resultado visual mais satisfatório ou que possua a melhor distribuição de cores (Próxima aula). http://scikit-learn.org/stable/auto_examples/cluster/plot_color_quantization.html
Exercícios Exercícios 5, 6, 7 e 8. pp 194-195. Fundamentos da Computação Gráfica (3° Edição) Autores: Jonas Gomes & Luís Velho. Editora: IMPA. Ano: 2015. ISBN: 978-8524402005.
Fim rafastv.responde@gmail.com