254 lines
No EOL
16 KiB
HTML
254 lines
No EOL
16 KiB
HTML
<!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>Convolution — 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="CopyFrameProps" href="copyframeprops.html" />
|
||
<link rel="prev" title="ClipToProp" href="cliptoprop.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 current"><a class="current reference internal" href="#">Convolution</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="#std.Convolution"><code class="docutils literal notranslate"><span class="pre">Convolution()</span></code></a></li>
|
||
</ul>
|
||
</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"><a class="reference internal" href="lut2.html">Lut2</a></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">Convolution</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
<a href="../../_sources/functions/video/convolution.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="convolution">
|
||
<h1>Convolution<a class="headerlink" href="#convolution" title="Permalink to this heading"></a></h1>
|
||
<dl class="py function">
|
||
<dt class="sig sig-object py" id="std.Convolution">
|
||
<span class="sig-prename descclassname"><span class="pre">std.</span></span><span class="sig-name descname"><span class="pre">Convolution</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">vnode</span> <span class="pre">clip,</span> <span class="pre">float[]</span> <span class="pre">matrix[,</span> <span class="pre">float</span> <span class="pre">bias=0.0,</span> <span class="pre">float</span> <span class="pre">divisor=0.0,</span> <span class="pre">int[]</span> <span class="pre">planes=[0,</span> <span class="pre">1,</span> <span class="pre">2],</span> <span class="pre">bint</span> <span class="pre">saturate=True,</span> <span class="pre">string</span> <span class="pre">mode="s"]</span></em><span class="sig-paren">)</span><a class="headerlink" href="#std.Convolution" title="Permalink to this definition"></a></dt>
|
||
<dd><p>Performs a spatial convolution.</p>
|
||
<p>Here is how a 3x3 convolution is done. Each pixel in the 3x3
|
||
neighbourhood is multiplied by the corresponding coefficient in
|
||
<em>matrix</em>. The results of the nine multiplications are added together,
|
||
then this sum is divided by <em>divisor</em>. Next, <em>bias</em> is added, and the
|
||
result is rounded to the nearest larger integer. If this integer
|
||
result is negative and the <em>saturate</em> parameter is False, it is
|
||
multiplied by -1. Finally, the result is clamped to the format’s range
|
||
of valid values.</p>
|
||
<dl>
|
||
<dt><em>clip</em></dt><dd><p>Clip to process. It must have integer sample type and bit depth
|
||
between 8 and 16, or float sample type and bit depth of 32. If
|
||
there are any frames with other formats, an error will be
|
||
returned.</p>
|
||
</dd>
|
||
<dt><em>matrix</em></dt><dd><p>Coefficients for the convolution.</p>
|
||
<p>When <em>mode</em> is “s”, this must be an array of 9 or 25 numbers, for
|
||
a 3x3 or 5x5 convolution, respectively.</p>
|
||
<p>When <em>mode</em> is not “s”, this must be an array of 3 to 25 numbers,
|
||
with an odd number of elements.</p>
|
||
<p>The values of the coefficients must be between -1023 and 1023
|
||
(inclusive). The coefficients are rounded to integers when
|
||
the input is an integer format.</p>
|
||
<p>This is how the elements of <em>matrix</em> correspond to the pixels in
|
||
a 3x3 neighbourhood:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="mi">1</span> <span class="mi">2</span> <span class="mi">3</span>
|
||
<span class="mi">4</span> <span class="mi">5</span> <span class="mi">6</span>
|
||
<span class="mi">7</span> <span class="mi">8</span> <span class="mi">9</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>It’s the same principle for the other types of convolutions. The
|
||
middle element of <em>matrix</em> always corresponds to the center pixel.</p>
|
||
</dd>
|
||
<dt><em>bias</em></dt><dd><p>Value to add to the final result of the convolution (before clamping
|
||
the result to the format’s range of valid values).</p>
|
||
</dd>
|
||
<dt><em>divisor</em></dt><dd><p>Divide the output of the convolution by this value (before adding
|
||
<em>bias</em>).</p>
|
||
<p>If this parameter is 0.0 (the default), the output of the convolution
|
||
will be divided by the sum of the elements of <em>matrix</em>, or by 1.0,
|
||
if the sum is 0.</p>
|
||
</dd>
|
||
<dt><em>planes</em></dt><dd><p>Specifies which planes will be processed. Any unprocessed planes
|
||
will be simply copied.</p>
|
||
</dd>
|
||
<dt><em>saturate</em></dt><dd><p>The final result is clamped to the format’s range of valid values
|
||
(0 .. (2**bitdepth)-1). Therefore, if this parameter is True,
|
||
negative values become 0. If this parameter is False, it’s instead
|
||
the absolute value that is clamped and returned.</p>
|
||
</dd>
|
||
<dt><em>mode</em></dt><dd><p>Selects the type of convolution. Possible values are “s”, for square,
|
||
“h” for horizontal, “v” for vertical, and “hv” or “vh” for both
|
||
horizontal and vertical.</p>
|
||
</dd>
|
||
</dl>
|
||
<p>How to apply a simple blur equivalent to Avisynth’s Blur(1):</p>
|
||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">Convolution</span><span class="p">(</span><span class="n">matrix</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>How to apply a stronger blur equivalent to Avisynth’s Blur(1.58):</p>
|
||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">Convolution</span><span class="p">(</span><span class="n">matrix</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</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="cliptoprop.html" class="btn btn-neutral float-left" title="ClipToProp" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="copyframeprops.html" class="btn btn-neutral float-right" title="CopyFrameProps" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© 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> |