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-9.1.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-9.1-py3-none-win_amd64.whl (187.5 kB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

vapoursynth_eedi3-9.1-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-9.1-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-9.1-py3-none-macosx_11_0_arm64.whl (43.2 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

vapoursynth_eedi3-9.1-py3-none-macosx_10_15_x86_64.whl (89.3 kB view details)

Uploaded Python 3macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: vapoursynth_eedi3-9.1.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-9.1.tar.gz
Algorithm Hash digest
SHA256 d77a9054952470fbca65ff15712977d5c688199193a509de761f63af0737f149
MD5 50ce39ac907f96c1e631fd0b4d4306c4
BLAKE2b-256 846609ca709465dbacaf16e599db610f649971d78beaa8404eb0b00e6fafd5b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-9.1.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-9.1-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 982b1c24619f4ceca67c8cc19c500713704cc9f5e4e148da5309847266c3c4dc
MD5 be51c1ee36f882201c7f0a7168eb3d2c
BLAKE2b-256 780424678aafe2c7f2189866783a272c1d1abb277a0d0723f8f04dafdc85bd6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-9.1-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-9.1-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.1-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 71e5f4935165450aeacb2a28e13026a5272bd34e83a821bf88da227352f5ee3d
MD5 36e1cd012d40ed7b1bfcd2c845f636bf
BLAKE2b-256 99406767231c7c60ee00d1979570da7dad8db0fcc4b419656b0bceacf0010911

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-9.1-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-9.1-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.1-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 661de085c2dd49063f2b81921d7a004b91834a156dc00b0ecab6257d226c270f
MD5 f03ad7da4c74ffbdb12a2371bee81322
BLAKE2b-256 342d2867e893d718b2c86b7e8eb7cd54a619fa0433c8e328ae164ce5d53da83a

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-9.1-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-9.1-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.1-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f13d748b435852e9f1fab6a662aaeec2d28c77eafc4eb34acbdf7e0df4844596
MD5 6f7c2812627dc654c4aa03b79b028466
BLAKE2b-256 d70e4c54ad671d8114a34486f9be03ea89ea6137cf1abd4b9b6b8f3c6a4d07ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-9.1-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-9.1-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.1-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 31bfc0b44a479a36db015120ea37b951435ed437d2077e7f6f242fde6e132f6a
MD5 cbc7623bcb8c30bc475244437a384fa6
BLAKE2b-256 84c8a7b2a64d458033d3258cc45698a94bc3aaaaa0ad1ffa9b2e5eba2b1e2ec7

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-9.1-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-9.1-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 89e2bc6185151b2b9bc06abbd6a1c5b97aea38662ba20da9444a677851117c37
MD5 bdbb129bcf580f181c5ea7f24ff19ec2
BLAKE2b-256 0aa101fd817f8f9586d6c52bf090283b065953f526051453b281c686f4305015

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-9.1-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-9.1-py3-none-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.1-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 880a2c403f246f5303ea6041bf4cfa65b3eef80eb7b07ff54cad575e8c8432df
MD5 501992c5f7833b94e281ec5d11b7237c
BLAKE2b-256 e4cd45bb2277834bb355774acde2d56856c0ed57b5742e0c80ca6f51e752fe93

See more details on using hashes here.

Provenance

The following attestation bundles were made for vapoursynth_eedi3-9.1-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