y4mdenoise(1)


NAME

   y4mdenoise - Motion-compensating YUV4MPEG-frame denoiser

SYNOPSIS

   y4mdenoise  [-v  verbosity]  [-p parallelism] [-r motion-search_radius]
   [-R    color_motion-search_radius]     [-t     error_tolerance]     [-T
   color_error_tolerance]     [-z     zero_motion_error_tolerance]     [-Z
   color_zero_motion_error_tolerance] [-m match-count_throttle] [-M match-
   size_throttle]  [-f  reference_frames]  [-B]  [-I  interlacing_type]  <
   /dev/stdin > /dev/stdout

DESCRIPTION

   y4mdenoise can be used to remove  noise  from  images  in  a  YUV4MPEG2
   stream.  This  is  useful  for  cleaning  old sources to increase video
   quality, and to reduce the bitrate needed to encode  your  video  (e.g.
   for VCD and SVCD creation).

HOW IT WORKS

   It  maintains  a  list  of  the  last  several frames, called reference
   frames.  Each reference frame is composed of reference  pixels.   Every
   time  a  pixel in one frame is proven to be a moved instance of a pixel
   in another frame,  the  reference-pixel  incorporates  its  value,  and
   produces  an  average value for all instances of the pixel.  The oldest
   reference frame, therefore, gets a pretty good idea of the  real  value
   of  every  pixel,  but  of  course  output  is delayed by the number of
   reference frames.

   The search is not actually done one pixel at a time; it's done in terms
   of  pixel  groups.  An entire pixel-group has to match for any match to
   be found, but all possible pixel-groups are tested (i.e.  all  possible
   overlapping  combinations  are  checked).   Using pixel-groups helps to
   establish a minimum standard for what may be  considered  a  match,  in
   order  to  avoid  finding  lots  of  really  small (and really useless)
   matches.  Presently, intensity pixel-groups are 4x2 (i.e. 4 across  and
   2 down), and color pixel-groups are 2x2.

   It  compares  every  pixel-group  in  the current frame with all pixel-
   groups in the previous frame, within a given search-radius,  and  sorts
   them  based on how close the match was, keeping the top contenders.  It
   then flood-fills each found pixel-group in turn, to determine the  full
   size  of  the match.  The first match found to be big enough is applied
   to the image.  The number of contenders to consider,  and  the  minimum
   size of a match, can be specified on the command line.

   At  the  end  of  the  frame, any new-frame pixels not resolved yet are
   considered  to  be  new  information,  and  a  new  reference-pixel  is
   generated for each one.

   A "zero-motion pass" happens each frame, before motion-detection, in an
   attempt to resolve most of the frame cheaply.  Its error-tolerance  can
   be set separately.

OPTIONS

   y4mdenoise accepts the following options:

   -v [0..2] verbosity
       0 = none, 1 = normal (per-frame pixel-detection totals), 2=debug.

   -p num
       Controls  the  level of parallelism.  Since intensity and color are
       denoised separately by  design,  it's  very  easy  to  do  each  in
       parallel  on a multiple-processor machine.  The default value is 1;
       that reads and writes video frames in parallel with  denoising.   A
       value  of  2 causes intensity and color to be denoised in parallel.
       A value of 3 does both types of concurrency.  A value  of  0  turns
       off all concurrency.

   -r [4..] search radius
       The  search radius, i.e. the maximum distance that a pixel can move
       and still be found by motion-detection.  The default is 16.   There
       are  no  particular  restrictions  on  the  search  radius, e.g. it
       doesn't have to be an even multiple of 4.

   -R [4..] color search radius
       The search radius to use for color.  Default is whatever  the  main
       search-radius  was  set  to.   Note that this value ends up getting
       scaled by the relative size of intensity &  color  planes  in  your
       YUV4MPEG2 stream.

   -t [0..255] Error tolerance
       The  largest  difference between two pixels that's accepted for the
       two pixels to be considered equal.  The default is 3, which is good
       for  medium-noise  material like analog cable TV.  (This value will
       have to be changed to whatever is appropriate  for  your  YUV4MPEG2
       stream in order to avoid undesirable results.  See the instructions
       below.)

   -T [0..255] Error tolerance for color
       The default is whatever the main error-tolerance was set to.

   -z [0..255] Error tolerance for zero-motion pass
       The error-tolerance used on pixels  that  haven't  moved.   Usually
       equal  to  the main error-tolerance or one less than that.  Default
       is 2.

   -Z [0..255] Error tolerance for color's zero-motion pass
       The default is whatever the main  zero-motion  error-tolerance  was
       set to.

   -m [num] Match-count throttle
       The  maximum  number  of  pixel-group  matches  (within  the search
       radius) to consider.  If more are found, only the  closest  matches
       are kept.  Default is 15.

   -M [num] Match-size throttle
       The minimum size of the flood-filled region generated from a match.
       Matches smaller than this are thrown away.  Specified in  terms  of
       pixel-groups.  Default is 3.

   -f num
       The  number of reference frames to keep.  Pixel values are averaged
       over this many frames before they're written  to  standard  output;
       this  also  implies  that  output  is  delayed by this many frames.
       Default is 10.

   -B  Black-and-white mode.  Denoise only the intensity  plane,  and  set
       the color plane to all white.

   -I num
       Set  interlacing type.  Default is taken from the YUV4MPEG2 stream.
       0 means not interlaced,  1  means  top-field  interlaced,  2  means
       bottom-field  interlaced.   This  is useful when the signal is more
       naturally  of  some  other  interlacing  type  than   its   current
       representation  (e.g.  if  the  original  was shot on film and then
       later it was transferred  to  interlaced  video,  it  will  denoise
       better if treated as film, i.e.  non-interlaced).

