domingo, 27 de novembro de 2011

Caros, eis ai os tópicos para a P2 de CG. Está fácil, heim!

Primeiro as dicas:

1 - Não estudem só pelos slides. Leiam de uma forma geral o artigo em inglês que eu passei sobre Massa-Mola, ele cai com certeza.

2 - Leiam com atenção o que está no livro da Aura Conci. Quem está estudando em grupo, discuta com os colegas. 

3 - Nada de decorar conceitos, mas posso pedir questões que dependam de fórmulas que eu Não darei na prova. 

4 - Não será necessário calculadora.

5 - Podem estudar por provas passadas, mas tentem entender e não decorar as respostas.

6 - Passo básico para tirar 5.0 na prova: estudar conscientemente TODOS os itens abaixo

7 - Além do passo básico (para tirar mais que 5.0): entender mais afundo cada assunto, saber todas as equações e lembrar das discussões em sala. 

CONCLUSÃO: quem só vai decorar os slides, está arriscando tirar no máximo 5.0. É muito arriscado. 


1) Iluminação
1.1 - Tipos de Iluminação
1.2 - Modelos de Iluminação
1.3 - Modelo de Gouraud
1.4 - Modelo de Phong

2) Triangulação
2.1 - Triangulação de Delauney
2.2 - Qualidade das Triangulações
2.3 -  Equação que relaciona triangulos e convex hull
2.4 -  Algoritmos de construção de triangulação
2.5 - Complexidade dos algoritmos
2.6 - Estrutura de dados dos algoritmos de triangulação

3) Reconstrução 3D
3.1 - Objetivo
3.2 - Limitações
3.3 - Algoritmo Marching Cubes

4) Animação de Tecidos
4.1 - Modelos físicos para animação
4.2 - Sistema de animação
4.3 - Limitações físicas que impactuam na animação
4.4 - Algoritmos para animação de tecidos

5) Simulação de Fluidos com SPH
5.1 - Idéia
5.2 - Kernel
5.3 - Limitações 
5.4 - Vantagens
5.5 - Utilidade
5.6 - Implementação Prática


Bons estudos,

[[]]'s
PS

sábado, 1 de outubro de 2011

Prova P1 com Gabarito

Prezados, eis aqui a prova P1 de CG com gabarito. Estou tentando corrigir exatamente agora, se o sono deixar.

Boa sorte.

Prova de CG P1 30/09/2011




sexta-feira, 16 de setembro de 2011

Tópicos para a P1 (Segundo Semestre de 2011)

Caros, como prometido, ai vão os tópicos para a P1


1) Conceitos teóricos sobre malha, modelagem 3D, reconstrução 3D

2) Tranformações Gráficas (Translação, Rotação, Escala); Provas de Teoremas sobre Transformações, Transformadas Homogêneas

3) Sistemas de Referências

4) Curvas e Superfícies: Hermite, Bezier, Splines, Curvas Racionais, Caracteírsticas, utilidades, vantagens, desvantagens, Algoritmo de Casteljau, Descontinuidades, Convexidade, Não-Convexidade, Curvas n-dimensionais, Utilidades de Curvas e Superfícies Racionais, NURBS.

5) Cores, Sistemas de Cores RGB e HSV, aplicabilidades, limitações, vantagens, Histogramas de intensidades, Distribuição de Cores, Cálculo de Índices de entradas;

6) Câmeras, Calibração em um Sistema ideal, Calibração em um Sistema Real, Três maneiras de encontrar o valor da coordenada Z, Matrizes de projeção Perspectiva, aplicabilidade, Ambiguidade Colinear, Estereoscopia, como calcular a coordenada Z.

7) Renderização e Rasterização: fazes do processo de realismo virtual, fazes de uma renderização, aplicabilidade, vantages do realismo por passadas, rasterização de retas, algoritmo de Bresenhan.

abraços,
Paulo Sérgio

sábado, 30 de julho de 2011

Mouse 3D para os Labs de CG da FEI

Prezados,

esta semana terminamos os testes para o Mouse 3D. Encomendei 30 para as aulas de Lab de CG. Isso significa que cada aluno vai ter um. As aulas serão quinta e sexta. Os créditos são do Guilherme, o mestrando da FEI que eu oriento na área de Redes Complexas. Ele fez toda a programação e colocou o mouse pra funcionar. Vocês nem imaginam o trampo que deu.

Àqueles que estiverem interessados em aplicações como essas e não estão fazendo laboratório, falem comigo.

Isso significa um grande "improvement" nas aulas de CG. Terminamos umas aplicações-exemplo que os alunos farão em sala. Por enquanto, só pode ser feito em C#. Mas estamos tentando compilar pra C++.

O Mouse é da Cadritech, e o video de demonstraçào é esse aí:







Serão duas aulas com Mouse 3D, e serão dadas pelo Guilherme.

Tudo isso faz parte do meu esforço para que os alunos da FEI tenham realmente um curso de CG que valha a pena e possam aproveitar nas suas vidas profissionais. A cada semestre o curso fica melhor. No futuro, espero contar com Monitores e óculos 3D, sistemas hapticos, headmounted, e muito mais. Como diz o Plínio, vai ficar "Show de Bola".

Espero que gostem e possam aproveitar não somente para passar na disciplina, mas para projetos de IC, TCC e projetos Institucionais.

um abraço,
Paulo Sérgio

sexta-feira, 22 de julho de 2011

Novo Método para Inferência de Cenas 3D

Analisar cenas de imagens out-door é um dos maiores desafios em Visão Computacional, especialmente cenas de cidades, onde uma grande quantidade de ruído visual geralmente está presente. Entre as aplicações mais requeridas estão a reconstrução virtual de fachadas de prédios, seu volume, detecção de logo marcas, ruas e vias, e geração de informações históricas ou turísticas, além da reconstrução virtual de espaços 3D e até mesmo inferência do espaço interno das construções.  

