Overmix
Overmix 可以将较小图像的片段拼接在一起,以创建原始完整图像。它专门用于拼接动漫截图,其中场景的一小部分被显示出来,视角滑动以显示剩余区域。
Overmix 的理念是增加用于拼接的图像数量,并利用这一点来解决 MPEG 压缩、色带和屏幕文字/标志问题。目前的开发重点是理解图像重建的更多理论部分,以及如何应用这些理论来进一步提高质量。
功能特性
- 高质量16位(或更高)渲染,带有8位输出的抖动
- 自动检测垂直和水平偏移,具有亚像素精度
- 支持隔行扫描
- 多线程,充分利用计算机的性能
- 支持10位 YUV 输入
- 渲染管道支持色度子采样,无需放大
- 用于图像锐化的反卷积
- 标志/字幕检测和移除
- 蒸汽最小化(目前颜色有些问题...)
- 循环动画检测
- 基本超分辨率,GUI 目前还不太完善
当前工作
- 在前景和背景以不同速度移动的幻灯片中分离前景和背景
- MPEG2 解码器,用于最小化 MPEG2 压缩伪影,这应该特别有助于运动补偿
- 改进 GUI,使操作的高级设置更容易添加
- 命令行界面
未来工作
- 检测缩放和旋转
- 研究如何结合动画检测和前/背景分离等功能
如何贡献
即使你对编程一无所知,也有几种方式可以贡献:
- 如果目前无法满足你的所有需求,在问题追踪器上提出功能请求,或对现有请求发表评论。
- 如果你无法正确拼接图像,请创建一个问题并分享输入图像的链接。我可以帮你找到正确的设置,或识别 Overmix 当前的限制。
- 如果你在查看 wiki 后仍无法弄清楚如何使用程序的某些部分(或者只是觉得困难),请创建一个问题/错误报告。这意味着界面不够直观,文档不足,或者文档不够清晰。
如果你不想创建 Github 用户,可以随时发送电子邮件至 spillerrec@gmail.com 询问任何问题。
避免使用屏幕截图
视频并不直接以 RGB 形式存在,而是使用颜色转换来分离亮度和颜色信息。然后对颜色信息进行下采样,因为通常不会注意到。根据你的视频播放器,它可能会使用较低质量的近似值来提高性能/延长电池寿命。 特别是 VLC 会导致糟糕的结果,但 mpv 也可能导致屏幕截图质量低于屏幕上看到的内容。通过使用内置的视频导入器,你将获得完整质量(对于这些视频也是10位),同时获得每一帧,这将进一步提高质量。
Dump 格式
为了在不将 Hi10p 视频帧转换为8位 RGB 的情况下转储它们,开发了 dump 格式。这种格式支持最高16位的 YUV 图像,带有色度子采样。现在只有在你想存储转储的帧时才需要。 已经开发了几个与该格式相关的工具,最重要的是一个应用程序,可以轻松提取视频序列中的每一个唯一帧。这个和其他工具(如 Windows 扩展)可以在以下存储库中找到:https://github.com/spillerrec/dump-tools
已知问题
- 除湿渲染器不会"除湿"颜色。(强制使用新选项中的 RGB 模式可能会解决这个问题,但我还没有检查代码。)
- 并非所有地方都实现了进度条,即使出现"取消"按钮,"取消"选项也很少实现。
构建
依赖项
- Qt5
- C++14(泛型 lambda,
std::make_unique<>
) - cmake(用于编译)
- ffmpeg
- zlib
- lzma
- libpng
- png++(仅头文件)
- libjpeg
- libraw
- fftw3
- pugixml
- lcms2(GUI 所需)
- boost
- eigen3
- QCustomPlot 2.x(GUI 所需)
- google/benchmark(单元基准测试所需)
可选:
- waifu2x-converter-cpp(启用 opencv)
仅限 Linux:
- xcb
- qt5x11extras
构建
cmake -DCMAKE_BUILD_TYPE=release
make
建议在单独的文件夹中构建,因为 cmake 会污染所有目录。你可以这样做:
mkdir release
cd release
cmake ../ -DCMAKE_BUILD_TYPE=release
make