TYPICAL USAGE AND TIPS

   Keep  in  mind  that  all of this advice was gained through experience.
   (Just because one writes a tool doesn't mean  one  understands  how  it
   should  be  used,  for  the  same  reason  that  car  designers  aren't
   necessarily professional drivers.)

   The error-threshold must be determined for every  individual  YUV4MPEG2
   stream.   If  the  threshold  is  set too low, it'll leave noise in the
   video, and the denoiser will run a lot slower than it has to.  If  it's
   set  too high, the denoiser will start to remove detail: the video will
   get blurrier, you may see topographical-like bands  in  the  relatively
   flat  areas  of  the video, and small parts of the video that should be
   moving will be stuck in place.   It  may  also  run  a  little  slower.
   Additionally,  just  because  the video came to you from a clean source
   (digital cable TV, LaserDisc, etc.) doesn't mean the  video  itself  is
   clean;  y4mdenoise  is  capable  of picking up on noise in the original
   recording as well as sampling error from the video-capture device.  You
   will  have  to  generate  small  clips  of representative parts of your
   video, denoise them with various error thresholds, and see  what  looks
   the  best.   As  you  gain  experience with the tool, you may know what
   error threshold generally works with  various  types  of  sources,  but
   you'll still want to double-check your assumptions.

   Flat,  shiny  surfaces,  like gloss-painted walls, or the polished wood
   floor of an indoor gymnasium, seem to require a lower  error  threshold
   than other types of video.

   Here is the author's experience:

    -t 1 : Digital cable TV, most LaserDiscs, DV camcorder video
    -t 2 : VHS camcorder video, commercially-produced videotapes
    -t 3 : Analog cable TV, VHS videotape (at the 2-hour speed)
    -t 4 : VHS videotape (at the 6-hour speed)

   Interlaced  video  that  was  made  from  non-interlaced  video (e.g. a
   videotape or LaserDisc of a film) must be denoised  as  non-interlaced.
   Otherwise the result tends to be grainy.

   y4mdenoise  only  removes  temporal  noise, i.e. noise that occurs over
   time.  And it tends to do such a good job of  this,  that  the  spatial
   noise  (i.e. noise that occurs in nearby areas of the same frame) tends
   to  become  very  distinct.   Therefore,  always  pipe  the  output  of
   y4mdenoise  through  a  spatial  filter  such  as  y4mspatialfilter  or
   yuvmedianfilter.

   When producing very low bitrate video (e.g. VCD-compatible  video  less
   than 900 kbps), denoise at the output frame size, e.g. don't denoise at
   DVD frame size then downscale to VCD size.  That will denoise  as  well
   as  condition the video for the motion-detection part of mpeg2enc.  Not
   doing this will produce video where the less complex scenes  will  look
   really good, but high-motion scenes will blur significantly.

   JPEG  compression of your video frames, even 100% compression, seems to
   be inaccurate enough to affect MPEG  encoding.   Therefore,  if  you're
   using motion-JPEG files as your intermediary video format, you may want
   to use the denoiser in your MPEG-encoding pipeline, i.e. after  lav2yuv
   and  before mpeg2enc.  If you're generating multiple resolutions of the
   same video, e.g. DVD and VCD, experience shows that it's acceptable  to
   run  y4mdenoise  before  yuv2lav, but you should still use the spatial-
   filter (e.g. y4mspatialfilter, yuvmedianfilter)  in  the  MPEG-encoding
   pipeline, to try to smooth away JPEG encoding artifacts.

AUTHOR

   The  bulk  of the y4mdenoise code, and this manual page, was written by
   Steven Boswell <ulatec@users.sourceforge.net>.

FURTHER INFO

   If you have questions, remarks, problems or you just  want  to  contact
   the developers, the main mailing list for the MJPEG-tools is:

   mjpeg-users@lists.sourceforge.net

   For more info, see our website at

   http://mjpeg.sourceforge.net/

SEE ALSO

   mjpegtools(1), mpeg2enc(1), yuvdenoise(1), yuvmedianfilter(1)





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.