Dans les systèmes d’inspection industrielle par vision par ordinateur, il est nécessaire d’isoler les régions d’intérêt (ROI) dans les images de pièces afin de vérifier les défauts de fabrication. L’opération ET bit à bit avec un masque binaire est le mécanisme fondamental pour découper exactement la zone d’inspection, en mettant à zéro tous les pixels en dehors de celle-ci.
Dimensions : Lire les entiers \(L\) (lignes) et \(C\) (colonnes).
Données : Lire la matrice de pixels \(f\) (valeurs \(\in [0, 255]\)).
Masque : Lire la matrice binaire \(m\) (valeurs : uniquement 0 ou 255).
Mappage : Pour chaque pixel \((i,j)\), appliquer le ET bit à bit :
\[
g(i,j) = f(i,j) \;\text{ET}\; m(i,j)
\]
où \(255 =\)11111111 et \(0 =\)00000000 en binaire.
Sortie : Afficher la matrice résultante \(L \times C\).
3.12.5.2 📌 Contraintes de calcul
ET avec 255 :\(p \; \text{ET} \; 255 = p\) (tous les bits sont préservés).
ET avec 0 :\(p \; \text{ET} \; 0 = 0\) (tous les bits sont mis à zéro).
Masque : Les seules valeurs possibles dans le masque sont 0 et 255.
Implémentation : En Python, le ET bit à bit entre entiers utilise l’opérateur &.
3.12.5.3 🧠 Fondement théorique
Pixel \(f\)
Masque \(m\)
Résultat \(f\) ET \(m\)
n’importe quel \(v\)
255 (11111111)
\(v\) (préservé)
n’importe quel \(v\)
0 (00000000)
0 (mis à zéro)
3.12.5.4 📦 Spécification d’entrée et de sortie (VPL)
Entrée :
Ligne 1 : Entier \(L\).
Ligne 2 : Entier \(C\).
Lignes suivantes : Éléments de \(f\) (\(L\) lignes).
Lignes suivantes : Éléments de \(m\) (\(L\) lignes avec valeurs 0 ou 255).
Sortie :
Matrice résultante \(L \times C\).
3.12.5.5 📌 Exemples
Entrée
Sortie
Observation
2
3
100 150 200
50 80 120
255 255 0
0 255 255
100 150 0
0 80 120
Le masque sélectionne la région
1
4
10 20 30 40
255 0 255 0
10 0 30 0
Alternance préservé/mis à zéro
⬛ Simulateur EP03_05 : Masque AND binaireg = f ET m
Cliquez sur les cellules du Masque m pour alterner entre passant (255) et bloquant (0), en appliquant l’opération logique pixel par pixel.
Image f (0–255)
Masque m (Cliquer pour Alterner)
Résultat g = f ET m
—
—conservés
—mis à zéro
—visible
Légende :
255
Passant (conservé)
0
Bloquant (mis à zéro)
g(i,j) = f(i,j) & m(i,j)
Figure 3.30: Simulateur EP03_05: Application de masque AND binaire
%%writefile EP03_05.cpp// your solution
Overwriting EP03_05.cpp
TestSuite("EP03_05.cpp").run()
✔️ EP03_05.cases existe déjà dans casos/
📋 5 cas chargé(s) depuis casos/EP03_05.cases
🔍 Test de C++ : EP03_05.cpp
⚠️ EP03_05.cpp : fichier vide (moins de 3 lignes). Tests ignorés.