Plan pour recréer une version self-hosted de pictures.lytro.com axée sur le traitement d’images light-field
Bonjour ! pictures.lytro.com était la plateforme officielle de Lytro (fermée en 2017) pour uploader, partager et visualiser des “living pictures” issues de caméras light-field. Ces images permettaient une interaction post-capture : refocus en cliquant sur une zone, changement de perspective, partage social. Le cœur était le traitement d’images light-field (.LFR ou .LFP), qui capture non seulement l’intensité et la couleur de la lumière, mais aussi sa direction, pour une profondeur artificielle.
Recréer une version self-hosted signifie bâtir une app web open-source, Je te propose un plan structuré en phases, réaliste pour un développeur solo ou une petite équipe. Il s’appuie sur des outils open-source existants pour éviter de tout coder from scratch.
Phase 1 : Recherche et Préparation
- Objectifs : Valider les specs et collecter les ressources.
- Étapes :
- Teste des outils open-source pour light-field :
- Lytro Unlock (GitHub : ea/lytro_unlock) : Bibliothèque Python pour déverrouiller et extraire les données light-field.
- PlenoptiCam (GitHub : hahnec/plenopticam) : Logiciel cross-platform pour traitement light-field (refocus, depth maps).
- Lytro WebGL Player (open-source depuis 2014, via dpreview.com) : Viewer web pour intégrer des galeries interactives.
- Définit tes priorités : MVP = upload, viewer refocus + perspective shift. Ajouts futurs : filtres, social sharing.
- Teste des outils open-source pour light-field :
- Outils : GitHub pour forks, Python/Jupyter pour tests locaux.
- Risques : Les fichiers Lytro sont propriétaires ;
Phase 2 : Choix du Stack Technique
-
Critères : Facile à self-hoster, scalable, focus sur traitement est le partage
-
Backend: Node.js + Express: Léger, bon pour API upload ; intègre facilement WebGL.
-
Traitement Images: PlenoptiCam (Python) + OpenCV ou Lytro SDK open-source + TensorFlow Gratuit, gère refocus/depth
-
Frontend: React.js + Three.js/WebGL|Vue.js|Interactif pour viewer (clic-to-focus) ; réutilise le player Lytro open-source.
-
Stockage: Local FS + PostgreSQL. Self-hosted, scalable pour .LFP files (jusqu’à 10-50MB/image).
-
Base de Données: PostgreSQL. Pour metadata (titre, tags, users).
-
Serveur: Docker + Nginx. conteneurs pour isolation.
Phase 3 : Développement du Core
- Sous-phases :
- **Gestion des Fichiers Light-Field ** :
- Implémente un endpoint API pour upload (.LFP/.LFR).
- Utilise Lytro Unlock pour parser : Extraire image 2D, depth map, et micro-lentilles.
- Stocke en MinIO ; génère thumbnails statiques avec OpenCV.
- **Traitement d’Images ** :
- Intègre PlenoptiCam pour algos clés :
- Refocus : Algorithme de synthèse light-field (basé sur ray tracing simple).
- Perspective Shift : Interpolation directionnelle de la lumière.
- Depth Estimation : Carte de profondeur pour effets 3D.
- Test : Utilise samples Lytro pour valider (ex. : refocus précis à ±0.1 pixel).
- Intègre PlenoptiCam pour algos clés :
- **Viewer Interactif ** :
- Frontend React : Galerie grid avec previews.
- Intègre WebGL Player : Canvas pour render live (clic = refocus en temps réel).
- Ajoute contrôles : Slider pour focus, drag pour shift, boutons filtres (ex. : HDR-like).
- **Gestion des Fichiers Light-Field ** :
Phase 4 : Fonctionnalités Avancées et UI/UX
- Étapes :
- Authentification : JWT simple pour users (upload privé/public).
- Sharing : Génération de liens embed (comme Lytro), export en vidéo/GIF.
- Galerie : Recherche par tags, pagination ; responsive pour mobile.
- UI inspirée : Design minimaliste comme Lytro (noir/blanc, focus sur images) ; utilise Tailwind CSS.