O que o termo "canal" significa quando usado em relação à computação gráfica?
16
Eu estava estudando terminologia para computação gráfica, e essa declaração surgiu que me confundiu.
A imagem pode ter canais alfa para transparência.
Tentei procurar o significado do termo "canal alfa", mas fiquei realmente confuso com a definição que usava outro conceito chamado "canal". Não tenho muita certeza do que isso significa, então alguém poderia ter a gentileza de me explicar esse termo?
As cores digitais podem ser compostas por três componentes: vermelho, verde e azul. Combine-os e você obtém a cor final, por exemplo. amarelo é 100% vermelho, 100% verde e 0% azul.
O quarto componente é, como você mencionou, transparência. Juntos, eles formam a tupla RGBA(vermelho, verde, azul, alfa) que representa uma imagem.
Agora, em vez de pixels, pense de outra maneira: e se você dividir a imagem em quatro camadas? Você pode separá-los assim:
Todos os pixels vermelhos em uma camada
Todos os pixels verdes em uma camada
Todos os pixels azuis em uma camada
Um valor que indica transparência em uma camada
Essas camadas são realmente chamadas de "canais". Aqui está a aparência deles em uma imagem de exemplo:
Nesta imagem, você pode ver apenas os pixels vermelhos no canal vermelho; da mesma forma para verde e azul. É tudo o que isso significa - uma maneira de pensar nas imagens como "canais" de cores separadas que são combinadas.
Ótima resposta e obrigado pela informação. Eu amo como você usou imagens para explicar o conceito.
Stync
11
Você também pode querer mencionar outros sistemas de cores, porque o aditivo não é o único utilizado
jcora
4
Essas imagens por canal não deveriam ter valores de valor zero (preto) a valor total (por exemplo, vermelho) em vez de preto-> vermelho-> branco (por exemplo), como mostrado? (Algo assim: f.cl.ly/items/2Q2C1z2s331f1T1U341G/images.png )
Slipp D. Thompson
11
@ SlippD.Thompson está certo. Em RGB, o branco é produzido com a intensidade total de cada canal de cores, o que significa que a imagem de ashes999 está um pouco frouxa com as regras.
21714 Alex
4
Eu escolhi essa foto porque é ilustrativa. O OP parece confuso sobre o conceito. Explicar o conceito mais simplesmente parecia mais importante do que encontrar uma imagem exata. Tecnicamente, deve haver quatro camadas em escala de cinza (que é a minha imagem inicial), mas isso é mais confuso.
ashes999
6
O termo vem da definição de "canal" que significa uma porção específica de um espectro de frequência. Nesse caso, os componentes vermelho, verde e azul de uma cor são freqüentemente chamados de "canais" (uma vez que as luzes vermelha, verde e azul são partes do espectro de luz visível).
Como o alfa é outro componente da cor na computação gráfica (embora não esteja estritamente relacionado à luz visível como outras), também é chamado de canal.
Os canais alfa foram inventados pela empresa Industrial Light & Magic, de George Lucas (na verdade, Alvy Ray Smith fez a maior parte do trabalho enquanto trabalhava lá, anteriormente empregado pela Xerox PARC - a quem podemos agradecer por quase tudo na computação moderna!).
Os canais alfa, além de produzir efeitos interessantes como janela transparente, gradientes transparentes e sombras realistas, podem ser usados para operações sub-pixel. De fato, o uso original era porque a computação gráfica da época era péssima. Para sobrepor uma imagem com suavização de serrilhado a um fundo diferente (ou ao fundo de um filme ao vivo), você acaba com bordas em blocos. Isso não serve para um filme, e tentar anti-alias as imagens com os fundos leva muito tempo de CPU. Então .. as bordas da imagem são semi-transparentes (o canal alfa). Isso permite que o plano de fundo seja exibido em densidades variadas - misturando as cores das duas imagens para suavizá-lo. Isso é usado em todos os lugares hoje em dia, por exemplo, para desenhar ícones com bordas muito mais suaves do que a resolução normalmente permitiria - e você não
Os canais alfa são facilmente executados em hardware. As primeiras máquinas de produção de filmes tinham um bit "genlock" (que também estava disponível na Amiga e em algumas máquinas Atari), que era basicamente um pino de saída que alternava da saída do computador para a saída de vídeo. O pino foi acionado por um bit de "transparência" na saída (geralmente nos modos gráficos "hicolor" 5: 5: 5 para RGB e 1 bit para transparência = 16 bits / pixel), o que permitiu a sobreposição fácil do contexto gerado por computador ao vivo vídeo sem digitalizar o vídeo. Mais tarde, isso foi modificado para ser uma saída analógica com um DAC de 8 bits - então, em vez de alternar entre o computador e o vídeo ao vivo, ele foi misturado - removendo as arestas desagradáveis que a técnica de 1 bit usou. Anti-aliasing analógico!
As placas de vídeo modernas podem armazenar várias camadas de informações na memória de uma só vez e usar a camada alfa para misturar várias camadas de transparência alfa no hardware. Isso faz com que seus "sprites" e outros objetos que precisam ser suavizados tenham uma boa aparência. Em vez de misturar com uma cor de fundo fixa, o anti-aliasing usa o canal alfa para misturar em tempo real. Claro, você pode fazer todo tipo de coisa com o canal alfa, mas espero que isso lhe dê um começo. Para mais história, tente a wikipedia.
você poderia fornecer referências / citações ao fato de o AC ter sido inventado pela IL&M?
Há uma boa visão geral do próprio Alvy em seu blog, aqui: alvyray.com/awards/AwardsAcademy96.htm . Isso sugeriria que foi inventado por Alvy Ray e Ed Catmull enquanto estavam na NYIT. Ambos mais tarde fundaram a Pixar.
mvl 23/07
Eu esqueço onde eu originalmente lê-lo, mas wikipedia menciona
Evan Langlois
3
Nenhum dos outros exemplos explica por que é alfa, no entanto. É da expressão em Alpha Compositing :
onde Ca e Cb são os dois valores de cores de entrada e Co é a cor combinada de saída.
A variação do alfa entre 0 e 1 varia a cor entre as imagens compostas frontal e traseira.
(O processamento de imagens também tem "gama", mas não "beta" tanto quanto eu sei)
Todas as imagens têm 1 ou mais "canais" de informação. Por exemplo, o tipo de imagem RGB familiar possui 3 canais de informação: vermelho, verde e azul. Ou seja, todo pixel na imagem possui 3 números associados (se cada número tiver 8 bits, será uma imagem de 24 bits).
Alpha pode adicionar um quarto canal de informações (portanto, um quarto número associado a cada pixel e uma imagem de 32 bits). Esse canal extra pode ser usado para vários propósitos, mas o objetivo mais comum é a transparência.
Os formatos de arquivo comuns com canais alfa são PNG e TGA.
Em muitos formatos de imagem, um pixel é definido como um vetor com 4 componentes. RGB e alfa. Na perspectiva da imagem inteira, você pode selecionar apenas cada componente do pixel, e isso fornece uma série de valores. Se você quiser processar apenas um componente, poderá selecionar o componente de todos os pixels da imagem, e isso geralmente é chamado de canal . Uma coleção de um componente para todos os pixels. Então canal alfa significa coleção do componente alfa. Da mesma forma, a coleção de cada componente RGB pode ser chamada de canal vermelho, canal verde e canal azul.
Um pixel é uma coleção de componentes. Tradicionalmente, esses componentes são vermelhos, verdes e azuis, cada um deles tendo 8 bits de dados.
Como muitas vezes é vantajoso alinhar a memória de determinadas maneiras, elas são agrupadas às vezes em 32 bits de espaço cada. Isso deixa 8 bits de dados extras no final de cada pixel. Como não é vermelho, nem verde, nem azul, ele precisa de um nome - e alfa era um nome relativamente sem sentido.
Agora, quando você tem uma matriz de pixels organizados em um retângulo, obtém o seguinte:
essa sub-seleção de apenas um elemento de cada componente de pixel é chamada de "canal" na imagem. Como os pixels possuem 4 componentes, esta imagem possui 4 canais.
Existem outros formatos de imagem em que não há canal alfa:
e existem formatos com número diferente de bits por componente de pixel (3,5,8,16,32) e alguns possuem bits não uniformes por componente de pixel.
O canal se torna a matriz "virtual" de apenas um componente de pixel. (Eu digo virtual, porque existe um passo entre cada elemento, enquanto matrizes tradicionalmente não têm esse passo)
A parte RGB também não é fixa - você pode ter uma imagem em escala de cinza com ou sem um canal alfa, pode ter uma imagem CMYK (cor Cyan Magenta Yellow, geralmente em um espaço de cores subtrativo), pode ter uma imagem com um uma infinidade de canais de cores diferentes criados por um rastreador de raios especular ou por um instrumento científico.
Embora eu tenha tratado pixels como se eles sempre fossem contíguos, também é possível dividir os canais em vários locais, como este:
ou tenha RGB compactado e A armazenado em um buffer separado.
Isso é incomum em dados ao vivo em jogos, porque as placas gráficas modernas geralmente são projetadas em torno dos pixels RGBA. O RGB pode ser tratado de maneira uniforme e, com cálculos rápidos adjacentes A, pode ser feito a composição de um pixel RGBA sobre um fundo pré-pintado.
O canal alfa é frequentemente usado para informações de transparência. Irritantemente, o valor máximo de alfa às vezes é tratado como transparente e às vezes opaco por diferentes bases de código. Isso novamente é menos comum hoje em dia. O canal alfa também foi usado para a ordenação do buffer z (a que distância o pixel está do visualizador) para permitir o desenho não ordenado de uma cena, e tradicionalmente o mapeamento mip era feito empurrando a imagem com resolução 2x mais 2x (ou 4x menos pixels) o canal alfa da imagem de alta resolução, recursivamente.
Mesmo em um sistema que usa pixels RGBA, o significado desses pixels pode discordar. R mede a quantidade de vermelho que um humano vê ou quantos fótons de vermelho devem ser emitidos? Essa é a diferença entre os espaços de cores lineares e não lineares e afeta a maneira correta de compor os referidos pixels com um canal de transparência.
O termo vem da definição de "canal" que significa uma porção específica de um espectro de frequência. Nesse caso, os componentes vermelho, verde e azul de uma cor são freqüentemente chamados de "canais" (uma vez que as luzes vermelha, verde e azul são partes do espectro de luz visível).
Como o alfa é outro componente da cor na computação gráfica (embora não esteja estritamente relacionado à luz visível como outras), também é chamado de canal.
fonte
Os canais alfa foram inventados pela empresa Industrial Light & Magic, de George Lucas (na verdade, Alvy Ray Smith fez a maior parte do trabalho enquanto trabalhava lá, anteriormente empregado pela Xerox PARC - a quem podemos agradecer por quase tudo na computação moderna!).
Os canais alfa, além de produzir efeitos interessantes como janela transparente, gradientes transparentes e sombras realistas, podem ser usados para operações sub-pixel. De fato, o uso original era porque a computação gráfica da época era péssima. Para sobrepor uma imagem com suavização de serrilhado a um fundo diferente (ou ao fundo de um filme ao vivo), você acaba com bordas em blocos. Isso não serve para um filme, e tentar anti-alias as imagens com os fundos leva muito tempo de CPU. Então .. as bordas da imagem são semi-transparentes (o canal alfa). Isso permite que o plano de fundo seja exibido em densidades variadas - misturando as cores das duas imagens para suavizá-lo. Isso é usado em todos os lugares hoje em dia, por exemplo, para desenhar ícones com bordas muito mais suaves do que a resolução normalmente permitiria - e você não
Os canais alfa são facilmente executados em hardware. As primeiras máquinas de produção de filmes tinham um bit "genlock" (que também estava disponível na Amiga e em algumas máquinas Atari), que era basicamente um pino de saída que alternava da saída do computador para a saída de vídeo. O pino foi acionado por um bit de "transparência" na saída (geralmente nos modos gráficos "hicolor" 5: 5: 5 para RGB e 1 bit para transparência = 16 bits / pixel), o que permitiu a sobreposição fácil do contexto gerado por computador ao vivo vídeo sem digitalizar o vídeo. Mais tarde, isso foi modificado para ser uma saída analógica com um DAC de 8 bits - então, em vez de alternar entre o computador e o vídeo ao vivo, ele foi misturado - removendo as arestas desagradáveis que a técnica de 1 bit usou. Anti-aliasing analógico!
As placas de vídeo modernas podem armazenar várias camadas de informações na memória de uma só vez e usar a camada alfa para misturar várias camadas de transparência alfa no hardware. Isso faz com que seus "sprites" e outros objetos que precisam ser suavizados tenham uma boa aparência. Em vez de misturar com uma cor de fundo fixa, o anti-aliasing usa o canal alfa para misturar em tempo real. Claro, você pode fazer todo tipo de coisa com o canal alfa, mas espero que isso lhe dê um começo. Para mais história, tente a wikipedia.
fonte
Nenhum dos outros exemplos explica por que é alfa, no entanto. É da expressão em Alpha Compositing :
onde Ca e Cb são os dois valores de cores de entrada e Co é a cor combinada de saída.
A variação do alfa entre 0 e 1 varia a cor entre as imagens compostas frontal e traseira.
(O processamento de imagens também tem "gama", mas não "beta" tanto quanto eu sei)
fonte
Todas as imagens têm 1 ou mais "canais" de informação. Por exemplo, o tipo de imagem RGB familiar possui 3 canais de informação: vermelho, verde e azul. Ou seja, todo pixel na imagem possui 3 números associados (se cada número tiver 8 bits, será uma imagem de 24 bits).
Alpha pode adicionar um quarto canal de informações (portanto, um quarto número associado a cada pixel e uma imagem de 32 bits). Esse canal extra pode ser usado para vários propósitos, mas o objetivo mais comum é a transparência.
Os formatos de arquivo comuns com canais alfa são PNG e TGA.
fonte
Em muitos formatos de imagem, um pixel é definido como um vetor com 4 componentes. RGB e alfa. Na perspectiva da imagem inteira, você pode selecionar apenas cada componente do pixel, e isso fornece uma série de valores. Se você quiser processar apenas um componente, poderá selecionar o componente de todos os pixels da imagem, e isso geralmente é chamado de canal . Uma coleção de um componente para todos os pixels. Então canal alfa significa coleção do componente alfa. Da mesma forma, a coleção de cada componente RGB pode ser chamada de canal vermelho, canal verde e canal azul.
fonte
Um pixel é uma coleção de componentes. Tradicionalmente, esses componentes são vermelhos, verdes e azuis, cada um deles tendo 8 bits de dados.
Como muitas vezes é vantajoso alinhar a memória de determinadas maneiras, elas são agrupadas às vezes em 32 bits de espaço cada. Isso deixa 8 bits de dados extras no final de cada pixel. Como não é vermelho, nem verde, nem azul, ele precisa de um nome - e alfa era um nome relativamente sem sentido.
Agora, quando você tem uma matriz de pixels organizados em um retângulo, obtém o seguinte:
às vezes você quer falar apenas sobre uma das cores acima, diga vermelho:
essa sub-seleção de apenas um elemento de cada componente de pixel é chamada de "canal" na imagem. Como os pixels possuem 4 componentes, esta imagem possui 4 canais.
Existem outros formatos de imagem em que não há canal alfa:
e existem formatos com número diferente de bits por componente de pixel (3,5,8,16,32) e alguns possuem bits não uniformes por componente de pixel.
O canal se torna a matriz "virtual" de apenas um componente de pixel. (Eu digo virtual, porque existe um passo entre cada elemento, enquanto matrizes tradicionalmente não têm esse passo)
A parte RGB também não é fixa - você pode ter uma imagem em escala de cinza com ou sem um canal alfa, pode ter uma imagem CMYK (cor Cyan Magenta Yellow, geralmente em um espaço de cores subtrativo), pode ter uma imagem com um uma infinidade de canais de cores diferentes criados por um rastreador de raios especular ou por um instrumento científico.
Embora eu tenha tratado pixels como se eles sempre fossem contíguos, também é possível dividir os canais em vários locais, como este:
ou mesmo
ou tenha RGB compactado e A armazenado em um buffer separado.
Isso é incomum em dados ao vivo em jogos, porque as placas gráficas modernas geralmente são projetadas em torno dos pixels RGBA. O RGB pode ser tratado de maneira uniforme e, com cálculos rápidos adjacentes A, pode ser feito a composição de um pixel RGBA sobre um fundo pré-pintado.
O canal alfa é frequentemente usado para informações de transparência. Irritantemente, o valor máximo de alfa às vezes é tratado como transparente e às vezes opaco por diferentes bases de código. Isso novamente é menos comum hoje em dia. O canal alfa também foi usado para a ordenação do buffer z (a que distância o pixel está do visualizador) para permitir o desenho não ordenado de uma cena, e tradicionalmente o mapeamento mip era feito empurrando a imagem com resolução 2x mais 2x (ou 4x menos pixels) o canal alfa da imagem de alta resolução, recursivamente.
Mesmo em um sistema que usa pixels RGBA, o significado desses pixels pode discordar. R mede a quantidade de vermelho que um humano vê ou quantos fótons de vermelho devem ser emitidos? Essa é a diferença entre os espaços de cores lineares e não lineares e afeta a maneira correta de compor os referidos pixels com um canal de transparência.
fonte