| Video || Audio || RGB || YUV || YUV422 || multiple instances || processing type || frames needed |
| yes || no || no || yes || no || no || PRE/POST || 3 |
This program can remove noise from your typical video recordings to increase the compression-ratio to be achieved by mpeg2enc (or if a fixed bitrate is used, it can dramatically increase the image-quality).
The filter mainly reduces color- and luminance-noise and flickering due to phase errors. It however does *not* do a good job on color-noise introduced by the common BT8x8 chip-set itself (You will have noticed, if you ever dared to record vertically reduced sequences with that chip-set -- say 288 (or 384, or whatever...) lines instead of full 576 -- that "nice" interleaved color-changes from one line to the next. This annoying artefact is introduced by BT8x8 chip-set itself, by only saving one color information for two lines but not interpolating on the transmitted color-information. Despite of that oddity it has a reasonable quality for that price... So just record "Full-Pal/NTSC" and use yuvscaler to downscale your material! The quality is far better than recording at your destination resolution directly!!!)
That's really easy! Just pipe a YUV4MPEG-stream into the filter... :) no switches, no options (NO CARRIER. erm,...) and dare to win (or loose -- Well, there *is* material which cannot be processed successfully. It's rare, but it exists! Material containing really heavy noise is very difficult. So better try it, before you sit and wait for hours without getting a better result...)
As we now have a border-detection (which is most likely to fail ;-) we need an option to override it: Just type yuvdenoise -b xx being xx any number between 0 (zero, nix, nil, NULL) and a reasonable value counted from top of the image. That is, -b 64 will turn the topmost 64 lines in pure black as well as the lowest 64 lines, too... These black borders seem to be symmetrically ?!? ;-)
My tip: If you can, use this feature (take the value from the auto-detection as a first guess) as pure YUV-black (16,128,128) is easy to encode and therefor saves some bits better to be used for the real frame... Turn this feature off by typing -b 0
Default values are shown in [green]
in square brackets.
- help Short help
- threshold Denoiser threshold (0-255) 
- Denoiser threshold accept any image-error up to +/- threshold for a single pixel to be accepted as valid for the image. If the absolute error is greater than this, exchange the pixel with the according pixel of the reference image.
- delay Average 'n' frames for a time-lowpassed pixel (1-255) 
- Average 'n' frames for a time-lowpassed pixel. Values below 2 will lead to a good response to the reference frame, while larger values will cut out more noise (and as a drawback will lead to noticable artefacts on high motion scenes.) Values above 8 are allowed but rather useless.
- radius Search radius (8-24) 
- Limit the search radius to that value. Usually it will not make sense to go higher than 16. Esp. for VCD sizes.
- border Active image area (XxY-WxH) [0x0-0x0]
- Set active image area. Every pixel outside will be set to <16,128,128> ("pure black"). This can save a lot of bits without even touching the image itself (eg. on 16:9 movies on 4:3 (VCD and SVCD)
- luma_contrast Luminance contrast (0-255) 
- Set luminance contrast in percent.
- chroma_contrast Chrominance contrast (0-255) 
- Set chrominance contrast in percent. AKA "Saturation"
- sharpen Sharpness (0-255) 
- Set sharpness in percent. WARNING: do not set too high as this will gain bit-noise.
- deinterlace Force deinterlacing (0-1) 
- Force deinterlacing. By default denoise interlaced.
- mode (0=Progressive, 1=Interlaced, 2=Fast) 
-  - Fast mode. Use only Pass II (bitnoise-reduction) for low to very low noise material. (default off)
-  - Interlaced material
-  - Progressive material (default)
- pp_threshold Pass II threshold (0-255) 
- Pass II threshold (same as -t). WARNING: If set to values greater than 8 you *will* see artefacts...
- pre run as a pre-processing filter (0-1) 
-  - run as a post process filter (default)
-  - run as a pre process filter (not recommended)
- block_thres (0-oo) 
- Every SAD value greater than this will be considered "bad" [default 1024]
- scene_thres (0-100) 
- Percentage of blocks where motion estimation should fail before a scene is considered changed
- do_reset Reset the filter for `n' frames after a scene (0-oo) 
-  - reset the filter after a scene change
-  - dont reset (default)
- I record at least 352x576 to 768x576 (PAL) with nuvrec (Roman Hochleitner's "NuppelVideo"), eg I use to record double the vertical resolution, I finally need! This is important for BT8x8 (it may not for Mjpeg based cards -- I don't know...).
- I use exportvideo to get rid of annoying borders and to generate a YUV4MPEG-stream which is piped ...
- ... into yuvscaler first(!) --> 352x288
- and then into the filter. (Well, the other way would work, too, except that the filter doesn't do interlaced MC yet and doesn't do a good job on interlaced frames that way... I'll fix that!)
- In rare cases you'll notice very clean blocks directly aside totally noisy ones... Seeing blocks is probably not what you want to get.
- It uses a MC with a search-radius of 32 pixels. It *will* slow down the encoding process. (I probably will use i686 asm sometime to increase speed)
- I really have tested it on various source material (comics, commercials, movies, video-clips...) I have not found material which generally does not work -- but you may encounter such material. If so, feel free to inform me about this.
- This filter reduces encoding speed by a factor of 3. -Phil
- For animated material, the hqdn3d plugin is twice as fast and seems to work even better, producing fewer blocks and creating a smaller file size. -Phil