HistogramAdjust

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
(Updates)
(Syntax and Parameters)
Line 26: Line 26:
  
 
== [[Script variables|Syntax and Parameters]] ==
 
== [[Script variables|Syntax and Parameters]] ==
:{{Template:FuncDef|<!-- function name -->HistogramAdjust(''clip'', ''<!-- par 1 type -->int array'' "<!-- par 1 name -->", ''<!-- par 2 type -->string'' "<!-- par 2 name -->type", ''<!-- par 3 type -->bool'' "<!-- par 3 name -->table ",''<!-- par 4 type -->clip'' <!-- par 4 name -->mclip",''<!-- par 5 type -->int'' <!-- par 5 name -->mf",''<!-- par 6 type -->bool'' <!-- par 6 name -->window",''<!-- par 7 type -->int'' <!-- par 7 name -->w",''<!-- par 8 type -->int'' <!-- par 8 name -->h",''<!-- par 9 type -->int'' <!-- par 9 name -->limit")}}
+
:{{Template:FuncDef|<!-- function name -->HistogramAdjust(''clip'', ''<!-- par 1 type -->int type, clip mclip, int mf, int w, int limit, int rgb <!-- par 1 name -->)}}
 
<br>
 
<br>
 
::{{Par2| |clip| }}
 
::{{Par2| |clip| }}
 
:::Input clip.       
 
:::Input clip.       
<br>
 
::{{Par2|<!-- par 1 type -->int array|<!-- par 1 name -->|<!-- par 1 default value -->}}
 
:::<!-- par 1 description -->table of luma and population pairs in case table is true .
 
 
<br>
 
<br>
 
::{{Par2|<!-- par 2 type -->string|<!-- par 2 name -->type|<!-- par 2 default value -->"equal"}}
 
::{{Par2|<!-- par 2 type -->string|<!-- par 2 name -->type|<!-- par 2 default value -->"equal"}}
:::<!-- par 2 description -->"equal" or "match"
+
:::The following is a table of Histogram values in %ages, to be specified only if 'table' is true
 
<br>
 
<br>
::{{Par2|<!-- par 3 type -->bool|<!-- par 3 name -->table|<!-- par 3 default value -->false}}
+
::{{Par2|<!-- par 3 type -->int|<!-- par 3 name -->|<!-- par 3 default value -->}}
:::<!-- par 3 description -->Whether table of values are specified for matching Histogram.
+
:::Luma value % of maximum.
 
<br>
 
<br>
::{{Par2|<!-- par 4 type -->clip|<!-- par 4 name -->mclip|<!-- par 4 default value -->clip}}
+
::{{Par2|<!-- par 4 type -->clip|<!-- par 4 name -->|<!-- par 4 default value -->}}
:::<!-- par 4 description -->Clip with which input clip histogram is to be matched .
+
:::% age of population or cumulative population at this luma value
 
<br>
 
<br>
::{{Par2|<!-- par 5 type -->int|<!-- par 5 name -->mf|<!-- par 5 default value -->0}}
+
::{{Par2|<!-- par 5 type -->int|<!-- par 5 name -->type|<!-- par 5 default value -->1}}
:::<!-- par 5 description -->frame number of mclip with which clip histogram is to be matched .
+
:::Type of process
 
<br>
 
<br>
::{{Par2|<!-- par 6 type -->bool|<!-- par 6 name -->window|<!-- par 6 default value -->false}}
+
::{{Par2|<!-- par 6 type -->clip|<!-- par 6 name -->mclip|<!-- par 6 default value -->dummy clip}}
:::<!-- par 6 description -->Whether windowed equalization is to be done .
+
:::Clip in which image for matching is available.
 
<br>
 
<br>
::{{Par2|<!-- par 7 type -->int|<!-- par 7 name -->w|<!-- par 7 default value -->frame width/4}}
+
::{{Par2|<!-- par 7 type -->integer, may be specified for type = 2 option|<!-- par 7 name -->w|<!-- par 7 default value -->0}}
:::<!-- par 7 description -->If window is true, width of window (odd number) to be used.
+
:::<!-- frame number on clip for matching.
  
 
<br>
 
<br>
::{{Par2|<!-- par 8 type -->int|<!-- par 8 name -->h|<!-- par 8 default value -->frame height/4}}
+
::{{Par2|<!-- par 8 type -->int|<!-- par 8 name -->limit|<!-- par 8 default value -->100}}
:::<!-- par 8 description -->If window is true, height of window (odd number) to be used.
+
:::limit on % of change in value from original for tweaking allowed.
 
<br>
 
<br>
::{{Par2|<!-- par 9 type -->int|<!-- par 9 name -->limit|<!-- par 9 default value -->100}}
+
::{{Par2|<!-- par 9 type -->int|<!-- par 9 name -->rgb|<!-- par 9 default value -->1}}
:::<!-- par 9 description -->percentage of deviation from original value of luma to be allowed .
+
:::percentage of deviation from original value of luma to be allowed.
 
<br>
 
<br>
  

Revision as of 07:06, 23 April 2018


Abstract
Author V.C.Mohan
Version 25 Aug 2017
Download modPlus.7z
Category External filters
License GPLv2
Discussion HistogramAdjust plugin


Contents

Description

This function adjusts the histogram of a frame by either equalizing it or by matching with histogram of another image, or with given histogram table of values.

The function accepts RGB, YUY2 and Planar color formats. Clip to be processed and to be used for matching need not have identical color formats and dimensions. For example processing clip can be YV12 , 720 X 480 pixels while matching clip is YUY2, 256 X 16 pixels. However their bit depths must be same.

If matching with given table values, then matching clip need not be specified. The second parameter is a table of integer pairs.Each pair consists of Luma ( intensity)value and the second number is %population (type = 3) or %cummulative population (type = 4) at this value.The table is normalized by the function and so approximate values are OK. Not more than 25 pairs can be specified. It will be possible to input by table any desired histogram shape. The plugin linearly interpolates and extrapolates to construct a full normalized histogram from these values. In case of RGB input the selected color histogram is tweaked ( in case all 3 color components of RGB input are to be tweaked the function may be invoked in the script 3 times). For other formats only Y value histogram is tweaked.

Requirements

  • AviSynth+ r2347 or greater
  • source video: progressive
  • color formats -->Supported color formats: YUY2, YV12,YV16, YV24, YV411, Y8

Syntax and Parameters

HistogramAdjust(clip, int type, clip mclip, int mf, int w, int limit, int rgb )


clip   =
Input clip.


type  string = "equal"
The following is a table of Histogram values in %ages, to be specified only if 'table' is true


  int =
Luma value % of maximum.


  clip =
% age of population or cumulative population at this luma value


type  int = 1
Type of process


mclip  clip = dummy clip
Clip in which image for matching is available.


0  w =
int|limit|100}}
limit on % of change in value from original for tweaking allowed.


rgb  int = 1
percentage of deviation from original value of luma to be allowed.




Examples

Usage examples:-
TweakHist()
TweakHist(c, type=2, mclip=mm, mf=26)
TweakHist(c, 15, 2, 30, 12, 50, 33, 90, 12, 150, 35, 200, 10, type=3, limit=50)
TweakHist(20, 1, 150, 100, 255, 110, type=4, limit=70)
RGB input. Repeated for each color
TweakHist(limit = 70, rgb = 0)
TweakHist(limit = 70, rgb = 1)
TweakHist(limit = 50, rgb = 2)



Back to External Filters

Personal tools