
Resolvendo o aliasing
Monitores LCD, como os de notebooks, são os mais afetados por esse problema. Para resolver esse problema via hardware, a única alternativa é aumentar a quantidade de pixles que podem ser colocados em uma área. Em outras palavras, aumentar a resolução. Porém, quanto maior o número de pixles, mais instável é a imagem, uma vez que a varredura de atualização horizontal deve aumentar também. E

Outra forma de reduzir o aliasing é através de software. Através do software, não resolvemos o problema, mas conseguimos criar uma ilusão óptica, que simula um resultado satisfatório. Quando desenhamos uma diagonal na tela, sempre teremos, uma estrutura parecida com uma escada, como ao lado. Não conseguimos reduzir esse "serrilhado" porque, cada degrau dessa escada é um pixel - não existe um nível menor de pintura. Assim, a técnica de antialiasing baseada em software tenta resolver esse problema adicionando pixels adjacentes à escada. Esses pixels adjacentes possuem tonalidades de cores intermediárias entre o pixles pintado e o fundo da imagem.
Quando essa imagem é vista de muito perto, notamos os pixels adjacentes. Mas quando a imagem é vista de longe (uso normal do monitor), esses pixels adjacentes são fundidos com os pixels pintados e o nosso cérebro encarrega-se de fazer a ilusão para nós. O resultado é uma imagem sem ruído.
Antialiasing no Windows
Quem utiliza o Windows deve conhecer o chamado ClearType Tunnig. Ele não é padrão do sistema operacional, mas pode ser instalado como integrante do pacote Power Toys. Uma vez instalado, é possível configurar o nível do antialiasing a ser aplicado no monitor. Novamente, para usuários de monitores LCD, esse recurso é fundamental, melhorando consideravelmente a experiência do usuário.
Antialiasing no Java
E agora o fundamento desse post. O Java, historicamente, não se preocupa com esse problema de aliasing. Talvez porque na época de sua criação os monitores LCD eram quase inexistentes, e esse problema não era detectável. Hoje, porém, uma aplicação Java Swing sofre muito com o aliasing. Java nunca pode resolver esse problema porque a solução de antialiasing dos sistemas operacionais é algo implementado em baixo nível. Em outras palavras, Java não poderia ter uma solução multiplataforma que operasse em todos os locais, uma vez que nem todos os sistemas operacionais suportados pela JDK têm um mecanismo de antialiasing.
Felizmente, o release 6 do Java resolve esse problema. E mais, a solução implementada é totalmente Java. Parte da API 2D do Swing foi reescrita e agora os algoritmos de renderização implementam a técnica dos pixels adjacentes descritos acima. Assim, para quem usa uma aplicação Java Swing, a experiência será bem superior.
Abaixo, tenho dois screenshots da mesma aplicação. Uma rodando sobre o Java 5 e a outra sobre o Java 6.
Comentários finais
O antialiasing é uma técnica de redução de ruído das imagens. Podendo se implementado por hardware ou software, alguns sistemas operacionais, como o WindowsXP, possuem suporte nativo
0 comentários:
Postar um comentário