segunda-feira, 30 de setembro de 2013

Review (atrasado) do Windows 8

As reações ao lançamento do Windows 8 foram, em geral, negativas. A InfoWorld chegou a dizer que o "Windows 8 é garantia de decepção para quase todos". Como existem tantas opiniões sobre o assunto, resolvi escrever o que estou achando do Windows 8 que veio pré-instalado no meu notebook.

Primeiramente, sou um usuário bem experiente. Meu antigo notebook veio com Windows 7 pré-instalado, mas usei praticamente só Ubuntu nos últimos dois anos. Também uso Ubuntu no laboratório em que trabalho e posso dizer que tenho bastante experiência tanto com Linux como com Windows.

Impressão Inicial

Passei meus primeiros 10 minutos descobrindo, basicamente, como não usar a nova interface do Windows 8 e manter o desktop visível o máximo de tempo possível. Também demorei algum tempo até achar o Painel de Controle. O item "Configurações" da interface nova não é equivalente e mostra bem menos opções. 

Após este primeiro contato, usar o Windows 8 no modo Desktop é igualzinho a usar o Windows 7, só que mais rápido. Aliás, a agilidade nas tarefas em geral está bem maior no novo Windows e isto é especialmente perceptível ao ligar e desligar o notebook. A opção de suspender, então, ficou visivelmente mais rápida e quase parece que o computador nunca desliga.

O Windows 8 no modo desktop não é muito diferente do Windows 7.

Muito se falou da ausência do menu Iniciar. Até agora, posso dizer que não sinto falta nenhuma dele. Em vez de procurar o nome de um programa no menu, agora eu aperto a tecla "Windows" e começo a digitar o nome do programa que quero abrir. O Windows 8 mostra uma lista de programas que contém a minha busca e na maioria das vezes nem preciso digitar o nome até o fim. É só digitar o começo e apertar Enter. Muito melhor, na minha opinião.

Não irei fazer comentários sobre o IE novo pois nunca o utilizei. Meu navegador favorito é o Firefox e ele foi o primeiro programa que instalei. Também não posso falar muito sobre a interface nova (chamada de Modern pela Microsoft), já que, tirando o atalho que comentei acima, não encontrei muita utilidade para ela.

 Programação

Como faço doutorado em Computação, uma das minhas principais atividades é programar (a outra é ler artigos). Sempre que posso programo em Python, porém frequentemente programo em C para minhas pesquisas. 

Python tem um suporte curioso a Windows. Apesar do instalador funcionar super bem, programas para gerenciamento de pacotes, como o pip, são bem chatos de instalar. Além disto, o pip tem sérios problemas em compilar extensões nativas, como o Numpy, principalmente por depender de uma instalação funcionando do Visual C++. Felizmente existe este site, feito pelo Christoph Gohlke, que contém uma quantidade impressionante de pacotes pré-compilados para Windows.

Se você não for usar o Visual Studio é bem provável que você tenha dificuldades em programar em C em Windows, especialmente se estiver acostumado com Linux. Existem distribuições do gcc e similares para Windows (MingW), porém a experiência é muito pior que no Linux (especialmente por causa do péssimo terminal do Windows). Por estar acostumado com meu Ubuntu, preferi então instalar uma máquina virtual e escolhi o VMware Player. Instalei a distribuição Lubuntu, que nada mais é que o Ubuntu com a interface gráfica LXDE, que é bem mais leve que a padrão do Ubuntu.

A grande vantagem de se utilizar o VMware player é que ele possui o modo Unity, que faz com que as janelas da máquina virtual apareça lado a lado com as janelas do sistema operacional nativo. Isto torna a utilização muito mais prática. Para lançar programas na VM basta apertar Ctrl+Shift+U que aparece um menu com todos os programas instalados na sua VM.

Demonstração do VMware Unity. Janelas da minha VM Linux e do Windows compartilhando o mesmo desktop!


