{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Definition\n\nLet $x = (x_n)_{n \\in \\Z}$ be a sequence of real numbers.\nOne *lifting stage* with operators $P$ and $U$ on sequences, usually linear filters, consists of three steps:\n\n1. Split: $e_k = x_{2k}$ and $o_k = x_{2k+1}$ for $k \\in \\Z$.\n2. Predict: $d = o - P(e)$.\n3. Update: $s = e + U(d)$.\n\nThe output is the pair $(s, d)$ of approximation and detail sequences.\nThe *lifting scheme* computes a wavelet transform as a composition of such stages.\nA stage may contain several predict and update steps in alternation.\nAt the end, $s$ and $d$ may be multiplied by constants.\nThe inverse of one stage is $e = s - U(d)$, then $o = d + P(e)$, then the merging of $e$ and $o$ into $x$.\n\n## Remarks\n\nThe inverse formulas hold for every choice of $P$ and $U$, since each step adds to one half of the data a function of the other half only.\nSo invertibility does not depend on the operators, and $P$ and $U$ may even be nonlinear, for instance include rounding to integers.\n\nExample (Haar): take $P(e)_k = e_k$ and $U(d)_k = d_k/2$.\nThen $d_k = x_{2k+1} - x_{2k}$ and $s_k = x_{2k} + (x_{2k+1} - x_{2k})/2 = (x_{2k} + x_{2k+1})/2$.\nThis is the Haar transform up to constant factors: the orthonormal Haar step gives $\\sqrt{2}\\, s_k$ and $-d_k/\\sqrt{2}$.\n\nExample (CDF 5/3): take $P(e)_k = (e_k + e_{k+1})/2$ and $U(d)_k = (d_{k-1} + d_k)/4$.\nThis computes the 5/3 biorthogonal wavelet transform; with rounding inside $P$ and $U$ it maps integers to integers and is the lossless transform of JPEG 2000.\n\nNon-example: a step $o \\mapsto o - P(o)$ that modifies the odd samples using the odd samples themselves is not a lifting step.\nIt need not be invertible: with $P = \\id$ it sends every odd part $o$ to $0$, so $o$ cannot be recovered.\n\nEvery [[discrete wavelet transform|P3H4MMC4ZH]] given by a two-channel perfect-reconstruction filter bank with finite filters can be factored into finitely many lifting steps and a scaling.\n\n## Explanations\n\n### L1 human\n\nA lifting stage splits a signal into even and odd samples, records how badly the evens predict the odds, and then corrects the evens.\nEach step only adds something to one half, computed from the other half, so it can always be undone.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "defines": "AF9NY73QHJ",
    "kind": "definition",
    "msc": [
      "65T60",
      "42C40",
      "94A12"
    ],
    "name": "Lifting scheme",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Lifting_scheme"
      }
    ],
    "tag": "A00DAT34F9",
    "uses": [
      "P3H4MMC4ZH"
    ]
  },
  "kind": "definition",
  "link": "https://tamnd.github.io/math2/node/A00DAT34F9/",
  "links": [
    {
      "field": "defines",
      "target": "AF9NY73QHJ"
    },
    {
      "field": "uses",
      "target": "P3H4MMC4ZH"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/A00DAT34F9.md",
  "msc": [
    "65T60",
    "42C40",
    "94A12"
  ],
  "name": "Lifting scheme",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/A00/A00DAT34F9.md",
  "status": null,
  "tag": "A00DAT34F9",
  "uri": "m2://A00DAT34F9",
  "url": "https://tamnd.github.io/math2/wiki/lifting-scheme-definition/",
  "writing": {
    "tag": "A00DAT34F9",
    "kind": "definition",
    "level": "W0",
    "next": [
      {
        "what": "an inventory row",
        "note": "the row of the inventory that the node accounts for",
        "have": 0,
        "want": 1
      },
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
