SeeSaw

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
 
(add changelog)
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{FilterCat|External_filters|Other_filters|Multipurpose_filters}}
+
{{FilterCat4|External_filters|Scripts|Restoration_filters|Sharpeners}}
{{Filter|Didee|0.3e|[[Media:SeeSaw.avs|SeeSaw.avs]]|Sharpeners|
+
{{Filter3
* YV12
+
|{{Author/Didée}}
|}}
+
|0.3g
{{Template:FuncDef|SeeSaw(clip  clp, clip "denoised", int "NRlimit",int "NRlimit2", float "Sstr", int "Slimit", float "Spower", float "SdampLo", float "SdampHi", float "Szp", float "bias", int "Smode", int "sootheT", int "sootheS", float "ssx", float "ssy") }}
+
|[[Media:SeeSaw.avs|SeeSaw.avs]]
 +
|Sharpeners
 +
|
 +
|6=[http://forum.doom9.org/showthread.php?t=104701 Doom9 Thread]}}
 +
== Description ==
 +
SeeSaw is a function that uses a balance of denoising and sharpening to enhance a clip. This function provides a (simple) implementation of the "crystality sharpen" principle. In conjunction with a user-specified denoised clip, the aim is to enhance weak detail, hopefully without oversharpening or creating jaggies on strong detail, and produce a result that is temporally stable without detail shimmering, while keeping everything within reasonable bitrate requirements. This is done by intermixing source, denoised source and a modified sharpening process, in a seesaw-like manner. (Full Name: "Denoiser-and-Sharpener-are-riding-the-SeeSaw" )
  
  
 +
== Requirements ==
 +
AviSynth 2.5.8 or [http://sourceforge.net/projects/avisynth2/ greater]
 +
* [[FAQ_different_types_content#How_do_I_recognize_progressive.2C_interlaced.2C_telecined.2C_hybrid_and_blended_content.3F|Progressive]] input only
 +
* Supported color formats: [[YV12]]
  
 
+
=== Required Plugins ===
== Abstract ==
+
SeeSaw is a function that uses a balance of denoising and sharpening to enhance a clip
+
 
+
=== Requires Filters ===
+
*[[RemoveGrain]] 1.x
+
 
*[[MaskTools2]]
 
*[[MaskTools2]]
 +
*<strike>RemoveGrain- part of the [[RemoveGrain v1.0b]] package.</strike>
 +
*[[RgTools]] - recommended drop-in replacement for RemoveGrain!
 +
<BR>
  
== Description ==
+
== [[Script variables|Syntax and Parameters]] ==
This function provides a (simple) implementation of the "crystality sharpen" principle. In conjunction with a user-specified denoised clip, the aim is to enhance weak detail, hopefully without oversharpening or creating jaggies on strong detail, and produce a result that is temporally stable without detail shimmering, while keeping everything within reasonable bitrate requirements. This is done by intermixing source, denoised source and a modified sharpening process, in a seesaw-like manner.
+
:{{Template:FuncDef|SeeSaw (clip  clp, clip "denoised", int "NRlimit",int "NRlimit2", float "Sstr", int "Slimit", float "Spower", float "SdampLo", float "SdampHi", float "Szp", float "bias", int "Smode", int "sootheT", int "sootheS", float "ssx", float "ssy") }}
 
+
<br>
{{Par|NRlimit|int|2}}
+
::{{Par2|clp|clip| }}
Absolute limit for pixel change by denoising
+
:::Input clip; the noisy source.
 
+
<br>
{{Par|NRLimit2|int|NRlimit+1}}
+
::{{Par2|denoised|clip| }}
Limit for intermediate denoising
+
:::Input clip; denoised clip.
 
+
:::You're very much encouraged to feed your own custom denoised clip into SeeSaw. If the "denoised" clip parameter is omitted, a simple "spatial pressdown" filter is used.
{{Par|Sstr|float|1.5}}
+
<br>
Sharpening strength (don't touch this too much).
+
::{{Par2|NRlimit|int|2}}
 
+
:::Absolute limit for pixel change by denoising
{{Par|Slimit|int|NRlimit+2}}
+
<br>
positive: absolute limit for pixel change by sharpening
+
::{{Par2|NRLimit2|int|NRlimit+1}}
negative: pixel's sharpening difference is reduced to diff=pow(diff,1/abs(limit))
+
:::Limit for intermediate denoising
 
+
<br>
{{Par|Spower|float|4}}
+
::{{Par2|Sstr|float|1.5}}
Exponent for modified sharpener.
+
:::Sharpening strength (don't touch this too much).
 
+
<br>
{{Par|Szp|float|16+2}}
+
::{{Par2|Slimit|int|NRlimit+2}}
Zero point - below: overdrive sharpening - above: reduced sharpening.
+
:::Positive: absolute limit for pixel change by sharpening negative: pixel's sharpening difference is reduced to <code>diff = pow(diff,1/abs(limit))</code>
 
+
<br>
{{Par|SdampLo|float|Spower+1}}
+
::{{Par2|Spower|float|4}}
Reduces overdrive sharpening for very small changes.
+
:::Exponent for modified sharpener.
 
+
<br>
{{Par|SdampHi|float|24}}
+
::{{Par2|Szp|float|16+2}}
Further reduces sharpening for big sharpening changes. Try 15~30. "0" disables.
+
:::Zero point - below: overdrive sharpening - above: reduced sharpening.
 
+
<br>
{{Par|bias|float|49}}
+
::{{Par2|SdampLo|float|Spower+1}}
Bias towards detail ( >= 50 ), or towards calm result ( < 50 ).
+
:::Reduces overdrive sharpening for very small changes.
 
+
<br>
{{Par|Smode|int|ssx<1.35 ? 11 : ssx<1.51 ? 20 : 19}}
+
::{{Par2|SdampHi|float|24}}
Uh?
+
:::Further reduces sharpening for big sharpening changes. Try 15~30. "0" disables.
 
+
<br>
{{Par|sootheT|int|49}}
+
::{{Par2|bias|float|49}}
0=minimum, 100=maximum soothing of sharpener's temporal instability.
+
:::Bias towards detail ( >= 50 ), or towards calm result ( < 50 ).
(-100 .. -1 : will chain 2 instances of temporal soothing.)
+
<br>
 
+
::{{Par2|Smode|int|ssx<1.35 ? 11 : ssx<1.51 ? 20 : 19}}
{{Par|sootheS|int|0}}
+
:::RemoveGrain mode used in the modified sharpening function (sharpen2).
0=minimum, 100=maximum smoothing of sharpener's spatial effect.
+
<br>
 
+
::{{Par2|sootheT|int|49}}
{{Par|ss_x|float|1.5}}
+
:::0=minimum, 100=maximum soothing of sharpener's temporal instability.
{{Par|ss_y|float|1.5}}
+
:::(-100 .. -1 : will chain 2 instances of temporal soothing.)
SeeSaw doesn't require supersampling urgently,
+
<br>
if at all, small values ~1.25 seem to be enough.
+
::{{Par2|sootheS|int|0}}
 +
:::0=minimum, 100=maximum smoothing of sharpener's spatial effect.
 +
<br>
 +
::{{Par2|ss_x|float|1.5}}
 +
::{{Par2|ss_y|float|1.5}}
 +
:::SeeSaw doesn't require supersampling urgently, if at all, small values ~1.25 seem to be enough.
 +
<br>
  
 
== Examples ==
 
== Examples ==
Line 72: Line 85:
 
SeeSaw( a, b, [parameters] )
 
SeeSaw( a, b, [parameters] )
 
</pre>
 
</pre>
 
+
<br>
== Links ==
+
== Changelog ==
 +
Version      Date(D/M/Y)      Changes<br>
 +
0.3g        15/12/2015      - Mod by StainlessS
 +
                                * Force int call arguments to user script function float params to be explicit floats.<br>
 +
0.3f        13/12/2006      - Mod by [http://forum.doom9.org/showthread.php?p=916812#post916812 foxyshadis] 
 +
                                * Update to use MaskTools2.<br>
 +
0.3e        02/01/2006      - Renamed "Sdamp" to "SdampLo"
 +
                              - "SdampHi" (new) will further reduce sharpening on detail that's already strong (even less aliasing, hopefully)
 +
                              - "SootheT=0" and "NRlimit=0" now are really NOPs (formerly these cases applied YV12Lutxy, with zero effect.)
 +
                              - Todo: replace [additive] sharpening with [multiplication] sharpening
 +
<br>
 +
==External Links ==
 
Download: [[Media:SeeSaw.avs|SeeSaw.avs]] : Current version, using masktools2.<br/>
 
Download: [[Media:SeeSaw.avs|SeeSaw.avs]] : Current version, using masktools2.<br/>
 
Discussion: [http://forum.doom9.org/showthread.php?t=104701 Doom9 thread.]
 
Discussion: [http://forum.doom9.org/showthread.php?t=104701 Doom9 thread.]
 +
<br>
 +
<br>
 +
-----------------------------------------------
 +
'''Back to [[External_filters#Sharpeners|External Filters]] &larr;'''

Latest revision as of 20:43, 3 June 2017

Abstract
Author Didée
Version 0.3g
Download SeeSaw.avs
Category Sharpeners
License
Discussion Doom9 Thread

Contents

 [hide

[edit] Description

SeeSaw is a function that uses a balance of denoising and sharpening to enhance a clip. This function provides a (simple) implementation of the "crystality sharpen" principle. In conjunction with a user-specified denoised clip, the aim is to enhance weak detail, hopefully without oversharpening or creating jaggies on strong detail, and produce a result that is temporally stable without detail shimmering, while keeping everything within reasonable bitrate requirements. This is done by intermixing source, denoised source and a modified sharpening process, in a seesaw-like manner. (Full Name: "Denoiser-and-Sharpener-are-riding-the-SeeSaw" )


[edit] Requirements

AviSynth 2.5.8 or greater

[edit] Required Plugins


[edit] Syntax and Parameters

SeeSaw (clip clp, clip "denoised", int "NRlimit",int "NRlimit2", float "Sstr", int "Slimit", float "Spower", float "SdampLo", float "SdampHi", float "Szp", float "bias", int "Smode", int "sootheT", int "sootheS", float "ssx", float "ssy")


clip  clp =
Input clip; the noisy source.


clip  denoised =
Input clip; denoised clip.
You're very much encouraged to feed your own custom denoised clip into SeeSaw. If the "denoised" clip parameter is omitted, a simple "spatial pressdown" filter is used.


int  NRlimit = 2
Absolute limit for pixel change by denoising


int  NRLimit2 = NRlimit+1
Limit for intermediate denoising


float  Sstr = 1.5
Sharpening strength (don't touch this too much).


int  Slimit = NRlimit+2
Positive: absolute limit for pixel change by sharpening negative: pixel's sharpening difference is reduced to diff = pow(diff,1/abs(limit))


float  Spower = 4
Exponent for modified sharpener.


float  Szp = 16+2
Zero point - below: overdrive sharpening - above: reduced sharpening.


float  SdampLo = Spower+1
Reduces overdrive sharpening for very small changes.


float  SdampHi = 24
Further reduces sharpening for big sharpening changes. Try 15~30. "0" disables.


float  bias = 49
Bias towards detail ( >= 50 ), or towards calm result ( < 50 ).


int  Smode = ssx<1.35 ? 11 : ssx<1.51 ? 20 : 19
RemoveGrain mode used in the modified sharpening function (sharpen2).


int  sootheT = 49
0=minimum, 100=maximum soothing of sharpener's temporal instability.
(-100 .. -1 : will chain 2 instances of temporal soothing.)


int  sootheS = 0
0=minimum, 100=maximum smoothing of sharpener's spatial effect.


float  ss_x = 1.5
float  ss_y = 1.5
SeeSaw doesn't require supersampling urgently, if at all, small values ~1.25 seem to be enough.


[edit] Examples

avisource("Blah.avi")
SeeSaw()
a = TheNoisySource
b = a.YourPreferredDenoising()
SeeSaw( a, b, [parameters] )


[edit] Changelog

Version      Date(D/M/Y)      Changes
0.3g 15/12/2015 - Mod by StainlessS * Force int call arguments to user script function float params to be explicit floats.
0.3f 13/12/2006 - Mod by foxyshadis * Update to use MaskTools2.
0.3e 02/01/2006 - Renamed "Sdamp" to "SdampLo" - "SdampHi" (new) will further reduce sharpening on detail that's already strong (even less aliasing, hopefully) - "SootheT=0" and "NRlimit=0" now are really NOPs (formerly these cases applied YV12Lutxy, with zero effect.) - Todo: replace [additive] sharpening with [multiplication] sharpening


[edit] External Links

Download: SeeSaw.avs : Current version, using masktools2.
Discussion: Doom9 thread.


Back to External Filters

Personal tools