Changes between Version 1 and Version 2 of denoise


Ignore:
Timestamp:
Jun 9, 2024, 3:29:51 AM (2 years ago)
Author:
uncoder
Comment:

[HOUSEKEEPING] - Repair the author's wiki-markup, without any changes to any of the copy. Is this page intended to be public, or is it the author's private notes?

Legend:

Unmodified
Added
Removed
Modified
  • denoise

    v1 v2  
    1 ͏= Denoise =
     1= Denoise
    22
    3 ͏    Denoise is removing the signal insignificant or unsensible [1] in intended view.\\
    4 ͏    Which shall improve compressibility due to reduced entropy (effective amount of information); and subjectively improve quality.\\
    5 [ [1]\\
    6 ͏    "insignificant" is that cannot be seen.\\
    7 ͏    "unsensible" is that does not make sense. ]
     3    Denoise is removing the signal insignificant or unsensible [1] in intended view.
     4    Which shall improve compressibility due to reduced entropy (effective amount of information); and subjectively improve quality.
    85
    9 ͏    Typical denoise is value clamp based:\\
    10 ͏    Transform the data into frequency domain (via Fourier Transform alike), or Wavelet:\\
    11 ͏    [ https://scikit-image.org/docs/stable/auto_examples/filters/plot_denoise_wavelet.html ]\\
    12 ͏    And allow passing only certain range.
     6[ [1] "insignificant" is that cannot be seen.  "unsensible" is that does not make sense. ]
    137
    14 ͏    FFT (Fast Fourier Transform) is fast implementation of DFT (Discrete Fourier Transform): which asserts 2!^n input length (to speed-up).\\
    15 ͏    [ !^ https://www.ni.com/docs/en-US/bundle/diadem/page/genmaths/genmaths/calc_fouriertransform.htm#d20e91 ]\\
    16 ͏    DCT (Discrete Cosine Transform) is cut-down variant of DFT that uses only cosine transform; thus of reduced complexity but also minimum resolution:\\
    17 ͏    DFT: 2 * π / N\\
    18 ͏    DCT: 2 * π / (2 * N)\\
    19 ͏    ; somewhat comparable to "full_chroma_int": (not complexity-wise)\\
    20 ͏    https://github.com/MasterInQuestion/attach/commit/e18e5cd26b9d27bacefa685ba70d0d41bc7d7cbc#diff-75a0130f1814ba26c23e3a6fc6ce5046620163061d392086bc55e2c13c145bf9L264
     8    Typical denoise is value clamp based:
     9    Transform the data into frequency domain (via Fourier Transform alike), or Wavelet:
     10    [ https://scikit-image.org/docs/stable/auto_examples/filters/plot_denoise_wavelet.html ]
     11    And allow passing only certain range.
    2112
    22 ͏    Discrete Cosine Transform, Fourier Transform:\\
    23 ͏    https://users.dimi.uniud.it/~antonio.dangelo/MMS/2013/lessons/L11lecture.pdf\\
    24 ͏    https://users.dimi.uniud.it/~antonio.dangelo/MMS/2013/lessons/L03lecture.pdf\\
    25 ͏    https://www.youtube.com/watch?v=k3byqIaULb8\\
    26 ͏    https://www.google.com/search?hl=en&gl=ca&num=100&filter=0&q=site:users.dimi.uniud.it/~antonio.dangelo/MMS+inurl:lessons
     13    FFT (Fast Fourier Transform) is fast implementation of DFT (Discrete Fourier Transform): which asserts 2!^n input length (to speed-up).
     14    [ !^ https://www.ni.com/docs/en-US/bundle/diadem/page/genmaths/genmaths/calc_fouriertransform.htm#d20e91 ]
    2715
    28 ͏    Fourier vs. Wavelet Transform:\\
    29 ͏    https://builtin.com/data-science/wavelet-transform#main-content\\
    30 \\
    31 \\
    32 ͏    This article currently mainly covers video denoise.\\
    33 ͏    Info on audio denoise shall be added later.\\
    34 \\
    35 \\
    36 ͏== Video ==[=#Video]
     16    DCT (Discrete Cosine Transform) is cut-down variant of DFT that uses only cosine transform; thus of reduced complexity but also minimum resolution:
     17    DFT: 2 * π / N
     18    DCT: 2 * π / (2 * N)
     19    ; somewhat comparable to "full_chroma_int": (not complexity-wise) [https://github.com/MasterInQuestion/attach/commit/e18e5cd26b9d27bacefa685ba70d0d41bc7d7cbc#diff-75a0130f1814ba26c23e3a6fc6ce5046620163061d392086bc55e2c13c145bf9L264]
    3720
    38 ͏    FFmpeg supports 8 dedicated [1] video denoise filters:\\
    39 ͏    [https://ffmpeg.org/ffmpeg-filters.html#bm3d ͏"bm3d"] (BM3D: Block-Matching 3D)\\
    40 ͏    [https://ffmpeg.org/ffmpeg-filters.html#nlmeans ͏"nlmeans"] (NLM: Non-Local Means)\\
    41 ͏    [https://ffmpeg.org/ffmpeg-filters.html#fftdnoiz ͏"fftdnoiz"] (FFT then frequency clamp)\\
    42 ͏    [https://ffmpeg.org/ffmpeg-filters.html#dctdnoiz ͏"dctdnoiz"] (DCT)\\
    43 ͏    [https://ffmpeg.org/ffmpeg-filters.html#hqdn3d ͏"hqdn3d"]\\
    44 ͏    [https://ffmpeg.org/ffmpeg-filters.html#vaguedenoiser ͏"vaguedenoiser"]\\
    45 ͏    [https://ffmpeg.org/ffmpeg-filters.html#owdenoise ͏"owdenoise"] (Overcomplete Wavelet)\\
    46 ͏    [https://ffmpeg.org/ffmpeg-filters.html#atadenoise ͏"atadenoise"] (Adaptive Temporal Averaging)\\
    47 [1] Not counting [https://ffmpeg.org/ffmpeg-filters.html#pp ͏"pp"] (much defunct "libpostproc"), general manipulation [https://ffmpeg.org/ffmpeg-filters.html#fftfilt ͏"fftfilt"] alike.\\
    48 ͏    .\\
    49 ͏    More info:\\
    50 ͏    https://stackoverflow.com/questions/74831282#75348463\\
    51 ͏    https://forum.shotcut.org/t/8631/12\\
    52 ͏    https://old.reddit.com/r/ffmpeg/comments/a5ejgi?sort=old#ebyev3t
     21    Discrete Cosine Transform, Fourier Transform:
     22      - [https://users.dimi.uniud.it/~antonio.dangelo/MMS/2013/lessons/L11lecture.pdf]
     23      - [https://users.dimi.uniud.it/~antonio.dangelo/MMS/2013/lessons/L03lecture.pdf]
     24      - [https://www.youtube.com/watch?v=k3byqIaULb8]
     25      - [https://www.google.com/search?hl=en&gl=ca&num=100&filter=0&q=site:users.dimi.uniud.it/~antonio.dangelo/MMS+inurl:lessons]
    5326
    54 ͏    "bm3d" and "nlmeans" would be of most interest: for best quality.\\
    55 ͏    More details:\\
    56 ͏    https://stanford.edu/class/ee367/Winter2020/report/zhou_m_report.pdf\\
    57 ͏    https://webpages.tuni.fi/foi/3D-DFT/BM3DDEN_article.pdf\\
    58 ͏    https://github.com/gfacciol/bm3d/blob/master/bm3d.cpp\\
    59 ͏    https://www.ipol.im/pub/art/2011/bcm_nlm/revisions/2011-09-13/bcm_nlm.htm#index1h2\\
    60 ͏    https://www.dirk-farin.net/projects/nlmeans/\\
    61 ͏    https://forum.handbrake.fr/viewtopic.php?t=30135#p139077\\
    62 ͏    https://github.com/HandBrake/HandBrake-docs/blob/master/source/docs/en/latest/technical/filters-summary.markdown#denoise
     27    Fourier vs. Wavelet Transform:
     28      - https://builtin.com/data-science/wavelet-transform#main-content
    6329
    64 [ "bm3d"[=#bm3d]\\
    65 ͏    BM3D pre-filters via Block-Matching for similar blocks:\\
    66 ͏    Then applies tuned traditional denoise for each.\\
    67 ͏    .\\
    68 ͏    Thereby workaround the overdone of applying typical denoise vastly.
     30    This article currently mainly covers video denoise.  Info on audio denoise shall be added later.
    6931
    70 ͏    Using denoised input for Block-Matching may somewhat aid similarity branching.\\
    71 ͏    But using complex algorithm (BM3D, NLM alike) for this phase mostly helps not, besides pointless computation. ]
     32== Video[=#Video]
    7233
    73 [ "nlmeans"[=#nlmeans]\\
    74 ͏    [ Quote <Non-local means denoising for preserving textures>:\\
    75 https://scikit-image.org/docs/stable/auto_examples/filters/plot_nonlocal_means.html\\
    76 ͏    Non-Local Means replaces pixels' value by an average of selected pixels':\\
    77 ͏    Small patches centered around pixels are compared to the one of interest: with the average performed only when the patches share enough similarity.\\
    78 ͏    As result, the algorithm may restore well textures that would be otherwise blurred. ]
     34    FFmpeg supports 8 dedicated [1] video denoise filters:
     35    - [https://ffmpeg.org/ffmpeg-filters.html#bm3d ͏"bm3d"] (BM3D: Block-Matching 3D)
     36    - [https://ffmpeg.org/ffmpeg-filters.html#nlmeans ͏"nlmeans"] (NLM: Non-Local Means)
     37    - [https://ffmpeg.org/ffmpeg-filters.html#fftdnoiz ͏"fftdnoiz"] (FFT then frequency clamp)
     38    - [https://ffmpeg.org/ffmpeg-filters.html#dctdnoiz ͏"dctdnoiz"] (DCT)
     39    - [https://ffmpeg.org/ffmpeg-filters.html#hqdn3d ͏"hqdn3d"]
     40    - [https://ffmpeg.org/ffmpeg-filters.html#vaguedenoiser ͏"vaguedenoiser"]
     41    - [https://ffmpeg.org/ffmpeg-filters.html#owdenoise ͏"owdenoise"] (Overcomplete Wavelet)
     42    - [https://ffmpeg.org/ffmpeg-filters.html#atadenoise ͏"atadenoise"] (Adaptive Temporal Averaging)
    7943
    80 ͏    [ Quote <Comparison of CNN based and self-similarity based denoising methods> # Introduction:\\
    81 https://stanford.edu/class/ee367/Winter2020/report/zhou_m_report.pdf\\
    82 ͏    NLM averages pixels with a similar neighborhood.\\
    83 ͏    Like other traditional methods, NLM can produce a high denoising quality.\\
    84 ͏    But has the drawback of low computational efficiency; and requires manual choice of some parameters:\\
    85 ͏    Such as the patch size, search window size, and cut-off distance. ]\\
    86 <!^>͏    This is primarily for major NLM implementations seem to be false NLM:\\
    87 ͏    Not really "Non-Local" thus involve the patch size, search window etc. non-essential.\\
    88 ͏    [ Quote <Non-Local Means Denoising> # Introduction:\\
    89 https://www.ipol.im/pub/art/2011/bcm_nlm/article.pdf\\
    90 ͏    Since the search for similar pixels will be made in a larger neighborhood, but still locally, the name "non-local" is somewhat misleading. ] ]
     44[1] Not counting [https://ffmpeg.org/ffmpeg-filters.html#pp ͏"pp"] (much defunct "libpostproc"), general manipulation [https://ffmpeg.org/ffmpeg-filters.html#fftfilt ͏"fftfilt"] alike.
     45    .
     46    More info:
     47      - [https://stackoverflow.com/questions/74831282#75348463]
     48      - [https://forum.shotcut.org/t/8631/12]
     49      - [https://old.reddit.com/r/ffmpeg/comments/a5ejgi?sort=old#ebyev3t]
    9150
    92 [ "favg"[=#favg]\\
    93 ͏    Hypothetical new filter derived from NLM:\\
    94 ͏    The NLM related papers didn't well explain why the patch similarity procedure was even necessary.\\
    95 ͏    Wouldn't just mere averaging all pixels within specific value threshold: repeat for each unprocessed pixel group; adequately work?\\
    96 ͏    (Full-Image Averaging) [ #11019 ] ]
     51    "bm3d" and "nlmeans" would be of most interest: for best quality.
    9752
    98 ͏    Caveat the factual validity of some linked.\\
    99 \\
    100 \\
    101 ͏== Audio ==[=#Audio]
     53    More details:
     54    - [https://stanford.edu/class/ee367/Winter2020/report/zhou_m_report.pdf]
     55    - [https://webpages.tuni.fi/foi/3D-DFT/BM3DDEN_article.pdf]
     56    - [https://github.com/gfacciol/bm3d/blob/master/bm3d.cpp]
     57    - [https://www.ipol.im/pub/art/2011/bcm_nlm/revisions/2011-09-13/bcm_nlm.htm#index1h2]
     58    - [https://www.dirk-farin.net/projects/nlmeans/]
     59    - [https://forum.handbrake.fr/viewtopic.php?t=30135#p139077]
     60    - https://github.com/HandBrake/HandBrake-docs/blob/master/source/docs/en/latest/technical/filters-summary.markdown#denoise]
    10261
    103 ͏    FFmpeg supports ? dedicated audio denoise filters:\\
    104 ͏    ...\\
    105 \\
    106 \\
    107 ͏== See also ==[=#See-also]
     62==== "bm3d"[=#bm3d]
     63    BM3D pre-filters via Block-Matching for similar blocks:
     64    Then applies tuned traditional denoise for each.
     65    .
     66    Thereby workaround the overdone of applying typical denoise vastly.
    10867
    109 ͏    [https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/ https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/][av]f_${Name}.[ch]\\
    110 ͏    E.g. https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_nlmeans.c
     68    Using denoised input for Block-Matching may somewhat aid similarity branching.
     69    But using complex algorithm (BM3D, NLM alike) for this phase mostly helps not, besides pointless computation. ]
     70
     71==== "nlmeans"[=#nlmeans]
     72    [ Quote <Non-local means denoising for preserving textures>:
     73https://scikit-image.org/docs/stable/auto_examples/filters/plot_nonlocal_means.html
     74    Non-Local Means replaces pixels' value by an average of selected pixels':
     75    Small patches centered around pixels are compared to the one of interest: with the average performed only when the patches share enough similarity.
     76    As result, the algorithm may restore well textures that would be otherwise blurred. ]
     77
     78    [ Quote <Comparison of CNN based and self-similarity based denoising methods> # Introduction:
     79https://stanford.edu/class/ee367/Winter2020/report/zhou_m_report.pdf
     80    NLM averages pixels with a similar neighborhood.
     81    Like other traditional methods, NLM can produce a high denoising quality.
     82    But has the drawback of low computational efficiency; and requires manual choice of some parameters:
     83    Such as the patch size, search window size, and cut-off distance. ]
     84<!^>    This is primarily for major NLM implementations seem to be false NLM:
     85    Not really "Non-Local" thus involve the patch size, search window etc. non-essential.
     86    [ Quote <Non-Local Means Denoising> # Introduction:
     87https://www.ipol.im/pub/art/2011/bcm_nlm/article.pdf
     88    Since the search for similar pixels will be made in a larger neighborhood, but still locally, the name "non-local" is somewhat misleading. ] ]
     89
     90==== "favg"[=#favg]
     91    Hypothetical new filter derived from NLM:
     92    The NLM related papers didn't well explain why the patch similarity procedure was even necessary.
     93    Wouldn't just mere averaging all pixels within specific value threshold: repeat for each unprocessed pixel group; adequately work?
     94    (Full-Image Averaging) [ #11019 ] ]
     95
     96    Caveat the factual validity of some linked.
     97
     98
     99== Audio[=#Audio]
     100
     101    FFmpeg supports ? dedicated audio denoise filters:
     102    ...
     103
     104== See also[=#See-also]
     105
     106    [https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/ https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/][av]f_${Name}.[ch]
     107    E.g. https://github.com/FFmpeg/FFmpeg/blob/master/libavfilter/vf_nlmeans.c