As dificuldades são várias, mas, entre as mais óbvias estão  o fato das cenas serem em duas dimensões (não possuem informação de profundidade), oclusão parcial ou total dos objetos, além de resolução e remoção de regiões espúrias (aquelas que geralmente não têm interesse, tais como pessoas, carros e pequenos objetos).
Pesquisadores de Ciência da Computação da Universidade de  Carnegie Mellon University acabaram de divulgar um método para inferência da estrutura3D de prédios a partir de cenas 2D. 

O sistema, segundo eu entendi na reportagem ScienceDaily, inicia com uma segmentação em blocos da cena. Em seguida, analisa cada região encontrada e substitui uma ou um conjunto de regiões por blocos 3D, levando em consideração consistências como peso e densidade. O resultado se assemelha a uma imitação em bloquinhos aproximada do lugar. 




Um avanço pra área!  Quando esta técnica estiver aperfeiçoada, será possível inferir até o tamanho do espaço interno das construções, e muitas das aplicações que eu citei acima serão triviais. É esperar pra ver.. 


[[]]'s
Paulo Sérgio

quarta-feira, 20 de julho de 2011

Alzheimer pode ser detectado com até 20 anos de antecedência



Uma das maiores guerras da ciência parece estar perto do fim de mais uma batalha: a guerra contra o Mal de Alzheimer, o triste fim de pessoas que têm afetadas áreas cerebrais importantes relacionadas à memória. Nesta quarta-feira, o site TechnologyReview anunciou uma pesquisa pioneira que envolve Imageamento Médico e Análise Clínica do sangue para desenvolver o diagnóstico precoce quase 10 ou 20 anos antes do paciente apresentar os sintomas mais devastadores da doença. O Dr. Randall Bateman, um neurologista da Washington University School of Medicina e colaboradores observaram mutações genéticas específicas associadas a um aumento da proteína amyloid beta no sangue, bem como um aumento do CSF (cerebral spinal fluid) no cérebro de pacientes jovens cujos parentes mais velhos desenvolveram a doença. A descoberta abre caminho não somente para prevenir a doença em quem ainda vai ser acometido por ela, mas também para aqueles que já começaram a desenvolver os sintomas mais conhecidos. Mais detalhes podem ser encontrados no site:  http://www.technologyreview.com/biomedicine/38089/page1/ 

A área de Imageamento Médico é uma das mais desafiadoras da Ciência da Computação, tendo recebido grande entusiasmo nos últimos anos. Trata-se de criar modelos matemáticos e computacionais para desenvolver algoritmos capazes de realizar análise automática de imagens de ultra-som, ressonância magnética e tomografia computadorizada, principalmente. Na FEI, além de mim, ainda contamos com a ajuda dos professores Carlos Thomaz e Paulo Eduardo Santos, no desenvolvimento de pesquisas nessa área. Todos ligados ao Mestrado em Inteligência Artificial aqui da FEI. Detalhes sobre os nossos trabalhos podem ser encontrados nas páginas da pós-graduação da FEI: Mestrado em IA na FEI


Paulo Sérgio Rodrigues



quarta-feira, 13 de julho de 2011

Realidade Diminuída

Colegas,


Imagine um dia você disse a sua noiva ou noivo que estava em uma festa com os amigos e afirma que pode provar, que as fotos e os vídeos estão no facebook. De repente, você acessa o material e reconhece o lugar e o momento, mas não se encontra de jeito nenhum no conteúdo. Está ferrado! Apagaram você!! 

Devido as maldades que sua sogra ou rival agora podem fazer com você, acho melhor tomar cuidado porque isso já é possível de ser feito hoje em vídeos caseiros .. e com muita agilidade. Trata-se do conceito de “Realidade Diminuída”, ou RD. O melhor aplicativo que eu conheço no mundo é de uma empresa alemã, cujo vídeo pode ser visto abaixo:





Apesar das cenas impressionantes mostradas no vídeo, ainda estou um pouco cético com as limitações do programa. Imagino que eles devam ter mostrado os melhores resultados. Também, não podemos ter certeza se tudo foi feito em tempo real. Mesmo assim, estão de parabéns.
Mais tecnicamente falando, como eu imagino que isso ocorre de uma forma geral: 
1)      inicialmente são aplicados filtros passa-baixa (que removem detalhes da cena) de maneira que a imagem fique parecendo um borrão;
2)      em seguida, o objeto de interesse (aquele que queremos remover), que foi demarcado manualmente,  pode ser removido dentro da área demarcada;
3)      Em seguida, técnicas de reposição de textura reconstroem a área e o lugar, agora sem o objeto que foi apagado;
4)      O processo é repetido para os demais frames.

Todos esse passos podem ser feitos com OpenCV, uma biblioteca freeware da Intel, em C++, para aplicações em Visão Computacional.

No entanto, o que a empresa mostrou foi apenas uma maneira de apagar objetos-alvos das cenas; portanto não se trata de RD, estritamente falando. Isso porque o objeto-alvo foi apenas removido e não reconstruído e modificado. Para ser RD, o objeto-alvo deve ser reconhecido e reconstruído de outra forma. Inicialmente, após a detecção e remoção (passos 1 a 3 acima), o passo 4 deve criar um modelo sintético (com OpenGL, por exemplo) do objeto reconhecido, e reposicionar o modelo sintético sobre o local onde anteriormente se encontrava o objeto-alvo (cena original). O resultado final é a imagem do objeto-alvo se alterando, deformando, aumentado ou diminuindo, como se fosse 3D ou editado previamente. Isso sim é RD, mas eu gostaria mais de chamar Realidade Distorcida.
Uma equipe de Projeto de formatura aqui da FEI, do sétimo ciclo de Ciência da Computação, está iniciando um projeto de RD urbana (RDU) comigo, para manipular em tempo real logo-marcas ou objetos em cenas out-door. Estou animado com o projeto e acho que estou iniciando mais um daqueles TCCs na FEI que vou gostar de orientar. Boa sorte a eles!!!

abraços,
Paulo Sérgio

