| 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. |
| 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 ] |
| 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] |
| 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 |
| 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) |
| 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] |
| 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] |
| 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>: |
| | 73 | https://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: |
| | 79 | https://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: |
| | 87 | https://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 |