mcpField
W
wedding-immortalist

wedding-immortalist

github.com/curiositech创意与媒体257179 次安装2 天前更新
代码仓库

关于 wedding-immortalist

面向将婚礼照片和视频制作成可探索 3D 体验的技能,供婚礼纪念项目的构建者参考。内容包括 3D Gaussian Splatting 重建、人脸聚类、主题适配设计及场景内关键时刻播放。

主要功能

  1. 01照片与视频 3DGS 重建
  2. 02人脸检测与身份聚类
  3. 03按主题适配视觉设计
  4. 04按人物筛选优选照片
  5. 05场景内关键时刻播放
  6. 06宾客图库与协作修正

适用场景

  1. 01将婚礼影像整理为可探索场景
  2. 02为宾客生成个性化照片图库
  3. 03在 3D 场景中重温仪式和宴会片段

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/curiositech/some_claude_skills --skill wedding-immortalist

安装后在 Claude Code 中输入/wedding-immortalist确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.claude-plugin/
plugin.json
references/
face-clustering-aesthetics.md
gaussian-splatting-pipeline.md
theme-extraction.md

详细介绍

婚礼修仙者

将婚礼照片和视频转化为永恒、沉浸式的 3D 体验。打造鲜活的回忆,让新人和宾客永远重温婚礼的魔力。

何时使用此技能

适用于:

  • 将数千张婚礼照片处理成 3DGS 场景
  • 创建剧院模式体验,让仪式或宴会中的片段在原地播放
  • 构建按人脸聚类的宾客名册,并为每位宾客挑选最佳照片
  • 让设计美学契合婚礼主题(迪斯科、乡村、海滩、现代、酷儿庆典)
  • 使用美学评分为每位宾客精选照片

不适用于:

  • 通用照片编辑 → 使用 native-app-designer
  • 非婚礼类 3DGS → 使用 drone-inspection-specialist
  • 活动策划 → 这不是婚礼策划工具
  • 不进行 3D 重建的视频编辑

核心流程

┌─────────────────────────────────────────────────────────────────┐
│                    WEDDING IMMORTALIST PIPELINE                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  1. INGEST                2. RECONSTRUCT        3. CLUSTER       │
│  ├─ Photos (1000s)        ├─ COLMAP SfM         ├─ Face detect   │
│  ├─ Video (hours)         ├─ 3DGS training      ├─ Embeddings    │
│  └─ Audio/speeches        └─ Scene merge        └─ Identity link │
│                                                                  │
│  4. CURATE                5. DESIGN             6. PRESENT       │
│  ├─ Aesthetic score       ├─ Theme extract      ├─ Web viewer    │
│  ├─ Per-person best       ├─ Color palette      ├─ Theatre mode  │
│  └─ Moment detect         └─ Typography         └─ Guest roster  │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

主题自适应设计

主题检测与匹配

每场婚礼都有独特的美学风格。提取并遵循这一风格:

主题类型配色方案字体排印UI 元素
70 年代迪斯科金色、橙色、赭红色、深紫色复古风格手写体、粗体无衬线字体镜面球、星芒、暖色渐变
乡村/谷仓大地色、鼠尾草绿、奶油色、木色衬线字体、手写字体粗麻布纹理、野花点缀
海滩/海岸海洋蓝、沙色、珊瑚色、海沫绿轻盈的无衬线字体、手写体贝壳图案、波浪纹
现代极简黑色、白色、金属色简洁的几何无衬线字体利落线条、留白
酷儿之喜彩虹色谱、鲜艳色彩富有表现力、多样化骄傲元素、极致欢庆风格
文化融合按传统而定传统与现代相结合文化图案、传统纹样
从照片中提取主题
# Theme extraction signals
THEME_SIGNALS = {
    'color_palette': 'Dominant colors from venue, florals, attire',
    'lighting_mood': 'Warm/cool, natural/dramatic, string lights/chandeliers',
    'decor_elements': 'Rustic/modern/vintage/eclectic',
    'attire_style': 'Traditional/non-traditional, formal/casual',
    'cultural_markers': 'Religious symbols, cultural traditions',
    'era_aesthetic': '70s disco, 20s gatsby, etc.'
}

3D Gaussian Splatting 流程

照片/视频导入
Optimal Input Strategy:
├── Video: Extract 2-3 fps (80% overlap minimum)
├── Photos: Include ALL photographer shots
├── Phone photos: Guest uploads (georeferenced bonus)
└── Coverage: Ceremony + reception + all spaces

