church_archive_script/Programs/doc/functions/video/lut2.html

219 lines
16 KiB
HTML
Raw Normal View History

2023-11-29 16:12:35 +00:00
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Lut2 &mdash; VapourSynth R64 documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="../../_static/jquery.js"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/sphinx_highlight.js"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="MakeDiff" href="makediff.html" />
<link rel="prev" title="Lut" href="lut.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../index.html" class="icon icon-home">
VapourSynth
</a>
<div class="version">
R64
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../introduction.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../gettingstarted.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pythonreference.html">Python Reference</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../functions.html">Function Reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../functions.html#general-functions">General Functions</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../../functions.html#video-functions">Video Functions</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="addborders.html">AddBorders</a></li>
<li class="toctree-l3"><a class="reference internal" href="assumefps.html">AssumeFPS</a></li>
<li class="toctree-l3"><a class="reference internal" href="averageframes.html">AverageFrames</a></li>
<li class="toctree-l3"><a class="reference internal" href="binarize_binarizemask.html">Binarize/BinarizeMask</a></li>
<li class="toctree-l3"><a class="reference internal" href="blankclip.html">BlankClip</a></li>
<li class="toctree-l3"><a class="reference internal" href="boxblur.html">BoxBlur</a></li>
<li class="toctree-l3"><a class="reference internal" href="cliptoprop.html">ClipToProp</a></li>
<li class="toctree-l3"><a class="reference internal" href="convolution.html">Convolution</a></li>
<li class="toctree-l3"><a class="reference internal" href="copyframeprops.html">CopyFrameProps</a></li>
<li class="toctree-l3"><a class="reference internal" href="crop_cropabs.html">Crop/CropAbs</a></li>
<li class="toctree-l3"><a class="reference internal" href="deflate_inflate.html">Deflate/Inflate</a></li>
<li class="toctree-l3"><a class="reference internal" href="deleteframes.html">DeleteFrames</a></li>
<li class="toctree-l3"><a class="reference internal" href="doubleweave.html">DoubleWeave</a></li>
<li class="toctree-l3"><a class="reference internal" href="duplicateframes.html">DuplicateFrames</a></li>
<li class="toctree-l3"><a class="reference internal" href="expr.html">Expr</a></li>
<li class="toctree-l3"><a class="reference internal" href="flipvertical_fliphorizontal.html">FlipVertical/FlipHorizontal</a></li>
<li class="toctree-l3"><a class="reference internal" href="frameeval.html">FrameEval</a></li>
<li class="toctree-l3"><a class="reference internal" href="freezeframes.html">FreezeFrames</a></li>
<li class="toctree-l3"><a class="reference internal" href="interleave.html">Interleave</a></li>
<li class="toctree-l3"><a class="reference internal" href="invert_invertmask.html">Invert/InvertMask</a></li>
<li class="toctree-l3"><a class="reference internal" href="levels.html">Levels</a></li>
<li class="toctree-l3"><a class="reference internal" href="limiter.html">Limiter</a></li>
<li class="toctree-l3"><a class="reference internal" href="loop.html">Loop</a></li>
<li class="toctree-l3"><a class="reference internal" href="lut.html">Lut</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">Lut2</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#std.Lut2"><code class="docutils literal notranslate"><span class="pre">Lut2()</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="makediff.html">MakeDiff</a></li>
<li class="toctree-l3"><a class="reference internal" href="makefulldiff.html">MakeFullDiff</a></li>
<li class="toctree-l3"><a class="reference internal" href="maskedmerge.html">MaskedMerge</a></li>
<li class="toctree-l3"><a class="reference internal" href="median.html">Median</a></li>
<li class="toctree-l3"><a class="reference internal" href="merge.html">Merge</a></li>
<li class="toctree-l3"><a class="reference internal" href="mergediff.html">MergeDiff</a></li>
<li class="toctree-l3"><a class="reference internal" href="mergefulldiff.html">MergeFullDiff</a></li>
<li class="toctree-l3"><a class="reference internal" href="minimum_maximum.html">Minimum/Maximum</a></li>
<li class="toctree-l3"><a class="reference internal" href="modifyframe.html">ModifyFrame</a></li>
<li class="toctree-l3"><a class="reference internal" href="pemverifier.html">PEMVerifier</a></li>
<li class="toctree-l3"><a class="reference internal" href="planestats.html">PlaneStats</a></li>
<li class="toctree-l3"><a class="reference internal" href="premultiply.html">PreMultiply</a></li>
<li class="toctree-l3"><a class="reference internal" href="prewitt_sobel.html">Prewitt/Sobel</a></li>
<li class="toctree-l3"><a class="reference internal" href="proptoclip.html">PropToClip</a></li>
<li class="toctree-l3"><a class="reference internal" href="removeframeprops.html">RemoveFrameProps</a></li>
<li class="toctree-l3"><a class="reference internal" href="resize.html">Resize</a></li>
<li class="toctree-l3"><a class="reference internal" href="reverse.html">Reverse</a></li>
<li class="toctree-l3"><a class="reference internal" href="selectevery.html">SelectEvery</a></li>
<li class="toctree-l3"><a class="reference internal" href="separatefields.html">SeparateFields</a></li>
<li class="toctree-l3"><a class="reference internal" href="setfieldbased.html">SetFieldBased</a></li>
<li class="toctree-l3"><a class="reference internal" href="setframeprop.html">SetFrameProp</a></li>
<li class="toctree-l3"><a class="reference internal" href="setframeprops.html">SetFrameProps</a></li>
<li class="toctree-l3"><a class="reference internal" href="setvideocache.html">SetVideoCache</a></li>
<li class="toctree-l3"><a class="reference internal" href="shuffleplanes.html">ShufflePlanes</a></li>
<li class="toctree-l3"><a class="reference internal" href="splice.html">Splice</a></li>
<li class="toctree-l3"><a class="reference internal" href="splitplanes.html">SplitPlanes</a></li>
<li class="toctree-l3"><a class="reference internal" href="stackvertical_stackhorizontal.html">StackVertical/StackHorizontal</a></li>
<li class="toctree-l3"><a class="reference internal" href="transpose.html">Transpose</a></li>
<li class="toctree-l3"><a class="reference internal" href="trim.html">Trim</a></li>
<li class="toctree-l3"><a class="reference internal" href="turn180.html">Turn180</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../functions.html#text">Text</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../functions.html#audio-functions">Audio Functions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../output.html">Output</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../applications.html">Applications and Libraries</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../apireference.html">VapourSynth C API Reference</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">VapourSynth</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../../functions.html">Function Reference</a></li>
<li class="breadcrumb-item active">Lut2</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/functions/video/lut2.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="lut2">
<h1>Lut2<a class="headerlink" href="#lut2" title="Permalink to this heading"></a></h1>
<dl class="py function">
<dt class="sig sig-object py" id="std.Lut2">
<span class="sig-prename descclassname"><span class="pre">std.</span></span><span class="sig-name descname"><span class="pre">Lut2</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">vnode</span> <span class="pre">clipa</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">vnode</span> <span class="pre">clipb</span></span></em><span class="optional">[</span>, <em class="sig-param"><span class="n"><span class="pre">int[]</span> <span class="pre">planes</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">int[]</span> <span class="pre">lut</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">float[]</span> <span class="pre">lutf</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">func</span> <span class="pre">function</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">int</span> <span class="pre">bits</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bint</span> <span class="pre">floatout</span></span></em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#std.Lut2" title="Permalink to this definition"></a></dt>
<dd><p>Applies a look-up table that takes into account the pixel values of two clips. The
<em>lut</em> needs to contain 2^(clip1.bits_per_sample + clip2.bits_per_sample)
entries and will be applied to the planes listed in <em>planes</em>. Alternatively
a <em>function</em> taking <em>x</em> and <em>y</em> as arguments can be used to make the lut.
The other planes will be passed through unchanged. By default all <em>planes</em>
are processed.</p>
<p>Lut2 also takes an optional bit depth parameter, <em>bits</em>, which defaults to
the bit depth of the first input clip, and specifies the bit depth of the
output clip. The user is responsible for understanding the effects of bit
depth conversion, specifically from higher bit depths to lower bit depths,
as no scaling or clamping is applied.</p>
<p>If <em>floatout</em> is set then the output will be floating point instead, and either
<em>lutf</em> needs to be set or <em>function</em> always needs to return floating point
values.</p>
<p>How to average 2 clips:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">lut</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span> <span class="o">**</span> <span class="n">clipy</span><span class="o">.</span><span class="n">format</span><span class="o">.</span><span class="n">bits_per_sample</span><span class="p">):</span>
<span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span> <span class="o">**</span> <span class="n">clipx</span><span class="o">.</span><span class="n">format</span><span class="o">.</span><span class="n">bits_per_sample</span><span class="p">):</span>
<span class="n">lut</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">)</span><span class="o">//</span><span class="mi">2</span><span class="p">)</span>
<span class="n">Lut2</span><span class="p">(</span><span class="n">clipa</span><span class="o">=</span><span class="n">clipa</span><span class="p">,</span> <span class="n">clipb</span><span class="o">=</span><span class="n">clipb</span><span class="p">,</span> <span class="n">lut</span><span class="o">=</span><span class="n">lut</span><span class="p">)</span>
</pre></div>
</div>
<p>How to average 2 clips with a 10-bit output:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
<span class="k">return</span> <span class="p">(</span><span class="n">x</span><span class="o">*</span><span class="mi">4</span> <span class="o">+</span> <span class="n">y</span><span class="p">)</span><span class="o">//</span><span class="mi">2</span>
<span class="n">Lut2</span><span class="p">(</span><span class="n">clipa</span><span class="o">=</span><span class="n">clipa8bit</span><span class="p">,</span> <span class="n">clipb</span><span class="o">=</span><span class="n">clipb10bit</span><span class="p">,</span> <span class="n">function</span><span class="o">=</span><span class="n">f</span><span class="p">,</span> <span class="n">bits</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
</pre></div>
</div>
</dd></dl>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="lut.html" class="btn btn-neutral float-left" title="Lut" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="makediff.html" class="btn btn-neutral float-right" title="MakeDiff" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2012-2023, Fredrik Mellbin.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>