Carregando bibliotecas adicionais no SciLab, o “MatLab” OpenSource

3, Abril 2009

Acesse o artigo no meu novo blog.

Já tinha citado no post Ferramentas MatLab no Linux, sobre o programa SciLab, uma ferramenta
OpenSource, semelhante ao MatLab, para operações com matriz, com versões para Linux, Mac e Windows.
Eu baixei a mesma via apt-get e estou usando para trabalhar com processamento de imagens. Porém, ao tentar usar algumas funções para essa finalidade, descobri que ele não vem com bibliotecas padrões para isso.
Desta forma, precisei procurar no Google, até que encontrei as bibliotecas SIP ToolBox (SciLab Image Processing) e SIVP (SciLab Image and Video Processing) ToolBox. A diferença do SIVP pro SIP é que o primeiro permite fazer processamento também em arquivos de vídeo. Encontrei essas bibliotecas também a partir da página ToolBox Center do SciLab.

As duas ToolBox precisam da biblioteca OpenCV. Tentei baixar o arquivo opencv-linux lá no site oficial, mas o mesmo não existia, então tive que procurar no google por opencv-linux1.1, que encontrei nesse site.
Você precisará compilar o pacote e fazer todo o processo manual de instalação, assim, abra um terminal na pasta onde baixar o arquivo e digite os comandos abaixo:

# descompactar o arquivo
tar -zxvf opencv-1.1pre1.tar.gz

# configurar o OpenCV para compilação
# os parâmetros passados para o configure são:
# –enable-apps = compilar aplicações de exemplo
# –with-ffmpeg = habilitar suporte para manipulação de vídeos com a biblioteca ffmpeg, como explicado antes
# –without-quicktime = não usar bibliotecas do QuickTime, acredito que só seja é necessário se você não tiver o QuickTime
# alguns dos parâmetros não sei pra que são, fico devendo :)
# para ajudar digite ./configure –help
./configure –enable-apps –with-ffmpeg –with-gnu-ld –with-x –without-quicktime CXXFLAGS=-fno-strict-aliasing

# compilar
make

# instalar
sudo make install

Os parâmetros de instalação retirei desse site. Mas lá são informados mais passos que não foram necessários para mim.

A biblioteca SIVP tem disponível no Sypnatic do Ubuntu 8.10, mas ocorre um erro na instalação que não consegui resolver.
E pra priorar, nem deixou remover e causau um problemão, pois toda vez que tentava baixar um programa via apt-get, ele dava erro tentando terminar a instalação do SIPV. Tentei fazer o download a partir do SourceForge, mas o arquivo para a versão 0.5 não existia. Encontrei em um site, que não lembro mais, os fontes dessa versão, mas ao tentar compilar, ocorria também um erro. No repositório LauchPad tem a versão 0.5 para Ubuntu 9.04, mas funcionou no 8.10 sem problemas. Existem alguns pré-requisitos que são listados na página e que existem pacotes deb deles também, mas no meu caso, todos já estavam instalados no meu sistema. Se você desejar trabalhar com vídeo, precisará instalar antes a biblioteca ffmpeg, para manipulação desse tipo de arquivo. Você pode baixá-la via apt-get.

No caso dessa versão 0.5.0 do SIVP, a biblioteca é instalada em /usr/lib/sivp-0.5.0. Para carregar bibliotecas externas no SciLab você precisar carregar um arquivo .sce, normalmente de nome loader.sce. Para a biblioteca SIVP, você deve digitar o comando load no SciLab, seguido do nome do arquivo .sce a ser carregarado. Assim, digite exec(“/usr/lib/sivp-0.5.0/loader.sce”) que as funções estarão prontas para uso. Você encontra documentação das funções da biblioteca em http://sivp.sourceforge.net/doc.php.

O SIP, a outra biblioteca para processamento de imagens, na versão atual 0.4, não compila no SciLab 5.1, a versão atual, e não há um pacote deb para ela. Encontrei um pacote deb para a versão 0.3.99rc2 no repositório do Ubuntu, não tão menor que a versão 0.4 disponibilizada no site oficial. Já tendo instalado o OpenCV, como mostrado anteriormente, todos os outros pré-requisitos são encontrados na página para download do pacote deb do SIP, mostrada logo acima.