Quality Thresholds:
├── Minimum images per space: 50-100
├── Overlap requirement: 60-80%
├── Blur rejection: Laplacian variance < 100 = skip
└── Exposure: Reject severe over/underexposure
COLMAP 运动恢复结构
# Feature extraction
colmap feature_extractor \
  --database_path database.db \
  --image_path images/ \
  --ImageReader.single_camera 0 \
  --SiftExtraction.max_image_size 3200

# Exhaustive matching for comprehensive coverage
colmap exhaustive_matcher \
  --database_path database.db \
  --SiftMatching.guided_matching 1

# Sparse reconstruction
colmap mapper \
  --database_path database.db \
  --image_path images/ \
  --output_path sparse/

# Dense reconstruction (optional, for mesh)
colmap image_undistorter ...
colmap patch_match_stereo ...
3DGS 训练
# Wedding-optimized 3DGS settings
WEDDING_3DGS_CONFIG = {
    'iterations': 50_000,          # High quality for permanent archive
    'densify_from_iter': 500,
    'densify_until_iter': 15_000,
    'densification_interval': 100,
    'opacity_reset_interval': 3000,
    'sh_degree': 3,                # Full spherical harmonics for lighting
    'percent_dense': 0.01,
    'densify_grad_threshold': 0.0002,
}

# Multi-space merge strategy
SPACES = ['ceremony', 'cocktail_hour', 'reception', 'photo_booth', 'dance_floor']
# Train each separately, then create unified navigation

人脸聚类系统

流程
┌────────────────────────────────────────────────────────┐
│               FACE CLUSTERING PIPELINE                  │
├────────────────────────────────────────────────────────┤
│  1. Detection (RetinaFace/MTCNN)                       │
│     └─ All faces in all photos                         │
│  2. Alignment (5-point landmark)                       │
│     └─ Standardize for embedding                       │
│  3. Embedding (ArcFace/AdaFace)                        │
│     └─ 512-dim identity vector per face                │
│  4. Clustering (HDBSCAN)                               │
│     └─ Group by identity, handle edge cases            │
│  5. Identity Linking                                   │
│     └─ Match to couple, wedding party, family, guests  │
│  6. Best Photo Selection                               │
│     └─ Aesthetic scoring per cluster                   │
└────────────────────────────────────────────────────────┘
聚类参数
CLUSTERING_CONFIG = {
    'min_cluster_size': 3,         # At least 3 photos to form identity
    'min_samples': 2,
    'metric': 'cosine',
    'cluster_selection_epsilon': 0.3,
    'cluster_selection_method': 'eom',
}

# Identity priority for naming
IDENTITY_PRIORITY = [
    'couple_1', 'couple_2',        # The married couple
    'wedding_party',               # Bridesmaids, groomspeople
    'parents',                     # Parents of the couple
    'grandparents',
    'siblings',
    'extended_family',
    'friends',
    'vendors',                     # Photographer, DJ, etc.
]
身份关联工作流
  1. 识别新人:用户在 2-3 张照片中标记新人
  2. 婚礼团队:用户识别重要人物
  3. 自动传播:通过嵌入向量在所有照片中匹配
  4. 匹配宾客:可选导入宾客名单并分配姓名
  5. 手动修正:通过 UI 修正不匹配项

美学评分

单张照片的质量指标
AESTHETIC_FEATURES = {
    # Technical quality
    'sharpness': 'Laplacian variance, MTF analysis',
    'exposure': 'Histogram analysis, dynamic range',
    'noise': 'High-ISO detection, grain analysis',

    # Composition
    'rule_of_thirds': 'Subject placement scoring',
    'symmetry': 'For venue/group shots',
    'framing': 'Negative space, balance',

    # Face-specific
    'expression': 'Smile detection, eye openness',
    'blink_detection': 'Eyes closed penalty',
    'gaze_direction': 'Looking at camera vs. candid',
    'face_occlusion': 'Nothing blocking the face',
    'face_lighting': 'Even illumination, no harsh shadows',

    # Emotional
    'genuine_smile': 'Duchenne marker detection',
    'moment_quality': 'Laughter, tears, embraces',
}
为每个人挑选最佳照片
def select_best_photos(cluster_photos, n=5):
    """Select top N photos for a person across all their appearances."""

    scores = []
    for photo in cluster_photos:
        score = (
            0.25 * technical_quality(photo) +
            0.25 * composition_score(photo) +
            0.30 * expression_quality(photo) +
            0.20 * context_diversity(photo, scores)  # Avoid all similar shots
        )
        scores.append((photo, score))

    # Select top N with diversity constraint
    return diverse_top_n(scores, n, diversity_threshold=0.7)

剧院模式

