LimitedSharpen: Difference between revisions
From Avisynth wiki
Jump to navigationJump to search
No edit summary |
Updated the default radius value |
||
| (8 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
{{FilterCat4|External_filters|Scripts|Adjustment_filters|Sharpeners}} | |||
{{ | {{Filter3 | ||
{{ | |Didée | ||
|2.0b | |||
| | |[[Media:LimitedSharpenFaster.avsi|LimitedSharpenFaster.avsi]] | ||
|Sharpeners | |||
| | |||
== | |6=[http://forum.doom9.org/showthread.php?s=&threadid=84196 Doom9 Thread]}} | ||
== Description == | |||
Applies a strong sharpening to edges and fine details by controlling halos and minimising artifacts. All sharpening is a 3-way struggle between edge-halos, edge-aliasing, and confetti artifacts; LimitedSharpen is an attempt to minimize each in the most visually pleasing way. For a similar filter that integrates denoising and sharpening into a single step, look at [[SeeSaw]]. | Applies a strong sharpening to edges and fine details by controlling halos and minimising artifacts. All sharpening is a 3-way struggle between edge-halos, edge-aliasing, and confetti artifacts; LimitedSharpen is an attempt to minimize each in the most visually pleasing way. For a similar filter that integrates denoising and sharpening into a single step, look at [[SeeSaw]]. | ||
<br> | |||
<br> | |||
== Requirements == | |||
* AviSynth 2.5.8 or [http://sourceforge.net/projects/avisynth2/ greater] | |||
* Supported color formats: [[YV12]] | |||
=== | === Required Plugins === | ||
*[[ | Latest version of the following plugins are recommended unless stated otherwise.<br> | ||
*[[ | *[[MaskTools2]] | ||
*[[ | *<strike>RemoveGrain- part of the [[RemoveGrain v1.0b]] package.</strike> | ||
*[[ | *[[RgTools]] - recommended drop-in replacement for RemoveGrain! | ||
*[[WarpSharp]] - only required when <code>{{FuncDef3|Smode}}=1</code> | |||
<br> | |||
== [[Script variables|Syntax and Parameters]] == | |||
This should be used as the last filter in a chain if possible, like any sharpener. The different Smodes cause different defaults to be used in certain cases, or limit the ranges differently. See the source for specifics. | This should be used as the last filter in a chain if possible, like any sharpener. The different Smodes cause different defaults to be used in certain cases, or limit the ranges differently. See the source for specifics. | ||
<br> | |||
{{ | <br> | ||
:{{FuncDef|LimitedSharpenFaster (clip clp, float "ss_x", float "ss_y", int "dest_x", int "dest_y", int "Smode" , int "strength", int "radius", int "Lmode", bool "wide", int "overshoot", int "undershoot", int "soft", int "edgemode", bool "special", int "exborder" )}} | |||
<br> | |||
::{{Par2| |clip| }} | |||
:::Input clip. | |||
<br> | |||
::{{Par2|ss_x|float|1.5}} | |||
::{{Par2|ss_y|float|1.5}} | |||
{{ | :::[[Supersampling]] when > 1, which reduces aliasing on edges. | ||
{{ | <br> | ||
[[Supersampling]] when > 1, which reduces aliasing on edges. | ::{{Par2|dest_x|float|width}} | ||
::{{Par2|dest_y|float|height}} | |||
{{ | :::Resize directly to final size, saves a resize step. | ||
{{ | <br> | ||
Resize directly to final size, saves a resize step. | ::{{Par2|Smode|int|3}} | ||
:::Sharpen mode: | |||
{{ | ::::* 1 : [[WarpSharp|UnsharpMask]] | ||
Sharpening strength: | ::::* 2 : [[Sharpen]] | ||
* For Smode=1, it can be 0~127 (simple sharpening), 128~255 (simple overdrive), 255~4096 (big overdrive). | ::::* 3 : Range sharpening. | ||
* For Smode=2, values 0~100 are handled over to Sharpen() as 0.0~1.0. Values >100 are mapped to 100. | ::::* 4 : nonlinear sharpening. | ||
* For Smode=3, 0~100 is common, but 100~inf. can be used if necessary. | :::Each mode has progressively less haloing in its sharpening. | ||
Default is strength=160 for Smode=1, and strength=100 otherwise. | <br> | ||
::{{Par2|strength|int|160}} | |||
{{ | :::Sharpening strength: | ||
Radius of UnsharpMask, only used in Smode=1. | ::::* For Smode=1, it can be 0~127 (simple sharpening), 128~255 (simple overdrive), 255~4096 (big overdrive). | ||
::::* For Smode=2, values 0~100 are handled over to Sharpen() as 0.0~1.0. Values >100 are mapped to 100. | |||
{{ | ::::* For Smode=3, 0~100 is common, but 100~inf. can be used if necessary. | ||
Sharpening limit: a sharpened pixel may not exceed [min,max] of the local neighborhood by more than 'overshoot'. | :::Default is strength=160 for Smode=1, and strength=100 otherwise. | ||
(High values remove the "Limited" of LimitedSharpen, and cause excessive haloing.) | <br> | ||
::{{Par2|radius|int|2}} | |||
{{ | :::Radius of UnsharpMask, only used in Smode=1. | ||
Separate limit for pixels that get darker during sharpening. Good for cartoons with strong lines. | :::Range: 1 to 10 | ||
(If not specified, then undershoot==overshoot.) | <br> | ||
::{{Par2|Lmode|int|1}} | |||
{{ | :::Lmode: | ||
::::* 0 : No effect | |||
::::* 1 : Clamp to over/undershoot. | |||
::::* 3 : Zero over/undershoot on edges, normal over/undershoot on not-edges. | |||
<br> | |||
::{{Par2|wide|bool|false}} | |||
:::With wide=true, the local [min,max] limits are gathered from the 5x5 neighborhood, instead just 3x3. Enables more gain in detail contrast. Increasingly useful with increasing [[supersampling]] factors. | |||
Softens the effect of sharpening. -1 will (try to) autocalculate a good value. | <br> | ||
::{{Par2|overshoot|int|1}} | |||
{{ | :::Sharpening limit: a sharpened pixel may not exceed [min,max] of the local neighborhood by more than 'overshoot'. (High values remove the "Limited" of LimitedSharpen, and cause excessive haloing.) | ||
* -1 : shows edges. | <br> | ||
* 0 : does nothing. | ::{{Par2|undershoot|int|[overshoot]}} | ||
* 1 : restricts sharpening to edges | :::Separate limit for pixels that get darker during sharpening. Good for cartoons with strong lines. (If not specified, then undershoot==overshoot.) | ||
* 2 : restricts sharpening to mostly non-edges (I think?) | <br> | ||
::{{Par2|soft|int|0}} | |||
{{ | :::Softens the effect of sharpening. -1 will (try to) autocalculate a good value. | ||
special=true tries to raise detail contrast in dark areas of a frame. | :::Range: 0 to 100 | ||
(Usage not really recommended - the method is simple and might cause artefacts.) | <br> | ||
::{{Par2|edgemode|int|0}} | |||
{{ | ::::* -1 : shows edges. | ||
::::* 0 : does nothing. | |||
::::* 1 : restricts sharpening to edges | |||
::::* 2 : restricts sharpening to mostly non-edges (I think?) | |||
<br> | |||
::{{Par2|special|bool|false}} | |||
:::special=true tries to raise detail contrast in dark areas of a frame. (Usage not really recommended - the method is simple and might cause artefacts.) | |||
<br> | |||
::{{Par2|exborder|int|0}} | |||
:::Border exclusion; range: 0 to 16 | |||
<br> | |||
== Examples == | == Examples == | ||
<pre> | <pre> | ||
| Line 84: | Line 96: | ||
LimitedSharpenFaster() | LimitedSharpenFaster() | ||
</pre> | </pre> | ||
<br> | |||
== Changelog == | == Changelog == | ||
Version Date Changes<br> | |||
2.0b 2006/01/14 - LimitedSharpenFaster; modified 2005/11/29 version using MaskTools 2.0 by Manao | |||
released in MaskTools-v2.0a18<br> | |||
2005/12/23 - NOTE: these changes are not available in LimitedSharpenFaster. | |||
- new:[http://forum.doom9.org/showpost.php?p=755140&postcount=377] | |||
* "strengthV" parameter, used only when Smode=2. Enables asymetric sharpening, | |||
internally it's just "sharpen( strength/100, strengthV/100 ). | |||
- * Smode=0: "custom" unsharp masking (bicubic resizing approximation). | |||
Radii can be given through "radius" (--> x-radius) and "radiusV" (--> y-radius).<br> | |||
2005/11/29 - the small bug in Smode=4 was only fixed in the version for MaskTools 2.0alpha by Socio.[http://forum.doom9.org/showpost.php?p=743701&postcount=295] | |||
now corrected this version for old MaskTools, too[http://forum.doom9.org/showpost.php?p=743106&postcount=284] <br> | |||
2005/11/01 - it adds a new Smode, a new Lmode as well, allows a seperate "undershoot", | |||
and handles the "soft" option completely different.[http://forum.doom9.org/showpost.php?p=731909&postcount=208]<br> | |||
2004/11/26 - made the "wide=true" limiting mode working correctly<br> | |||
2004/10/24 - added "exborder" parameter (border exclusion)<br> | |||
2004/10/21 - LimitedSharpen; initial release | |||
<br> | |||
==External Links == | |||
== Links == | *[http://forum.doom9.org/showthread.php?s=&threadid=84196 Doom9 Forum] - LimitedSharpen discussion thread. | ||
*[[LSFmod]] - Advanced version, alias "v3.x" | |||
<br> | |||
<br> | |||
----------------------------------------------- | |||
* [http://forum.doom9.org/showthread.php?s=&threadid=84196 LimitedSharpen thread | '''Back to [[External_filters#Sharpeners|External Filters]] ←''' | ||
Latest revision as of 06:40, 23 June 2025
| Abstract | |
|---|---|
| Author | Didée |
| Version | 2.0b |
| Download | LimitedSharpenFaster.avsi |
| Category | Sharpeners |
| License | |
| Discussion | Doom9 Thread |
Description
Applies a strong sharpening to edges and fine details by controlling halos and minimising artifacts. All sharpening is a 3-way struggle between edge-halos, edge-aliasing, and confetti artifacts; LimitedSharpen is an attempt to minimize each in the most visually pleasing way. For a similar filter that integrates denoising and sharpening into a single step, look at SeeSaw.
Requirements
Required Plugins
Latest version of the following plugins are recommended unless stated otherwise.
- MaskTools2
RemoveGrain- part of the RemoveGrain v1.0b package.- RgTools - recommended drop-in replacement for RemoveGrain!
- WarpSharp - only required when
Smode=1
This should be used as the last filter in a chain if possible, like any sharpener. The different Smodes cause different defaults to be used in certain cases, or limit the ranges differently. See the source for specifics.
- LimitedSharpenFaster (clip clp, float "ss_x", float "ss_y", int "dest_x", int "dest_y", int "Smode" , int "strength", int "radius", int "Lmode", bool "wide", int "overshoot", int "undershoot", int "soft", int "edgemode", bool "special", int "exborder" )
- clip =
- Input clip.
- clip =
- float ss_x = 1.5
- float ss_y = 1.5
- Supersampling when > 1, which reduces aliasing on edges.
- float ss_x = 1.5
- float dest_x = width
- float dest_y = height
- Resize directly to final size, saves a resize step.
- float dest_x = width
- int Smode = 3
- Sharpen mode:
- 1 : UnsharpMask
- 2 : Sharpen
- 3 : Range sharpening.
- 4 : nonlinear sharpening.
- Each mode has progressively less haloing in its sharpening.
- Sharpen mode:
- int Smode = 3
- int strength = 160
- Sharpening strength:
- For Smode=1, it can be 0~127 (simple sharpening), 128~255 (simple overdrive), 255~4096 (big overdrive).
- For Smode=2, values 0~100 are handled over to Sharpen() as 0.0~1.0. Values >100 are mapped to 100.
- For Smode=3, 0~100 is common, but 100~inf. can be used if necessary.
- Default is strength=160 for Smode=1, and strength=100 otherwise.
- Sharpening strength:
- int strength = 160
- int radius = 2
- Radius of UnsharpMask, only used in Smode=1.
- Range: 1 to 10
- int radius = 2
- int Lmode = 1
- Lmode:
- 0 : No effect
- 1 : Clamp to over/undershoot.
- 3 : Zero over/undershoot on edges, normal over/undershoot on not-edges.
- Lmode:
- int Lmode = 1
- bool wide = false
- With wide=true, the local [min,max] limits are gathered from the 5x5 neighborhood, instead just 3x3. Enables more gain in detail contrast. Increasingly useful with increasing supersampling factors.
- bool wide = false
- int overshoot = 1
- Sharpening limit: a sharpened pixel may not exceed [min,max] of the local neighborhood by more than 'overshoot'. (High values remove the "Limited" of LimitedSharpen, and cause excessive haloing.)
- int overshoot = 1
- int undershoot = [overshoot]
- Separate limit for pixels that get darker during sharpening. Good for cartoons with strong lines. (If not specified, then undershoot==overshoot.)
- int undershoot = [overshoot]
- int soft = 0
- Softens the effect of sharpening. -1 will (try to) autocalculate a good value.
- Range: 0 to 100
- int soft = 0
- int edgemode = 0
- -1 : shows edges.
- 0 : does nothing.
- 1 : restricts sharpening to edges
- 2 : restricts sharpening to mostly non-edges (I think?)
- int edgemode = 0
- bool special = false
- special=true tries to raise detail contrast in dark areas of a frame. (Usage not really recommended - the method is simple and might cause artefacts.)
- bool special = false
- int exborder = 0
- Border exclusion; range: 0 to 16
- int exborder = 0
Examples
avisource("Blah.avi")
LimitedSharpenFaster()
Changelog
Version Date Changes
2.0b 2006/01/14 - LimitedSharpenFaster; modified 2005/11/29 version using MaskTools 2.0 by Manao released in MaskTools-v2.0a18
2005/12/23 - NOTE: these changes are not available in LimitedSharpenFaster. - new:[1] * "strengthV" parameter, used only when Smode=2. Enables asymetric sharpening, internally it's just "sharpen( strength/100, strengthV/100 ). - * Smode=0: "custom" unsharp masking (bicubic resizing approximation). Radii can be given through "radius" (--> x-radius) and "radiusV" (--> y-radius).
2005/11/29 - the small bug in Smode=4 was only fixed in the version for MaskTools 2.0alpha by Socio.[2] now corrected this version for old MaskTools, too[3]
2005/11/01 - it adds a new Smode, a new Lmode as well, allows a seperate "undershoot", and handles the "soft" option completely different.[4]
2004/11/26 - made the "wide=true" limiting mode working correctly
2004/10/24 - added "exborder" parameter (border exclusion)
2004/10/21 - LimitedSharpen; initial release
External Links
- Doom9 Forum - LimitedSharpen discussion thread.
- LSFmod - Advanced version, alias "v3.x"
Back to External Filters ←