sábado, 29 de março de 2008

RSS

Como última novidade, estou colocando o RSS do PPGETI (Programa de Pós-Graduação em Engenharia de Teleinformática da UFC).

Vou aproveitar o post para dar um over-view sobre RSS (lembrando que este é um texto "informal"):

RSS (em que enquadramos feed's) são as atualizações de um site, como no caso de blogs, cada nova postagem é uma atualização.
Cada atualização no RSS é como um tópico, contendo título (e informações como data e autor) e o texto propriamente dito.
Existem recursos em leitores de e-mail, softwares especializados (Akegrator, por exemplo) e sistemas web (como os disponíveis em blog's, tipo este).
O acesso a um RSS, para inserí-lo em um leitor de RSS, consiste no acréscimo da página em que encontra-se o RSS desejado.

sexta-feira, 28 de março de 2008

Manda mais!

Hoje vi um recado no orkut que achei interessante.

O recado falava de um serviço de armazenamento de dados gratuito, em que os arquivos não são deletados nunca e cada arquivo pode ter até 1GB.

Confiram: http://www.mandamais.com.br/

Eu estou com o RSS dele no fim da página.

terça-feira, 25 de março de 2008

FISL 9.0: Estaremos lá

Assim como no ano passado, este ano terei a oportunidade de ir ao FISL em Porto Alegre - RS.
Este ano irei tentar desenvolver umas aplicações para apresentar (informalmente) no evento.
As aplicações funcionais:
  • Localizador de placas de veículos;
  • Previsor de séries temporais;
  • Canhão capaz de acertar o alvo automaticamente;
  • Foguete capaz de chegar ao destino automaticamente;
  • Interpolador neural de funções.
Até o evento, pretendo desenvolver aplicações envolvendo a webcam:
  • Jogo de pedra-papel-tesoura;
  • Jogo de par-ou-ímpar.
Caso alguém tenha interesse em conhecer as aplicações, sintam-se a vontade para entrar em contato.

Vídeos sobre engenharia

{Momento irônico}
Segue o vídeo de uma das maiores invenções da engenharia.




Agora descubramos como identificar o "jeito" antes do hospedeiro ser totalmente dominado.

sábado, 22 de março de 2008

Testando vídeo do Youtube

Hoje encontrei umas formas de postar vídeos do YouTube. Vamos aos testes:

Colocar youtube entre colchetes, código do vídeo (letras e símbolos após "v=") e /youtube entre colchetes.
[ youtube ]EYKuBmaJoZM[ /youtube ]

Copiar e colar o conteúdo da caixa de texto embed no vídeo do youtube desejado.


Colocar YouTube:código do vídeo entre colchetes
[YouTube:EYKuBmaJoZM]

sexta-feira, 21 de março de 2008

Função Delta de Dirac

Tomando um sistema (analógico) qualquer conforme a figura abaixo.

Supondo que a entrada x(t) seja um impulso (Função Delta de Dirac) delta(t).
A função impulso é definida nula para t diferente de 0 e de valor infinito para t em 0. De modo que a área sob a curva seja unitária.

Fazendo a Transformada de Fourier da entrada:
observa-se que esta compreende todas as frequências do expectro. Pelo princípio da superposição, a saída será equivalente a somar a saída para cada frequência, de modo que quando a entrada do sistema é um impulso, a saída do sistema contêm informação sobre todas as possíveis entradas. Esta saída é chamada de resposta ao impulso do sistema h(t).

Como apresentado, a saída h(t) apresenta a sobreposição de todas as saídas possíveis.

quinta-feira, 20 de março de 2008

Informações sobre o blog

Hoje inseri o campo de vídeos do YouTube. Estes vídeos são de minha autoria.
Quando eu participar de algum evento, onde fizer filmagens, irei colocar os vídeos no YouTube e, por consequência, estes estarão sendo disponibilzados aqui no MultiSign.

Os interessados em acompanhar o blog mas não podem olhar frequentemente, existe a opção de assinar o blog (no final da página: {Assinar: Postagens (Atom)}, acima da logo do blogger). Quem quiser inserir ou referenciar informações deste blog, também podem ficar a vontade para fazê-lo.

Hoje também passei a assinar o RSS de uns sites que são relacionados aos temas tratados no MultiSign (tecnologia, informática, GNU/Linux, etc....).
Irei colocar os RSS's no final da página para não "poluir" o cabeçalho e o espaço central com muita informação.

quarta-feira, 19 de março de 2008

Morfologia matemática

Vou apresentar uma técnica em processamento digital de imagens que está "na moda" aqui na UFC: a Morfologia Matemática.

A morfologia tem várias aplicações, por exemplo:
  • Filtragem em imagens binarizadas;
  • Redimensionamento de objetos;
  • Evidenciamento de regiões.
As imagens a seguir ilustram a aplicação das 2 formas de morfologia matemática (erosão e dilatação):

Figura 1: Imagem original.Figura 2: Imagem após ser convertida para níveis de cinza e, em seguida, dilatada.Figura 3: Imagem após ser convertida para níveis de cinza e, em seguida, erodida.

[As imagens foram processadas pelo GIMP - GNU Image Manipulation Program.]

Antes de explicar como a morfologia é implementada, faz-se necessário definir o que é o elemento estruturante.
Elemento estruturante: sub-domínio sobre a imagem cuja forma é definida de acordo com a necessidade e possibilidade do problema.

Para exemplificar, tomemos uma imagem Img, então definimos um elemento estruturante quadrado de lado igual a 3 pixels.

Então o sub-domínio define os seguintes pontos em torno de um ponto genérico (x,y): Strc(Img(x,y)) = {Img(x-1,y-1), Img(x-1,y), Img(x-1,y+1), Img(x,y-1), Img(x,y), Img(x,y+1), Img(x+1,y-1), Img(x+1,y), Img(x+1,y+1)}.

Os elementos estruturantes podem tomar qualquer forma, sendo as mais usadas:
  • Quadrado;
  • Círculo;
  • Cruz;
  • Traço (diagonal, vertical ou horizontal);
  • Losango.

A dilatação consiste na aplicação de um filtro de máximo sobre a imagem.
Img(x,y) = max{Strc(Img(x,y))}

A erosão consiste na aplicação de um filtro de mínimo sobre a imagem.
Img(x,y) = min{Strc(Img(x,y))}

A combinação de erosões e dilatações seguidas e/ou alternadas gera as operações de abertura e fechamento, estas por sua vez podem ser simétricas (usando o mesmo elemento estruturante tanto na erosão quanto na dilatação) ou assimétricas (caso contrário).

quinta-feira, 13 de março de 2008

Visão computacional no Scilab

Como vou entrar numa etapa de pesquisa, gostaria de compartilhar de alguns conhecimentos sobre Scilab e SIVP.

Para os usuários do Ubuntu (e afins), o Scilab pode ser baixado e instalado automaticamente pelo gerenciador de pacotes (apt-get, synaptic, adept, etc....), não esquecer de selecionar o scilab-doc, e o SIVP pode ser baixado pelo site: http://sivp.sourceforge.net/

Para instalar o SIVP, basta descompactá-lo e fazer a seguência de comandos no prompt (talvez seja necessário logar-se como root ou colocar o comando sudo antes dos 3 últimos comandos).:

cd {diretorio onde encontra-se o SIVP}

./configure

make

make install

Após este procedimento, o Scilab estará instalado e pronto para realizar aplicações de visão computacional.

Vale lembrar que o SIVP usa a biblioteca Open CV, a qual também pode ser baixada pelo gerenciador de pacotes.

Antes de qualquer coisa, instale o camorama (também pelo gerenciador de pacotes) e teste sua webcam.

A tela inicial do Scilab é a seguinte, onde o botão de toolboxes está em destaque:


Então é só clicar no botão de toolboxes e selecionar a SIVP.

O código a seguir é uma sugestão de primeira aplicação (envolvendo a webcam).

// Codigo para visualizacao de imagens provenientes da webcam

Cam = camopen(); // abre a webcam
nFrames = 1000; // determina quantos frames serao capturados

for n = 1:nFrames, // laco principal
im = avireadframe(Cam); // leitura do frame pela webcam e armazenamento da imagem na variavel im (como uma matriz de vetores RGB)

imshow(im); // apresentacao da imagem no screen
end;

A partir deste exemplo é possível qualquer aplicação com a webcam.

Inserção de novas técnicas

Como a segmentação das mãos por limiarização não estava fornecendo resultados satisfatórios em casos suficientes, decidi por usar outras técnicas conjuntamente a limiarização.

A idéia que surgiu foi usar contornos ativos (snakes) para segmentar as mãos.

Neste caso surge alguns problemas:
  1. determinar um ponto que pertença a mão para inicializar o algoritmo;
  2. descobrir se existe alguma toolbox (ou similar) para o Scilab que faça a implementação do algoritmo;
  3. o tempo de estudo, pois não conheço a fundo o algoritmo.
Pelo que tenho de conhecimento, Snakes tem um custo computacional elevado, então a otimização do código será crucial.

Segundo o que sei a respeito, Snakes é semelhante aos mapas de Kohonen (que eu tenho uma experiência considerável) em que os dados (neste caso, a imagem) guia a organização da estrutura, como na figura abaixo (fonte: http://www.uib.no/med/avd/miapr/arvid/MOD3_2002/Konturdeteksjon/)


Enfim, este fim de semana devo iniciar os estudos sobre os contornos ativos.

quinta-feira, 6 de março de 2008

Resultados da segmentação de pele

Como os resultados obtidos não estavam satisfatórios, decidi por fazer uma análise das imagens que tenho. O resultado a seguir foi muito promissor.
Porém a maioria dos resultados não foi como o esperado, como o exemplo abaixo.
Neste caso, o fundo está no mesmo padrão da pele e existem pontos na pele que não estão incorporados.

Os valores de limiar obtidos:
limCbMax = 165;
limCbMin = 120;
limCrMax = 145;
limCrMin = 115;

terça-feira, 4 de março de 2008

Segmentação das mãos

Estou trabalhando agora na segmentação das mãos, e os resultados e as idéias estão començando a aparecer.

Minha atividade no momento consiste em encontrar pontos que pertençam a região das mãos. A figura abaixo ilustra um resultado interessante.



Na imagem superior, encontra-se o frame capturado pela câmera e na imagem inferior o frame sofreu uma equalização do histograma, em que cada valor de intensidade no canal YCbCr foi normalizado de modo que o histograma resultante apresentasse o menor valor em 0 e o maior valor em 255.

Os valores usados na limiarização são: 77 < Cb < 127 e 133 < Cr < 173.