Até agora, o desempenho tem sido bom. A velocidade da VM é boa e é muito prático poder usar o que cada sistema tem de melhor ao mesmo tempo.

Conclusão

Ao contrário da maioria da impressa de tecnologia, eu não estou tendo nenhum grande problema com o Windows 8. O sistema é rápido e, após uma breve adaptação, consigo fazer tudo o que preciso sem dificuldades. A experiência que tenho com outros sistemas certamente me ajudou na adaptação, porém achei que, se ignorarmos a nova interface, o Windows 8 é um ótimo sistema operacional.

terça-feira, 24 de setembro de 2013

Resumo do Artigo "Staff Detection with Stable Paths"

 O artigo "Staff Detection with Stable Paths" de Cardoso et al. apresenta um método para a identificação do compasso em imagens de partituras utilizando caminhos em grafos. Segundo os autores, as abordagens anteriores utilizam somente informações locais das imagens sem considerar seu contexto. Em especial, os autores não conhecem trabalhos que explorem o fato das linhas serem os componentes mais largos da imagem.

O método apresentado trata a imagem como um grafo cujos vértices são os pixels da imagem e as arestas conectam pixels vizinhos. O peso das arestas leva em conta tanto a cor como outras propriedades contextuais de imagens de partituras. Supondo que caminhos contendo pixels pretos são menos custosos que caminhos com pixels brancos, as linhas do compasso são caminhos com menor custo que conectam as duas margens da página e que possuem somente um vértice de cada coluna. Iterando este algoritmo é possível encontrar todas as linhas de uma imagem.

Os autores definem um caminho Ps, t como um caminho estável (Stable Path) se Ps, t é, ao mesmo tempo, o caminho mais curto entre o pixel s e sua margem oposta e o caminho mais curto entre o pixel t e sua margem oposta. O algoritmo apresentado para calcular os caminhos estáveis possui complexidade similar ao de computar os caminhos ótimos entre as margens. Não existe garantia que o algoritmo encontrará um caminho estável para cada linha do compasso. Por isto, o método é iterado diversas vezes na imagem, apagando as linhas encontradas anteriormente. Uma etapa final de pós-processamento descarta linhas redundantes e agrupa as linhas em compassos. Linhas que não fazem parte de um compasso são descartadas.

A avaliação do método é feita utilizando as imagens da base do MusicStaves. O algoritmo apresenta bons resultados na comparação com o algoritmo de detecção de linhas apresentado em Dalitz et al2008. Os autores também testam o efeito da utilização deste algoritmo no lugar do implementado no MusicStaves para a remoção de compasso e obtém resultados competitivos com o Skeleton (apresentado em Dalitz et al2008 e que não detecta as linhas explicitamente).


Referência completa: dos Santos Cardoso, J.; Capela, A.; Rebelo, A.; Guedes, C.; Pinto da Costa, J., "Staff Detection with Stable Paths," Pattern Analysis and Machine Intelligence, IEEE Transactions on , vol.31, no.6, pp.1134,1139, June 2009 [Download]

terça-feira, 17 de setembro de 2013

Resumo do artigo "A Robust Detector for Music Staves"

O artigo "A robust detector for music staves" de Leplumey et al. descreve um método para a extração das linhas do compasso em partituras. O diferencial deste trabalho é que seu algoritmo foi desenvolvido para ser robusto a pequenas variações de curvatura e a interrupções nas linhas. Infelizmente, os autores não  fazem uma avaliação rigorosa do desempenho do algoritmo, apenas exibem seu resultado em uma imagem e comentam que o algoritmo errou apenas uma linha em um conjunto contendo 10 imagens.

O algoritmo depende, como em diversos outros trabalhos da área, de dois parâmetros: a "altura" da linha e a distância entre as linhas. A estimação destes parâmetros é feita da seguinte maneira. Primeiro, a imagem é analisada coluna a coluna e são computadas as frequências do comprimento de cada seguimento preto de cada coluna. O parâmetro staff_height é definido como o comprimento de componentes mais frequente. O parâmetro staff_space é definido como a distância entre segmentos pretos mais frequente. A lista de segmentos pretos por coluna é usada também nas próximas etapas do algoritmo.