terça-feira, 12 de julho de 2011

Novo artigo Publicado

Caros, meu último artigo acabou de ser publicado na revista Patterns Analysis and Applications, pela Springer. Trata-se de um artigo sobre segmentação de imagens médicas, mas eu incluo, por questões de comparação, uma análise sobre o K-means, o que o torna interessante para quem quer mexer com clusterização de dados e às vezes não entende o porquê o k-means não funciona muito bem.  O artigo já pode ser visto no link:  http://www.springerlink.com/content/m8608l43171467k0/
Por questões de contrato e direitos autorais da Srpinger, eu não posso disponibilizá-lo para download, por isso estou disponibilizando aqui somente as duas primeiras páginas.  Mas, os amigos que estiverem interessados em utilizar as ideias, sem fins comerciais, me mandem um email que eu passo uma cópia completa.  Será um prazer.

Quem quiser divulgar ou citar, eu e meu colega Gilson, o outro autor do trabalho, ficamos imensamente agradecidos,

[[]]'s
Paulo

terça-feira, 28 de junho de 2011

Resultado da XVIII EXPOCOM

Galera, ai estão os prêmiados da XVIII EXPOCOM:


Melhor Trabalho Acadêmico-Científico, dado à equipe que se destacou como projeto científico, realizando experimentos e provando os resultados.

Título: Journal Multimídia
Equipe: Gabriel Fancischini, Lais Santiago e Daniel Malheiros
Orientador: Paulo Sérgio Rodrigues

***************************************************************

Melhor Trabalho de Intercafe, dado à equipe que construiu a melhor interface com o usuário

Título: IRTracking
Equipe: L. G. Machado, R. L. Cruz e T. Massa
Orientador: Flávio Tonidandel


***************************************************************

Melhor Aplicabilidade no Mercado, dado à equipe que construiu o projeto que melhor pode ser convertido em um produto de mercado

Título: Tradutor Mobile
Equipe: James do Carmo, André Antonelli e David Machado
Orientador: Paulo Sérgio Rodrigues


***************************************************************

Melhor Criatividade, dado à equipe que construiu o projeto com melhor idéia criativa

Título: Tradutor Mobile
Equipe: James do Carmo, André Antonelli e David Machado
Orientador: Paulo Sérgio Rodrigues

***************************************************************

Melhor Trabalho Geral, dado à equipe escolhida como o melhor trabalho

Título: Tradutor Mobile
Equipe: James do Carmo, André Antonelli e David Machado
Orientador: Paulo Sérgio Rodrigues

quinta-feira, 23 de junho de 2011

Questões de CG no PosComp

Caros, eis ai as questões de CG que caíram no PosComp (organizado pela SBC http://www.sbc.org.br/) no ano passado.

Para quem não sabe, o PosComp é uma espécie de Vestibular Nacional para quem quer entrar em um Mestrado (Pós Graduação StrictSensu) em Ciência da Computação. Ocorre uma vez por ano. Mais detalhes podem ser vistos nesse endereço aqui: http://www.sbc.org.br/index.php?option=com_content&view=article&id=384:abertas-as-inscricoes-para-o-poscomp-2010&catid=65:destaques

São três provas, Matemática, Teoria da Computação e Arquitetura de Computadores, que abrangem praticamente tudo que é visto nos melhores cursos de Ciência da Computação do Brasil e do Mundo. Eu já mostrei para algumas turmas da FEI o quanto o conteúdo do PosComp está alinhado com o que é visto na FEI durante os 4 anos que passam no curso.

Eu considero que o curso de Computação Gráfica da FEI está bem alinhado com o que cai no PosComp; como podem ver nas questões de CG ai abaixo que caíram em 2010.



1) No processo de síntese da imagem de uma cena tridimensional, também denominado pipeline gráfico, diversas operações são executadas em sequência. O objetivo destas operações é converter as primitivas geométricas que descrevem os objetos da cena em alto-nível, junto com a especificação da câmera sintética, em uma coleção de pixels na tela. Assinale a alternativa que apresenta a sequência correta dessas operações.

a) Projeção/Recorte/Rasterização/Visibilidade
b) Recorte/Projeção/Visibilidade/Rasterização
c) Projeção/Recorte/Visibilidade/Rasterização
d) Projeção/Rasterização/Recorte/Visibilidade
e) Recorte/Projeção/Rasterização/Visibilidade


2) Considere as afirmativas a seguir.

I. O modelo de iluminação de Phong obtém as cores internas aos polígonos por interpolação das cores nos vértices.
II. A técnica de z-buffer utiliza ordenação de primitivas para determinação dos pixels visíveis.
III. O ponto (2,1,3,2), expresso em coordenadas homogêneas, equivale ao ponto (1.0, 0.5, 1.5) em coordenadas cartesianas tridimensionais.
IV. Uma das principais vantagens da representação de objetos como malhas poligonais triangulares é a garantia de que todas as faces são planares.

Assinale a alternativa correta.
a) Somente as afirmativas I e II são corretas.
b) Somente as afirmativas I e IV são corretas.
c) Somente as afirmativas III e IV são corretas.
d) Somente as afirmativas I, II e III são corretas.
e) Somente as afirmativas II, III e IV são corretas.


3) Considere um objeto em 3D ancorado no seu centro de massa p = (xc, yc, zc). Qual a transformação necessária para rotacioná-lo em n graus, contra relógio, ao redor do eixo x, sem alterar a sua posição no espaço? Assuma que a matriz T realiza translações, a matriz Rx realiza rotações de n graus ao redor do eixo x, contra relógio.

a) T(−p).Rx(n).T (p)
b) T(−p).Rx(n)
c) T(p).Rx(n).T (−p)
d) Rx(n).T (−p)
e) T(p).Rx(n).T (p)


4)  Assinale a alternativa que indica a função de transformação T(r) utilizada para se obter a imagem negativa de uma imagem monocromática, em que os pixels podem assumir valores no intervalo entre 0 e L-1 e em que r representa o valor do pixel na imagem original.


