quarta-feira, 29 de outubro de 2008

Converter todas as imagens de um diretório

Um post bem curto, para variar um pouco.

Vi este link e achei interessante.

Tudo consiste neste script (para rodar no shell do Linux):

>> for f in *.jpg;
>> do convert -verbose $f ${f%.*}.png;
>> done


O comando convert pertence ao pacote do ImageMagick.

O código apresentado converte todas as imagens do diretório corrente de *.jpg para *.png, para converter entre outros formatos basta mudar para as extensões desejadas.

Para os que não compreenderam o código:
1a linha - laço que percorre todos os arquivos de extensão *.jpg;
2a linha - chama o convert para mudar o arquivo atual $f para o novo arquivo, que terá o mesmo nome com a nova extensão ${f%.*}.png;
3a linha - indica o fim do laço.

Os que entendem algo de codificação de imagens, devem imaginar os benefícios que este tipo de recurso oferece.

terça-feira, 28 de outubro de 2008

Auto-Linux

Olhem esta notícia.

Não é maravilhoso saber que empresas do porte da BMW e da GM estão investindo em sistemas open-source (Linux based) em seus veículos?

E quanto as novas possibilidades? Para as pessoas que têm condições de desenvolver software, poderemos ter pessoas desenvolvendo softwares para seus próprios carros.

E o novo mercado de negócios: desenvolvimento de software automotivo.

Poderão surgir novas empresas para desenvolver os sistemas para os carros com Linux embarcado, bastando para isto que os desenvolvedores conheçam o S. O. que está rodando, o qual é open-source, então basta pegar na web.

Para os interessado em aplicações mais avançadas, tipo eu, por exemplo: sistemas de reconhecimento de padrões, processamento digital de sinais e imagens, automação, etc.... as oportunidades serão muitas.

Enfim, eu queria só partilhar um pouco da felicidade que tive ao ler esta notícia.

segunda-feira, 27 de outubro de 2008

Genetic Algorithms

I'll talk about Genetic Algorithms at this post.

Genetics Algorithms (G. A.) are a type of evolutionary computation, wich the software "upgrade itself" for solve a problem.

The principle of G. A. is the Theory of Evolution (Biology).

In terms of system's engineering, we use G. A. with 4 steps:
  1. Identify the problem and make it solution as a vector of numbers (preferentially, binary numbers);
  2. Generate a lot of possible solutions (population), without think "what's the best solution for my problem?" (the software will find a good solution);
  3. Create a measure for the solutions (G(.)), this measure indicates the "solution's adaptability" (for each solution);
  4. Cross the solutions until a satisfiable solution is find.

Observations:
  • The more adaptable solutions have more probability of cross with others solution.
  • The function G(.) is higher as better is the solution for solve the problem.
  • The cross between 2 solutions occurs with a changing of some numbers of the vectors.
  • The worst solutions are discarded and the new solutions just be better than the old solutions.

A example: give a room with N lamps, which lamps should be lit for best lighting and less power consume?

{Making N = 10}

Each possible solution is a 10 positions vector: s = [l0 l1 l2 l3 l4 l5 l6 l7 l8 l9] which s[i] indicates the status of i-st lamp (s[i] = 1 -> lamp on, s[i] = 0 -> lamp off).

Creating a population of solutions:
s1 = [0 1 1 0 0 0 1 1 1 1]
s2 = [0 1 0 0 1 1 0 1 1 0]
s3 = [1 1 0 1 1 0 0 0 1 0]
s4 = [0 0 0 0 1 1 1 1 1 0]

