Operações Pontuais & Histogramas (PointAndHistograms.cs)
As Operações Pontuais constituem a classe elementar e mais rápida de processamento de imagens.
Nelas, a nova cor de um pixel depende exclusivamente da cor original daquele mesmo ponto , sem depender dos vizinhos:
Onde é a função de transformação de intensidade.
1. Ajuste Linear de Brilho
A Analogia do Interruptor com Dimmer:
O brilho funciona como girar o botão dimmer de uma lâmpada: todos os pontos da imagem recebem um valor fixo a mais (ou a menos) de luz:
- : Clareia a imagem uniformemente.
- : Escurece a imagem.
2. Ajuste de Contraste com Pivô Central
A Analogia do Elástico Esticado:
O contraste funciona como puxar um elástico fixo no meio (). Os tons claros são esticados para ficarem ainda mais claros, e os escuros são esticados para ficarem ainda mais escuros:
- : Aumenta o contraste (separa mais os tons claros e escuros).
- : Reduz o contraste (aproxima todos os tons do cinza neutro).
3. Otimização por Look-Up Tables (LUTs)
A Analogia da Tabuada Pronta:
Em vez de calcular a mesma fórmula matemática vezes para cada pixel, calculamos uma tabela de respostas pronta de 0 a 255 (apenas 256 números) antes de começar. Durante o processamento, o computador apenas consulta o valor na tabela instantaneamente ():
// 1. Tabela pre-calculada de 256 posicoes:byte[] lut = new byte[256];for (int i = 0; i < 256; i++){ double val = contrastFactor * (i - 128.0) + 128.0; lut[i] = (byte)Math.Clamp(val, 0, 255);}
// 2. Consulta direta nos pixels:Parallel.For(0, height, y =>{ byte* pDst = dst.BackBuffer + (y * dst.Stride); byte* pSrc = src.BackBuffer + (y * src.Stride); for (int x = 0; x < width; x++) { int px = x * 4; pDst[px + 0] = lut[pSrc[px + 0]]; // B pDst[px + 1] = lut[pSrc[px + 1]]; // G pDst[px + 2] = lut[pSrc[px + 2]]; // R }});4. Correção Gamma (Power-Law Transform)
A percepção de claridade dos olhos humanos segue uma curva exponencial:
- (ex: ): Clareia sombras e áreas escuras suavemente.
- (ex: ): Aprofunda sombras e acentua realces.
5. Histograma e Equalização por CDF Acumulada
O histograma é o gráfico que mostra quantos pixels de cada tom de cinza (de 0 a 255) existem na imagem.
A Equalização de Histograma redistribui as intensidades para que os tons fiquem bem espalhados por toda a faixa dinâmica:
- Calcula o Histograma .
- Calcula a Função de Distribuição Acumulada (CDF):
- Mapeia cada tom de pixel original para o valor equalizado:
👉 Próximo Passo: Aprenda sobre Filtros Espaciais e Convoluções 2D.