Ajuste a intensidade dos canais Vermelho (R), Verde (G) e Azul (B) para observar como cada componente contribui ponderadamente para o valor final de luminância em níveis de cinza.
1.17.6 EP01_06 🎨 Conversão RGB → Tons de Cinza (ITU-R BT.601)
Nesta atividade, você deve escrever um programa que converta pixels coloridos (RGB) para tons de cinza utilizando a ponderação fisiológica do padrão ITU-R BT.601.
- Leia dois inteiros L e C, representando o número de linhas e colunas.
- Leia L × C triplas de inteiros, onde cada tripla representa os canais R (Red), G (Green) e B (Blue) de um pixel.
- Para cada pixel, calcule o valor de cinza (\(g\)) usando a fórmula:
\[g = \text{round}(0.299 \times R + 0.587 \times G + 0.114 \times B)\]
- Imprima a matriz resultante (L linhas e C colunas) contendo os valores inteiros convertidos.
📌 Importante:
- Utilize a função
round()da sua linguagem para garantir o arredondamento correto para o inteiro mais próximo. - A saída deve conter apenas os valores de cinza, mantendo a estrutura de matriz (separados por espaço na linha).
- Ver um simulador interativo para esta questão na Figura 1.16 (ajuste os sliders para ver como cada cor contribui para o brilho final).
1.17.6.1 🧠 Por que não usar apenas a média?
O olho humano não percebe todas as cores com a mesma intensidade. Somos muito mais sensíveis ao Verde do que ao Azul devido à nossa evolução biológica. O padrão ITU-R BT.601 utiliza pesos específicos para criar uma imagem em cinza que pareça naturalmente correta para nossa visão:
| Canal | Peso | Percepção Humana |
|---|---|---|
| 🟢 Verde | 58.7% | Máxima sensibilidade (distinção de folhagens). |
| 🔴 Vermelho | 29.9% | Sensibilidade média. |
| 🔵 Azul | 11.4% | Baixa sensibilidade (tons mais escuros). |
1.17.6.2 📋 Tarefa (especificação para VPL)
Entrada:
A primeira linha contém o inteiro L.
A segunda linha contém o inteiro C.
As linhas seguintes contêm triplas de inteiros R G B para cada pixel.
Saída:
A matriz de cinzas com L linhas e C colunas.
1.17.6.3 📌 Exemplos
| Entrada | Saída | Observação |
|---|---|---|
| 1 3 255 0 0 0 255 0 0 0 255 |
76 150 29 | Note como o Verde (150) é mais brilhante que o Azul (29) |
🎨 Simulador EP01_06: Percepção de Cor & Pesos ITU-R BT.601
RGB → Grayscale
AJUSTE DOS CANAIS DE COR
80
180
30
Original RGB
Tons de Cinza
💡
O canal Verde (G) possui o maior peso (0.587) devido à maior sensibilidade espectral do sistema visual humano aos comprimentos de onda do verde.
%%writefile EP01_06.py
# sua soluçãoWriting EP01_06.py
TestSuite("EP01_06.py").run()✔️ EP01_06.cases já existe em casos/
📋 7 caso(s) carregado(s) de casos/EP01_06.cases
🔍 Testando Python: EP01_06.py
⚠️ EP01_06.py: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.