(Of course that's very few solutions.)

Let's suppose that:
G(s1) = 18%
G(s2) = 32%
G(s3) = 35%
G(s4) = 15%

(The developer invents the G(.) according the problem.)

Thus, in this case, the result of G(.) is the probability of each solution cross with other solution.
(Is not possible make a "self-cross")

One very possible crossing is {s1, s3}.
s1= [0 1 1 0 0 0 1 1 1 1] and s3 = [1 1 0 1 1 0 0 0 1 0]

Determine a random point in the vector (for example 6) and change the numbers.
The cross' result:
s1' = [s1[0] s1[1] s1[2] s1[3] s1[4] s1[5] s3[6] s3[7] s3[8] s3[9]]
s1' = [0 1 1 0 0 0 0 0 1 0]
s2' = [s3[0] s3[1] s3[2] s3[3] s3[4] s3[5] s1[6] s1[7] s1[8] s1[9]]
s2' = [1 1 0 1 1 0 1 1 1 1]

So, the function G(.) is used in all new solutions, and the cross occurs until find a good solution.

I explained a simple form of develop a genetic algorithm, but the algorithm's complexity can be higher if you use many points in the cross, non-binaries vectors or insert mutation in the algorithm (if the algorithm don't result to good solutions).

Now, let's play with the Genetic Algorithms.

terça-feira, 21 de outubro de 2008

Feed

I maked this post for report to the reader that don't have many free time.

The Feeds (here is a text about it - in portuguese) enable that the reader knows the posts without visits the blog/site.

The RSS is the principle of feeds's operation. All's blogs have (or should have) it RSS available.

To acess the RSS content consists in add the RSS adress in a RSS reader, it can be on-line (for example My Yahoo!, Google, others blogs/sites) or locals (Akregator, for example).

For finish, these are MultiSign's adresses for some services:

Acompanhe o MultiSign

Vou dar uma sugestão para quem gosta de acompanhar o que está dando nos blogs mas não deseja passar muito tempo olhando os blogs um a um.

Os Feeds (aqui tem um texto que fiz a respeito) possibilitam que o leitor tome conhecimento do que foi postado no blog sem a necessidade de visitar o blog.

O RSS é o princípio de funcionamento dos feeds e todo blog tem (ou deveria ter) seu RSS disponível.

Para ter acesso ao conteúdo RSS de um blog basta adicionar o endereço de RSS deste blog em um leitor de RSS, neste post faço uma citação de como funciona.

Como exemplo de leitor de RSS, posso citar o Akregator.

Existem também leitores de RSS on-line, como o que eu faço aqui no MultiSign (no final da página).

Para fechar, seguem os endereços de RSS do MultiSign para os diversos serviços on-line:

segunda-feira, 20 de outubro de 2008

Conjunto de vídeos sobre Libras

Hoje eu fiz os primeiros vídeos para testar os algoritmos que desenvolvi para o meu mestrado.

Primeiro vou testar algoritmos de segmentação, depois de extração dos momentos centrados e por fim os algoritmos de classificação.

Eu fiz um código do Scilab para fazer a captura do vídeo, como o que apresentei aqui.

Eu fiz 2 conjuntos de vídeos com as 26 letras do alfabeto em Libras (um vídeo por letra).

Pelo que vi nos vídeos, terei problemas em fazer a segmentação da mão, caso seja necessário, e/ou algoritmos de rastreamento.

Eu fiz os vídeos na Feneis-CE com 2 pessoas que têm experiência com Libras (um deles é deficiente auditivo).

Sobre os vídeos, eu os fiz com uma webcam VGA (640 x 480 pixels) com duração de 5 segundos a 20 fps.

Eu pensei em fornecer os vídeos a possíveis colaboradores que tenham interesse em trabalhar com reconhecimento de gestos ou mesmo com o reconhecimento da Libras.

Como são muitos vídeos (52 no total) eu não acho interessante colocá-los no YouTube, mas posso passar por e-mail aos interessados (cada conjunto de vídeos tem uns 13,5 MB).

Os interessados podem deixar seus dados (nome e e-mail) como comentário que eu mando os arquivos.

sábado, 18 de outubro de 2008

Editor de legendas

Eu estava procurando um editor de legendas no Synaptic e achei o Subtitle Editor.

Eu havia achado outros mas não funcionaram bem e o Subtitle Editor além de simples e intuitivo é muito estável.

Segue a tela inicial do aplicativo.


Como pode-se ver, ele tem também o recurso de carregar o vídeo e ver como está a legenda.

A imagem a seguir mostra o Subtitle Editor com uma legenda carregada.

