Projetos

Granulometria de cereais

Escolha um tipo de cereal normalmente usados na culinária nordestina, como arroz ou feijão. Escolha uma espécie específica de cereal (por exemplo, se você resolveu trabalhar com feijão, analise somente feijão preto). Procure amostras de cereal de diferentes distribuidores (ex: biju, kicaldo, turquesa, etc). Para cada amostra que você coletou prepare uma imagem como aquela mostrada na Figura 1, “Amostra de grãos de feijão”.

Figura 1. Amostra de grãos de feijão

Amostra de grãos de feijão

De posse de uma imagem, um conjunto de operações deverá ser realizado visando identificar os grãos na imagem, separar cada um deles e inspecionar as características da amostra.

As seguintes características, bem como seus aspectos estatísticos, devem ser avaliadas em cada amostra:

  • Tamanho

  • Forma

  • Coloração

Para isto, uma série de tarefas deverão ser realizadas:

  • Aquisição das imagens das amostras: prepare uma superfície plana e de cor homogênea para colocar os grãos. Nesta etapa de aquisição, procure escolher uma superfície cuja cor seja contrastante com a cor dos grãos. Assim, você facilitará a segmentação da imagem, para separar os pixels pertencentes aos grãos dos pixels pertencentes à superfície. Preste atenção também ao ajuste adequado da iluminação da cena visando diminuir as sombras, pois geralmente confundem os algoritmos de limiarização.

  • Limiarização: escolha um método automático para separar os pixels da imagem em duas classes (grãos e fundo).

  • Separação dos grãos: após a etapa de limiarização, é possível que alguns grãos aparecam tocando seus vizinhos. Eles devem ser separados uns dos outros de modo que os grupos de pixels distintos possam ter suas características de tamanho, forma e cor avaliadas separadamente. Uma solução interessante pode ser encontrada no site mmorph.com.

  • Descrição de forma: para cada grão identificado, proponha um método para descrever sua forma (ex: descritores de fourier, polígonos, etc). O descritor escolhido deve possibilitar comparações e cálculo de grandezas estatísticas.

  • Classificação dos grãos: calculados os descritores de forma para os grãos, avalie a qualidade de cada amostra conforme as medidas de forma e cor solicitadas. Em se tratando da análise de cor, verifique a cor média dos pixels presentes em cada grão. Calcule a média da amostra e apresentes aqueles grãos cuja média de pixels desviou-se muito da média da amostra.

Filtragem de conteúdo impróprio title crianças

Pesquise na Internet metodologias de detecção de conteúdos pornográficos em imagens. Você pode começar por aqui. Implemente algum dos métodos que você encontrou utilizando OpenCV. Teste sua ferramenta com imagens coletadas em bancos de dados públicos de imagens. Verifique a possibilidade de integrar sua ferramenta com o squid.

Biometria

Proponha um mecanismo de identificação biométrica para seu computador pessoal. Ao invés de usar login/senha, implemente uma ferramenta capaz de permitir seu login pela identificação de alguma característica física do usuário (face, mão, sovaco, etc.). Para tornar seu trabalho mais interessante, realize a integração com algum ambiente de gerenciamento de janelas, como KDE ou Gnome.

Harpa laser virtual

Em 1981, Jean Michel Jarre fez um show notável na China, onde introduziu um instrumento musical muito interessante, chamado de harpa laser. Trata-se de um emissor laser que cuja luz emitida é dividida em diversos feixes. Quando um desses feixes é interceptado pela mão do músico, uma nota musical é tocada. Está presente na maioria dos shows do músico, com destaque para a música Rendez-Vous II. Alguns exemplos de vídeos onde a Harpa Laser aparece podem ser encontrados no Youtube. Uma implementação interessante pode ser encontrada aqui.

O objetivo deste projeto é construir uma harpa laser virtual, com aparência semelhante à daquela usada por Jean Michel Jarre. Uma possível solução é mapear algumas regiões da imagem capturada e associá-las a uma nota musical específica, como sugere a Figura 2, “Harpa laser virtual”. Para facilitar a detecção do movimento dentro de cada região, pode-se assumir também que a harpa será tocada com luvas coloridas, destacando a cor da mão do usuário.

Figura 2. Harpa laser virtual

Harpa laser virtual

Piano virtual

A idéia do piano virtual é parecida com a da harpa laser, só que agora as teclas ficarão desenhadas em cartolina e colocadas sobre uma superfície. Quando o usuário posicionar o dedo em uma tecla específica, o piano tocará a nota correspondente. Uma possível solução para verificar se a tecla foi pressionada é testar ser o dedo do usuário encontra-se sobre a sombra correspondente.

Efeitos visuais com sabres de luz

Sem comentários! Crie seu próprio sabre de luz com o cabo de uma vassoura velha e papel colorido. Usando OpenCV, prepare um aplicativo para detectar a reta que define a região colorida da lâmina do sabre. Procure na Internet como pode ser criado o efeito visual para desenhar o sabre de luz em um dado segmento de reta. Tente este! Parece ser muito bom (foi feito com o gimp). A Figura 3, “Nokia lightsaber” mostra o efeito que consegui com meu fone nokia :). Se você programar em OpenGL, pode tentar realizar este efeito com o buffer de acumulação.

Figura 3. Nokia lightsaber

Nokia lightsaber

O movimento do sabre de luz pode ser associado também a efeitos de áudio. Procure também alguns amostras de som específicas e incremente seu aplicativo!. Será que você consegue deixar seu projeto com esta qualidade?!

Tocador de mídia com controle gestual

