Em sistemas de digitalização de documentos históricos e obras de arte, a nitidez das imagens é fundamental para leitura de textos manuscritos e detalhes ornamentais. O Unsharp Masking (USM) é o algoritmo de realce de nitidez padrão utilizado em scanners profissionais e softwares como Adobe Photoshop, controlado pelo parâmetro \(k\) que determina a intensidade do realce.
Operações em float: Calcular \(\bar{f}\) e \(m\) em ponto flutuante antes de arredondar o resultado final.
\(k = 0\): Sem realce — a saída é idêntica à entrada (exceto pelas bordas).
3.12.10.3 🧠 Fundamentação Teórica
Etapa
Operação
Descrição
1
\(\bar{f} = f * \frac{1}{9}\mathbf{1}_{3\times3}\)
Suavização (baixas frequências)
2
\(m = f - \bar{f}\)
Máscara (altas frequências)
3
\(g = \text{clip}(\text{round}(f + k \cdot m))\)
Realce ponderado
3.12.10.4 📦 Especificação de Entrada e Saída (VPL)
Entrada:
Linha 1: Inteiro \(L\).
Linha 2: Inteiro \(C\).
Linha 3: Real \(k\).
Linhas seguintes: Elementos da matriz original.
Saída:
Matriz realçada \(L \times C\).
3.12.10.5 📌 Exemplos
Entrada
Saída
Observação
3
3
0.0
100 100 100
100 100 100
100 100 100
100 100 100
100 100 100
100 100 100
k=0: sem realce
3
3
1.0
50 50 50
50 200 50
50 50 50
50 50 50
50 255 50
50 50 50
k=1: pixel central realçado e saturado
✨ Simulador EP03_10: Unsharp Masking (USM)g = f + k · m
Ajuste o fator de ganho k, observe o pipeline completo de realce (desfocagem, máscara de alta frequência) e passe o mouse sobre o resultado.
Fator de ganho k:k = 1.0
① Imagem Original fMatriz 5×5 pixels
② Desfocado f̄Média 3 × 3
③ Máscara mm = f − f̄ (Altas Frequências)
④ Resultado g = f + 1.0·mPasse o mouse para inspecionar
Legenda:
Vizinhança 3×3
Pixel Central
Borda (Copiada)
Máscara Positiva/Negativa
Passe o mouse sobre um píxel interno do resultado para rastrear o pipeline completo.
Figura 3.35: Simulador EP03_10: Unsharp Masking (USM)
%%writefile EP03_10.cpp// sua solução
Overwriting EP03_10.cpp
TestSuite("EP03_10.cpp").run()
✔️ EP03_10.cases já existe em casos/
📋 5 caso(s) carregado(s) de casos/EP03_10.cases
🔍 Testando C++: EP03_10.cpp
⚠️ EP03_10.cpp: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.