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.
Dimensões: Ler os inteiros \(L\) (linhas) e \(C\) (colunas).
Dados: Ler a matriz de pixels \(f\) (valores \(\in [0, 255]\)).
Máscara: Ler a matriz binária \(m\) (valores: apenas 0 ou 255).
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.
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áriag = 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.cpp// sua solução
Overwriting EP03_05.cpp
TestSuite("EP03_05.cpp").run()
✔️ EP03_05.cases já existe em casos/
📋 5 caso(s) carregado(s) de casos/EP03_05.cases
🔍 Testando C++: EP03_05.cpp
⚠️ EP03_05.cpp: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.