Prepare uma interface onde o usuário possa selecionar uma música dentre um conjunto de músicas presentes em uma biblioteca. O controle gestual pode ser feito pela análise, por exemplo, do movimento ou posicionamento das mãos ou dedos. Você pode ter uma idéia do projeto através deste vídeo no youtube (talvez voce precise do google chrome para visualizar). Outra implementação também bastante interessante pode ser encontrada neste video. O programador detecta a mudança na posição do dedo para identificar a seleção de um ponto na tela.

Reconstrução 3D de faces

Pesquise algoritmos de reconstrução tridimensional de superfícies. Um bom começo é o power crust. Uma das classes de algoritmos de reconstrução 3D opera com conjuntos de pontos no espaço tridimensional, ou seja, listas de coordenadas do tipo (x, y, z). Com base nestes pontos, os algoritmos de reconstrução criam uma malha triangular capaz de representar a superfície amostrada. Os algoritmos de processamento de imagens operam na obtenção dessas coordenadas espaciais, geralmente através de algoritmos de correspondência estéreo.

O objetivo deste projeto é gerar um conjunto de pontos para ser tratado pelo algoritmo de reconstrução 3D. Serão necessárias duas câmeras para realizá-lo. As duas câmeras precisam ser calibradas (ou seja, suas posições e orientações deverão identificadas no espaço tridimensional, de modo a possibilitar a recuperação da coordenada de profundidade com base em pares de imagens capturadas). A calibração pode ser feita usando uma imagem padrão (por exemplo, um tabuleiro de xadrez). O livro do OpenCV (learning OpenCV), bem como sua documentação on-line mostra como fazer a calibração estéreo.

Uma vez que as câmeras estejam calibradas, capture uma cena qualquer e realize a recuperação das coordenadas espaciais dos pontos da cena. Você pode visualizar os pontos usando o geomview. É um excelente programa para visualização científica. Aliás, ele também servirá para visualizar as malhas de triângulos que serão geradas pelo algoritmo de reconstrução. Dá um trabalho considerável para instalar o geomview no Windows. Caso não se sinta a vontade com isso, pode tentar o blender. Também é opensource e funciona no Windows :)!

Teste agora sua implementação em uma face humana!

Projeto babau!

Nada se cria, tudo se copia! O objetivo do Projeto babau é introduzir controle gestual para o Extreme Tux Racer (veja Figura 4, “Extreme Tux Racer”). É um jogo bastante simples, que desenvolvido em OpenGL e SDL.

Figura 4. Extreme Tux Racer

Extreme Tux Racer

O objetivo é fazer que o Tux (Tux é o mascote oficial do Linux!) desca uma montanha com neve. O jogador pode fazê-lo ir para a esquerda ou direita, acelerar ou frear e pular. Esquematize um processo de calibração da câmera para o controle gestual que permita realizar estas operações simples através de posições ou movimentos realizados pelo jogador. Adicione ao código do Extreme Tux Racer sua implementação do controle gestual. Este pessoal, por exemplo, arranjou uma boa maneira de se divertir ($$$). No Linux, acredito que o controle podes ser feito com a redireção de entrada de teclado (não tentei!) ou com o desenvolvimento de um módulo para o kernel (mais interessante, pois o SO poderá entender o controle gestual como um dispositivo do tipo joydev). Esta última opção de criar um joystick virtual baseado em webcam é mais genérica e bem mais interessante. O usuário poderia configurar sua webcam para simular o movimento dos controles do joystick e enviar os comandos correspondentes para /dev/joydev! Dê uma olhada neste vídeo. O sujeito criou um manche de papelão para controlar um simulador de vôo. Bem interessante! Nada se cria ... :)

Busca de imagens via web 1

Prepare um pequeno aplicativo via web capaz de receber uma imagem e retornar as mais semelhantes dentre as presentes em um banco de dados. Seu aplicativo deverá realizar a comparação entre as imagens com base em descritores delas extraídos. A comparação com base em descritores, além de acelerar o processo de busca no banco de dados, facilita a organização das imagens conforme os objetos nela presentes e as relação de vizinhança entre os mesmos.

Busca de imagens via web 2

Prepare um pequeno aplicativo onde o usuário seja capaz de criar um desenho na tela do navegador e, quando solicitado, este aplicativo deverá retornar as mais semelhantes dentre as presentes em um banco de dados armazenado no servidor web.

Browsing de imagens via web

Prepare um esquema de classificação de imagens com base no conteúdo presente nas mesmas. A classificação deve ser feita usando descritores de imagens. Uma vez processadas as imagens presentes no banco, elas deverão ser organizadas usando um esquema parecido com o Google Image Swirl. Um esquema de representação interessante para as imagens no browser pode ser o mesmo usado pelo Mindmap, proposto pelo pacote tikz.

Filmagem 3D

Neste aplicativo, o usuário precisará de duas câmeras para desenvolver um sistema de exibição de imagens 3D usando estereo Red/Blue. O projeto consiste em bolar um anteparo onde as duas câmeras serão fixadas, o processo de calibração estéreo e a geração das imagens 3D para exibição no computador. Uma boa fonte de consulta ensinando como gerar estes pares encontra-se disponível na Nasa. O processo de filmagem deverá ser feito em tempo real: a cada instante, as duas imagens (uma de cada câmera) deverão ser capturadas, a imagem 3D deve ser gerada e, em seguida, exibida no monitor para visualização com os óculos Red/Blue. A propósito, a confecção dos óculos é barata, podendo ser feita com cartolina e papel celofane.

Aplicações de processamento de imagens em segurança da informação

Em desenvolvimento

Processamento de alto desempenho usando GPUs

Em desenvolvimento