Ajuste os parâmetros de contraste (α) e brilho (β) para aplicar a transformação pontual de intensidade e observe o truncamento de saturação no intervalo [0, 255].
2.12.1 EP02_01 ☀️ Ajuste de Brilho e Contraste
Nesta atividade, o objetivo é implementar um operador de ponto para transformação linear de intensidade, aplicando o ajuste dinâmico de brilho e contraste em uma imagem digital.
2.12.1.1 📋 Diretrizes de Implementação
O algoritmo deve seguir o fluxo de execução abaixo:
- Dimensões: Ler os inteiros \(L\) (linhas) e \(C\) (colunas) da matriz.
- Parâmetros: Ler o valor real \(\alpha\) (fator de contraste) e o inteiro \(\beta\) (fator de brilho).
- Dados: Ler os valores inteiros da matriz original.
- Mapeamento: Para cada pixel \(p\), calcular o novo valor \(p'\) pela equação:
\[p' = \text{clip}(\text{round}(\alpha \cdot p + \beta))\]
- Saída: Exibir a matriz resultante com as dimensões \(L \times C\).
2.12.1.2 📌 Restrições Computacionais
- Arredondamento (Round): Aplica-se o arredondamento matemático para o inteiro mais próximo antes da conversão de tipo.
- Saturação (Clipping): Os valores devem ser confinados ao intervalo \([0, 255]\) para preservar o padrão de 8 bits:
\[\text{clip}(x) = \max(0, \min(255, x))\]
- Simulação: O efeito dos parâmetros \(\alpha\) e \(\beta\) na correção histogramática pode ser observado na Figura 2.12.
2.12.1.3 🧠 Fundamentação Teórica
As alterações modificam o histograma da imagem para ajustar o perfil de iluminação e a distinção tonal.
| Parâmetro | Função | Impacto Visual |
|---|---|---|
| \(\alpha\) (Alpha) | Escalar | Modula o Contraste. Se \(\alpha > 1\), expande o histograma; se \(0 \le \alpha < 1\), comprime. |
| \(\beta\) (Beta) | Aditiva | Modula o Brilho. Se positivo, translada o histograma para a direita; se negativo, para a esquerda. |
| \(\text{clip}\) | Limitador | Restringe a faixa dinâmica, impedindo erros de underflow e overflow. |
2.12.1.4 📦 Especificação de Entrada e Saída (VPL)
Entrada:
- Linha 1: Inteiro \(L\).
- Linha 2: Inteiro \(C\).
- Linha 3: Valores de
alpha(\(\alpha\)) ebeta(\(\beta\)). - Linhas seguintes: Elementos numéricos da matriz original.
Saída:
- Matriz transformada estruturada em \(L\) linhas e \(C\) colunas.
2.12.1.5 📌 Exemplos
A tabela a seguir apresenta um exemplo prático do comportamento esperado do algoritmo, destacando a atuação dos operadores de arredondamento e saturação.
| Entrada | Saída | Observação |
|---|---|---|
| 1 4 1.5 -30 0 100 180 255 |
0 120 240 255 | Note o efeito de saturação no último pixel |
Executando os Testes
Para avaliar os testes, execute TestSuite("EP02_01.extensão").run() numa nova célula, trocando a extensão pela da linguagem usada (.py, .java, .c, .cpp, .js ou .r). O sistema baixa os casos de teste do GitHub, executa o programa e calcula a nota automaticamente.