FixChromaBleeding
From Avisynth wiki
| Abstract | |
|---|---|
| Author | ajordan |
| Version | 1.0 |
| Download | |
| Category | Chroma_correction |
| License | |
| Discussion | Doom9 thread |
Contents |
Description
This is a script to fix color bleeding. The colors that bleed most are the ones that lie in the extremes of the chroma scale (the V channel): saturated blue and red. This Avisynth script, which isolates those extremes, makes a mask out of them and uses the mask to shift the chroma (and lower the saturation) only in those areas where the bleeding is more severe.
Requirements
Required Plugins
Script
Function FixChromaBleeding (clip input) {
# prepare to work on the V channel and reduce to speed up and filter noise
area = input.tweak(sat=4.0).VtoY().ReduceBy2()
# select and normalize both extremes of the scale
red = area.Levels(255,1.0,255,255,0)
blue = area.Levels(0,1.0,0,0,255)
# merge both masks
mask = MergeLuma(red, blue, 0.5).Levels(250,1.0,250,255,0)
# expand to cover beyond the bleeding areas and shift to compensate the resizing
mask = mask.ConvertToRGB32().GeneralConvolution(0,"0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0").ConvertToYV12()
# back to full size and binarize (also a trick to expand)
mask = mask.BilinearResize(Width(input),Height(input)).Levels(10,1.0,10,0,255)
# prepare a version of the image that has its chroma shifted and less saturated
input_c = input.ChromaShift(C=-4).tweak(sat=0.8)
# combine both images using the mask
return input.overlay(input_c,mask=mask,mode="blend",opacity=1)
}
Examples
AviSource("blah.avi") FixChromaBleeding()
External Links
- Doom9 Forum - discussion.
- FixChromaBleeding.avs - archived script from old wiki.
Back to External Filters ←