Macbeth Color Pattern Prof.: Marcelo Gatass

Slides:



Advertisements
Apresentações semelhantes
2º Semestre 2009 > PUCPR > Design Digital
Advertisements

TRATAMENTO DE ARQUIVOS EM C
Programação em Java Prof. Maurício Braga
Temperatura e Ajuste de Cor
Programação em Java Prof. Maurício Braga
Um programa em C Bibliotecas Variáveis globais
Marco Antonio Montebello Júnior
Programação Orientada a Objetos – Parte II
TADS – Tipos Abstratos de Dados
Introdução à Programação
Fundamentos de Computação Gráfica Prof.: Marcelo Gattass
Fundamentos de Computação Gráfica
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Prof.: Sergio Pacheco Estruturas de Dados I Prof.: Sergio Pacheco 1.
Wagner Santos C. de Jesus
Universidade Federal do Espírito Santo
Paradigmas da Programação
Linguagem C Strings.
Linguagem C Funções.
Vetores, Matrizes e Funções
Matrizes e Funções - Continuação
Revisão da Linguagem C.
O Portal do Estudante de Computação
CRIANDO OBJETOS EM JAVA
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
exercícios listas encadeadas
IAED Tagus, 2009/2010 Introdução à Programação em C (I)
PROGRAMAÇÃO ESTRUTURADA II
PROGRAMAÇÃO ESTRUTURADA II
Exercicios de revisão Exercicio tirados de
Trabalho de Imagem Felipe Baldino Moreira Prof: Marcelo Gatass.
Tipos Abstratos de Dados
1 Tipos Abstratos de Dados Pilhas e Filas TPA – 2008 –1 Prof. Mateus Costa.
Conceitos e implementação em C
Heap Sort TPA – Prof. Mateus Costa
Atributos, Encapsulamento e Interface em Java
Fundamentos de Computação Gráfica Prof Marcelo Gattass
Expressões e Instrução de Atribuição
Técnicas de Desenvolvimento de Programas
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng. da Computação IF62C - Fundamentos de Programação Semana 12 – Overloading X Overriding Prof.a.
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Wagner Santos C. de Jesus
Uso de parâmetros na linha de comando. Parâmetros da função main:
Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009.
Aula Prática 3 Funções Monitoria Introdução à Programação.
Aula Prática 11 Operações com Arquivos Monitoria
Programação de Computadores I – Arquivos
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IX Subprogramação e Recursividade.
Aula Prática 3 Funções Monitoria Introdução à Programação.
Mudança da Temperatura de Cor de uma Imagem Hildebrando Trannin Fundamentos de Computação Gráfica Prof.: Marcelo Gattass.
Ricardo Costa Modelos de reflexão Ricardo Costa
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Renderização do Espectro Marcelo Gonella
Profa. Maria Augusta Constante Puget
© Copyright 2008 Algoritmos e Estruturas de Dados 1 IF672 - Algoritmos e Estruturas de Dados CIn - UFPE Adriana Libório Fernandes Lins Arthur Cavalcanti.
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista POO para Redes de Computadores.
Programação em C Aula 9.
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Estrutura de Dados Prof. André Cypriano M. Costa
Programação de Computadores I – Arquivos Profa. Mercedes Gonzales Márquez.
Fundamentos de Programação 1 Aula N. 02 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Laços de Repetição em C”
Capítulo 7 Métodos. 2Capítulo 7 – Métodos Métodos Criação e chamada de métodos Passagem de parâmetros VarArgs Sobrecarga Método com valor de retorno Métodos.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Java Básico Lab Ruddá Beltrão | Cristian Costa.
Estrutura de Dados STRUCTS Dilvan Moreira. Objetivos  Entender o que são e como usar:  Estrutura de Dados para a Linguagem C  Structs (Registros)
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Programação de Computadores I – Arquivos
Fundamentos de Programação 1
Transcrição da apresentação:

Macbeth Color Pattern Prof.: Marcelo Gatass Aluno: Felipe Baldino Moreira Fundamentos de Computação Gráfica 1. Semestre de 2013 - Trabalho 0

O padrão Macbeth gerado O Padrão MacBeth gamma = 1.6/2.4

O que foi feito Alterado o arquivo color.c com as constantes passadas pelo professor para o parametro A e D65 do espectro para a conversão para o sistema XYZ. Criada a função de conversão corCIEXYZtosRGB_Bruce que recebe como entrada as cores no sistema CIEXYZ e retorna no sistema sRGB mantendo o iluminante atual e usa a fórmula obtida no site do Bruce Lindbloom. Inserida a variável de ajuste Gamma no programa. Implementada a função de leitura do arquivo corCIEXYZIlumminantA_toD65_XYZScaling – converte o iluminante A para o D65 no espaço de cor XYZ. Apresentado o padrão tanto com o Iluminant A como o D65.

