6.14.2 EP06_02 🟢 Filtrage des marqueurs par circularité
Après la segmentation d’une image, il est courant que plusieurs composants connexes soient identifiés. Dans des applications telles que la rectification de documents, seuls certains de ces composants correspondent aux marqueurs de référence utilisés pour l’alignement de l’image. Un critère fréquemment employé pour sélectionner ces marqueurs est la circularité, qui mesure à quel point la forme d’un composant est proche d’un cercle.
Dans cet exercice, chaque composant est décrit par son aire \(A\) et son périmètre \(P\). L’objectif est de calculer sa circularité et de décider, à partir d’un seuil fourni, si le composant doit être accepté ou rejeté comme candidat marqueur.
6.14.2.1 📋 Directives d’implémentation
- Quantité : Lire l’entier \(N\) (nombre de candidats) et le seuil de circularité \(C_{\text{limiar}}\) (nombre réel).
- Données des candidats : Pour chacun des \(N\) candidats, lire l’aire \(A\) (entier) et le périmètre \(P\) (nombre réel).
- Circularité : Calculer \(C=\frac{4\pi A}{P^2}\), où :
- \(A\) est l’aire du composant ;
- \(P\) est le périmètre du composant ;
- \(C\) est la circularité.
- Cas dégénéré : Si \(P=0\), considérer \(C=0\) et classer directement le candidat comme
REJETÉ. - Classification : Si \(C>C_{\text{limiar}}\), classer le candidat comme
ACCEPTÉ; sinon, le classer commeREJETÉ. - Arrondi : Afficher la valeur de \(C\) avec quatre décimales.
- Sortie : Pour chaque candidat, imprimer la valeur de \(C\) suivie de la classification. À la fin, imprimer le nombre total de candidats acceptés.
6.14.2.2 📌 Contraintes computationnelles
- Utiliser la constante \(\pi\) de la bibliothèque standard du langage (par exemple,
math.pi), sans approximations. - La comparaison doit être effectuée avec la valeur de \(C\) en précision complète, avant l’arrondi pour l’affichage.
- Le critère d’acceptation est strict (\(C>C_{\text{limiar}}\)).
- Si \(P=0\), la division ne doit pas être effectuée.
6.14.2.3 🧠 Fondement théorique
La circularité est un descripteur géométrique défini par \(C=\frac{4\pi A}{P^2}\), où :
- \(A\) est l’aire du composant ;
- \(P\) est le périmètre du composant ;
- \(C\) est la circularité.
Pour un cercle parfait, \(C=1\). À mesure que la forme devient plus allongée ou irrégulière, le périmètre croît plus rapidement que l’aire, réduisant la valeur de \(C\).
| Forme | Circularité approximative | Interprétation |
|---|---|---|
| Cercle | \(1{,}0000\) | Forme circulaire. |
| Carré | \(0{,}7854\) | Forme approximativement compacte. |
| Forme allongée ou irrégulière | \(C\ll1\) | Faible circularité. |
| \(P=0\) | \(0\) (convention adoptée) | Contour dégénéré. |
La circularité est invariante par translation, rotation et mise à l’échelle, et est largement utilisée pour distinguer les composants approximativement circulaires des autres formats.
6.14.2.4 📦 Spécification d’entrée et de sortie (VPL)
Entrée :
- Ligne 1 : entier \(N\).
- Ligne 2 : nombre réel \(C_{\text{limiar}}\).
- Les \(N\) lignes suivantes : aire \(A\) (entier) et périmètre \(P\) (réel), séparés par un espace.
Sortie :
- Une ligne pour chaque candidat, au format
C ACCEPTÉouC REJETÉ, avec \(C\) présenté avec quatre décimales. - Dernière ligne :
Total acceptés : X.
6.14.2.5 📌 Exemples
| Entrée | Sortie | Observation |
|---|---|---|
| 3 0.6 78 31.4 100 40 50 60 |
0.9941 ACCEPTÉ 0.7854 ACCEPTÉ 0.1745 REJETÉ Total acceptés : 2 |
Candidat approximativement circulaire, forme compacte et forme allongée. |
| 1 0.9 10 0 |
0.0000 REJETÉ Total acceptés : 0 |
Périmètre nul : contour dégénéré. |
%%writefile EP06_02.py
# Code PythonOverwriting EP06_02.py
TestSuite("EP06_02.py").run()✔️ EP06_02.cases existe déjà dans casos/
📋 5 cas chargé(s) depuis casos/EP06_02.cases
🔍 Test de Python : EP06_02.py
⚠️ EP06_02.py : fichier vide (moins de 3 lignes). Tests ignorés.