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


Release history Release notifications | RSS feed

This version

9.0

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

vapoursynth_eedi3-9.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (255.3 kB view details)

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

vapoursynth_eedi3-9.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (202.7 kB view details)

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

vapoursynth_eedi3-9.0-py3-none-macosx_11_0_arm64.whl (43.0 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

vapoursynth_eedi3-9.0-py3-none-macosx_10_15_x86_64.whl (88.9 kB view details)

Uploaded Python 3macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: vapoursynth_eedi3-9.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.7

File hashes

Hashes for vapoursynth_eedi3-9.0.tar.gz
Algorithm Hash digest
SHA256 1a4a8c9b1a6510bfabaae452cb3526d39c9c12f81ffc4ad579b7b1d09b4e2f7a
MD5 a5cc40872119a9be0a50feb177ea6451
BLAKE2b-256 8c9700b16b5e91019523a8caa21c1fcf79da039197492ce940b6ad75e6de7fc1

See more details on using hashes here.

Provenance

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

Publisher: build.yml on HomeOfVapourSynthEvolution/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.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 84287699280abff84525ec2787404129279012db1d872d000aaa47eed6e30e85
MD5 bde69fd51e89b0a600c5fa97516dd634
BLAKE2b-256 eda757825ec71e9f34864e3bee60a2edad090502555d7b20cfe29046589b7c1f

See more details on using hashes here.

Provenance

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

Publisher: build.yml on HomeOfVapourSynthEvolution/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.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7666e60418a741030c2c8c5692e4d326e89dcfc5272f4b930c60b6785f6fd778
MD5 01ba115e866c410b6629fa9f12aee3c8
BLAKE2b-256 893f9dd748086022886e27e869501e6bc6f32a46a94c0bb3ae175270394e503e

See more details on using hashes here.

Provenance

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

Publisher: build.yml on HomeOfVapourSynthEvolution/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.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 612bcdb4b1fa782750fb32b86703f5bbca650ccf1e363b99a830ebe5a4d76b18
MD5 d93ca3abfb19655787dc5262af4b2a54
BLAKE2b-256 9829602eb6d3a2db138d2302e3b0b576527f97b5e832abd29b8a3966aa72c2cc

See more details on using hashes here.

Provenance

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

Publisher: build.yml on HomeOfVapourSynthEvolution/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.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.0-py3-none-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b15e6be90c0eebd34e7b89fa33a475a9a0d9dddbbfa0922876272b44654f20cb
MD5 ac09e011108ee67c1c9d932bbefc1411
BLAKE2b-256 407848af73757d11684e8f9565281c565a2cec6d570ddd206a7a302385e23710

See more details on using hashes here.

Provenance

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

Publisher: build.yml on HomeOfVapourSynthEvolution/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.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.0-py3-none-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6106549fac4633e6597a34d340c3c8c962a310d60829375fb23722d96c2ab562
MD5 8321ecfccf5e5e3f2ce7c668df773cef
BLAKE2b-256 64b6ce80aa55ecf3141731ee4c8b619260205f75ad19f4fe274e3597bd5a98f4

See more details on using hashes here.

Provenance

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

Publisher: build.yml on HomeOfVapourSynthEvolution/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.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dc4798b36f6efc0559a000fdb17bf8136c90899440307a185b066b3f2dbcdeed
MD5 561cd365248088de4c59288a73150446
BLAKE2b-256 28bd662fbb04e43d064264d4ff7ed3874a6fd61412da6e87c3ac1703e4e27c1d

See more details on using hashes here.

Provenance

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

Publisher: build.yml on HomeOfVapourSynthEvolution/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.0-py3-none-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for vapoursynth_eedi3-9.0-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 d4867c7485f84e76ee6e3458d440b94c9443321923f8f5eae9f5527f3f54de6e
MD5 0f4172e7d6851d51e5b3161f929da3f4
BLAKE2b-256 6df6f0f80272eb4d209eb3cdde1d3e23dc72bcfa72a062df1d71f74141c1e54b

See more details on using hashes here.

Provenance

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

Publisher: build.yml on HomeOfVapourSynthEvolution/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