|
|
(2 intermediate revisions by one user not shown) |
Line 1: |
Line 1: |
− | {{FilterCat|External_filters|Restoration_filters|Rainbow & Dot Crawl Removal}}
| + | #REDIRECT [[Bifrost]] |
− | {{Filter
| + | [[Category:Redirects]] |
− | | {{Author/Myrsloik}}, dubhater [v2.0]
| + | |
− | | v2.0
| + | |
− | | [http://github.com/dubhater/vapoursynth-bifrost/releases/download/v2.0-avs/avisynth-bifrost-v2.0.7z Bifrost]
| + | |
− | | Rainbow & Dot Crawl Removal
| + | |
− | |
| + | |
− | * YV12
| + | |
− | |
| + | |
− | |}}
| + | |
− | <br>
| + | |
− | == Description ==
| + | |
− | :Bifrost is a temporal derainbowing filter created by Fredrik Mellbin. The original [[Bifrost v1.1]] worked on the whole frame or not at all.
| + | |
− | :This version now works on blocks, making it possible to process static rainbows even if there is lots of motion in other parts of the image.
| + | |
− | | + | |
− | ==== Requirements: ====
| + | |
− | :- AviSynth 2.5.8 or later
| + | |
− | :- Supported color formats: [[YV12]]
| + | |
− | <br>
| + | |
− | | + | |
− | == Syntax and Parameters ==
| + | |
− | :{{Template:FuncDef|Bifrost (clip, clip "altclip", float "luma_thresh", int "variation", bool "conservative_mask", bool "interlaced", int "blockx", int "blocky")}} | + | |
− | <br>
| + | |
− | ::{{Par|altclip|clip|}}
| + | |
− | :::Bifrost will copy from this clip the chroma of the blocks it can't process. This allows moving blocks to be processed with some other filter.
| + | |
− | ::::altclip must have the same format, dimensions, and length as the input clip.
| + | |
− | <br>
| + | |
− | ::{{Par|luma_thresh|float|10.0}}
| + | |
− | :::Blocks where the luma changes less than this are considered static and may be processed.
| + | |
− | <br>
| + | |
− | ::{{Par|variation|int|5}}
| + | |
− | :::Controls how big a chroma change must be in order to be considered a rainbow. Increasing this can reduce false positives.
| + | |
− | <br>
| + | |
− | ::{{Par|conservative_mask|bool|false}}
| + | |
− | :::If true, only pixels detected as rainbows will be processed. Otherwise, pixels that have rainbows above and below them will also be processed.
| + | |
− | <br>
| + | |
− | ::{{Par|interlaced|bool|true}}
| + | |
− | :::If true, [[SeparateFields]] and [[Weave]] will be invoked in order to process the top and bottom fields separately.
| + | |
− | <br>
| + | |
− | ::{{Par|blockx|int|4}}
| + | |
− | ::{{Par|blocky|int|4}}
| + | |
− | :::The dimensions of the blocks. Smaller is probably better. The default 4×4 should be good enough.
| + | |
− | ::::'''Note:''' If the dimensions of the image aren't divisible by blockx and blocky, the right and/or bottom edges won't be processed. Pad or crop the input clip before using Bifrost.
| + | |
− | <br>
| + | |
− | | + | |
− | == Types of Rainbows ==
| + | |
− | When dealing with telecined material you must determine if the rainbows were added before or after the telecine process. Find a scene with clearly visible rainbows and use the following:
| + | |
− | <br>
| + | |
− | MPEG2Source("YourSource.d2v")
| + | |
− | SeparateFields()
| + | |
− | SelectEven()
| + | |
− | If the rainbows change every frame, they were added after telecine. If there is a duplicate every five frames, they were added before.
| + | |
− | <br>
| + | |
− | <br>
| + | |
− | ====Rainbows added before telecine====
| + | |
− | First you must fix the telecine, then use Bifrost in progressive mode:
| + | |
− | MPEG2Source("rainbows1.d2v")
| + | |
− | TFM(order=1)
| + | |
− | TDecimate()
| + | |
− | Bifrost(interlaced=false)
| + | |
− | <br>
| + | |
− | ====Rainbows added after telecine====
| + | |
− | In this case, Bifrost should be used in interlaced mode, right after the source filter:
| + | |
− | MPEG2Source("rainbows2.d2v")
| + | |
− | Bifrost(interlaced=true)
| + | |
− | # IVTC here
| + | |
− | <br>
| + | |
− | == Changelog ==
| + | |
− | Version 2.0
| + | |
− | - This version now works by processing blocks rather than whole frames. Static rainbows can now be processed even if there is lots of motion in other parts of the image.
| + | |
− | - The "scenelumathresh" parameter was renamed to "luma_thresh" and it's default value is now 10.0
| + | |
− | - The "conservativemask" parameter was renamed to "conservative_mask".<br>
| + | |
− | Version 1.1
| + | |
− | - Corrected several bad assumptions about pitch and no longer requests frames out of range which makes it compatible with avisynth 2.5.7.
| + | |
− | - Uses the whole image and not just the upper half to determine if there is too much motion, this reduces artifacts greatly in certain clips but the
| + | |
− | scenelumathresh argument now has to be twice as big as in previous versions for the same effect.
| + | |
− | - Processes the image borders properly instead of just ignoring them.
| + | |
− | - Can look two frames in either direction instead of just one frame in both. This makes it possible to remove rainbows in frames right before and after scenechanges.
| + | |
− | | + | |
− | <br>
| + | |
− | | + | |
− | == Links ==
| + | |
− | :[http://forum.doom9.org/showthread.php?t=169758 Doom9 Forum] - Discussion about Bifrost v2.0
| + | |
− | :[http://github.com/dubhater/vapoursynth-bifrost/releases GitHub] - Source code repository
| + | |