O que causa o aliasing?

47

Eu sempre ouço falar sobre alias e anti-alias e sei como é, mas o que não entendo é o que causa isso. É um fenômeno físico? Ou um numérico?

Se isso ajuda a explicar, tenho algum conhecimento de programação, mas não em videogames ou gráficos.

Kruncho
fonte

Respostas:

60

É um fenômeno físico? ou numérico?

Esta questão meio que implica para mim que você realmente não sabe o que significa aliasing / anti-aliasing. Quero dizer, você diz que "sabe como é", mas se realmente soubesse o que os termos significam, provavelmente perceberia que sua pergunta não faz sentido. O alias é um efeito colateral de como os gráficos de computador são renderizados, e os gráficos de computador são, por definição, fenómenos físicos.

"Aliasing" refere-se apenas à aparência da escada em linhas angulares porque os gráficos de computador são na verdade compostos de muitos pequenos quadrados em uma grade. Aqui está uma imagem para ilustrar o que estou falando: insira a descrição da imagem aqui

Esse é um problema sempre que você renderiza os pixels em uma imagem, esteja desenhando à mão livre ou escrevendo um algoritmo para calcular os pixels de um polígono 3D. É apenas um efeito colateral do fato de a imagem ser uma grade quadrada de pixels. "Anti-aliasing" é quando você disfarça a aparência da escada misturando as cores ao longo dos pixels da aresta.

jhocking
fonte
18
@ Kruncho Nunca se desculpe por estar errado, a menos que você esteja ensinando seus erros a outras pessoas! Desculpe-se apenas quando você não tenta entender ou não deseja ser corrigido. Seu erro realmente ajudou a esclarecer o que exatamente você estava pedindo para saber: ('como' o alias acontece nos gráficos de computador?). Aliás, embora essa resposta seja melhor para ilustrar o que, como e por que, é uma questão numérica. Você pode pensar nisso como uma limitação de tentar representar números fracionários usando apenas números inteiros inteiros. Não há meio pixel, etc. Então você acaba com imagens com aparência de bloco.
Fuzzy Logic
5
@jhocking Uma correção pedante: a quadratura dos pixels não é realmente relevante. O aliasing aconteceria da mesma forma se cada pixel fosse um ponto redondo do mesmo tamanho.
Fuzzy Logic
10
@jhocking "Grade quadrada" também não será suficiente. Você ainda obteria alias (parecendo um pouco diferente) se seus pixels fossem organizados em uma grade hexagonal. Tudo o que importa é que os pixels sejam organizados em um padrão regular e tenham um tamanho diferente de zero, e ambas as condições sejam verdadeiras para qualquer tecnologia de exibição concebível.
Mike Scott
3
Você está se prendendo à palavra "quadrado" quando isso é apenas um descritor para "grade".
Jhocking 19/08/2015
11
@ MikeScott: Mesmo com pixels dispostos de maneira irregular, o alias será exibido. :))) A condição importante para o aliasing aparecer é que a frequência máxima do sinal original (a imagem original) seja superior a 2 * (1 / T) (onde T é o intervalo entre as amostras = a distância entre os pixels ) --- Quando a imagem original tem bordas nítidas (como a linha preta em fundo branco), sua frequência máxima é infinita.
precisa saber é
121

A resposta aceita não é estritamente correta, apesar de abordar o uso mais comum em computação gráfica. O alias é um conceito fundamental no processamento de sinais e a teoria matemática anterior a telas de computador. Também não é realmente verdade que "é um efeito colateral do fato de os pixels serem quadrados". O aliasing existe sempre que você amostrar discretamente um sinal a uma taxa abaixo da taxa Nyquist para esse sinal e afetar o áudio digital, assim como imagens e muitos outros tipos de sinais amostrados discretamente. O aliasing na computação gráfica é um efeito colateral da amostragem discreta, não da forma dos pixels.

Anti-aliasing em computação gráfica é um tópico profundo e complexo e há muito mais do que apenas anti-aliasing de borda. Novamente, há muita teoria subjacente ao processamento de sinais e é uma área ativa de pesquisa em computação gráfica como anti-alias de forma eficaz, não apenas para bordas, mas também para aliasing temporal, para aliasing ao reconstruir um BRDF em pixel shaders, para shadow bordas e em muitas outras áreas. O mapeamento mip de texturas em gráficos 3D é uma técnica anti-aliasing bem estabelecida que está abordando um problema importante que não seja o anti-aliasing de borda, por exemplo.