a) T(r) = (L − 1) − r
b) T(r) = −r
c) T(r) = c log(1 + |r|), onde c é uma constante de escala
d) T(r) = 1 − r
e) T(r) = (L − 1)/r


5) A correta tonalização de um poliedro requer que vetores normais à sua superfície sejam definidos em cada ponto de sua malha. Para tonalizar uma esfera definida parametricamente por p(u, v) = [cos(u)sin(v), cos(u)cos(v), sin(u)]T , onde u varia entre [−pi/2, pi/2] e v varia entre [−pi, pi], é preciso descobrir a forma implícita de sua normal n(u, v). Como ela é definida?

a) n(u, v) = cos(u)p(u, v) + cos(v)p(u, v)
b) n(u, v) = cos(u)p(u, v)
c) n(u, v) = −cos(v)p(u, v)
d) n(u, v) = 1/p(u, v)
e) n(u, v) = 2p(u, v)


[[[]]'s

Paulo Sérgio

sexta-feira, 17 de junho de 2011

Tópicos para a prova de P3 CG

1) Conceitos teóricos sobre malha, modelagem 3D, reconstrução 3D

2) Tranformações Gráficas (Translação, Rotação, Escala); Provas de Teoremas sobre Transformações, Transformadas Homogêneas

3) Sistemas de Referências

4) Curvas e Superfícies: Hermite, Bezier, Splines, Curvas Racionais, Caracteírsticas, utilidades, vantagens, desvantagens, Algoritmo de Casteljau, Descontinuidades, Convexidade, Não-Convexidade, Curvas Bi- e unidimensional, NURBS

5) Cores, Sistemas de Cores RGB e HSV, HSI, aplicabilidades, limitações, vantagens, Histogramas de intensidades, Distribuição de Cores, Cálculo de Índices de entradas;

6) Câmeras, Calibração em um Sistema ideal, Calibração em um Sistema Real, Três maneiras de encontrar o valor da coordenada Z, Matrizes de projeção Perspectiva, aplicabilidade, Ambiguidade Colinear, Estereoscopia;

7) Renderização e Rasterização: fazes do processo de realismo virtual, fazes de uma renderização, aplicabilidade, vantages do realismo por passadas, rasterização de retas, algoritmo de Bresenhan, Rasterização de Polígonos, Algoritmo DDA, Remoção de Linhas e Superfícies escondicas (vantagens e desvantagens), Algoritmos de Visibilidade (Pintor, Normal e Z-Buffer)


8) Iluminação: Tipos de Iluminação, Modelos de Iluminação, Modelo de Gouraud, Modelo de Phong

9) Triangulação: Triangulação de Delauney, Qualidade das Triangulações, Equação que relaciona triangulos,  e convex hull;  Algoritmos de construção de triangulação, Complexidade dos algoritmos, Estrutura de dados dos algoritmos de triangulação

10) Reconstrução 3D: Objetivo, Limitações, Algoritmo Marching Cubes

11) Animação de Tecidos:  Modelos físicos para animação, Sistema de animação, Limitações físicas que impactuam na animação; Algoritmos para animação de tecidos

12) Simulação de Fluidos com SPH: Idéia, Kernel, Limitações, Vantagens, Utilidade, Implementação Prática.




Boa Sorte a Todos


[[]]'s
Paulo Sérgio

quinta-feira, 16 de junho de 2011

Prova P2 de CG: Resolução da 6a. Questão. 10/06/11


Questão 6: EXCLUSIVA PARA ALUNOS DE DP

A malha triangular abaixo mostra o momento em que os pontos P1 a P5 acabaram de ser inseridos e as arestas já foram adequadamente “flipadas”. Em seguida, foi adicionado o ponto P6. Ao ser ligado aos pontos P3, P2 e P4, ele divide os ângulos α4, α5 e α6  exatamente em suas metades. Sabendo-se que esses ângulos são: α1, α2, α3, α4, α5, α6, α7, α8, α9 = {90, 30, 60, 60, 30, 90, 40, 60, 80}, de acordo com o princípio de Delauney, faça o desenho de como ficaria a configuração final da malha. Responda também quais os valores de todos os ângulos finais. Considere que o ângulo.


RESPOSTA:

{25, 30, 45, 45, 45, 45, 60, 60, 60, 60, 75, 75, 75, 95, 105}



[[]]'s
Paulo Sérgio

quarta-feira, 15 de junho de 2011

Prova P2 de CG: Resolução da 5a. Questão. 10/06/11


Questão 5: Somente para alunos do curso normal 
A equação física para o modelo massa-mola é mostrada a seguir:







onde  o primeiro termo corresponde à força de aceleração de cada partícula, o segundo termo à força elástica, o terceiro termo à força de atrito com o ar e o quarto termo à força gravitacional.  O algoritmo para a simulação desse modelo, considerando n partículas com massa constante, contém vários passos. No entanto, alguns são imprescindíveis e também devem estar na ordem certa. A seguir são mostrados 13 comandos em pseudocódigo que podem ser utilizados para a implementação dessa simulação. Três desses comandos são desnecessários; os demais são mostrados em uma ordem que não está correta. Enumere na coluna da esquerda os 10 comandos, na ordem correta para que o algoritmo funcione.

RESPOSTA:


Calcular a posição da partícula
 5
Calcular a força de atrito
 2
Para Cada Partícula, faça
 X
Calcular o Número de Partículas
 9
Renderizar a cena
 8
Fim Para
 1
Para cada instante de tempo t, faça
 6
Calcular a Velocidade
 4
Calcular a Força de Elasticidade
 X
Calcular a Massa de Cada Partícula
 10
Fim Para
 3
Calcular a Aceleração
 X
Calcular o Choque entre as Partículas


[[]]]'s
Paulo Sérgio

Prova P2 de CG: Resolução da 4o. Questão. 10/06/11

