sexta-feira, 20 de dezembro de 2013

Configurando OpenCV no Eclipse (Eclipse-CDT) - Xubuntu 13.10


Tentei achar um tutorial para configurar o OpenCV no Eclipse com o plugin CDT (C/C++ Development Tooling) para o Xubuntu 13.10, mas não consegui seguir os exemplos de configurações que encontrei, devido um retorno diferente de uma linha de comando. Fiz este post para registrar a sequência de passos que usei para configurar o meu ambiente de desenvolvimento, caso precise configurar novamente e também se alguém precisar utilizá-lo.
Estou considerando que você, assim como eu, seguiu a instalação padrão e não alterou nenhum diretório da biblioteca OpenCV. Instalei a biblioteca OpenCV e o plugin eclipse-cdt via apt-get, respectivamente: 

apt-get install libopencv-dev
apt-get install eclipse-cdt

Note que o eclipse-cdt é plugin! O IDE eclipse já estava instalada na minha máquina. Agora abra o seu eclipse e crie um projeto em: 

File -> Nem -> C++ Project 

Defina um nome para o projeto e avance até finalizar. Agora veja as propriedades do projeto (ALT + Enter), clique em “C/C++ Building” e depois em “Setting”. Agora procure pela aba “Tool settings” e nesta procure por “Cross G++ Compiler”, clique em “Includes” e em “Include paths (-I)” adicione o diretório: “-I/usr/include/opencv” (Você pode encontrar esse diretório buscando pelo terminal com a seguinte linha de comando: “pkg-config --cflags opencv”). Detalhes na imagem a seguir:

Configuração do Cross G++ Compiler para a biblioteca OpenCV
Retorne à aba“Tool settings”, desta vez procure por “Cross G++ Libraries” e em “Library search path (-L)” adicione o seguinte diretório: “/usr/lib” (Tentei executar a seguinte linha de comando que vi em vários tutoriais: “pkg-config --libs opencv”, mas só retornou os links simbólicos nesta versão do Xubuntu 13.10. Então procurei no diretório padrão e vi que os arquivos .so estão em “/usr/lib”). Agora, em “Libraries (-l)” adicione todas as libs: “opencv_calib3d” “opencv_contrib” “opencv_core” “opencv_features2d” “opencv_flann” “opencv_gpu” “opencv_highgui” “opencv_imgproc” “opencv_legacy” “opencv_ml” “opencv_objdetect” “opencv_ocl” “opencv_photo” “opencv_stitching” “opencv_superres” “opencv_ts” “opencv_video” “opencv_videostab”. Detalhes da configuração na imagem seguir:
Configuração do Cross G++ Linker para a biblioteca OpenCV
Testando o ambiente com um código do Laboratório do Projeto SHIVA. Aplicação do filtro gaussiano com máscara 7x7, detalhes a seguir:
OpenCV rodando!
Espero que este post possa ajudar alguém, qualquer dúvida pode deixar uma mensagem que lerei e, quando possível, responderei!

quinta-feira, 9 de maio de 2013

Algoritmos Genéticos

Figura 1: Evolução (Fonte: bestbarcelona.org)
Os algoritmos genéticos (AG) são uma classe particular da grande área dos algoritmos evolutivos. Essas técnicas são embasadas na Teoria da Evolução das Espécies, evolucionismo, e na Genética. As principais técnicas inspiradas na biologia evolutiva são: hereditariedade, mutação, seleção natural e recombinação. Essa heurística de busca se vale de comportamentos observados na natureza para solucionar problemas reais de otimização e busca.
     Os algoritmos genéticos são técnicas de otimização que através de busca guiada encontram soluções ótimas, ou aproximadas, para os problemas aos quais são apresentados. A estocasticidade dessa técnica está por conta dos métodos de seleção para recombinação e mutação dos indivíduos, contudo, a busca é dita guiada, pois as soluções geradas partem de soluções existentes na população.
     Os AGs são algoritmos populacionais, significa que suas várias soluções candidatas são avaliadas a cada geração e de forma implícita fornece paralelismo à técnica. Basicamente, os principais aspectos que diferem os AGs das técnicas tradicionais de otimização são os seguintes:
  • Tomam como base uma codificação do conjunto das possíveis soluções (não consideram os parâmetros da otimização em si);
  • Os resultados obtidos são apresentados em forma de uma população de soluções candidatas (e não como uma solução única);
  • Não necessitam de nenhum conhecimento do problema, apenas de uma forma de avaliar a adaptabilidade das soluções candidatas;
  • Usam métodos, recombinação e mutação, probabilísticos e não regras deterministas.
     Encontram-se aplicações de AG em diversas áreas do conhecimento, entre elas: Bioinformática, Filogenia, Ciência da Computação, Engenharia, Economia, Química, Matemática, Física, Mineração de Dados, Big Data e outros campos. Caso queira saber mais sobre AG: Algoritmos Genéticos - 3ª Edição e Computação Natural – Uma Jornada Ilustrada.