{"id":298,"date":"2021-12-20T17:47:32","date_gmt":"2021-12-20T09:47:32","guid":{"rendered":"https:\/\/www.artixels.com\/wp1\/?p=298"},"modified":"2025-05-02T19:42:33","modified_gmt":"2025-05-02T11:42:33","slug":"multi-scale-image-decomposition","status":"publish","type":"post","link":"https:\/\/www.artixels.com\/wp1\/2021\/12\/20\/multi-scale-image-decomposition\/","title":{"rendered":"Multi-scale Image Decomposition (publication)"},"content":{"rendered":"\n<p class=\"has-small-font-size wp-block-paragraph\">This image decomposition method was first shared as a chapter in <a href=\"https:\/\/www.amazon.com\/GPU-Zen-Advanced-Rendering-Techniques\/dp\/0998822892\/ref=tmm_pap_swatch_0\">GPU Zen<\/a> edited by Wolfgang Engel, and I included a <a href=\"https:\/\/github.com\/wolfgangfengel\/GPUZen\/tree\/master\/03_Rendering\/04_High%20Quality%20GPU-efficient%20Image%20Detail%20Manipulation\">GLSL compute shader implementation<\/a> in the book&#8217;s Github repo.  I originally planned to build a vanity effect Nuke plug-in using this method but since my plug-in business (via artixels) never gained enough traction since 2015, so I simply kind of open-sourced it.<\/p>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\">The method uses an image filter I designed named Sub-window Variance filter (SVF) which uses a statistical edge model to define the image details to be decomposed. When one applies the filter iteratively, the original image becomes decomposed into multiple detail layers of different degree of fineness. By manipluating and re-integrating these detail layers, it is easy to create visual effect such aging or de-aging, see below an example.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"959\" src=\"https:\/\/www.artixels.com\/wp1\/wp-content\/uploads\/2021\/12\/MSD_example_01.jpg\" alt=\"\" class=\"wp-image-302\" srcset=\"https:\/\/www.artixels.com\/wp1\/wp-content\/uploads\/2021\/12\/MSD_example_01.jpg 720w, https:\/\/www.artixels.com\/wp1\/wp-content\/uploads\/2021\/12\/MSD_example_01-225x300.jpg 225w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/figure>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\">In 2021, I published a follow-up <a href=\"https:\/\/ieeexplore.ieee.org\/document\/9483837\">article (ICVR)<\/a> in IEEE Internation Conference on VR to explain the theoretical detail of the SVF with <a href=\"https:\/\/github.com\/mwkm\/SVF\">a MATLAB implementation on my Github<\/a> for other researchers. One key design of SVF is its use of Summed Area Table as an acceleration means for real-time processing. Below is another example of using SVF for local contrast enhancement (Top: Original, Bottom: Enhanced). I also used SVF for automated dataset patch selection in my MC denoising research.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"980\" src=\"https:\/\/www.artixels.com\/wp1\/wp-content\/uploads\/2021\/12\/MSD_example_02.jpg\" alt=\"\" class=\"wp-image-303\" srcset=\"https:\/\/www.artixels.com\/wp1\/wp-content\/uploads\/2021\/12\/MSD_example_02.jpg 720w, https:\/\/www.artixels.com\/wp1\/wp-content\/uploads\/2021\/12\/MSD_example_02-220x300.jpg 220w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This image decomposition method was first shared as a chapter in GPU Zen edited by Wolfgang Engel, and I included a GLSL compute shader implementation in the book&#8217;s Github repo. I originally planned to build a vanity effect Nuke plug-in using this method but since my plug-in business (via artixels) never gained enough traction since [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":299,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,8,7],"tags":[],"class_list":["post-298","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-pin","category-rnd","category-vfx"],"_links":{"self":[{"href":"https:\/\/www.artixels.com\/wp1\/wp-json\/wp\/v2\/posts\/298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artixels.com\/wp1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.artixels.com\/wp1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.artixels.com\/wp1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.artixels.com\/wp1\/wp-json\/wp\/v2\/comments?post=298"}],"version-history":[{"count":5,"href":"https:\/\/www.artixels.com\/wp1\/wp-json\/wp\/v2\/posts\/298\/revisions"}],"predecessor-version":[{"id":631,"href":"https:\/\/www.artixels.com\/wp1\/wp-json\/wp\/v2\/posts\/298\/revisions\/631"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artixels.com\/wp1\/wp-json\/wp\/v2\/media\/299"}],"wp:attachment":[{"href":"https:\/\/www.artixels.com\/wp1\/wp-json\/wp\/v2\/media?parent=298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.artixels.com\/wp1\/wp-json\/wp\/v2\/categories?post=298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.artixels.com\/wp1\/wp-json\/wp\/v2\/tags?post=298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}