QUESTÃO 4: Considere uma tringulação com 20 pontos no plano e uma envoltória convexa H com h pontos  e  t  triângulos. Em seguida, alguns pontos foram reagrupados de modo que o número de pontos da nova envoltória H’, em função de h, passou a ser h´= h – 2. Nessa nova situação, qual o número de triângulos t’ em função de t ?

(a) t  =  2n - h - 2
(b) t' =  2n - (h-2) - 2

Fazendo (a) - (b), temos: t' = t + 2


[[]]'s
Paulo Sérgio

Prova P2 de CG: Resolução da 3o. Questão. 10/06/11

Questão 3: Num sistema de animação de fluidos baseado em SPH, o Kernel Gaussiano exerce um papel fundamental. Qual o papel do Kernel ? Cite pelo menos duas limitações que deixam a implementação irreal. 
RESPOSTA: a) O papel do kernel é interpolar informação de partículas;
b.1)  O número de partículas real sempre será limitado;
b.2) O processamento sequencial das partículas impede que seja simulada a interação simultânea entre elas.

[[]]'s
Paulo Sérgio 

Prova P2 de CG: Resolução da 2o. Questão. 10/06/11

1)   O princípio do algoritmo de Marching Cubes é o seguinte: 1) divide o espaço 3D em cubos de arestas iguais; 2) cria índices binários para cada cubo baseado em seus vértices dependendo se eles caem sobre ou fora da informação requerida; 3) acessa uma tabela pré-definida para criar triângulos entre slices consecutivos. Responda: a) como você aumenta ou diminui a resolução da malha resultante? b) Considerando desde a etapa de captura dos slices e processamento de imagem para a entrada do Marching Cubes, explique porque todo esse processo é Reconstrução 3D e não Modelagem 3D?

Resposta: a) aumentando ou diminuindo o tamanho dos cubos;
b) É reconstrução 3D porque parte-se de um sinal de entrada real (amostragem), passando por um processo de tratamento desse sinal e finalmente construindo a malha (reconstrução do sinal)


[[]]'s
Paulo Sérgio

Prova P2 de CG: Resolução da 1o. Questão. 10/06/11

Questão 1:  Considere o seguinte modelo de Iluminação: onde I é a intensidade de luz resultante, Ia é a intensidade de luz ambiente, ra é o coeficiente de reflexão da luz ambiente, Id é a intensidade de luz difusa, rd o coeficiente de reflexão de luz difusa, e é o ângulo de incidência.  Considere também a malha triangular que, após sofrer uma transformação em perspectiva, é projetada no monitor da seguinte maneira:



Observe que essa malha possui 6 pontos indicados de 1 a 6 (são as bolinhas brancas). Desses 6 pontos, sabemos as intensidades de luz nos pontos 1, 2 e 3, foram calculadas segundo o Modelo de iluminação dado. Temos também as seguintes informações: a intensidade de luz ambiente é L e a intensidade de luz difusa é 2L; o coeficiente de reflexão da luz ambiente vale 1/3 do coeficiente de reflexão da luz difusa; no ponto 1 a luz difusa é refletida com um ângulo Teta, cujo cosseno vale 1/3; no ponto 2, esse valor vale 1/2, e no ponto 3, esse valor vale 1.0. Sabemos que o ponto 4 está no ponto médio entre os pontos 1 e 2, e a distância do ponto 5 ao ponto 1 é 1/3 da distância entre o ponto 5 e o ponto 3. Com essas informações, qual o valor da intensidade de luz no ponto 6, que está na metade da distância entre os pontos 4 e 5, em função de L e ra, considerando que o algoritmo usado é o de Gouraud e a linha tracejada é a scanline.

RESPOSTA:

Reflexão no Ponto 1:  I1 = L ra + 2 L 3 ra  (1/3) = 3 L ra

Reflexão no Ponto 2:  I2 = L ra + 2 L 3 ra  (1/2) = 4 L ra

Reflexão no Ponto 3:  I3 = L ra + 2 L 3 ra  (1.0) = 7 L ra

Reflexão no Ponto 4:  I4 = (I1 + I2)/2 = (3 L ra + 4 L ra)/2 = (7/2) L ra

Reflexão no Ponto 5:  I5 =(1/4)I3 + (3/4)I1=(7/4) Lra+(9/4) Lra = 4 Lra

Reflexão no Ponto 6:  I6 = (I4 + I5)/2 = (15/4) L ra


[[]]'s
Paulo Sérgio

quinta-feira, 9 de junho de 2011

Tópicos para a prova de P2 CG

Caros, esses são os tópicos pra P2 de CG. Está fácil, heim!

Quem está de DP não precisa estudar o tópico 4 que não viram.

A prova terá 6 questões. Quem está na turma Normal (não DP) deve responder as questões de 1 a 5, cada uma valerá 2 pontos. Quem está de DP, deve responder as questões de 1 a 6, com exceção da 5.

Elas não aparecerão na prova na ordem que os assuntos estão apresentados abaixo.

1 - Não estudem só pelos slides. Leiam de uma forma geral o artigo em inglês que eu passei sobre Massa-Mola, ele cai com certeza.

2 - Leiam com atenção o que está no livro da Aura Conci. Quem está estudando em grupo, discuta com os colegas.

3 - Nada de decorar conceitos, mas posso pedir questões que dependam de fórmulas que eu Não darei na prova.

4 - Não haverá cálculos numéricos. As questões que virão pra calcular, agora serão literais.

5 - Podem estudar por provas passadas, mas tentem entender e não decorar as respostas.

6 - Passo básico para tirar 5.0 na prova: estudar conscientemente TODOS os itens abaixo

7 - Além do passo básico (para tirar mais que 5.0): entender mais afundo cada assunto, saber todas as equações e lembrar das discussões em sala.

CONCLUSÃO: quem só vai decorar os slides, está arriscando tirar no máximo 5.0. É muito arriscado.


1) Iluminação
1.1 - Tipos de Iluminação
1.2 - Modelos de Iluminação
1.3 - Modelo de Gouraud
1.4 - Modelo de Phong