片段检测与播放
KEY MOMENTS (auto-detected + user-tagged):
├── Ceremony
│   ├── Processional
│   ├── Vows exchange
│   ├── Ring ceremony
│   ├── First kiss
│   └── Recessional
├── Reception
│   ├── Grand entrance
│   ├── First dance
│   ├── Parent dances
│   ├── Toasts/speeches
│   ├── Cake cutting
│   └── Bouquet/garter
├── Party
│   ├── Dance floor highlights
│   └── Exit/sendoff
└── Candids
    ├── Emotional moments (tears, laughter)
    └── Spontaneous joy
场景内视频投影
Theatre Mode Rendering:
1. User navigates 3DGS scene freely
2. Approaches "moment marker" (glowing orb/frame)
3. Video/slideshow plays IN the 3D space
   ├── On walls where projector was
   ├── Floating frames in dance floor area
   └── Photo booth backdrop location
4. Spatial audio for speeches/music
5. User can pause, scrub, exit to continue exploring

Web 查看器架构

// Wedding Immortalist Viewer Components
const VIEWER_FEATURES = {
  // 3DGS Navigation
  gaussianSplatting: {
    renderer: 'three-gaussian-splat',
    navigation: 'orbit + first-person',
    qualityLevels: ['preview', 'standard', 'maximum'],
  },

  // Theatre Mode
  theatreMode: {
    momentMarkers: true,
    videoInScene: true,
    spatialAudio: true,
    transitionEffects: 'theme-matched',
  },

  // Guest Roster
  guestRoster: {
    faceGrid: 'clustered by identity',
    photoGallery: 'per-person best shots',
    searchByName: true,
    shareableLinks: 'per-guest galleries',
  },

  // Theme
  theming: {
    colorPalette: 'extracted from wedding',
    typography: 'theme-matched',
    uiElements: 'aesthetic-consistent',
  },
};

反模式

“始终提取所有帧”

错误做法:提取视频的每一帧用于 3DGS。 原因:数据冗余、处理速度慢 10 倍,且不会提升质量。 正确做法:以 2-3 fps 提取,并根据运动选择关键帧。

“一个巨型场景”

错误做法:为整个场地训练单个 3DGS。 原因:内存占用激增、质量下降,而且消费级硬件无法运行。 正确做法:按空间分别训练,并通过无缝过渡创建统一导航。

“使用默认聚类阈值”

错误做法:使用默认的 HDBSCAN 设置。 原因:婚礼照片的光线、妆容和角度各不相同,需要进行调优。 正确做法:根据每场婚礼的照片数量和质量差异进行调优。

“忽略主题”

错误做法:为迪斯科主题婚礼使用通用的白/灰色查看器 UI。 原因:会破坏活动的个性与欢乐氛围。 正确做法:提取并遵循新人的美学选择。

“只用摄影师拍摄的照片”

错误做法:只使用专业照片。 原因:会错过抓拍瞬间、宾客视角和覆盖盲区。 正确做法:合并专业照片和宾客照片,实现完整覆盖。

宾客体验功能

可分享的宾客相册
Per-Guest Experience:
├── Personalized link: yourwedding.com/guests/aunt-martha
├── Their best photos (AI-curated)
├── Photos with the couple
├── Group photos they appear in
├── Download options (full-res)
└── "Add to my memories" for their own archives
协作增强
Guest Contribution Portal:
├── Upload their own photos
├── Tag themselves in unidentified clusters
├── Correct misidentifications
├── Add names to unknown guests
└── Submit video moments they captured

交付成果

wedding-immortalist-output/
├── 3dgs-scenes/
│   ├── ceremony/
│   ├── cocktail/
│   ├── reception/
│   └── unified-navigation.json
├── guest-roster/
│   ├── face-clusters/
│   ├── identity-mapping.json
│   └── per-person-galleries/
├── theatre-mode/
│   ├── moment-markers.json
│   ├── video-segments/
│   └── spatial-audio/
├── web-viewer/
│   ├── index.html
│   ├── theme-config.json
│   └── assets/
└── exports/
    ├── full-resolution-photos/
    ├── guest-gallery-zips/
    └── video-compilations/

集成点

  • drone-inspection-specialist:3DGS 技术、COLMAP 流程
  • collage-layout-expert:照片排布、美学构图
  • color-theory-palette-harmony-expert:主题色提取
  • clip-aware-embeddings:用于搜索的图文匹配
  • photo-composition-critic:美学质量评分

核心理念:婚礼一生只有一次,回忆却应永存。这项技能将转瞬即逝的时刻转化为永恒且可探索的体验,礼赞新人独特的庆典——无论是迪斯科舞会、质朴的谷仓聚会,还是两位新郎与挚爱的家人朋友共同庆祝爱情。

评论

支持 Markdown