Skip to main content

Enhanced Edge Directed Interpolation 3

Project description

EEDI3

EEDI3 works by finding the best non-decreasing (non-crossing) warping between two lines by minimizing a cost functional. The cost is based on neighborhood similarity (favor connecting regions that look similar), the vertical difference created by the interpolated values (favor small differences), the interpolation directions (favor short connections vs long), and the change in interpolation direction from pixel to pixel (favor small changes).

Ported from AviSynth plugin http://bengal.missouri.edu/~kes25c/ and http://ldesoras.free.fr/prod.html#src_eedi3.

Parameters

eedi3m.EEDI3(vnode clip, int field[, bint dh=False, int[] planes=[0, 1, 2], float alpha=0.2, float beta=0.25, float gamma=20.0, int nrad=2, int mdis=20, bint hp=False, bint ucubic=True, bint cost3=True, int vcheck=2, float vthresh0=32.0, float vthresh1=64.0, float vthresh2=4.0, vnode sclip=None, vnode mclip=None, int opt=0])
  • clip: Clip to process. Any format with either integer sample type of 8-16 bit depth or float sample type of 32 bit depth is supported.

  • field: Controls the mode of operation (double vs same rate) and which field is kept.

    • 0 = same rate, keep bottom field
    • 1 = same rate, keep top field
    • 2 = double rate (alternates each frame), starts with bottom
    • 3 = double rate (alternates each frame), starts with top
  • dh: Doubles the height of the input. Each line of the input is copied to every other line of the output and the missing lines are interpolated. If field=0, the input is copied to the odd lines of the output. If field=1, the input is copied to the even lines of the output. field must be set to either 0 or 1 when using dh=True.

  • planes: Specifies which planes will be processed. Planes that are not processed will contain uninitialized memory.

  • alpha/beta/gamma: These trade off line/edge connection vs artifacts created. alpha and beta must be in the range [0,1], and the sum alpha+beta must be in the range [0,1]. alpha is the weight given to connecting similar neighborhoods. The larger alpha is the more lines/edges should be connected. beta is the weight given to vertical difference created by the interpolation. The larger beta is the less edges/lines will be connected (at 1.0 you get no edge directedness at all). The remaining weight (1.0-alpha-beta) is given to interpolation direction (large directions (away from vertical) cost more). So the more weight you have here the more shorter connections will be favored. Finally, gamma penalizes changes in interpolation direction. The larger gamma is the smoother the interpolation field between two lines (range is [0,inf]. If lines aren't getting connected then increase alpha and maybe decrease beta/gamma. Go the other way if you are getting unwanted artifacts.

  • nrad/mdis: nrad sets the radius used for computing neighborhood similarity. Valid range is [0,3]. mdis sets the maximum connection radius. Valid range is [1,40]. If mdis=20, then when interpolating pixel (50,10) (x,y), the farthest connections allowed would be between (30,9)/(70,11) and (70,9)/(30,11). Larger mdis will allow connecting lines of smaller slope, but also increases the chance of artifacts. Larger mdis will be slower. Larger nrad will be slower.

  • hp/ucubic/cost3: These are speed vs quality options. hp=True, use half pel steps, hp=False, use full pel steps. Currently only full pel is implemented and hence this parameter has no effect. ucubic=True, use cubic 4 point interpolation, ucubic=False, use 2 point linear interpolation. cost3=True, use 3 neighborhood cost function to define similarity, cost3=False, use 1 neighborhood cost function.

  • vcheck/vthresh0/vthresh1/vthresh2/sclip:

  vcheck settings:

      0 - no reliability check
      1 - weak reliability check
      2 - med reliability check
      3 - strong reliability check

  If vcheck is greater than 0, then the resulting interpolation is checked for reliability/consistency. Assume
  we interpolated pixel 'fh' below using dir=4 (i.e. averaging pixels bl and cd).

       aa ab ac ad ae af ag ah ai aj ak al am an ao ap
                            eh          el
       ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp
                fd          fh          fl
       ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp
                gd          gh
       da db dc dd de df dg dh di dj dk dl dm dn do dp

  When checking pixel 'fh' the following is computed:

        d0 = abs((el+fd)/2 - bh)
        d1 = abs((fl+gd)/2 - ch)

        q2 = abs(bh-fh)+abs(ch-fh)
        q3 = abs(el-bl)+abs(fl-bl)
        q4 = abs(fd-cd)+abs(gd-cd)

        d2 = abs(q2-q3)
        d3 = abs(q2-q4)

        mdiff0 = vcheck == 1 ? min(d0,d1) : vcheck == 2 ? ((d0+d1+1)>>1) : max(d0,d1)
        mdiff1 = vcheck == 1 ? min(d2,d3) : vcheck == 2 ? ((d2+d3+1)>>1) : max(d2,d3)

        a0 = mdiff0/vthresh0;
        a1 = mdiff1/vthresh1;
        a2 = max((vthresh2-abs(dir))/vthresh2,0.0f)

        a = min(max(max(a0,a1),a2),1.0f)

        final_value = (1.0-a)*fh + a*cint


    ** If sclip is supplied, cint is the corresponding value from sclip. If sclip isn't supplied,
       then vertical cubic interpolation is used to create it.
  • mclip: A mask to use edge-directed interpolation only on specified pixels. Pixels where the mask is 0 are generated using cubic linear or bicubic interpolation. The main goal of the mask is to save calculations.

  • opt: Specifies which cpu optimizations to use.

    • 0 = auto detect
    • 1 = use c
    • 2 = use sse4.1
    • 3 = use avx2

Installation

pip install -U vapoursynth-eedi3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vapoursynth_eedi3-10.0.tar.gz (280.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

vapoursynth_eedi3-10.0-py3-none-win_amd64.whl (186.8 kB view details)

Uploaded Python 3Windows x86-64

vapoursynth_eedi3-10.0-py3-none-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

vapoursynth_eedi3-10.0-py3-none-musllinux_1_2_aarch64.whl (1.0 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

vapoursynth_eedi3-10.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (255.4 kB view details)

Uploaded Python 3manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

vapoursynth_eedi3-10.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (202.8 kB view details)

Uploaded Python 3manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

vapoursynth_eedi3-10.0-py3-none-macosx_11_0_arm64.whl (43.3 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

vapoursynth_eedi3-10.0-py3-none-macosx_10_15_x86_64.whl (89.4 kB view details)

Uploaded Python 3macOS 10.15+ x86-64

File details

Details for the file vapoursynth_eedi3-10.0.tar.gz.

File metadata

  • Download URL: vapoursynth_eedi3-10.0.tar.gz
  • Upload date:
  • Size: 280.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for vapoursynth_eedi3-10.0.tar.gz
Algorithm Hash digest
SHA256 0023fa2360340a156b7fa036585904a5de0784f803a82a5f042cdaca196698c1
MD5 a0ab1825d6c301fe500426aab1fa48fc
BLAKE2b-256 985dd497fef0bb613aca741ca15b3dce2a9fc743f44e9be400eb51411d7a7092

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-10.0.tar.gz:

Publisher: build.yml on HolyWu/VapourSynth-EEDI3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_eedi3-10.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-10.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b509f489badb3b5f10d95c9a8754a35b502a9de82b47f3521bfb6a1a3b2f6eb7
MD5 4121b007ecab42436ba47ab32c9011c8
BLAKE2b-256 6a9de4c27079e97008953fc79fccaccb2ca348edf9b158bee43aed9c5493ab5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-10.0-py3-none-win_amd64.whl:

Publisher: build.yml on HolyWu/VapourSynth-EEDI3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_eedi3-10.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-10.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9a6dedc4c34bd707407925e97d81e814409492a40210c0415185f1c11671a8c0
MD5 c5f51fc26714255b7311e92afb69bc69
BLAKE2b-256 e849a76e56e117bbf5fb10da3039f2478b6c48f0f64f73450f25278aae69ce4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-10.0-py3-none-musllinux_1_2_x86_64.whl:

Publisher: build.yml on HolyWu/VapourSynth-EEDI3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_eedi3-10.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-10.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ce692f32b1df46f6ef6c0f873f6953125e9668d0e58ee17e01dd545e1d48a80f
MD5 704a10807ec35c3f9bd78a8adffc68db
BLAKE2b-256 dcd69ddaf38944463c4dc32ab3b39f6324e7ed8110bf618279cdee452c9282f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-10.0-py3-none-musllinux_1_2_aarch64.whl:

Publisher: build.yml on HolyWu/VapourSynth-EEDI3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_eedi3-10.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-10.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a1f2e0a5fb7ae58ed88857835952259dd72fbf975eb03f9ce2407381e7e0426a
MD5 b85c1e72f186226f180859a4fab315ea
BLAKE2b-256 e47a4e24efe01a8c828e13258284ff2f8928c80882806ec5e72ac111a1665ac8

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-10.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on HolyWu/VapourSynth-EEDI3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_eedi3-10.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-10.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f446137944538395a7b1bf292ec64aaaea658f44abbac64adf2516d4454347b7
MD5 ebdacd74c9168077c6aad074a98e8c2c
BLAKE2b-256 2a2235db73a6a57375b8127b4594b4321a02fa84aca484dab3902c284ff988ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-10.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: build.yml on HolyWu/VapourSynth-EEDI3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_eedi3-10.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-10.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8c2f3ba76e312ccc434c443a7ea1147effc78cbd4762ec3edd86c58c7da50896
MD5 21e0d9d228da04bf905c5e6bbe50adae
BLAKE2b-256 ec7a5f7ad99d9086d835d1f81aa7db9dd0eabb761484069d329f8c6060dcb6b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-10.0-py3-none-macosx_11_0_arm64.whl:

Publisher: build.yml on HolyWu/VapourSynth-EEDI3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vapoursynth_eedi3-10.0-py3-none-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-10.0-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 5a4086aa40184b4abe85080b0b1e74f30d626721c3d8fbed5679abc973a924ef
MD5 65873c6f24bbb7b9bcc2f1ed585dc4c8
BLAKE2b-256 d81ea2c39fd4f3618baf5c683b4a2b58eed6dbc06cd7541757e7fd59216fefbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-10.0-py3-none-macosx_10_15_x86_64.whl:

Publisher: build.yml on HolyWu/VapourSynth-EEDI3

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page