2) Triangulação
2.1 - Triangulação de Delauney
2.2 - Qualidade das Triangulações
2.3 -  Equação que relaciona triangulos e convex hull
2.4 -  Algoritmos de construção de triangulação
2.5 - Complexidade dos algoritmos
2.6 - Estrutura de dados dos algoritmos de triangulação

3) Reconstrução 3D
3.1 - Objetivo
3.2 - Limitações
3.3 - Algoritmo Marching Cubes

4) Animação de Tecidos
4.1 - Modelos físicos para animação
4.2 - Sistema de animação
4.3 - Limitações físicas que impactuam na animação
4.4 - Algoritmos para animação de tecidos

5) Simulação de Fluidos com SPH
5.1 - Idéia
5.2 - Kernel
5.3 - Limitações
5.4 - Vantagens
5.5 - Utilidade
5.6 - Implementação Prática


Bons estudos,

[[]]'s
PS

domingo, 5 de junho de 2011

Palestra sobre o Phantom no SVR 2011

Prezados,

ai está a palestra que eu fiz no SVR 2011 no último dia  26/06/11 em Uberlândia. O Vídeo foi gravado pelo Leo, um dos integrandes to grupo e postado no Blog dele a partir do youtube. http://leonardobatistamoreira.blogspot.com/




