TNI+VO · Exercice de Programmation

EP01_11 — 📈 Analyse de voisinage : Filtre de maximum 1D

1.17.11 EP01_11 📈 Analyse de voisinage : Filtre de maximum 1D

Dans cette activité, vous devez implémenter un filtre morphologique simple de maximum opérant sur un signal unidimensionnel (vecteur).

  • Lisez un entier n, représentant la taille du vecteur.
  • Lisez les n éléments entiers qui composent le vecteur original v1.
  • Créez un nouveau vecteur v2, où chaque position \(i\) est le résultat de la comparaison entre l’élément courant et ses voisins immédiats :

\[v2[i] = \max(v1[i-1],\; v1[i],\; v1[i+1])\]

📌 Important :

  • Bords : Aux extrémités du vecteur (indices \(0\) et \(n-1\)), le voisinage ne contient que deux éléments (l’élément lui-même et le seul voisin disponible). À l’indice \(0\), comparez uniquement \(v1[0]\) et \(v1[1]\). Au dernier indice, comparez uniquement \(v1[n-2]\) et \(v1[n-1]\).
  • Sortie : Affichez l’en-tête « v2 : » suivi des valeurs du vecteur résultant, une par ligne.
  • Consultez un simulateur interactif pour cette question dans la Figure 1.21 (survolez les résultats avec la souris pour visualiser la fenêtre de voisinage utilisée dans le calcul).

1.17.11.1 🧠 Pourquoi analyser les voisins ?

En traitement d’images, la valeur d’un pixel est rarement isolée ; elle dépend du contexte qui l’entoure. Le Filtre de Maximum est la base de l’opération de Dilatation en morphologie mathématique, servant à :

Fonction Effet visuel
Rehaussement Étend les structures brillantes et « épaissit » les objets clairs.
Suppression du bruit Élimine les petits points noirs (bruit « sel et poivre » sombre).
Remplissage Ferme les petits trous ou lacunes dans les formes binaires.

1.17.11.2 📋 Tâche (spécification pour VPL)

Entrée :

Un entier n.

Sur les lignes suivantes, les n éléments entiers du vecteur.

Sortie :

La chaîne v2 : sur la première ligne.

Sur les lignes suivantes, chaque élément de v2 (un par ligne).

1.17.11.3 📌 Exemples

Entrée Sortie Observation
5
10
20
5
30
15
v2 :
20
20
30
30
30
À l’indice 1 : max(10, 20, 5) = 20
📈 Simulateur EP01_11 : Filtre de Maximum Local 1D Fenêtre 1x3

Cliquez sur les éléments de v1 (Entrée) pour générer de nouvelles valeurs individuelles ou passez la souris sur les cellules de v2 (Résultat) pour inspecter la fenêtre locale de voisinage.

Vecteur v1 (Entrée)
⬇️
Vecteur v2 (Résultat du Maximum)
Passez le curseur de la souris sur une cellule du vecteur v2 pour analyser la fenêtre de maximum local.
Figure 1.21: Simulateur EP01_11 : Filtre de Maximum Local 1D (Voisinage 1x3 avec Condition de Bord)
%%writefile EP01_11.cpp
// your solution
Overwriting EP01_11.cpp
TestSuite("EP01_11.cpp").run()
✔️ EP01_11.cases existe déjà dans casos/
📋 7 cas chargé(s) depuis casos/EP01_11.cases

🔍 Test de C++ : EP01_11.cpp
⚠️ EP01_11.cpp : fichier vide (moins de 3 lignes). Tests ignorés.