PDI+VC · Exercício de Programação

EP03_05 — 🔲 Aplicação de Máscara AND Binária

3.12.5 EP03_05 🔲 Aplicação de Máscara AND Binária

Em sistemas de inspeção industrial por visão computacional, é necessário isolar regiões de interesse (ROI) em imagens de peças para verificar defeitos de fabricação. A operação AND bit a bit com uma máscara binária é o mecanismo fundamental para recortar exatamente a área de inspeção, zerando todos os pixels fora dela.

Ver na Figura 3.30 uma simulação deste EP.

3.12.5.1 📋 Diretrizes de Implementação

  1. Dimensões: Ler os inteiros \(L\) (linhas) e \(C\) (colunas).
  2. Dados: Ler a matriz de pixels \(f\) (valores \(\in [0, 255]\)).
  3. Máscara: Ler a matriz binária \(m\) (valores: apenas 0 ou 255).
  4. Mapeamento: Para cada pixel \((i,j)\), aplicar o AND bit a bit:

\[ g(i,j) = f(i,j) \;\text{AND}\; m(i,j) \]

onde \(255 =\) 11111111 e \(0 =\) 00000000 em binário.

  1. Saída: Exibir a matriz resultante \(L \times C\).

3.12.5.2 📌 Restrições Computacionais

  • AND com 255: \(p \; \text{AND} \; 255 = p\) (todos os bits preservados).
  • AND com 0: \(p \; \text{AND} \; 0 = 0\) (todos os bits zerados).
  • Máscara: Os únicos valores possíveis na máscara são 0 e 255.
  • Implementação: Em Python, o AND bit a bit entre inteiros usa o operador &.

3.12.5.3 🧠 Fundamentação Teórica

Pixel \(f\) Máscara \(m\) Resultado \(f\) AND \(m\)
qualquer \(v\) 255 (11111111) \(v\) (preservado)
qualquer \(v\) 0 (00000000) 0 (zerado)

3.12.5.4 📦 Especificação de Entrada e Saída (VPL)

Entrada:

  • Linha 1: Inteiro \(L\).
  • Linha 2: Inteiro \(C\).
  • Linhas seguintes: Elementos de \(f\) (\(L\) linhas).
  • Linhas seguintes: Elementos de \(m\) (\(L\) linhas com valores 0 ou 255).

Saída:

  • Matriz resultante \(L \times C\).

3.12.5.5 📌 Exemplos

Entrada Saída Observação
2
3
100 150 200
50 80 120
255 255 0
0 255 255
100 150 0
0 80 120
Máscara seleciona região
1
4
10 20 30 40
255 0 255 0
10 0 30 0 Alternado preservado/zerado
⬛ Simulador EP03_05: Máscara AND Binária g = f AND m

Clique nas células da Máscara m para alternar entre passante (255) e bloqueante (0), aplicando a operação lógica pixel a pixel.

Imagem f (0–255)
Máscara m (Clique para Alternar)
Resultado g = f AND m
—
—preservados
—zerados
—visível
Legenda:
255
Passante (preservado)
0
Bloqueante (zerado)
g(i,j) = f(i,j) & m(i,j)
Figura 3.30: Simulador EP03_05: Aplicação de Máscara AND Binária
%%writefile EP03_05.py
# Código Python
Writing EP03_05.py
TestSuite("EP03_05.py").run()
✔️ EP03_05.cases já existe em casos/
📋 5 caso(s) carregado(s) de casos/EP03_05.cases

🔍 Testando Python: EP03_05.py
⚠️ EP03_05.py: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.