Skip to content

Latest commit

 

History

History
185 lines (149 loc) · 6.5 KB

自定义缩放.md

File metadata and controls

185 lines (149 loc) · 6.5 KB

自定义缩放

本文档指导您如何定义自己的缩放模式。

Magpie启动时会在所在目录搜索ScaleModels.json,如果未找到则会创建一个默认的。默认的ScaleModels.json内容如下:

[
  {
    "name": "Lanczos",
    "model": [
      {
        "module": "Common",
        "effect": "lanczos",
        "scale": [ -1, -1 ],
        "ARStrength": 0.7
      },
      {
        "module": "Common",
        "effect": "adaptiveSharpen",
        "curveHeight": 0.6
      }
    ]
  },
  {
    "name": "RAVU",
    "model": [
      {
        "module": "RAVU",
        "effect": "RAVUZoom",
        "scale": [ -1, -1 ]
      },
      {
        "module": "Anime4K",
        "effect": "denoiseBilateral",
        "variant": "mode"
      }
    ]
  },
  {
    "...": "..."
  }
]

ScaleModels.json的根元素是一个数组,其中的每个成员都是一个缩放模型。name属性是显示的名字,model属性是缩放模型的定义,缩放模型由一系列的effect堆叠而成,Magpie在缩放时会逐个应用这些effect。

Magpie提供了大量effect供组合使用,它们以模块为单位在运行时动态加载。大部分effect提供了参数选项以订制行为。

很多缩放效果支持scale参数,它的值必须是有两个元素的数组。当它们为正数时,表示长和高的缩放比例;为负数时则表示相对于屏幕能容纳的最大等比缩放的比例。例如值[-1, -1]表示等比缩放到屏幕能容纳的最大大小,[-0.5, -0.5]表示缩放到[-1, -1]的一半大小。在示例中可以看到它们的应用。

Common

Common模块包含以下效果:

  1. sharpen:使用Direct2D内置的锐化算法锐化输入。
    • 参数
      • sharpness:锐化强度。必须在0~10之间。默认值为0。
      • threshold:锐化阈值。必须在0~1之间。默认值为0。
  2. adaptiveSharpen:自适应锐化算法。此算法着重于锐化图像中的模糊边缘,因此相比一般的锐化算法噪点、振铃和条纹更少。
    • 参数
      • curveHeight:锐化强度。必须大于零,一般在0.3~2.0之间。默认值为0.3。
  3. CAS:对比度自适应锐化算法。自适应锐化青春版。
    • 参数
      • sharpness:锐化强度。必须在0-1之间。默认值为0.4。
  4. lanczos:使用Lanczos算法缩放输入。
    • 参数
      • scale:缩放比例,值必须是有两个元素的数组。
      • ARStrength:抗震铃强度。值越大抗震铃效果越好,但图像越模糊。必须在0到1之间。默认值为0.5。
  5. mitchell:使用Mitchell-Netravali算法缩放输入。用于缩小时效果最佳。
    • 参数
      • scale:缩放比例,值必须是有两个元素的数组。
      • variant:指定使用的变体:
        • "mitchell":mitchell原版。默认值。
        • "catrom":比mitchell更锐利。
        • "sharper":更为锐利,可能有更好的视觉效果。Photoshop使用此参数。
  6. pixel:将图像中每个像素进行整数倍放大。可以完整保留原始图像的信息,但只能放大到整数倍。适用于输入图像较小的情况。
    • 参数
      • scale:缩放比例,和其他缩放算法不同,此值必须是正整数,因为图像尺寸只能等比例整数倍放大。默认值为1。

ACNet

ACNet模块仅包含一个效果,使用时无需指定effect名。ACNet固定的将输入放大至两倍。

Anime4K

Anime4K模块包含以下效果:

  1. Anime4K:Anime4K v3.1 的移植,支持降噪变体。内置了自适应锐化,可以产生更好的视觉效果。固定的将输入放大至两倍。
    • 参数
      • curveHeight:自适应锐化强度。0表示不锐化,否则必须为正数,一般在0.3~2.0之间。默认值为0。
      • useDenoiseVersion:使用降噪版本的Anime4K,在有轻微噪点的情况下表现良好,因此推荐使用。默认值为false。
  2. darkLines:Anime4K提供的加深线条的算法。
    • 参数
      • strength:加深强度。必须大于零。默认值为1。
  3. thinLines:Anime4K提供的细化线条的算法。
    • 参数
      • strength:细化强度。必须大于零。默认值为0.3。
  4. denoiseBilateral:Anime4K提供的降噪算法。
    • 参数
      • variant:指定使用的变体
        • "mode":bilateral mode filter。默认值。
        • "median":bilateral median filter。
        • "mean":bilateral mean filter。
      • intensity:降噪强度。必须大于零。默认值为0.1。

FSRCNNX

FARCNNX模块包含以下效果:

  1. FSRCNNX:FSRCNNX_x2_8-0-4-1的移植。固定的将输入放大至两倍。
  2. FSRCNNXLineArt:FSRCNNX_x2_8-0-4-1_LineArt的移植。固定的将输入放大至两倍。

RAVU

RAVU模块包含以下效果:

  1. RAVULite:ravu-lite-r3的移植。固定的将输入放大至两倍。
  2. RAVUZoom:ravu-zoom-r3的移植。支持任意倍数的缩放。
    • 参数
      • scale:缩放比例,值必须是有两个元素的数组。

SSIM

SSIM模块包含以下效果:

  1. SSimDownscaler:基于感知的图像缩小算法,比catrom更锐利。此效果依赖于Common模块。

    • 参数
      • scale:缩放比例,值必须是有两个元素的数组。
  2. SSimSuperRes:基于感知的图像放大算法,可对嵌套的缩放算法进行增强。

    • 参数

      • upScaleEffect:嵌套的缩放效果。它的缩放倍率决定了SSimSuperRes的缩放倍率。
    • 示例

      以下片段演示了SSimSuperRes对Lanczos算法的增强。

      {
          "module": "SSIM",
          "effect": "SSimSuperRes",
          "upScaleEffect": {
              "module": "Common",
              "effect": "lanczos",
              "scale": [-1, -1]
          }
      }

示例

如果屏幕大小是源窗口的2-4倍,可以应用两次Anime4K,下面的片段演示了这个算法。

{
    "name": "动漫 4x",
    "model": [
      {
        "module": "Anime4K",
        "effect": "Anime4K",
        "curveHeight": 0.3,
        "useDenoiseVersion": true
      },
      {
        "module": "Common",
        "effect": "mitchell",
        "scale": [ -0.5, -0.5 ],
        "variant": "catrom"
      },
      {
        "module": "Anime4K",
        "effect": "Anime4K",
        "curveHeight": 0.3
      }
    ]
}

为了提升性能,在应用第一次Anime4K后缩放到屏幕能容纳的最大等比缩放的比例的一半大小,这样在第二次应用Anim4K后刚好全屏显示。为了消除图像中的轻微噪点,第一次使用的Anime4K为降噪版本。