1
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"root-1","type":"text","text":"# 📸 Процесс создания фото-коллажа из людей\n\nЭтот проект описывает полный цикл: от организации фотосъемки до программной реализации динамического коллажа.","x":0,"y":0,"width":400,"height":180,"color":"4"},
|
||||
|
||||
{"id":"photo-title","type":"text","text":"# 📷 Этап 1: Фотографирование","x":-450,"y":-300,"width":350,"height":80,"color":"1"},
|
||||
{"id":"photo-1","type":"text","text":"## 🛠️ Подготовка и оборудование\n\n- **Камера**: Full-frame или качественный смартфон с поддержкой RAW.\n- **Освещение**: \n - Минимум 3 точки света (рисующий, заполняющий, контровой).\n - Использование софтбоксов для мягких теней.\n- **Фон**: Однотонный (серый или белый) для легкой обрезки, либо хромакей (зеленый).","x":-450,"y":-200,"width":350,"height":250,"color":"1"},
|
||||
{"id":"photo-2","type":"text","text":"## 🎭 Съемка и позирование\n\n- **Единообразие**: Съемка всех людей с одного ракурса (на уровне глаз) и при одинаковом освещении.\n- **Вариативность**: Запрос нескольких эмоций (нейтральная, улыбка, удивление) для динамики в коллаже.\n- **Техническая чистота**: Глубина резкости (f/8 - f/11), чтобы все лицо было в фокусе.","x":-450,"y":80,"width":350,"height":220,"color":"1"},
|
||||
{"id":"photo-3","type":"text","text":"## 📁 Организация данных\n\n- **Формат**: Сохранение в PNG с альфа-каналом (после обработки).\n- **Метаданные**: Именование файлов по ID пользователя (`user_123_pose_1.png`).\n- **Бэкап**: Облачное хранилище (S3/Drive) для исходников.","x":-450,"y":330,"width":350,"height":180,"color":"1"},
|
||||
|
||||
{"id":"collage-title","type":"text","text":"# 🧩 Этап 2: Сборка коллажа","x":0,"y":250,"width":400,"height":80,"color":"2"},
|
||||
{"id":"collage-1","type":"text","text":"## ✂️ Обработка и AI\n\n- **Background Removal**: Автоматическая обрезка фона с помощью AI (например, модель Segment Anything от Meta или API Remove.bg).\n- **Face Alignment**: Центрирование лиц по глазам для гармоничного вида в сетке.\n- **Цветокоррекция**: Применение единого пресета (LUT) ко всем фото для визуальной целостности.","x":0,"y":350,"width":400,"height":220,"color":"2"},
|
||||
{"id":"collage-2","type":"text","text":"## 📐 Алгоритмы компоновки\n\n- **Grid Layout**: Классическая сетка (просто, но скучно).\n- **Masonry/Packing**: Плотная упаковка фото разного размера (алгоритм Bin Packing).\n- **Artistic Mosaic**: Генерация большой картинки из маленьких лиц (фото-мозаика).","x":0,"y":600,"width":400,"height":200,"color":"2"},
|
||||
|
||||
{"id":"prog-title","type":"text","text":"# 💻 Этап 3: Программная часть","x":450,"y":-300,"width":400,"height":80,"color":"3"},
|
||||
{"id":"prog-1","type":"text","text":"## ⚙️ Backend (Node.js/Nuxt)\n\n- **Загрузка**: API на базе `h3` с использованием `multer` или `formidable`.\n- **Обработка**: Библиотека **Sharp** для изменения размера, сжатия и наложения водяных знаков.\n- **Очереди**: Использование `BullMQ` + `Redis` для тяжелых операций генерации коллажа.","x":450,"y":-200,"width":400,"height":200,"color":"3"},
|
||||
{"id":"prog-2","type":"text","text":"## 🎨 Frontend (Vue 3 / Canvas)\n\n- **Рендеринг**: \n - HTML5 Canvas API для статических коллажей.\n - `CSS Grid` + `Framer Motion` для интерактивных веб-коллажей.\n- **Оптимизация**: Lazy loading изображений, использование WebP формата.","x":450,"y":30,"width":400,"height":180,"color":"3"},
|
||||
{"id":"prog-3","type":"text","text":"## 🗄️ Хранение и БД\n\n- **Prisma + PostgreSQL**:\n - Таблица `Photos`: `id`, `userId`, `url`, `coordinates` (в коллаже).\n- **S3 Storage**: Хранение самих файлов изображений (MinIO для локальных тестов).","x":450,"y":240,"width":400,"height":180,"color":"3"},
|
||||
{"id":"prog-4","type":"text","text":"## 🤖 AI Интеграция\n\n- **Face Detection**: Использование `face-api.js` на фронтенде или `Mediapipe` на бэкенде для автоматического определения границ лица.\n- **Smart Crop**: Обрезка фото так, чтобы лицо всегда было в центре кадра.","x":450,"y":450,"width":400,"height":200,"color":"3"}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"e1","fromNode":"root-1","fromSide":"left","toNode":"photo-title","toSide":"right","color":"1"},
|
||||
{"id":"e2","fromNode":"root-1","fromSide":"bottom","toNode":"collage-title","toSide":"top","color":"2"},
|
||||
{"id":"e3","fromNode":"root-1","fromSide":"right","toNode":"prog-title","toSide":"left","color":"3"},
|
||||
|
||||
{"id":"ep1","fromNode":"photo-title","fromSide":"bottom","toNode":"photo-1","toSide":"top","color":"1"},
|
||||
{"id":"ep2","fromNode":"photo-1","fromSide":"bottom","toNode":"photo-2","toSide":"top","color":"1"},
|
||||
{"id":"ep3","fromNode":"photo-2","fromSide":"bottom","toNode":"photo-3","toSide":"top","color":"1"},
|
||||
|
||||
{"id":"ec1","fromNode":"collage-title","fromSide":"bottom","toNode":"collage-1","toSide":"top","color":"2"},
|
||||
{"id":"ec2","fromNode":"collage-1","fromSide":"bottom","toNode":"collage-2","toSide":"top","color":"2"},
|
||||
|
||||
{"id":"eg1","fromNode":"prog-title","fromSide":"bottom","toNode":"prog-1","toSide":"top","color":"3"},
|
||||
{"id":"eg2","fromNode":"prog-1","fromSide":"bottom","toNode":"prog-2","toSide":"top","color":"3"},
|
||||
{"id":"eg3","fromNode":"prog-2","fromSide":"bottom","toNode":"prog-3","toSide":"top","color":"3"},
|
||||
{"id":"eg4","fromNode":"prog-3","fromSide":"bottom","toNode":"prog-4","toSide":"top","color":"3"},
|
||||
|
||||
{"id":"e-photo-to-collage","fromNode":"photo-3","fromSide":"right","toNode":"collage-1","toSide":"left","color":"1","label":"Передача файлов"},
|
||||
{"id":"e-prog-to-collage","fromNode":"prog-4","fromSide":"left","toNode":"collage-1","toSide":"right","color":"3","label":"Автоматизация"}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user