O método apresentado possui dois níveis de análise para a detecção das linhas. No primeiro, ele busca agrupar localmente pequenos segmentos, chamados de stains, que possuam alta semelhança para caracterizar o início de uma linha. No segundo nível, os stains são expandidos para formar uma linha do compasso de modo a maximizar seu comprimento. Por fim, as linhas que possuem pouca curvatura (menor que 10 graus) são agrupadas usando um critério que leva em conta a posição e o grau de paralelismo entre as retas. Grupos com pelo menos 5 linhas paralelas são identificados como compassos.

Referência completa: Leplumey, I.; Camillerapp, J.; Lorette, G., "A robust detector for music staves," Document Analysis and Recognition, 1993., Proceedings of the Second International Conference on , vol., no., pp.902,905, 20-22 Oct 1993 [IEEExplore (necessita de autenticação :( ]

sábado, 14 de setembro de 2013

Atualização do USP mobile

Continuando o desenvolvimento do USP mobile, adicionei uma tela com os horários das portarias da USP no aplicativo. Aqui está a versão atualizada.

Download Android

Download JavaME/Nokia

O USP mobile é um aplicativo que estou desenvolvendo que reunirá informações úteis para a comunidade Usp. O código está disponível no Github e estou aceitando contribuições de todo tipo. Sugestões são benvindas.

Se você baixou o programa, deixa um comentário aqui no blog.

quarta-feira, 11 de setembro de 2013

Resumo do artigo "An Effective Staff Detection and Removal Technique"

O artigo "An Effective Staff Detection and Removal Technique" de Bolan Su et al trata do problema de detecção e remoção das linhas de compasso em imagens de partitura. Os autores apresentam um novo método que modela o formato das linhas do compasso e utiliza o modelo estimado para a remoção do compasso.

O algoritmo é divido em 4 passos. No primeiro passo é aplicado um filtro 1D nas colunas da imagem que elimina grande parte dos símbolos musicais. No segundo passo, o modelo é estimado a partir da detecção preliminar obtida no primeiro passo. O modelo utilizado é uma sequência (Oi) de deslocamentos verticais, ou seja, a coordenada y do pixel k da linha é obtida somando Ok na coordenada y do pixel k-1. Para tornar o método mais robusto, o elemento Oi do modelo é determinado utilizando informações de todas as linhas presentes na imagem. Além disto, o algoritmo considera não somente o pixel imediatamente vizinho para o cálculo da orientação da linha, mas também os mais próximos das k colunas seguintes. O terceiro passo envolve a superposição da curva Oi encontrada no passo anterior para detectar a posição de cada linha na imagem. Por fim, a quarta etapa remove da imagem os componentes que cruzam as linhas encontradas e são mais compridos verticalmente do que o tamanho da linha detectado.

O método proposto foi testado no dataset CVC-MUSCIMA e comparado com um algoritmo de Line Tracking e com o ISI01-HA (vencedor da competição do ICDAR 2011). O algoritmo apresenta desempenho superior ao algoritmo de Line Tracking, porém inferior ao ISI01-HA. As principais vantagens do novo método seriam sua robustez à deformações que afetem o formato da linha, como curvatura e rotação. O algoritmo possui duas limitações. A primeira é a sua incapacidade de lidar com linhas grossas. A segunda limitação é a falta de precisão do modelo, que muitas vezes não encaixa perfeitamente nas linhas do compasso. Os autores atribuem esta discrepância a erros de interpolação e acreditam que incorporar informação local no modelo possa melhorar a detecção das linhas.

Referência completa: Su, B., Lu, S., Pal, U., & Tan, C. L. (2012, March). Aneffective staff detection and removal technique for musical documents. InDocument Analysis Systems (DAS), 2012 10th IAPR International Workshop on (pp.160-164). IEEE. [Download]