AI驱动的智能相机应用,重视摄影前期调整,减少后期负担,基于LibreCamera优化开发
Sky Hackathon 2025 参赛项目
本仓库为本次作品的App源码部分,服务端源码也是该项目重要的一环。请见:LutinServer
LutinLens 是一款基于 LibreCamera 内核优化的智能相机应用,前端采用 Flutter 构建跨平台 UI,后端基于 NVIDIA NeMo Agent Toolkit + MCP 协议 提供实时 AI 构图与 LUT 推荐能力。 其目标是将传统相机的硬件拍摄体验与 AI 智能服务结合,形成实时构图建议 + GPU 加速风格化渲染的一体化解决方案。
- 🎯 智能构图与 LUT 建议: 基于 NVIDIA NeMo 框架的多 Agent 系统实时分析场景并提供构图及 LUT 套用建议
- 🎨 GPU 加速 LUT 渲染: 采用 GLSL 实现的 YUV 到 ARGB 转换和三线性插值算法,支持 .cube 文件格式的 LUT 滤镜
- 📱 跨平台兼容: 基于 Flutter 开发,主要针对 Android 平台优化,iOS 也可运行
- 开发框架: Flutter 3.16.0+ / Dart 3.2.0+
- 图像处理: GPU 加速 GLSL 着色器
- 相机引擎: 基于 LibreCamera 核心优化
- UI框架: Material Design 3 + Dynamic Color
后端架构(LutinLens Server)
- AI框架与技术协议: NVIDIA NeMo Agent Toolkit 多Agent架构, Model Context Protocol (MCP)
- 算力服务: 阿里云百炼(百炼算力平台)
- 图像分析和大语言模型:Qwen 系列
基于GLSL(OpenGL Shading Language)实现的高性能LUT(Look-Up Table)处理系统:
// 核心YUV到ARGB转换 + 三线性插值算法
precision highp float;
uniform sampler2D uY; // Y分量纹理
uniform sampler2D uUV; // UV分量纹理
uniform sampler2D uLut2D; // 打包的2D LUT纹理技术优势:
- 高性能实时渲染: GPU 并行处理,在第二代骁龙8移动平台上约30帧
- 标准兼容: 完整支持 .cube 格式 LUT 文件
- 内存优化: 智能内存管理,支持大尺寸LUT
基于多Agent架构的智能构图分析系统:
- 场景识别: 实时分析拍摄场景类型
- 构图建议: 基于摄影美学原理提供移动建议
- LUT推荐: 根据场景自动推荐最适合的滤镜
- 实时反馈: 绿色对勾指示最佳拍摄时机
采用Model Context Protocol实现前后端通信:
- 标准化接口: 统一的AI服务调用协议
- 可扩展性: 支持多种AI服务提供商
- 容错机制: 网络异常自动重试和降级处理
LutinLens/
├── lib/src/ # 主要源代码
│ ├── pages/ # 页面组件
│ │ ├── camera_page.dart # 相机主页面
│ │ └── settings_page.dart # 设置页面
│ ├── services/ # 服务层
│ │ └── ai_suggestion_service.dart # AI建议服务
│ ├── utils/ # 工具类
│ └── widgets/ # UI组件
├── shaders/ # GLSL着色器
│ └── gpu_lut.frag # GPU LUT处理着色器
├── assets/ # 资源文件
│ ├── Luts/ # LUT文件存储
│ └── l10n/ # 多语言文件
├── android/ # Android特定代码
└── ai_server.dart # 内嵌AI服务器(测试用)
- Flutter SDK: 3.16.0或更高版本
- Dart SDK: 3.2.0或更高版本
- Android SDK: API Level 21+ (Android 5.0+)
- JDK: Java Development Kit 17
- GPU: 支持OpenGL ES 3.0+的设备
- 克隆项目
git clone https://github.com/KirisameLonnet/LutinLens.git
cd LutinLens- 安装依赖
flutter pub get- 运行项目
flutter run本项目提供Nix Flakes支持,可一键配置完整开发环境:
# 启用Flakes支持
echo "experimental-features = nix-command flakes" >> ~/.config/nix/nix.conf
# 进入开发环境
nix develop- 启用AI建议:在设置页面开启"AI智能建议"功能
- 服务器配置:配置LutinLens AI服务器地址
- 实时构图:相机界面右下角显示AI构图建议
- 最佳时机:绿色对勾表示当前构图最佳,建议拍摄
- 可以手动切换,也可以使用 AI 智能建议(需连接到 LutinLens 服务器)
- 实时预览:GPU 加速实时预览滤镜效果
- 自动切换:启用 AI 模式后自动推荐最适合的滤镜
核心LUT处理着色器位于 shaders/gpu_lut.frag,实现了:
- YUV420到ARGB转换: 高效的色彩空间转换
- 三线性插值: 精确的LUT颜色查找算法
- 色彩标准: 支持BT.709色彩空间
- 纹理优化: 智能纹理采样和内存回收机制
后端AI服务基于以下技术栈:
- NVIDIA NeMo Agent Toolkit: 用于构建多 Agent 协作系统
- 阿里云百炼: 提供模型支持
- MCP协议: 标准化的模型上下文协议
在 LUT 推荐中,我们使用了 NeMo 框架下的 ReAct Agent 作为工作流,它可以使用我们编写的图像内容提取工具 (content_identifier) 和根据图像内容查找适合 LUT 的工具 (lut_finder) 来推荐一个合适的 LUT。 在构图建议中,得益于 Qwen-VL-Max 模型优秀的多图像理解能力,我们将用户取景器内过去一段时间内的多张图像组合后作为 Prompt 输入模型,使其可以感知到过去一段时间内用户的操作意图是否遵循了模型建议,并且以此为基础进一步提出可操作的构图建议。
- GPU加速: 利用移动设备 GPU 进行图像处理
- 内存管理: 智能 LUT 缓存和内存回收
- 帧率优化: 保持30FPS流畅预览体验
本项目基于开源项目LibreCamera进行深度优化和功能扩展:
- 🆕 GPU加速LUT处理: 全新的 GLSL 着色器系统
- 🆕 AI构图建议: 基于 NeMo 框架的智能分析
- 🆕 自动LUT切换: AI 驱动的 LUT 推荐
- 🆕 MCP协议支持: 标准化 AI 服务接口
- 🆕 实时性能优化: GPU 并行处理架构
本项目遵循 GNU General Public License v3.0 (GPLv3) 开源协议。 详细协议条款请参阅 LICENSE 文件。
本项目为Sky Hackathon 2025参赛项目
- 跨平台AI集成: Flutter + 基于NVIDIA NeMo框架智能分析 + 移动端GLSL GPU加速图像处理
- 实时GPU处理: 移动端高性能图像渲染
- 智能用户体验: AI驱动的摄影助手功能
- 成员:Ryan(搭建后端NeMo框架服务器,搭建多Agent工具链),KirisameLonnet(前端Flutter开发,实现GPU加速LUT渲染并优化前端)
- App项目仓库: https://github.com/KirisameLonnet/LutinLens
- 服务器项目仓库:https://github.com/m0cal/lutinlens_server
LutinLens - AI驱动的智能相机应用
Made with ❤️ for Sky Hackathon 2025
基于LibreCamera · 开源项目 | 遵循GPLv3协议(APP)以及Apache2.0协议(服务端)









