Files
logimage-generator/docs/superpowers/specs/2026-05-21-pipeline-conversion-ameliore-design.md
T
Vincent Bourdon 5a03f8a38d import initial
2026-06-10 10:21:18 +02:00

55 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <path>` 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