# Amélioration du pipeline de conversion image → nonogram ## Objectif Produire des grilles de nonogram à la fois jouables (≤ 6 blocs par ligne/colonne) et reconnaissables (ressemblance avec l'image source), à partir de photos Pexels/Unsplash ou d'images locales. ## Problème actuel Le pipeline actuel (edge detection Canny + blend + Otsu) génère trop de pixels isolés sur les photos, produisant des clues illisibles (ex: 15 blocs sur une ligne de 32 cellules) et une grille méconnaissable. ## Pipeline cible ``` Image bytes → Grayscale + resize (inchangé) → Bilateral filter (d=9, sigmaColor=75, sigmaSpace=75) → Posterize 2 niveaux (seuillage médian sur histogramme) → Binarisation Otsu → Fermeture morphologique kernel 3×3 (combler micro-trous) → Suppression composantes connexes < min_component_size (défaut: 2px) → [Boucle] Vérification complexité clues si max_blocks_per_line > max_clue_blocks : fermeture morphologique kernel += 1 max 3 itérations → Grid ``` ## Paramètres configurables | Paramètre | Défaut | Description | |---|---|---| | `max_clue_blocks` | 6 | Max blocs acceptables par ligne/colonne | | `min_component_size` | 2 | Taille min composante connexe (px) | | `max_cleanup_iterations` | 3 | Nb max d'itérations de nettoyage supplémentaire | ## Nouvelle source locale `LocalFileImageSource` — implémente `ImageSource`, lit un fichier depuis le disque. CLI : nouvelle option `--local-image ` mutuellement exclusive avec `--theme`. ## Tests - **Unitaires** : bilateral filter, cleanup morpho, boucle complexité sur grilles synthétiques - **Intégration** : image simple → vérifie max blocs/ligne ≤ 6 - **Fixture** : `tests/fixtures/simple_icon.png` généré programmatiquement (forme simple) ## Fichiers modifiés - `src/logimage/infrastructure/image/pillow_converter.py` — pipeline complet - `src/logimage/infrastructure/image/local_file_source.py` — nouvelle source - `src/logimage/cli/main.py` — option `--local-image` - `tests/infrastructure/test_pillow_converter.py` — nouveaux tests - `tests/fixtures/simple_icon.png` — image de test