Tint
From Avisynth wiki
by actionman133
Tint () is designed to be a useful colour filter to be implemented for colour grading or correction in AVISynth. If you apply this function at full strengh (255) to a greyscale clip, you can create interesting colorizing effects.
Function Tint (clip Last, int color, int "strength") { strength = Default (strength, 128) hue = BlankClip (last, color = color, pixel_type = "YV12") # get chroma on new tint uhue = hue.UtoY () vhue = hue.VtoY () u = UtoY () v = VtoY () #set up mask. Assumes 0-255 RGB and 16-235 YUV. mask = GreyScale () mask = mask.isYUV () ? mask.ColorYUV (levels = "tv->pc") : mask # mask 1 reduces chroma impact in shadows # mask 2 reduces chroma in highlights mask1 = mask.Levels (0, 1, 127, 0, 255, false) mask2 = mask.Levels (128, 1, 255, 255, 0, false) maskmask = mask.Levels (127, 1, 128, 0, 255, false) mask = Overlay (mask1, mask2, mask = maskmask).Levels (0, 1, 255, 0, strength, false) mask = isYUY2 () ? mask.BilinearResize (Width/2, Height) : \ isYV12 () ? mask.BilinearResize (Width/2, Height/2) : mask # mask combines the two masks and resizes to match chroma # apply tints to the chroma channels u1 = Overlay (u, uhue, mode = "luma", mask = mask) v1 = Overlay (v, vhue, mode = "luma", mask = mask) # mix new chroma into YtoUV (u1, v1, last) }
Example:
Tint ($FF7F00, 64) # warm tint for a late afternoon look.
Notes:
Due to Overlay's unpredictable behavior in RGB, this filter will only work with YUY2 and YV12 content. For RGB colour correction or grading, use RGBAdjust()
The color is expressed in hexadecimal. Check the colors_rgb.avsi file in the plugins folder for some common colours.