corCIEXYZtosRGB_Bruce int corCIEXYZtosRGB_Bruce(float X,float Y, float Z, float* R, float* G, float* B) /*converte XYZ para sRGB , fórmula obtida do site do Bruce LindBloom */ { *R = 3.24071 * X + (-1.53726 * Y )+ (-0.498571) * Z; *G =(-0.969258) * X +( 1.87599 * Y) + 0.0415557 * Z; *B = 0.0556352 * X + (-0.203996 * Y) + 1.05707 * Z; return 1; }

gamma_sRGB(double x) static double gamma_sRGB(double x){ /* Retorna o valor da cor x corrigido com a correção gamma */ double ft,t = (x>0)?x:-x; if (t>0.0031308) ft = 1.055*pow(t,fVargamma)-0.055; /*código original ft = 1.055*pow(t,1.0/2.4)-0.055; */ else ft = 12.92*t; return (x>0)?ft:-ft; }

inv_gamma_sRGB static double inv_gamma_sRGB( float x) { /* Como foi alterada a função da variação gamma, também foi necessário alterar a inv_gamma_sRGB */ double ft,t=(double) (x>0)?x:-x; if ( t > 0.04045 ) ft = pow((t+0.055)/1.055,fVargamma); /*alterado de 2.4 para fVargamma */ else ft = t/12.92; return (x>0)?ft:-ft; }

Int corCIEXYZIlumminantA_toD65_XYZScaling(float X,float Y, float Z, float* XX, float* YY, float* ZZ) { double m[3*3] ={0.8652435, 0.0000000, 0.0000000, 0.0000000, 1.0000000 , 0.0000000, 0.0000000 , 0.0000000 , 3.0598005}; *XX = (m[0] * X) + (m[1] * Y )+ (m[2] ) * Z; *YY =(m[3] * X) + (m[4] * Y )+ (m[5] ) * Z;; *ZZ = (m[6] * X) + (m[7] * Y )+ (m[8] ) * Z;; return 1; }

Learquivo void learquivo(char str[20]) {FILE *arq; float f, fx,fy,fz,fl,fr,fg,fb,fxa,fya,fza,fra,fga,fba; float lpart[lambdacolorsonfile]; char cname[1000]; int i,cnumber,linha,n; for (i=0;i<maxcolorspattern;i++) { vetred[i]=0; vetgreen[i]=0; vetblue[i]=0; vetred2[i]=0; vetgreen2[i]=0;vetblue2[i]=0; } if (! (arq=fopen(str,"rt"))) { printf("\n\n\n\t\t\t FILE NOT FOUND \n\n\n"); getchar(); exit(255); } cnumber=0; linha=0; while (! feof(arq) &(cnumber<24)) { while (fgetc(arq)!='\n') ; //pula a primeira linha fscanf(arq,"%i\t %s ",&cnumber,cname); fr=0.0f;fg=0.0f;fb=0.0f;fxa=0;fya=0;fza=0;fra=0;fga=0;fba=0; for(n=0;n<lambdacolorsonfile;n++) lpart[n]=0.0f; fx=0;fy=0;fz=0;fl=0;n=0; for (i=380;i<=730;i+=10) {fl=0;fscanf(arq,"%f",&fl); lpart[n]=fl;n++;} corCIEXYZfromSurfaceReflectance(380.0f,36,10,lpart,&fxa,&fya,&fza,D65);//(i,&fx,&fy,&fz); corCIEXYZtosRGB_Bruce(fxa,fya,fza,&fr,&fg,&fb); vetred[cnumber-1]=fr;vetgreen[cnumber-1]=fg;vetblue[cnumber-1]=fb; fr=0;fg=0;fb=0; corCIEXYZfromSurfaceReflectance(380.0f,36,10,lpart,&fx,&fy,&fz,A); corCIEXYZIlumminantA_toD65_XYZScaling(fx,fy,fz,&fx,&fy,&fz); //troca de iluminante de A para D65 corCIEXYZtosRGB_Bruce(fx,fy,fz,&fr,&fg,&fb); // muda de sistema sem alterar o iluminante vetred2[cnumber-1]=fr;vetgreen2[cnumber-1]=fg;vetblue2[cnumber-1]=fb; }fclose(arq);}

O output do Programa O padrão superior utiliza o Iluminante D65 O Padrão inferior utiliza o iluminante A e o converte para ser exibido no monitor.