É realmente um fenômeno matemático mais do que físico, mas aparece na engenharia em muitas áreas além da computação gráfica. Também não o descreveria como um fenômeno numérico - é resultado de amostragem discreta, não da representação discreta de valores numéricos em um computador, embora isso também possa causar efeitos alternativos. Compreender os fundamentos do processamento de sinal é uma boa base para entender como o aliasing se manifesta na computação gráfica e para entender como proceder para reduzi-la.

mattnewport
fonte
6
Por um lado, ei, eu aprendi algo novo hoje, nunca ouvi falar de alias em nenhum contexto além das bordas gráficas. Dito isto, esse detalhe técnico adicional não parece contradizer a explicação "é um efeito colateral do fato de os pixels serem quadrados". "Amostragem discreta" é apenas uma maneira elegante de dizer "a borda é na verdade um monte de pixels discretos, não uma linha contínua".
jhocking
15
+1 para correção técnica. Embora um pouco técnico demais, dado o nível da pergunta e, na verdade, não trata da questão implícita. A resposta aceita é mais adequada à intenção da pergunta. Aprendi algo novo, porém, assim graças para a elaboração :)
Lógica Fuzzy
6
@jhocking desculpe, nós, programadores gráficos, tendemos a ficar um pouco excitados com o aliasing :) Acho que sua resposta aborda a pergunta, mas se alguém quiser se aprofundar mais em computação gráfica, acho útil entender que o aliasing é um fenômeno matemático com um monte de teoria por trás disso. Tudo o que detalhes técnicos vem a calhar para o objetivo final de fazer fotos bonitas em nossos jogos :)
mattnewport
4
@jhocking O ponto é que não importa a forma dos pixels - portanto, não é um efeito colateral do fato de os pixels serem quadrados , é um efeito colateral do fato de os pixels não mudarem de cor extensão. E de qualquer maneira, um pixel não é um pequeno quadrado .
Daniel Wagner
1
Sua resposta está faltando imagens, caso contrário, seria definitivamente a aceita. Além do exemplo de suavização de borda, ele precisa: 1) gif animado de rodas de carro girando no sentido horário e subitamente parando e mudando de direção. 2) um tabuleiro de xadrez 3D (você conhece o que vai ao infinito) ... Também estudei processamento de sinais.
MartinTeeVarga
68

Adicionando as outras duas respostas, aqui está uma explicação mais intuitiva do que acontece.

Alias ​​em um polígono 2D

Os quadrados da grade representam pixels. O polígono vermelho à esquerda é a forma que está sendo desenhada, representada internamente como uma sequência de pontos. Quando é renderizado, é convertido de uma lista de pontos em um buffer de cores de pixel. A amostragem discreta determina quais pixels são escuros e quais pixels são claros, com base em quanto do polígono cobre cada pixel.

Para responder sua pergunta, esse é um fenômeno numérico / matemático porque as informações sobre a forma original são perdidas devido à aproximação.

Antialiasing

Anti-aliasing é quando a renderização tenta corrigir o aliasing, tornando os pixels parcialmente cobertos menos intensos.

aebabis
fonte
5
Aqui está a primeira resposta que realmente explica o que está acontecendo. Bem feito.
Beska
1
"tornar os pixels parcialmente cobertos menos intensos" não é exatamente como eu o entendo. Acredito que a maioria dos algoritmos de anti-aliasing aplica um filtro passa-baixo (o mesmo que um filtro de desfoque), às vezes em todo o quadro renderizado (como no FXAA) ou algoritmos mais inteligentes executam somente nos limites das bordas. O MSAA faz isso de uma maneira diferente, mas o efeito geral continua sendo o de um LPF sobre os limites da borda rígida.
Luke
1
@ Lucas Não pretendia que o último parágrafo fosse uma explicação de como as coisas funcionam; está apenas descrevendo o resultado do anti-aliasing. "Intenso" não é o termo correto a ser usado, mas se aplica quando a suavização de serrilhado é feita em uma forma cuja cor é mais intensa que o fundo. Era tudo o que eu estava dizendo.
aebabis
3

No campo de processamento de sinal, aliasing refere-se à identificação incorreta da frequência do sinal. Por exemplo, devido à falta de consideração adequada na etapa de subamostragem, isso pode levar à geração de erros e distorção. Pode ser generalizado para o sinal discreto 2D, como uma imagem.

user70164
fonte