[[]]`s
Paulo Sérgio

Modelo Massa-Mola

Caros, eis aqui um material, que está também no site da disciplina, sobre o Modelo Massa-Mola.

O que eu apresentei em sala cai na prova, mas o material é uma boa fonte de estudos. É em português e quem fez foi um amigo meu.

No entanto, devem saber estudar. É bem possível que muitas das informações físicas e matemáticas contidas nesse material vocês não entendam. O desenvolvimento e o porquê dessas equeções não caem na prova de sexta. Não é prova de Física!!! Mas tentem olhar do ponto de vista de Cientistas da Computação e retirar a essência do assunto. Pensem em como implementá-lo. Como dar sentido realístico às Equações. Isso sim cai.

Acredito que passarão diversas vezes por situações como essa na vida profissional.

Um abraço e lembrando que estarei tirando dúvidas para a prova somente até quinta-feira, dia 09/06/11.

Download de Material sobre o Massa-Mola


Bons estudos,

[[]]'s
Paulo Sérgio

segunda-feira, 30 de maio de 2011

Mais um Artigo de Revista Científica Internacional

Prezados, como eu havia antecipado, saiu mais um artigo meu e de colaboradores em uma revista internacional. Dessa vez foi na "Computer Methods in Biomechanics and Biomedical Engineering". Trata-se de um artigo que analisa imagens de ressonância magnética para medidas ortodônticas.

Mais uma vez tenho que destacar o papel que a FEI realiza nos dando todo o suporte para que possamos nos dedicar à pesquisa e também nos proporcionando um ambiente acadêmico comparável aos melhores do mundo.

Dessa vez, eu assinei um termo que não poderia deixar o artigo pra download. Assim, deixei as duas primeiras páginas. Quem quiser dar uma olhada, faça o download aqui: Download das 2 primeiras páginas

Para aqueles que gostarem do assunto, posso enviar uma cópia individual por email.

abraços a todos,

Paulo Sérgio

domingo, 29 de maio de 2011

Artigo na Área Médica Publicado

Caros, tive a grata satisfação esses dias de saber que um artigo meu e de colaboradores acabou de ser publicado na revista  "Journal of Medical Imaging and Health Informatics", uma respeitada revista internacional na área médica.

O artigo, cujo título é "CARES 2.0: Completely Automated Robust Edge Snapper for CIMT Measurement in 300 Ultrasound Images - A Two Stage Paradigm" é fruto de meu trabalho com colaboradores em Universidades Italianas, onde estudei parte de meu doutorado, e nos EUA, onde tenho fortes parcerias na Universidade de Idaho.

O artigo trata de um estudo sobre medidas da camada de gordura da carótida, aquela artéria grande que fica no pescoço e que pode levar a sérias complicações cardíacas.

Embora o maior mérito seja do Molinari e depois dos demais autores, a FEI  tem grande participação no sucesso alcançado devido às condições de trabalho que nos proporciona: seja nos liberando para dedicação à pesquisa, seja nos proporcionando contato com pessoas de bom nível de todo o mundo. Tenho orgulho de dar aulas nessa instituição, tenho orgulho de ser FEIano.

O link da revista é esse aqui: Link da Revista

Mas, para os amigos aqui vai um link do artigo: Download PDF

Tive também a notícia de mais 2 artigos internacionais aceitos. Mais tarde eu posto.


abraço a todos,
Paulo Sérgio

sábado, 28 de maio de 2011

Programa da Prova de Laboratório

Prezados, aqui vai o código que eu fiz para a prova de laboratório. Para quem não conseguiu fazer e gostaria de saber como:



//*****************************************************
//
// Animação com Primitivas 3D
// Programa OpenGL de Animação de Primitivas 3D feito para
// a prova de laboratório da Turma CC6111 de Computação Gráfica
// do Centro Universitário da FEI, aplicada em 27/05/11
// Autores: Prof. Dr. Paulo Sérgio Rodrigues e Mestrando Guilherme Alberto Wachs-Lopes
//
// Objetivo: Animar uma primitiva gráfica 3D utilizando Visão Perspectiva e Modelos de Iluminação
//

#include <GL/glut.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

// variáveis Globais
double zoom; // controla o Zoom
double posx,posy,posz; // controla asa translações
double vx,vy,vz;  // controla as posições
double rx,ry,rz; // controla as rotações


// Função responsável pela especificação dos parâmetros de iluminação
void DefineIluminacao (void)
{
 // Capacidade de brilho do material
 GLfloat especularidade[4]={0.7,0.7,0.7,1.0};
    GLfloat MatDifuse[4]={1.0,0,0,1.0}; 
 GLint especMaterial = 125;
           
    GLfloat luzAmbiente[4]={0.2,0.2,0.2,1.0};
 GLfloat luzDifusa[4]={0.7,0.7,0.7,1.0};    // "cor"
 GLfloat luzEspecular[4]={0.5, 0.5, 0.5, 1.0};// "brilho"
 GLfloat posicaoLuz[4]={0, 0, 20, 1};
 // Define a refletância do material
 glMaterialfv(GL_FRONT,GL_SPECULAR, especularidade);
 // Define a concentração do brilho
 glMateriali(GL_FRONT,GL_SHININESS,especMaterial);

    glMaterialfv(GL_FRONT,GL_DIFFUSE,MatDifuse);
 // Ativa o uso da luz ambiente
 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, luzAmbiente);
 // Define os parâmetros da luz de número 0
 glLightfv(GL_LIGHT0, GL_AMBIENT, luzAmbiente);
 glLightfv(GL_LIGHT0, GL_DIFFUSE, luzDifusa );
 glLightfv(GL_LIGHT0, GL_SPECULAR, luzEspecular );
 glLightfv(GL_LIGHT0, GL_POSITION, posicaoLuz );  
 //Habilita o uso de iluminação
 glEnable(GL_LIGHTING); 
 // Habilita a luz de número 0
 glEnable(GL_LIGHT0);
 // Habilita o depth-buffering
 //glEnable(GL_DEPTH_TEST);
 
}


// Função callback chamada quando o tamanho da janela é alterado
void AlteraTamanhoJanela(GLsizei w, GLsizei h)
{
    GLsizei largura, altura;
   
   // Evita a divisao por zero
    if(h == 0)  h = 1;
   
    // Atualiza as variáveis
    largura = w;
    altura = h;
   
   // Especifica as dimensões da Viewport
    glViewport(0, 0, largura, altura);
   
    // Inicializa o sistema de coordenadas
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
   
    glOrtho(-100.0,100.0,-100.0,100.0,-100.0,100);
    glMatrixMode(GL_MODELVIEW);
   
   glLoadIdentity();
}


// Função callback chamada para gerenciar eventos de teclas
void Teclado (unsigned char key, int x, int y)
{
 if (key == 27)
  exit(0);
}


// Função responsável por inicializar parâmetros e variáveis
void Inicializa (void)
{  
    // inicializa variáveis   
    zoom = 120.0;
    posx = 20.0;
    posy = 0.0;
    posz = 0.0;
    vx = 1.0;
    vy = 0.5;
    vz = 0;
    rx = 0.0;
    ry = 0.0;
    rz = 0;   
   
   // Define a cor de fundo da janela de visualização como branca
   glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
   glEnable(GL_CULL_FACE);
   // Habilita o modelo de colorização de Gouraud
   glShadeModel(GL_SMOOTH);   
    DefineIluminacao();
}

void animacao(int){
    
    double velCor=0.1;
  
    // verifica se objeto nao ultrapassou janela
    if (posx > 100 || posx < -100){
     vx=-vx;
    }
   
    // verifica se objeto nao ultrapassou janela   
    if (posy > 100 || posy < -100){
     vy=-vy;
    }
   
    // atualiza translacao
    posx+=vx;   
    posy+=vy;
   
    // artualiza a rotação
    rx += 1;
    ry += 2;
           
    glutPostRedisplay();    
    glutTimerFunc(1,animacao,1);
         
}


void desenha(){
   
     // limpa as matrizes de desenho    
     glLoadIdentity();
     glClear(GL_COLOR_BUFFER_BIT);

     // realiza as transformacoes
     glTranslatef(posx,posy,posz);
     glRotatef(rx,1,0,0);
     glRotatef(ry,0,1,0);    

     // desenha uma esfera
     glTranslatef(-5,-5,0);
     glutSolidSphere(10,30,30);
    
     // desenha um cubo
     glTranslatef(10,10,0);
     glutSolidCube(10);
    
     // desenha a outra esfera
     glTranslatef(10,10,0);
     glutSolidSphere(10,30,30);
    
     glutSwapBuffers();    
}


// Programa Principal
int main(void)
{  
   
    // Define do modo de operação da GLUT
 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

 // Especifica a posição inicial da janela GLUT
 glutInitWindowPosition(5,5);

 // Especifica o tamanho inicial em pixels da janela GLUT
 glutInitWindowSize(600,600);

 // Cria a janela passando como argumento o título da mesma
 glutCreateWindow("Prova de Laboratório");

 // Registra a função callback de redesenho da janela de visualização
 glutDisplayFunc(desenha);

 // Registra a função callback de redimensionamento da janela de visualização
 glutReshapeFunc(AlteraTamanhoJanela);

 // Registra a função callback para tratamento das teclas ASCII
 glutKeyboardFunc (Teclado);
   
glutTimerFunc(10,animacao,1);
   
 // Chama a função responsável por fazer as inicializações
 Inicializa();

 // Inicia o processamento e aguarda interações do usuário
 glutMainLoop();

 return 0;
}

quinta-feira, 19 de maio de 2011

Simulação 3D de Tecido com o Massa-Mola

Prezados,

fiz um vídeo da simulação 3D com o massa-mola, que eu abordei na última aula. Será esse o último exercício do semestre. Fiquei muito orgulhoso. O Guilherme me ajudou a preparar.

Não conheço nenhum curso de Ciência da Computação que aborda esse tipo de coisa. É bem moderno, mas não deixa de ser simples: Fazer animação com equações físicas. Isso serve para várias aplicações como Industria Cinematográfica, Marketing, TV; e também para estudo do comportamento de tecidos em diversos ambientes.

Espero que gostem, passem a estudar melhor o assunto e ajudem vocês na carreira profissional. Tanto no trabalho em si, quanto para arrumar um posto de trabalho. Melhor ainda se vierem fazer mestrado aqui comigo na área de Modelagem 3D; ou mesmo um TCC.




[[]]'s
Paulo Sérgio

segunda-feira, 9 de maio de 2011

Exercício 2 sobre Phong

Considerando o exercício postado por último (logo abaixo neste blog), se o modelo de iluminação é I = Ia * cos(t), onde Ia é a intensidade de iluminação ambiente, e "t" é o ângulo de reflexão dada pela direção do vetor normal à malha, e supondo que todos os pontos do polígono foram pintados com a cor RGB = (200,10,10), qual o valor da cor observada em cada ponto encontrado no último exercício 1 para que tenhamos a sensação de sombreamento segundo o algoritmo de Phong?

Exercício sobreo Algoritmo de Phong

Suponto a malha poligonal 2D formada pelos seguintes conjuntos de pontos: P = {(2,2),(4,3),(5,3),(4,6),(2,5)}, onde em cada um desses 5 pontos sabemos a direção em graus dos vetores normais, que são as seguintes (considere o sentido anti-horário e o eixo horizontal como sendo zero grau); D = {225,270,0,45,135}. Qual o valor das direções desses vetores nos pontos médios entre cada par de pontos percorrendo o polígono no sentido anti-horário?

Exercício sobre o Algoritmo de Gouraud

Seja um polígono num sistema de coordenadas 2D com os seguintes pontos: P = {(2,2),(3,5),(5,3),(6,4)}, supondo refletirem as seguintes intensidades luminosas: L = {50,30,10,20}, respectivamente. Qual o valor da intensidade luminosa que é observada no seu centro geométrico, segundo o modelo de Guraud?

domingo, 17 de abril de 2011

Phantom foi ACEITO no SVR


Galera, essa postagem é para prestar uma homenagem ao pessoal do Phantom Omini: Murilão (Chu), Léo, André e Adriaan (ahhh, agora acertei seu nome, né?)

Eles tiveram o artigo do TCC deles aceito no SVR  http://www.rv.eletrica.ufu.br/svr2011/pc/

Trata-se do principal simposium de Realidade Virtual do Brasil. É um IMPROVEMENT enorme no currículo. Isso mostra que a FEI não é somente sala de aula, P1, P2 e um DIPLOMA no final. Ela pode dar a vocês também uma carreira internacional, inserção nos melhores grupos do Brasil e do mundo e muito, muito conhecimento. Tem que saber buscar a aproveitar isso.

Eu, como orientador e amigo dessa galera, realmente não poderia deixar de estar orgulhoso e muito agradecido pelo meu primeiro artigo em 2011. Foi suado, mas está valendo muito a pena.

Abaixo vocês já viram neste blog o que é realmente o TCC deles, que agora está saindo pro mundo .. Parabéns!!


Paulo Sérgio

segunda-feira, 11 de abril de 2011

TCC: Visão Computacional + Computação Gráfica

Casos,

aqui está um bom exemplo da mistura de Visão Computacional com Computação Gráfica. Trata-se de um TCC que eu orientei em 2008 dos alunos Fábio Martins e Luiz Lemos.

O Título era: "Expansão Visual 3D", ou algo assim. O Objetivo é fazer um "tracking de face" rápido e robusto suficiente para controlar a visualização de um modelo gráfico na tela. O Sistema de tracking (Visão) foi feito com OpenCV, e o sistema gráfico (Visualização)  foi feito em OpenGL, como podem imaginar.

O Trabalho ganhou três prêmios na XIII EXPOCOM: Melhor Interface, Melhor Criatividade e Melhor Trabalho Geral.

O Vídeo, editado por mim mesmo, está ai pra darem uma olhada. Não estou nesse momento com o pdf do TCC para deixar pra download, mas amanhã eu posto pra vocês.








Boa noite e Grande Abraço
Paulo Sérgio

quarta-feira, 6 de abril de 2011

TCC Virtual Snooker

Prezados, esse TCC ai no vídeo fez história. Hoje é a formatura dos caras e eu quero prestar uma homenagem postando aqui o TCC deles como exemplo de excelente trabalho.

Há de se ressaltar que foi a equipe que eu mais vi brigar durante o TCC. Na verdade era tudo fingimento machista pra não admitirem que se amam :-)
Mas o importante é que o trabalho do Emerson, Felipe, Lucas Rizzi e Igor  ficou muito bem implementado. Ganhou um prêmio na EXPOCOM e foi escolhido para ser apresentado como exemplo de Projeto da FEI no  "FEI Portas Abertas", que acontecerá no próximo dia 21/05/11.
Trata-se de uma simulação de Sinuca virtual. Como podem observar no vídeo, tudo é virtual: a mesa, as bolas, as interações físicas entre as bolas. Só não o taco. Abaixo, antes de eu mostrar o vídeo, apresento uma imagem da estrutura que eles montaram. 




O sistema precisa de uma altura mínima de 3.5 metros para posicionar a câmera e um projetor verticalmente apontando pra mesa (veja Figura acima). Usa dois computadores em paralelo (Figura) para simular o jogo: um processa o sistema de visão computacional, feito com OpenCV, e o outro computador processa o realismo do jogo que foi feito com OpenGL.  O taco, como podem observar no vídeo abaixo, é apenas um pedaço de madeira com uma cortiça enrolada na ponta pra servir de marcador. Para quem quiser saber mais detalhes técnicos pra ter inspiração pro TCC,  clique aqui pra obter o PDF.

Um dos pontos fortes desse trabalho -- observem com atenção -- é a simulação física realizada entre as bolas. Eu, como orientador chato que sou, não esperava que fosse ficar tão realístico. Fiquei mesmo orgulhoso!

Parabéns a essa  moçada e espero cumprimentá-los hoje a noite na Cerimônia de Entrega dos Diplomas. Sucesso na futura carreira que começa mesmo HOJE a noite. Sou orgulhoso de ter tido a honra de participar dessa formação; muito dinheiro no bolso, saúde e mulheres bonitas!! E vamos encher a cara no Baile de Sábado!! Alguém quer trazer meu carro? :-)

E também obrigado à turma por me Homenagear ..



[[]]’s
Paulo Sérgio