PDI+VC · Ejercicio de Programación

EP03_05 — 🔲 Aplicación de Máscara AND Binaria

3.12.5 EP03_05 🔲 Aplicación de Máscara AND Binaria

En sistemas de inspección industrial por visión por computadora, es necesario aislar regiones de interés (ROI) en imágenes de piezas para verificar defectos de fabricación. La operación AND bit a bit con una máscara binaria es el mecanismo fundamental para recortar exactamente el área de inspección, poniendo a cero todos los píxeles fuera de ella.

Ver en Figura 3.30 una simulación de este EP.

3.12.5.1 📋 Directrices de Implementación

  1. Dimensiones: Leer los enteros \(L\) (filas) y \(C\) (columnas).
  2. Datos: Leer la matriz de píxeles \(f\) (valores \(\in [0, 255]\)).
  3. Máscara: Leer la matriz binaria \(m\) (valores: solo 0 o 255).
  4. Mapeo: Para cada píxel \((i,j)\), aplicar el AND bit a bit:

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

donde \(255 =\) 11111111 y \(0 =\) 00000000 en binario.

  1. Salida: Mostrar la matriz resultante \(L \times C\).

3.12.5.2 📌 Restricciones Computacionales

  • AND con 255: \(p \; \text{AND} \; 255 = p\) (todos los bits preservados).
  • AND con 0: \(p \; \text{AND} \; 0 = 0\) (todos los bits puestos a cero).
  • Máscara: Los únicos valores posibles en la máscara son 0 y 255.
  • Implementación: En Python, el AND bit a bit entre enteros usa el operador &.

3.12.5.3 🧠 Fundamentación Teórica

Píxel \(f\) Máscara \(m\) Resultado \(f\) AND \(m\)
cualquier \(v\) 255 (11111111) \(v\) (preservado)
cualquier \(v\) 0 (00000000) 0 (puesto a cero)

3.12.5.4 📦 Especificación de Entrada y Salida (VPL)

Entrada:

  • Línea 1: Entero \(L\).
  • Línea 2: Entero \(C\).
  • Líneas siguientes: Elementos de \(f\) (\(L\) líneas).
  • Líneas siguientes: Elementos de \(m\) (\(L\) líneas con valores 0 o 255).

Salida:

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

3.12.5.5 📌 Ejemplos

Entrada Salida Observación
2
3
100 150 200
50 80 120
255 255 0
0 255 255
100 150 0
0 80 120
La máscara selecciona la región
1
4
10 20 30 40
255 0 255 0
10 0 30 0 Alternado preservado/puesto a cero
⬛ Simulador EP03_05: Máscara AND Binaria g = f AND m

Haz clic en las celdas de la Máscara m para alternar entre transparente (255) y bloqueante (0), aplicando la operación lógica píxel a píxel.

Imagen f (0–255)
Máscara m (Clic para Alternar)
Resultado g = f AND m
—
—conservados
—puestos a cero
—visible
Leyenda:
255
Transparente (conservado)
0
Bloqueante (puesto a cero)
g(i,j) = f(i,j) & m(i,j)
Figura 3.30: Simulador EP03_05: Aplicación de Máscara AND Binaria
%%writefile EP03_05.py
# Código de Python
Overwriting EP03_05.py
TestSuite("EP03_05.py").run()
✔️ EP03_05.cases ya existe en casos/
📋 5 caso(s) cargado(s) de casos/EP03_05.cases

🔍 Probando Python: EP03_05.py
⚠️ EP03_05.py: archivo vacío (menos de 3 líneas). Pruebas omitidas.