Soothe
Raffriff42 (Talk | contribs) m (link fix) |
|||
Line 8: | Line 8: | ||
|6=[http://forum.doom9.org/showthread.php?t=99679 Doom9 Thread]}} | |6=[http://forum.doom9.org/showthread.php?t=99679 Doom9 Thread]}} | ||
+ | <br> | ||
== Description == | == Description == | ||
[[Soothe]] lessens the temporal instability and aliasing caused by sharpening, by comparing the original and sharpened clip, leaving a smoother and slightly softer output. [[Soothe]] is a small postprocessor function for sharpening filters. The goal is temporal stabilization of clips that have been sharpened before. It is reasonably fast (contains 1 <tt>mt_lutxy</tt> and 2 <tt>mt_makediff</tt> operations and one [[TemporalSoften]] - that's about the cheapest possibility for what is done), and seems to work pretty well. | [[Soothe]] lessens the temporal instability and aliasing caused by sharpening, by comparing the original and sharpened clip, leaving a smoother and slightly softer output. [[Soothe]] is a small postprocessor function for sharpening filters. The goal is temporal stabilization of clips that have been sharpened before. It is reasonably fast (contains 1 <tt>mt_lutxy</tt> and 2 <tt>mt_makediff</tt> operations and one [[TemporalSoften]] - that's about the cheapest possibility for what is done), and seems to work pretty well. | ||
Line 15: | Line 16: | ||
'''Advantages:''' | '''Advantages:''' | ||
− | * | + | * More steady appearance (less "nervous") |
− | * | + | * Less bitrate required |
− | * | + | * Somewhat positive effect on detail that is, due to the sharpening, prone to aliasing |
− | * | + | * Smoother motion compared to plain-sharpening, since motion-blurred edges will be less sharpened |
− | * | + | * Less artifacts in moving areas |
* LimitedSharpenFaster can run faster, since one can get away with less [[supersampling]] | * LimitedSharpenFaster can run faster, since one can get away with less [[supersampling]] | ||
− | |||
'''Disadvantages:''' | '''Disadvantages:''' | ||
− | * | + | * Overall sharpening effect is reduced, but this can be compensated by a little more initial sharpening. |
+ | |||
<br> | <br> | ||
== Requirements == | == Requirements == | ||
Line 30: | Line 31: | ||
* Supported color formats: [[YV12]] | * Supported color formats: [[YV12]] | ||
+ | <br> | ||
==== Required Plugins ==== | ==== Required Plugins ==== | ||
Latest version of the following plugins are recommended unless stated otherwise.<br> | Latest version of the following plugins are recommended unless stated otherwise.<br> | ||
*[[MaskTools2]] | *[[MaskTools2]] | ||
Additional [[planar]] colorspaces are supported when using AviSynth 2.6 and appropriate MaskTools2. | Additional [[planar]] colorspaces are supported when using AviSynth 2.6 and appropriate MaskTools2. | ||
− | + | ||
<br> | <br> | ||
== [[Script variables|Syntax and Parameters]] == | == [[Script variables|Syntax and Parameters]] == | ||
Line 47: | Line 49: | ||
::{{Par2|keep|int|24}} | ::{{Par2|keep|int|24}} | ||
:::Minimum percent of the original sharpening to keep; range: 0-100. | :::Minimum percent of the original sharpening to keep; range: 0-100. | ||
+ | |||
<br> | <br> | ||
== Examples == | == Examples == | ||
Line 57: | Line 60: | ||
Soothe(sharp, dull, keep=20) | Soothe(sharp, dull, keep=20) | ||
</pre> | </pre> | ||
+ | |||
<br> | <br> | ||
== Soothe.avsi == | == Soothe.avsi == | ||
Line 76: | Line 80: | ||
# 14th July 2007, http://forum.doom9.org/showthread.php?p=1024318 | # 14th July 2007, http://forum.doom9.org/showthread.php?p=1024318 | ||
</pre> | </pre> | ||
+ | |||
<br> | <br> | ||
==External Links == | ==External Links == | ||
*[http://forum.doom9.org/showthread.php?t=99679 Doom9 Forum] - Soothe discussion. | *[http://forum.doom9.org/showthread.php?t=99679 Doom9 Forum] - Soothe discussion. | ||
<br> | <br> |
Latest revision as of 23:42, 24 June 2018
Abstract | |
---|---|
Author | Didée |
Version | 1.0 |
Download | |
Category | Unclassified filters |
License | |
Discussion | Doom9 Thread |
Contents |
[edit] Description
Soothe lessens the temporal instability and aliasing caused by sharpening, by comparing the original and sharpened clip, leaving a smoother and slightly softer output. Soothe is a small postprocessor function for sharpening filters. The goal is temporal stabilization of clips that have been sharpened before. It is reasonably fast (contains 1 mt_lutxy and 2 mt_makediff operations and one TemporalSoften - that's about the cheapest possibility for what is done), and seems to work pretty well.
The introduction of jitter on the temporal axis is a general problem of sharpening operations, since sharpening (usually) considers spatial aspects only. Therefore, Soothe() does a very simple job: get the difference between [source] and [sharpened source], apply a TemporalSoften on this difference BUT allow only changes towards 128 ("neutral"), and then apply this temporally calmed difference back to the original clip. Effectively, this will reduce the overall effect of sharpening - less in static areas, and more in moving areas.
Advantages:
- More steady appearance (less "nervous")
- Less bitrate required
- Somewhat positive effect on detail that is, due to the sharpening, prone to aliasing
- Smoother motion compared to plain-sharpening, since motion-blurred edges will be less sharpened
- Less artifacts in moving areas
- LimitedSharpenFaster can run faster, since one can get away with less supersampling
Disadvantages:
- Overall sharpening effect is reduced, but this can be compensated by a little more initial sharpening.
[edit] Requirements
[edit] Required Plugins
Latest version of the following plugins are recommended unless stated otherwise.
Additional planar colorspaces are supported when using AviSynth 2.6 and appropriate MaskTools2.
[edit] Syntax and Parameters
- Soothe(clip sharp, clip orig, int "keep")
- clip =
- Sharpened clip.
- clip =
- clip =
- Original clip.
- clip =
- int keep = 24
- Minimum percent of the original sharpening to keep; range: 0-100.
- int keep = 24
[edit] Examples
We use LimitedSharpenFaster() as sharpener, and we'll keep at least 20% of its result:
AviSource("blah.avi") dull = last sharp = dull.LimitedSharpenFaster(ss_x=1.25, ss_y=1.25, strength=150, overshoot=1) Soothe(sharp, dull, keep=20)
[edit] Soothe.avsi
function Soothe(clip sharp, clip orig, int "keep") { Assert(sharp.width == orig.width && sharp.height == orig.height, \ "Soothe: clip dimensions must match!") keep = default(keep, 24) keep = (keep>100) ? 100 : (keep<0) ? 0 : keep KP = string(keep) diff = mt_makediff(orig,sharp) diff2 = diff.temporalsoften(1,255,0,32,2) diff3 = mt_lutxy(diff,diff2, "x 128 - y 128 - * 0 < x 128 - 100 / " + KP \ + " * 128 + x 128 - abs y 128 - abs > x " + KP \ + " * y 100 " + KP + " - * + 100 / x ? ?") return( mt_makediff(orig,diff3,chroma="copy first") ) } # 14th July 2007, http://forum.doom9.org/showthread.php?p=1024318
[edit] External Links
- Doom9 Forum - Soothe discussion.