Para finalizar, a mesma conversa de sempre: o Subtitle Editor é um software livre e quem trabalha com edição de vídeo tem uma opção de desenvolver seu trabalho de forma legal e sem nenhum custo com software.

terça-feira, 14 de outubro de 2008

Image processing in batch

I don't have very free time (because I'm doing my mastering qualify), thus this post will be small.

I want show the Phatch.

It's a software for image processing in batch. I don't know how that works, but I believe that it makes the same processing for all images (in a sequence).

Some examples of operations in the Phatch:
  • Resize;
  • Water mark;
  • Smoothing of boundaries;
  • Rotate.

The Phatch has more complex operations, but I don't use it yet, so I cann't talk about them.

domingo, 12 de outubro de 2008

Processamento de imagens em lote

Como vocês sabem, o tempo é curto e por isso esta postagem também o será.

É só para apresentar o Phatch.

Trata-se de um software para tratamento de imagens em lote. Acredito que o tratamento em lote consiste em ter uma sequência de imagens e fazer a mesma operação sobre todas elas.

Exemplos de operações que eu vi no Phatch:
  • Redimensionamento;
  • Marca d'água;
  • Arredondamento de bordas;
  • Rotação.

Como disse, estes são exemplos de recursos do Phatch.

quinta-feira, 9 de outubro de 2008

Qualification

I was told that I have 1 month to complete my mastering qualification.

Thus, I can't make posts frequently until the next month.

But, I want to thank to readers who visited the MultiSign (yesterday I had 37 visits, see here). I'm very happy too because I saw the first place with more than 10 visits out of Brazil and Portugual, look the picture.


See the west of United States (the left side).

So, it's all.

Qualificação

Esta semana eu descobri que tenho 1 mês para preparar toda a minha qualificação de mestrado.

Por isto eu não poderei manter o MultiSign atualizado com frequência.

Eu agradeço aos leitores que lêem o blog com frequência (ontem mesmo tive 37 visitas, olhem aqui) e algo que me deixou muito satisfeito foi o primeiro ponto com mais de 10 visitas fora do Brasil e Portugual, conforme a figura abaixo.


Olhem o oeste (lado esquerdo) dos Estados Unidos.

Enfim, é só isso mesmo.

terça-feira, 7 de outubro de 2008

Dicas para concursos

Hoje vi este vídeo com dicas para concursos, em especial na parte de legislação.

Como os concursos públicos são muito visados atualmente (eu mesmo, talvez, preste concursos no futuro) e em todos os concursos têm muitas questões de legislação (até os engenheiros e cientistas da computação precisam fazer provas de decorar as leis), que eu particularmente tenho problemas pois minha memória não vale muito, eu achei que seria interessante fazer este post.



Pois é, quem for fazer concursos deve estudar 2 vezes muito:

1a. - Para passar no concurso.

2a. - Para aprender o necessário e desempenhar suas funções da melhor forma possível.

sexta-feira, 3 de outubro de 2008

Celular com raio-x

Hoje vi esta notícia e achei muito interessante.

Trata-se de um software que vai usar GPS, sensores geomagnéticos e de aceleração e outros recursos a mais para "ver atraveś" das paredes.

A idéia, pelo que entendi, é a seguinte:

Primeiro toma-se conhecimento de todos os pontos (cômodos) de todas a infraestrutura (casas, prédios, ruas, etc....) de onde se encontra o usuário. Os sensores vão determinar a posição e para onde o celular está sendo apontado, aí é só fazer um modelo 3D (vão usar OpenGL para fazer o modelo) e simular que o celular tem uma câmera que "vê" através da parede.

Neste caso, a visão pode ser de coisas muito mais distântes, pois basta acessar a informação e criar o modelo, de modo que é possível ver através de várias paredes ao mesmo tempo.

quarta-feira, 1 de outubro de 2008

Control the ball with your hands - Game

Using the segmentation of hands, I developed the game Control the ball with your hands.

This a video for show the game:



This game was developed in the Scilab, using the SIVP toolbox, thus it's a simulation algorithm.

I develop games like this because I like it.

If anyone wants talk about this game, or others things, may send me e-mails.