Esta versão é instalada no diretório /usr/lib/scilab/contrib/sip, que acredito ser o correto, diferente do diretório do SIVP. Assim, para carregar a biblioteca no SciLab, digite nele o comando exec(“/usr/lib/scilab/contrib/sip/loader.sce”). Você encontra documentação, inclusive em portugês, na página inicial do site oficial. Encontrei um tutorial nesse link.

Testei a biblioteca SIP e fiz algumas brincadeiras iniciais. O mais legal é que as funções tem a mesma assinatura das do MatLab (nome e parâmetros são iguais), assim, fica fácil pegar exercícios propostos para MatLab e executar no SciLab facilmente.

Tenho que descobrir ainda como fazer para carregar essas bibliotecas de forma automática. Se descobrir, postarei aqui.

Para finalizar, todos sabem que essas ferramentas OpenSouce não são tão completas e poderosas quanto o MatLab. Elas tem suas deficiências. Uma análise comparativa entre o SciLab e o MatLab pode ser vista aqui.


Ferramentas para MatLab no Linux

26, Março 2009

Veja o artigo no meu novo blog.

Bem, mais um semestre começa no mestrado em Engenharia Elétrica na UnB. Esse semestre estou cursando as disciplinas de Sistemas Multiagentes (agentes inteligentes, agentes móveis, multi agentes, programação distribuída, inteligência artificial), Introdução a Sistemas Inteligentes (inteligência artificial, redes neurais, lógica fuzzy, algoritmos genéticos) e Processamento de Imagens.

Sem querer, todas as disciplinas envolvem álgebra relacional, que estou tendo que estudar novamente, pois vi isso a muito tempo na faculdade e não apliquei pra nada no meu curso de tecnologia (infelizmente). Por isso, o título do post, sobre MatLab. Inicialmente eu não estava querendo trabalhar com MatLab, eu queria implementar tudo em C ou Java. Até que um amigo me falou que algo que você faz em MatLab em segundos, você vai gastar muito mais tempo fazendo em outra linguagem. Depois disso, vi a necessidade e importância de se aprender MatLab, que no fim das contas não é nada difícil e agiliza muito o desenvolvimento dos trabalhos.

Para quem não sabe (como eu não sabia), o MatLab é ideal para trabalhar operações sobre matrizes, como somas, multiplicações, inversão e tudo o mais. Porém, esta é uma ferramenta proprietária e para Windows. No Linux temos duas ferramentas semelhantes: o Octave e o SciLab.

Inicialmente testei o octave, que baixei via apt-get. Ele é uma ferramenta de linha de comando (o MatLab nunca vi). O Octave tem uma interface gráfica chamada QtOctave (que usa a biblioteca gráfica Qt4). Acho que baixei ele também pelo apt-get. O SciLab possui uma interface gráfica simples, mas as principais tarefas nessas ferramentas são feitas a partir de comandos em uma tela semelhante a um terminal. No caso do SciLab, ele lhe permite executar comandos do sistema operacional de dentro dele. Os comandos linux que testei e funcionaram foram pws, cd e ls. Outros como rm não funcionaram. Ele permite também, depois que você digitou o inicio de algum comando, pressionar tab para exibir o recurso de autocompletar, válido também para completar nomes de arquivos e diretórios do sistema operacional.

Bem, a grande finalidade dessas ferramentas é facilitar a realização de operações com matrizes, como já citei. Para iniciar o Octave basta digitar num terminal a palavra octave e para o SciLab, digitar scilab. Testei inicialmente o Octave. Conseguir facilmente criar duas matrizes a e b (por exemplo, a = [1 2 3; 4 5 6], matriz de 2 linhas e 3 colunas), mas ao tentar multiplicar duas matrizes compatíveis (ou seja, a quantidade de linhas da segunda tem que ser igual a quantidade de colunas da primeira) não consegui. Tentei o operador padrão de multiplicação *, fazendo a*b, mas não funcionou. Tentei o help via linha de comando e nada. Obviamente se eu pegasse qualquer manual básico iria conseguir. Porém, parti logo para o SciLab pois não achei o octave intuitivo.

No SciLab, meu primeiro teste, a multiplicação de duas matrizes, funcionou de primeira. Assim, achei a ferramenta mais intuitiva, pois nunca tive contato com MatLab e sua linguagem, apenas instalei o programa e sem nenhuma consulta a manual algum, consegui fazer uma operação básica. Assim, recomendo o SciLab, que funciona em Windows, Linux e Mac.