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:
RGBARGBARGBARGBA
RGBARGBARGBARGBA
RGBARGBARGBARGBA
RGBARGBARGBARGBA
às vezes você quer falar apenas sobre uma das cores acima, diga vermelho:
R***R***R***R***
R***R***R***R***
R***R***R***R***
R***R***R***R***
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:
RGBRGBRGBRGB
RGBRGBRGBRGB
RGBRGBRGBRGB
RGBRGBRGBRGB
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:
RRRRGGGGBBBBAAAA
RRRRGGGGBBBBAAAA
RRRRGGGGBBBBAAAA
RRRRGGGGBBBBAAAA
ou mesmo
RRRR
RRRR
RRRR
RRRR
GGGG
GGGG
GGGG
GGGG
BBBB
BBBB
BBBB
BBBB
AAAA
AAAA
AAAA
AAAA
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.