CINXE.COM
Discrete wavelet transform - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Discrete wavelet transform - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"16a4e999-7f96-473e-bc2b-d05ce2039896","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Discrete_wavelet_transform","wgTitle":"Discrete wavelet transform","wgCurRevisionId":1250750378,"wgRevisionId":1250750378,"wgArticleId":857564,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description matches Wikidata","Wikipedia articles needing clarification from August 2020","All articles with unsourced statements","Articles with unsourced statements from December 2019","Articles with example Java code","Numerical analysis","Digital signal processing","Wavelets","Discrete transforms"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName": "Discrete_wavelet_transform","wgRelevantArticleId":857564,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":40000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q2414958","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList", "mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.math.styles":"ready","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","mediawiki.page.media","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips", "ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.math.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/e/e0/Jpeg2000_2-level_wavelet_transform-lichtenstein.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1200"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/e/e0/Jpeg2000_2-level_wavelet_transform-lichtenstein.png"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="800"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="640"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Discrete wavelet transform - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Discrete_wavelet_transform"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Discrete_wavelet_transform&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Discrete_wavelet_transform"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Discrete_wavelet_transform rootpage-Discrete_wavelet_transform skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Discrete+wavelet+transform" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Discrete+wavelet+transform" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Discrete+wavelet+transform" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Discrete+wavelet+transform" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-Examples" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Examples"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Examples</span> </div> </a> <button aria-controls="toc-Examples-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Examples subsection</span> </button> <ul id="toc-Examples-sublist" class="vector-toc-list"> <li id="toc-Haar_wavelets" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Haar_wavelets"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>Haar wavelets</span> </div> </a> <ul id="toc-Haar_wavelets-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Daubechies_wavelets" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Daubechies_wavelets"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.2</span> <span>Daubechies wavelets</span> </div> </a> <ul id="toc-Daubechies_wavelets-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-The_dual-tree_complex_wavelet_transform_(DCWT)" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#The_dual-tree_complex_wavelet_transform_(DCWT)"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.3</span> <span>The dual-tree complex wavelet transform (DCWT)</span> </div> </a> <ul id="toc-The_dual-tree_complex_wavelet_transform_(DCWT)-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Others" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Others"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.4</span> <span>Others</span> </div> </a> <ul id="toc-Others-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Properties" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Properties"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Properties</span> </div> </a> <button aria-controls="toc-Properties-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Properties subsection</span> </button> <ul id="toc-Properties-sublist" class="vector-toc-list"> <li id="toc-Time_issues" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Time_issues"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Time issues</span> </div> </a> <ul id="toc-Time_issues-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Applications" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Applications"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Applications</span> </div> </a> <ul id="toc-Applications-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Example_in_image_processing" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Example_in_image_processing"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Example in image processing</span> </div> </a> <ul id="toc-Example_in_image_processing-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Example_in_Watermarking" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Example_in_Watermarking"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Example in Watermarking</span> </div> </a> <button aria-controls="toc-Example_in_Watermarking-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Example in Watermarking subsection</span> </button> <ul id="toc-Example_in_Watermarking-sublist" class="vector-toc-list"> <li id="toc-Embedding_Algorithm" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Embedding_Algorithm"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1</span> <span>Embedding Algorithm</span> </div> </a> <ul id="toc-Embedding_Algorithm-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Definition" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Definition"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Definition</span> </div> </a> <button aria-controls="toc-Definition-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Definition subsection</span> </button> <ul id="toc-Definition-sublist" class="vector-toc-list"> <li id="toc-One_level_of_the_transform" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#One_level_of_the_transform"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.1</span> <span>One level of the transform</span> </div> </a> <ul id="toc-One_level_of_the_transform-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Cascading_and_filter_banks" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Cascading_and_filter_banks"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.2</span> <span>Cascading and filter banks</span> </div> </a> <ul id="toc-Cascading_and_filter_banks-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Relationship_to_the_mother_wavelet" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Relationship_to_the_mother_wavelet"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Relationship to the mother wavelet</span> </div> </a> <ul id="toc-Relationship_to_the_mother_wavelet-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Time_complexity" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Time_complexity"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Time complexity</span> </div> </a> <ul id="toc-Time_complexity-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Other_transforms" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Other_transforms"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Other transforms</span> </div> </a> <ul id="toc-Other_transforms-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Code_example" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Code_example"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>Code example</span> </div> </a> <button aria-controls="toc-Code_example-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Code example subsection</span> </button> <ul id="toc-Code_example-sublist" class="vector-toc-list"> <li id="toc-Example_of_above_code" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Example_of_above_code"> <div class="vector-toc-text"> <span class="vector-toc-numb">10.1</span> <span>Example of above code</span> </div> </a> <ul id="toc-Example_of_above_code-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">12</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">13</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Discrete wavelet transform</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 10 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-10" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">10 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Transformada_discreta_d%27ondeta" title="Transformada discreta d'ondeta – Catalan" lang="ca" hreflang="ca" data-title="Transformada discreta d'ondeta" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Diskr%C3%A9tn%C3%AD_vlnkov%C3%A1_transformace" title="Diskrétní vlnková transformace – Czech" lang="cs" hreflang="cs" data-title="Diskrétní vlnková transformace" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Wavelet-Transformation#Diskrete_Wavelet-Transformation" title="Wavelet-Transformation – German" lang="de" hreflang="de" data-title="Wavelet-Transformation" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%AA%D8%A8%D8%AF%DB%8C%D9%84_%D9%85%D9%88%D8%AC%DA%A9_%DA%AF%D8%B3%D8%B3%D8%AA%D9%87" title="تبدیل موجک گسسته – Persian" lang="fa" hreflang="fa" data-title="تبدیل موجک گسسته" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Ondelette#Transformée_en_ondelettes_discrète" title="Ondelette – French" lang="fr" hreflang="fr" data-title="Ondelette" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%82%B0_%EC%9B%A8%EC%9D%B4%EB%B8%94%EB%A6%BF_%EB%B3%80%ED%99%98" title="이산 웨이블릿 변환 – Korean" lang="ko" hreflang="ko" data-title="이산 웨이블릿 변환" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E9%9B%A2%E6%95%A3%E3%82%A6%E3%82%A7%E3%83%BC%E3%83%96%E3%83%AC%E3%83%83%E3%83%88%E5%A4%89%E6%8F%9B" title="離散ウェーブレット変換 – Japanese" lang="ja" hreflang="ja" data-title="離散ウェーブレット変換" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Transformada_discreta_de_wavelet" title="Transformada discreta de wavelet – Portuguese" lang="pt" hreflang="pt" data-title="Transformada discreta de wavelet" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%BE%D0%B5_%D0%B2%D0%B5%D0%B9%D0%B2%D0%BB%D0%B5%D1%82-%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Дискретное вейвлет-преобразование – Russian" lang="ru" hreflang="ru" data-title="Дискретное вейвлет-преобразование" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E9%9B%A2%E6%95%A3%E5%B0%8F%E6%B3%A2%E8%AE%8A%E6%8F%9B" title="離散小波變換 – Chinese" lang="zh" hreflang="zh" data-title="離散小波變換" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q2414958#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Discrete_wavelet_transform" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Discrete_wavelet_transform" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Discrete_wavelet_transform"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Discrete_wavelet_transform&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Discrete_wavelet_transform"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Discrete_wavelet_transform&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Discrete_wavelet_transform" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Discrete_wavelet_transform" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Discrete_wavelet_transform&oldid=1250750378" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Discrete_wavelet_transform&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Discrete_wavelet_transform&id=1250750378&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDiscrete_wavelet_transform"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDiscrete_wavelet_transform"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Discrete_wavelet_transform&action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Discrete_wavelet_transform&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q2414958" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Transform in numerical harmonic analysis</div> <figure typeof="mw:File/Thumb"><a href="/wiki/File:Jpeg2000_2-level_wavelet_transform-lichtenstein.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Jpeg2000_2-level_wavelet_transform-lichtenstein.png/300px-Jpeg2000_2-level_wavelet_transform-lichtenstein.png" decoding="async" width="300" height="300" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Jpeg2000_2-level_wavelet_transform-lichtenstein.png/450px-Jpeg2000_2-level_wavelet_transform-lichtenstein.png 1.5x, //upload.wikimedia.org/wikipedia/commons/e/e0/Jpeg2000_2-level_wavelet_transform-lichtenstein.png 2x" data-file-width="512" data-file-height="512" /></a><figcaption>An example of the 2D discrete wavelet transform that is used in <a href="/wiki/JPEG2000" class="mw-redirect" title="JPEG2000">JPEG2000</a>. The original image is high-pass filtered, yielding the three large images, each describing local changes in brightness (details) in the original image. It is then low-pass filtered and downscaled, yielding an approximation image; this image is high-pass filtered to produce the three smaller detail images, and low-pass filtered to produce the final approximation image in the upper-left.<sup class="noprint Inline-Template" style="margin-left:0.1em; white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Please_clarify" title="Wikipedia:Please clarify"><span title="Was the sky gradient hand painted to complete the process? There's no visible trace in the components. Are we trying to demonstrate something with illustrations further low-passed by another compression method? Listen to this $16m cello on your $5 earbuds! (August 2020)">clarification needed</span></a></i>]</sup></figcaption></figure> <p>In <a href="/wiki/Numerical_analysis" title="Numerical analysis">numerical analysis</a> and <a href="/wiki/Functional_analysis" title="Functional analysis">functional analysis</a>, a <b>discrete wavelet transform</b> (<b>DWT</b>) is any <a href="/wiki/Wavelet_transform" title="Wavelet transform">wavelet transform</a> for which the <a href="/wiki/Wavelet" title="Wavelet">wavelets</a> are discretely sampled. As with other wavelet transforms, a key advantage it has over <a href="/wiki/Fourier_transform" title="Fourier transform">Fourier transforms</a> is temporal resolution: it captures both frequency <i>and</i> location information (location in time). </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Examples">Examples</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=1" title="Edit section: Examples"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Haar_wavelets">Haar wavelets</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=2" title="Edit section: Haar wavelets"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1236090951">.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}</style><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Haar_wavelet" title="Haar wavelet">Haar wavelet</a></div> <p>The first DWT was invented by Hungarian mathematician <a href="/wiki/Alfr%C3%A9d_Haar" title="Alfréd Haar">Alfréd Haar</a>. For an input represented by a list of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2^{n}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 2^{n}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8226f30650ee4fe4e640c6d2798127e80e9c160d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.381ex; height:2.343ex;" alt="{\displaystyle 2^{n}}"></span> numbers, the <a href="/wiki/Haar_wavelet" title="Haar wavelet">Haar wavelet</a> transform may be considered to pair up input values, storing the difference and passing the sum. This process is repeated recursively, pairing up the sums to prove the next scale, which leads to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2^{n}-1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msup> <mo>−<!-- − --></mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 2^{n}-1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/51e4bd4ef2f9549d026cbf643a91c0d12a8c6794" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:6.384ex; height:2.509ex;" alt="{\displaystyle 2^{n}-1}"></span> differences and a final sum. </p> <div class="mw-heading mw-heading3"><h3 id="Daubechies_wavelets">Daubechies wavelets</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=3" title="Edit section: Daubechies wavelets"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Daubechies_wavelet" title="Daubechies wavelet">Daubechies wavelet</a></div> <p>The most commonly used set of discrete wavelet transforms was formulated by the Belgian mathematician <a href="/wiki/Ingrid_Daubechies" title="Ingrid Daubechies">Ingrid Daubechies</a> in 1988. This formulation is based on the use of <a href="/wiki/Recurrence_relation" title="Recurrence relation">recurrence relations</a> to generate progressively finer discrete samplings of an implicit mother wavelet function; each resolution is twice that of the previous scale. In her seminal paper, Daubechies derives a family of <a href="/wiki/Daubechies_wavelet" title="Daubechies wavelet">wavelets</a>, the first of which is the Haar wavelet. Interest in this field has exploded since then, and many variations of Daubechies' original wavelets were developed.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="The_dual-tree_complex_wavelet_transform_(DCWT)"><span id="The_dual-tree_complex_wavelet_transform_.28DCWT.29"></span>The dual-tree complex wavelet transform (DCWT)</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=4" title="Edit section: The dual-tree complex wavelet transform (DCWT)"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/Complex_wavelet_transform" title="Complex wavelet transform">Complex wavelet transform</a></div> <p>The dual-tree complex wavelet transform (<span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbb {C} }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="double-struck">C</mi> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \mathbb {C} }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f9add4085095b9b6d28d045fd9c92c2c09f549a7" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.678ex; height:2.176ex;" alt="{\displaystyle \mathbb {C} }"></span>WT) is a relatively recent enhancement to the discrete wavelet transform (DWT), with important additional properties: It is nearly shift invariant and directionally selective in two and higher dimensions. It achieves this with a redundancy factor of only <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2^{d}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 2^{d}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e78df590f3fc81f0201082eaaa6844c145c8bdf3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.254ex; height:2.676ex;" alt="{\displaystyle 2^{d}}"></span>, substantially lower than the undecimated DWT. The multidimensional (M-D) dual-tree <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbb {C} }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="double-struck">C</mi> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \mathbb {C} }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f9add4085095b9b6d28d045fd9c92c2c09f549a7" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.678ex; height:2.176ex;" alt="{\displaystyle \mathbb {C} }"></span>WT is nonseparable but is based on a computationally efficient, separable filter bank (FB).<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Others">Others</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=5" title="Edit section: Others"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Other forms of discrete wavelet transform include the Le Gall–Tabatabai (LGT) 5/3 wavelet developed by Didier Le Gall and Ali J. Tabatabai in 1988 (used in <a href="/wiki/JPEG_2000" title="JPEG 2000">JPEG 2000</a> or <a href="/wiki/JPEG_XS" title="JPEG XS">JPEG XS</a> ),<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> the <a href="/wiki/Binomial_QMF" title="Binomial QMF">Binomial QMF</a> developed by <a href="/wiki/Ali_Naci_Akansu" class="mw-redirect" title="Ali Naci Akansu">Ali Naci Akansu</a> in 1990,<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> the <a href="/wiki/Set_partitioning_in_hierarchical_trees" title="Set partitioning in hierarchical trees">set partitioning in hierarchical trees</a> (SPIHT) algorithm developed by Amir Said with William A. Pearlman in 1996,<sup id="cite_ref-Said_9-0" class="reference"><a href="#cite_note-Said-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> the <a href="/wiki/Stationary_wavelet_transform" title="Stationary wavelet transform">non- or undecimated wavelet transform</a> (where downsampling is omitted), and the <a href="/wiki/Newland_transform" class="mw-redirect" title="Newland transform">Newland transform</a> (where an <a href="/wiki/Orthonormal" class="mw-redirect" title="Orthonormal">orthonormal</a> basis of wavelets is formed from appropriately constructed <a href="/wiki/Top-hat_filter" title="Top-hat filter">top-hat filters</a> in <a href="/wiki/Frequency_space" class="mw-redirect" title="Frequency space">frequency space</a>). <a href="/wiki/Wavelet_packet_decomposition" title="Wavelet packet decomposition">Wavelet packet transforms</a> are also related to the discrete wavelet transform. <a href="/wiki/Complex_wavelet_transform" title="Complex wavelet transform">Complex wavelet transform</a> is another form. </p> <div class="mw-heading mw-heading2"><h2 id="Properties">Properties</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=6" title="Edit section: Properties"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The Haar DWT illustrates the desirable properties of wavelets in general. First, it can be performed in <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle O(n)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>O</mi> <mo stretchy="false">(</mo> <mi>n</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle O(n)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/34109fe397fdcff370079185bfdb65826cb5565a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.977ex; height:2.843ex;" alt="{\displaystyle O(n)}"></span> operations; second, it captures not only a notion of the frequency content of the input, by examining it at different scales, but also temporal content, i.e. the times at which these frequencies occur. Combined, these two properties make the <a href="/wiki/Fast_wavelet_transform" title="Fast wavelet transform">Fast wavelet transform</a> (FWT) an alternative to the conventional <a href="/wiki/Fast_Fourier_transform" title="Fast Fourier transform">fast Fourier transform</a> (FFT). </p> <div class="mw-heading mw-heading3"><h3 id="Time_issues">Time issues</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=7" title="Edit section: Time issues"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Due to the rate-change operators in the filter bank, the discrete WT is not time-invariant but actually very sensitive to the alignment of the signal in time. To address the time-varying problem of wavelet transforms, Mallat and Zhong proposed a new algorithm for wavelet representation of a signal, which is invariant to time shifts.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> According to this algorithm, which is called a TI-DWT, only the scale parameter is sampled along the dyadic sequence 2^j (j∈Z) and the wavelet transform is calculated for each point in time.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Applications">Applications</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=8" title="Edit section: Applications"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The discrete wavelet transform has a huge number of applications in science, engineering, mathematics and computer science. Most notably, it is used for <a href="/w/index.php?title=Signal_coding&action=edit&redlink=1" class="new" title="Signal coding (page does not exist)">signal coding</a>, to represent a discrete signal in a more redundant form, often as a preconditioning for <a href="/wiki/Data_compression" title="Data compression">data compression</a>. Practical applications can also be found in signal processing of accelerations for gait analysis,<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> image processing,<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> in digital communications and many others.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> <sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> </p><p>It is shown that discrete wavelet transform (discrete in scale and shift, and continuous in time) is successfully implemented as analog filter bank in biomedical signal processing for design of low-power pacemakers and also in ultra-wideband (UWB) wireless communications.<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Example_in_image_processing">Example in image processing</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=9" title="Edit section: Example in image processing"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure typeof="mw:File/Thumb"><a href="/wiki/File:Noise_Wavelet.jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Noise_Wavelet.jpg/237px-Noise_Wavelet.jpg" decoding="async" width="237" height="178" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Noise_Wavelet.jpg/356px-Noise_Wavelet.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Noise_Wavelet.jpg/474px-Noise_Wavelet.jpg 2x" data-file-width="840" data-file-height="630" /></a><figcaption>Image with Gaussian noise</figcaption></figure> <figure typeof="mw:File/Thumb"><a href="/wiki/File:Denosied_Wavelet.jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/3/33/Denosied_Wavelet.jpg/237px-Denosied_Wavelet.jpg" decoding="async" width="237" height="178" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/3/33/Denosied_Wavelet.jpg/356px-Denosied_Wavelet.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/33/Denosied_Wavelet.jpg/474px-Denosied_Wavelet.jpg 2x" data-file-width="840" data-file-height="630" /></a><figcaption>Image with Gaussian noise removed</figcaption></figure> <p>Wavelets are often used to denoise two dimensional signals, such as images. The following example provides three steps to remove unwanted white Gaussian noise from the noisy image shown. <a href="/wiki/Matlab" class="mw-redirect" title="Matlab">Matlab</a> was used to import and filter the image. </p><p>The first step is to choose a wavelet type, and a level N of decomposition. In this case <a href="/wiki/Biorthogonal_wavelet" title="Biorthogonal wavelet">biorthogonal</a> 3.5 wavelets were chosen with a level N of 10. Biorthogonal wavelets are commonly used in image processing to detect and filter white Gaussian noise,<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup> due to their high contrast of neighboring pixel intensity values. Using these wavelets a <a href="/wiki/Wavelet_transform" title="Wavelet transform">wavelet transformation</a> is performed on the two dimensional image. </p><p>Following the decomposition of the image file, the next step is to determine threshold values for each level from 1 to N. Birgé-Massart strategy<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup> is a fairly common method for selecting these thresholds. Using this process individual thresholds are made for N = 10 levels. Applying these thresholds are the majority of the actual filtering of the signal. </p><p>The final step is to reconstruct the image from the modified levels. This is accomplished using an inverse wavelet transform. The resulting image, with white Gaussian noise removed is shown below the original image. When filtering any form of data it is important to quantify the <a href="/wiki/Signal-to-noise_ratio" title="Signal-to-noise ratio">signal-to-noise-ratio</a> of the result.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="removed citation to predatory publisher content (December 2019)">citation needed</span></a></i>]</sup> In this case, the SNR of the noisy image in comparison to the original was 30.4958%, and the SNR of the denoised image is 32.5525%. The resulting improvement of the wavelet filtering is a SNR gain of 2.0567%.<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup> </p><p>Choosing other wavelets, levels, and thresholding strategies can result in different types of filtering. In this example, white Gaussian noise was chosen to be removed. Although, with different thresholding, it could just as easily have been amplified. </p> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">See also: <a href="/wiki/Discrete_Fourier_transform" title="Discrete Fourier transform">Discrete Fourier transform</a></div> <p>To illustrate the differences and similarities between the discrete wavelet transform with the <a href="/wiki/Discrete_Fourier_transform" title="Discrete Fourier transform">discrete Fourier transform</a>, consider the DWT and DFT of the following sequence: (1,0,0,0), a <a href="/wiki/Unit_impulse" class="mw-redirect" title="Unit impulse">unit impulse</a>. </p><p>The DFT has orthogonal basis (<a href="/wiki/DFT_matrix" title="DFT matrix">DFT matrix</a>): </p> <dl><dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}1&1&1&1\\1&-i&-1&i\\1&-1&1&-1\\1&i&-1&-i\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mo>−<!-- − --></mo> <mi>i</mi> </mtd> <mtd> <mo>−<!-- − --></mo> <mn>1</mn> </mtd> <mtd> <mi>i</mi> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mo>−<!-- − --></mo> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mo>−<!-- − --></mo> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mi>i</mi> </mtd> <mtd> <mo>−<!-- − --></mo> <mn>1</mn> </mtd> <mtd> <mo>−<!-- − --></mo> <mi>i</mi> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}1&1&1&1\\1&-i&-1&i\\1&-1&1&-1\\1&i&-1&-i\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a35a2066de88c64cf4ee4dbd0a3cf0e76378006d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -5.671ex; width:20.894ex; height:12.509ex;" alt="{\displaystyle {\begin{bmatrix}1&1&1&1\\1&-i&-1&i\\1&-1&1&-1\\1&i&-1&-i\end{bmatrix}}}"></span></dd></dl> <p>while the DWT with Haar wavelets for length 4 data has orthogonal basis in the rows of: </p> <dl><dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}1&1&1&1\\1&1&-1&-1\\1&-1&0&0\\0&0&1&-1\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mo>−<!-- − --></mo> <mn>1</mn> </mtd> <mtd> <mo>−<!-- − --></mo> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mo>−<!-- − --></mo> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mo>−<!-- − --></mo> <mn>1</mn> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}1&1&1&1\\1&1&-1&-1\\1&-1&0&0\\0&0&1&-1\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e1bd296319d0063ff75438289a014690813ab19e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -5.671ex; width:20.894ex; height:12.509ex;" alt="{\displaystyle {\begin{bmatrix}1&1&1&1\\1&1&-1&-1\\1&-1&0&0\\0&0&1&-1\end{bmatrix}}}"></span></dd></dl> <p>(To simplify notation, whole numbers are used, so the bases are <a href="/wiki/Orthogonal" class="mw-redirect" title="Orthogonal">orthogonal</a> but not <a href="/wiki/Orthonormal" class="mw-redirect" title="Orthonormal">orthonormal</a>.) </p><p>Preliminary observations include: </p> <ul><li>Sinusoidal waves differ only in their frequency. The first does not complete any cycles, the second completes one full cycle, the third completes two cycles, and the fourth completes three cycles (which is equivalent to completing one cycle in the opposite direction). Differences in phase can be represented by multiplying a given basis vector by a complex constant.</li> <li>Wavelets, by contrast, have both frequency and location. As before, the first completes zero cycles, and the second completes one cycle. However, the third and fourth both have the same frequency, twice that of the first. Rather than differing in frequency, they differ in <i>location</i> — the third is nonzero over the first two elements, and the fourth is nonzero over the second two elements.</li></ul> <p><br /> </p> <dl><dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}(1,0,0,0)&={\frac {1}{4}}(1,1,1,1)+{\frac {1}{4}}(1,1,-1,-1)+{\frac {1}{2}}(1,-1,0,0)\qquad {\text{Haar DWT}}\\(1,0,0,0)&={\frac {1}{4}}(1,1,1,1)+{\frac {1}{4}}(1,i,-1,-i)+{\frac {1}{4}}(1,-1,1,-1)+{\frac {1}{4}}(1,-i,-1,i)\qquad {\text{DFT}}\end{aligned}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"> <mtr> <mtd> <mo stretchy="false">(</mo> <mn>1</mn> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>0</mn> <mo stretchy="false">)</mo> </mtd> <mtd> <mi></mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo stretchy="false">(</mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> <mo stretchy="false">)</mo> <mo>+</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo stretchy="false">(</mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> <mo>,</mo> <mo>−<!-- − --></mo> <mn>1</mn> <mo>,</mo> <mo>−<!-- − --></mo> <mn>1</mn> <mo stretchy="false">)</mo> <mo>+</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> </mrow> <mo stretchy="false">(</mo> <mn>1</mn> <mo>,</mo> <mo>−<!-- − --></mo> <mn>1</mn> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>0</mn> <mo stretchy="false">)</mo> <mspace width="2em" /> <mrow class="MJX-TeXAtom-ORD"> <mtext>Haar DWT</mtext> </mrow> </mtd> </mtr> <mtr> <mtd> <mo stretchy="false">(</mo> <mn>1</mn> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>0</mn> <mo stretchy="false">)</mo> </mtd> <mtd> <mi></mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo stretchy="false">(</mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> <mo stretchy="false">)</mo> <mo>+</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo stretchy="false">(</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> <mo>,</mo> <mo>−<!-- − --></mo> <mn>1</mn> <mo>,</mo> <mo>−<!-- − --></mo> <mi>i</mi> <mo stretchy="false">)</mo> <mo>+</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo stretchy="false">(</mo> <mn>1</mn> <mo>,</mo> <mo>−<!-- − --></mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> <mo>,</mo> <mo>−<!-- − --></mo> <mn>1</mn> <mo stretchy="false">)</mo> <mo>+</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo stretchy="false">(</mo> <mn>1</mn> <mo>,</mo> <mo>−<!-- − --></mo> <mi>i</mi> <mo>,</mo> <mo>−<!-- − --></mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> <mo stretchy="false">)</mo> <mspace width="2em" /> <mrow class="MJX-TeXAtom-ORD"> <mtext>DFT</mtext> </mrow> </mtd> </mtr> </mtable> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}(1,0,0,0)&={\frac {1}{4}}(1,1,1,1)+{\frac {1}{4}}(1,1,-1,-1)+{\frac {1}{2}}(1,-1,0,0)\qquad {\text{Haar DWT}}\\(1,0,0,0)&={\frac {1}{4}}(1,1,1,1)+{\frac {1}{4}}(1,i,-1,-i)+{\frac {1}{4}}(1,-1,1,-1)+{\frac {1}{4}}(1,-i,-1,i)\qquad {\text{DFT}}\end{aligned}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/1c902c9c3851bd9e5bd2196758d1acac9d372a74" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -4.51ex; margin-bottom: -0.328ex; width:87.196ex; height:10.843ex;" alt="{\displaystyle {\begin{aligned}(1,0,0,0)&={\frac {1}{4}}(1,1,1,1)+{\frac {1}{4}}(1,1,-1,-1)+{\frac {1}{2}}(1,-1,0,0)\qquad {\text{Haar DWT}}\\(1,0,0,0)&={\frac {1}{4}}(1,1,1,1)+{\frac {1}{4}}(1,i,-1,-i)+{\frac {1}{4}}(1,-1,1,-1)+{\frac {1}{4}}(1,-i,-1,i)\qquad {\text{DFT}}\end{aligned}}}"></span></dd></dl> <p>The DWT demonstrates the localization: the (1,1,1,1) term gives the average signal value, the (1,1,–1,–1) places the signal in the left side of the domain, and the (1,–1,0,0) places it at the left side of the left side, and truncating at any stage yields a downsampled version of the signal: </p> <dl><dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}&\left({\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}}\right)\\&\left({\frac {1}{2}},{\frac {1}{2}},0,0\right)\qquad {\text{2-term truncation}}\\&\left(1,0,0,0\right)\end{aligned}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"> <mtr> <mtd /> <mtd> <mrow> <mo>(</mo> <mrow> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> </mrow> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd /> <mtd> <mrow> <mo>(</mo> <mrow> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> </mrow> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>0</mn> </mrow> <mo>)</mo> </mrow> <mspace width="2em" /> <mrow class="MJX-TeXAtom-ORD"> <mtext>2-term truncation</mtext> </mrow> </mtd> </mtr> <mtr> <mtd /> <mtd> <mrow> <mo>(</mo> <mrow> <mn>1</mn> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>0</mn> </mrow> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}&\left({\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}}\right)\\&\left({\frac {1}{2}},{\frac {1}{2}},0,0\right)\qquad {\text{2-term truncation}}\\&\left(1,0,0,0\right)\end{aligned}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/1d42ee137c741d12fce35d1e16e20c7dc3a6d38f" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -7.171ex; width:36.534ex; height:15.509ex;" alt="{\displaystyle {\begin{aligned}&\left({\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}}\right)\\&\left({\frac {1}{2}},{\frac {1}{2}},0,0\right)\qquad {\text{2-term truncation}}\\&\left(1,0,0,0\right)\end{aligned}}}"></span></dd></dl> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Sinc_function_(normalized).svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Sinc_function_%28normalized%29.svg/220px-Sinc_function_%28normalized%29.svg.png" decoding="async" width="220" height="151" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Sinc_function_%28normalized%29.svg/330px-Sinc_function_%28normalized%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Sinc_function_%28normalized%29.svg/440px-Sinc_function_%28normalized%29.svg.png 2x" data-file-width="908" data-file-height="623" /></a><figcaption>The <a href="/wiki/Sinc_function" title="Sinc function">sinc function</a>, showing the time domain artifacts (<a href="/wiki/Undershoot_(signal)" class="mw-redirect" title="Undershoot (signal)">undershoot</a> and <a href="/wiki/Ringing_(signal)" title="Ringing (signal)">ringing</a>) of truncating a Fourier series.</figcaption></figure> <p>The DFT, by contrast, expresses the sequence by the interference of waves of various frequencies – thus truncating the series yields a <a href="/wiki/Low-pass_filter" title="Low-pass filter">low-pass filtered</a> version of the series: </p> <dl><dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}&\left({\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}}\right)\\&\left({\frac {3}{4}},{\frac {1}{4}},-{\frac {1}{4}},{\frac {1}{4}}\right)\qquad {\text{2-term truncation}}\\&\left(1,0,0,0\right)\end{aligned}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"> <mtr> <mtd /> <mtd> <mrow> <mo>(</mo> <mrow> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> </mrow> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd /> <mtd> <mrow> <mo>(</mo> <mrow> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>3</mn> <mn>4</mn> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo>,</mo> <mo>−<!-- − --></mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>4</mn> </mfrac> </mrow> </mrow> <mo>)</mo> </mrow> <mspace width="2em" /> <mrow class="MJX-TeXAtom-ORD"> <mtext>2-term truncation</mtext> </mrow> </mtd> </mtr> <mtr> <mtd /> <mtd> <mrow> <mo>(</mo> <mrow> <mn>1</mn> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>0</mn> </mrow> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}&\left({\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}}\right)\\&\left({\frac {3}{4}},{\frac {1}{4}},-{\frac {1}{4}},{\frac {1}{4}}\right)\qquad {\text{2-term truncation}}\\&\left(1,0,0,0\right)\end{aligned}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f445ba7a88a4aba2ed628b85f7694a2a232b88cf" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -7.171ex; width:40.014ex; height:15.509ex;" alt="{\displaystyle {\begin{aligned}&\left({\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}},{\frac {1}{4}}\right)\\&\left({\frac {3}{4}},{\frac {1}{4}},-{\frac {1}{4}},{\frac {1}{4}}\right)\qquad {\text{2-term truncation}}\\&\left(1,0,0,0\right)\end{aligned}}}"></span></dd></dl> <p>Notably, the middle approximation (2-term) differs. From the frequency domain perspective, this is a better approximation, but from the time domain perspective it has drawbacks – it exhibits <a href="/wiki/Undershoot_(signal)" class="mw-redirect" title="Undershoot (signal)">undershoot</a> – one of the values is negative, though the original series is non-negative everywhere – and <a href="/wiki/Ringing_(signal)" title="Ringing (signal)">ringing</a>, where the right side is non-zero, unlike in the wavelet transform. On the other hand, the Fourier approximation correctly shows a peak, and all points are within <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 1/4}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mn>1</mn> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mn>4</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 1/4}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/4d3cf1ef33695c3d98cb09f01e5700f927ce928c" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:3.487ex; height:2.843ex;" alt="{\displaystyle 1/4}"></span> of their correct value, though all points have error. The wavelet approximation, by contrast, places a peak on the left half, but has no peak at the first point, and while it is exactly correct for half the values (reflecting location), it has an error of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 1/2}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mn>1</mn> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mn>2</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 1/2}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e308a3a46b7fdce07cc09dcab9e8d8f73e37d935" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:3.487ex; height:2.843ex;" alt="{\displaystyle 1/2}"></span> for the other values. </p><p>This illustrates the kinds of trade-offs between these transforms, and how in some respects the DWT provides preferable behavior, particularly for the modeling of transients. </p> <div class="mw-heading mw-heading2"><h2 id="Example_in_Watermarking">Example in <a href="/wiki/Digital_watermarking" title="Digital watermarking">Watermarking</a></h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=10" title="Edit section: Example in Watermarking"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div><p> Watermarking using DCT-DWT alters the wavelet coefficients of middle-frequency coefficient sets of 5-levels DWT transformed host image, followed by applying the <a href="/wiki/Discrete_cosine_transform" title="Discrete cosine transform">DCT</a> transforms on the selected coefficient sets. Prasanalakshmi B proposed a method <sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup> that uses the HL frequency sub-band in the middle-frequency coefficient sets LHx and HLx in a 5-level Discrete Wavelet Transform (DWT) transformed image.</p><figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:5-level_discrete_wavelet_transform.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fa/5-level_discrete_wavelet_transform.png/220px-5-level_discrete_wavelet_transform.png" decoding="async" width="220" height="220" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/f/fa/5-level_discrete_wavelet_transform.png 1.5x" data-file-width="300" data-file-height="300" /></a><figcaption>5-level discrete wavelet transform</figcaption></figure><p>This algorithm chooses a coarser level of DWT in terms of imperceptibility and robustness to apply 4×4 block-based DCT on them. Consequently, higher <a href="/wiki/Digital_watermarking#Perceptibility" title="Digital watermarking">imperceptibility</a> and <a href="/wiki/Digital_watermarking#Robustness" title="Digital watermarking">robustness</a> can be achieved. Also, the pre-filtering operation is used before extraction of the watermark, sharpening, and <a href="/wiki/Blob_detection#The_Laplacian_of_Gaussian" title="Blob detection">Laplacian of Gaussian (LoG)</a> filtering, which increases the difference between the information of the watermark and the hosted image. </p><div class="mw-heading mw-heading3"><h3 id="Embedding_Algorithm">Embedding Algorithm</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=11" title="Edit section: Embedding Algorithm"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The basic idea of the DWT for a two-dimensional image is described as follows: An image is first decomposed into four parts of high, middle, and low-frequency subcomponents (i.e., LL1, HL1, LH1, HH1) by critically subsampling horizontal and vertical channels using subcomponent filters. </p><p>The subcomponents HL1, LH1, and HH1 represent the finest scale wavelet coefficients. The subcomponent LL1 is decomposed and critically subsampled to obtain the following coarser-scaled wavelet components. This process is repeated several times, which is determined by the application at hand. </p><p>High-frequency components are considered to embed the watermark since they contain edge information, and the human eye is less sensitive to edge changes. In watermarking algorithms, besides the watermark's invisibility, the primary concern is choosing the frequency components to embed the watermark to survive the possible attacks that the transmitted image may undergo. Transform domain techniques have the advantage of unique properties of alternate domains to address spatial domain limitations and have additional features. </p><p>The Host image is made to undergo 5-level DWT watermarking. Embedding the watermark in the middle-level frequency sub-bands LLx gives a high degree of imperceptibility and robustness. Consequently, LLx coefficient sets in level five are chosen to increase the robustness of the watermark against common watermarking attacks, especially adding noise and blurring attacks, at little to no additional impact on image quality. Then, the block base DCT is performed on these selected DWT coefficient sets and embeds pseudorandom sequences in middle frequencies. The watermark embedding procedure is explained below:1. Read the cover image I, of size N×N. </p><p>2.The four non-overlapping multi-resolution coefficient sets LL1, HL1, LH1, and HH1 are obtained initially. </p><p>3. Decomposition is performed till 5-levels and the frequency subcomponents {HH1, HL1, LH1,{{HH2, HL2, LH2, {HH3, HL3, LH3, {HH4, HL4, LH4, {HH5, HL5, LH5, LL5}}}}}} are obtained by computing the fifth level DWT of the image I. </p><p>4. Divide the final four coefficient sets: HH5, HL5, LH5 and LL5 into 4 x 4 blocks. </p><p>5. DCT is performed on each block in the chosen coefficient sets. These coefficient sets are chosen to inquire about the imperceptibility and robustness of algorithms equally. </p><p>6. Scramble the fingerprint image to gain the scrambled watermark WS (i, j). </p><p>7. Re-formulate the scrambled watermark image into a vector of zeros and ones. </p><p>8. Two uncorrelated pseudorandom sequences are generated from the key obtained from the palm vein. The number of elements in the two pseudorandom sequences must equal the number of mid-band elements of the DCT-transformed DWT coefficient sets. </p><p>9. Embed the two pseudorandom sequences with a gain factor α in the DCT-transformed 4x4 blocks of the selected DWT coefficient sets of the host image. Instead of embedding in all coefficients of the DCT block, it is applied only to the mid-band DCT coefficients. If X is denoted as the matrix of the mid-band coefficients of the DCT transformed block, then embedding is done with watermark bit 0, and X' is updated as X+∝*PN<sub>0</sub>,watermarkbit=0 and done with watermark bit 1 and X' is updated as X+∝*PN<sub>1</sub>. Inverse DCT (IDCT) is done on each block after its mid-band coefficients have been modified to embed the watermark bits. </p><p>10. To produce the watermarked host image, Perform the inverse DWT (IDWT) on the DWT-transformed image, including the modified coefficient sets. </p> <div class="mw-heading mw-heading2"><h2 id="Definition">Definition</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=12" title="Edit section: Definition"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="One_level_of_the_transform">One level of the transform</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=13" title="Edit section: One level of the transform"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The DWT of a signal <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle x}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>x</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle x}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/87f9e315fd7e2ba406057a97300593c4802b53e4" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.33ex; height:1.676ex;" alt="{\displaystyle x}"></span> is calculated by passing it through a series of filters. First the samples are passed through a <a href="/wiki/Low-pass_filter" title="Low-pass filter">low-pass filter</a> with <a href="/wiki/Impulse_response" title="Impulse response">impulse response</a> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d3556280e66fe2c0d0140df20935a6f057381d77" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.116ex; height:2.009ex;" alt="{\displaystyle g}"></span> resulting in a <a href="/wiki/Convolution" title="Convolution">convolution</a> of the two: </p> <dl><dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle y[n]=(x*g)[n]=\sum \limits _{k=-\infty }^{\infty }{x[k]g[n-k]}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>y</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> <mo>=</mo> <mo stretchy="false">(</mo> <mi>x</mi> <mo>∗<!-- ∗ --></mo> <mi>g</mi> <mo stretchy="false">)</mo> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> <mo>=</mo> <munderover> <mo movablelimits="false">∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mo>−<!-- − --></mo> <mi mathvariant="normal">∞<!-- ∞ --></mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="normal">∞<!-- ∞ --></mi> </mrow> </munderover> <mrow class="MJX-TeXAtom-ORD"> <mi>x</mi> <mo stretchy="false">[</mo> <mi>k</mi> <mo stretchy="false">]</mo> <mi>g</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo stretchy="false">]</mo> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle y[n]=(x*g)[n]=\sum \limits _{k=-\infty }^{\infty }{x[k]g[n-k]}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f4eb91f7893c66437b324aa633b004bdab8fe35e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:36.313ex; height:7.009ex;" alt="{\displaystyle y[n]=(x*g)[n]=\sum \limits _{k=-\infty }^{\infty }{x[k]g[n-k]}}"></span></dd></dl> <p>The signal is also decomposed simultaneously using a <a href="/wiki/High-pass_filter" title="High-pass filter">high-pass filter</a> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle h}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>h</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle h}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b26be3e694314bc90c3215047e4a2010c6ee184a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.339ex; height:2.176ex;" alt="{\displaystyle h}"></span>. The outputs give the detail coefficients (from the high-pass filter) and approximation coefficients (from the low-pass). It is important that the two filters are related to each other and they are known as a <a href="/wiki/Quadrature_mirror_filter" title="Quadrature mirror filter">quadrature mirror filter</a>. </p> <figure class="mw-halign-none" typeof="mw:File/Frame"><a href="/wiki/File:Wavelets_-_DWT.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/4/45/Wavelets_-_DWT.png" decoding="async" width="390" height="90" class="mw-file-element" data-file-width="390" data-file-height="90" /></a><figcaption>Block diagram of filter analysis</figcaption></figure> <p>However, since half the frequencies of the signal have now been removed, half the samples can be discarded according to Nyquist's rule. The filter output of the low-pass filter <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d3556280e66fe2c0d0140df20935a6f057381d77" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.116ex; height:2.009ex;" alt="{\displaystyle g}"></span> in the diagram above is then <a href="/wiki/Downsampling" class="mw-redirect" title="Downsampling">subsampled</a> by 2 and further processed by passing it again through a new low-pass filter <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d3556280e66fe2c0d0140df20935a6f057381d77" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.116ex; height:2.009ex;" alt="{\displaystyle g}"></span> and a high- pass filter <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle h}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>h</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle h}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b26be3e694314bc90c3215047e4a2010c6ee184a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.339ex; height:2.176ex;" alt="{\displaystyle h}"></span> with half the cut-off frequency of the previous one, i.e.: </p> <dl><dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle y_{\mathrm {low} }[n]=\sum \limits _{k=-\infty }^{\infty }{x[k]g[2n-k]}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="normal">l</mi> <mi mathvariant="normal">o</mi> <mi mathvariant="normal">w</mi> </mrow> </mrow> </msub> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> <mo>=</mo> <munderover> <mo movablelimits="false">∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mo>−<!-- − --></mo> <mi mathvariant="normal">∞<!-- ∞ --></mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="normal">∞<!-- ∞ --></mi> </mrow> </munderover> <mrow class="MJX-TeXAtom-ORD"> <mi>x</mi> <mo stretchy="false">[</mo> <mi>k</mi> <mo stretchy="false">]</mo> <mi>g</mi> <mo stretchy="false">[</mo> <mn>2</mn> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo stretchy="false">]</mo> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle y_{\mathrm {low} }[n]=\sum \limits _{k=-\infty }^{\infty }{x[k]g[2n-k]}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2888626ff63016f7500fcd46ca830fc9a4257f23" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:27.921ex; height:7.009ex;" alt="{\displaystyle y_{\mathrm {low} }[n]=\sum \limits _{k=-\infty }^{\infty }{x[k]g[2n-k]}}"></span></dd> <dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle y_{\mathrm {high} }[n]=\sum \limits _{k=-\infty }^{\infty }{x[k]h[2n-k]}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="normal">h</mi> <mi mathvariant="normal">i</mi> <mi mathvariant="normal">g</mi> <mi mathvariant="normal">h</mi> </mrow> </mrow> </msub> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> <mo>=</mo> <munderover> <mo movablelimits="false">∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mo>−<!-- − --></mo> <mi mathvariant="normal">∞<!-- ∞ --></mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="normal">∞<!-- ∞ --></mi> </mrow> </munderover> <mrow class="MJX-TeXAtom-ORD"> <mi>x</mi> <mo stretchy="false">[</mo> <mi>k</mi> <mo stretchy="false">]</mo> <mi>h</mi> <mo stretchy="false">[</mo> <mn>2</mn> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo stretchy="false">]</mo> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle y_{\mathrm {high} }[n]=\sum \limits _{k=-\infty }^{\infty }{x[k]h[2n-k]}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/0771b3bacd7a8fe2f620d96abd981d1867c31269" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:28.785ex; height:7.009ex;" alt="{\displaystyle y_{\mathrm {high} }[n]=\sum \limits _{k=-\infty }^{\infty }{x[k]h[2n-k]}}"></span></dd></dl> <p>This decomposition has halved the time resolution since only half of each filter output characterises the signal. However, each output has half the frequency band of the input, so the frequency resolution has been doubled. </p><p>With the <a href="/wiki/Downsampling" class="mw-redirect" title="Downsampling">subsampling operator</a> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \downarrow }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo stretchy="false">↓<!-- ↓ --></mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \downarrow }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/4618f22b0f780805eb94bb407578d9bc9487947a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.162ex; height:2.509ex;" alt="{\displaystyle \downarrow }"></span> </p> <dl><dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (y\downarrow k)[n]=y[kn]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo stretchy="false">(</mo> <mi>y</mi> <mo stretchy="false">↓<!-- ↓ --></mo> <mi>k</mi> <mo stretchy="false">)</mo> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> <mo>=</mo> <mi>y</mi> <mo stretchy="false">[</mo> <mi>k</mi> <mi>n</mi> <mo stretchy="false">]</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle (y\downarrow k)[n]=y[kn]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c85edbf80c21cb06f68ccbb1048db49557999c0e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:17.471ex; height:2.843ex;" alt="{\displaystyle (y\downarrow k)[n]=y[kn]}"></span></dd></dl> <p>the above summation can be written more concisely. </p> <dl><dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle y_{\mathrm {low} }=(x*g)\downarrow 2}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="normal">l</mi> <mi mathvariant="normal">o</mi> <mi mathvariant="normal">w</mi> </mrow> </mrow> </msub> <mo>=</mo> <mo stretchy="false">(</mo> <mi>x</mi> <mo>∗<!-- ∗ --></mo> <mi>g</mi> <mo stretchy="false">)</mo> <mo stretchy="false">↓<!-- ↓ --></mo> <mn>2</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle y_{\mathrm {low} }=(x*g)\downarrow 2}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2ed98af6eb65258cad9e569df76d7b053741eb4a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:17.001ex; height:2.843ex;" alt="{\displaystyle y_{\mathrm {low} }=(x*g)\downarrow 2}"></span></dd> <dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle y_{\mathrm {high} }=(x*h)\downarrow 2}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="normal">h</mi> <mi mathvariant="normal">i</mi> <mi mathvariant="normal">g</mi> <mi mathvariant="normal">h</mi> </mrow> </mrow> </msub> <mo>=</mo> <mo stretchy="false">(</mo> <mi>x</mi> <mo>∗<!-- ∗ --></mo> <mi>h</mi> <mo stretchy="false">)</mo> <mo stretchy="false">↓<!-- ↓ --></mo> <mn>2</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle y_{\mathrm {high} }=(x*h)\downarrow 2}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/7650bc9b9b2b6d52512ca79e66867cfa559528a3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:17.865ex; height:3.009ex;" alt="{\displaystyle y_{\mathrm {high} }=(x*h)\downarrow 2}"></span></dd></dl> <p>However computing a complete convolution <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle x*g}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>x</mi> <mo>∗<!-- ∗ --></mo> <mi>g</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle x*g}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6bdd7d49f4bcb10fc3beff370f7abf22d59e7b29" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:4.64ex; height:2.009ex;" alt="{\displaystyle x*g}"></span> with subsequent downsampling would waste computation time. </p><p>The <a href="/wiki/Lifting_scheme" title="Lifting scheme">Lifting scheme</a> is an optimization where these two computations are interleaved. </p> <div class="mw-heading mw-heading3"><h3 id="Cascading_and_filter_banks">Cascading and filter banks</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=14" title="Edit section: Cascading and filter banks"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>This decomposition is repeated to further increase the frequency resolution and the approximation coefficients decomposed with high- and low-pass filters and then down-sampled. This is represented as a binary tree with nodes representing a sub-space with a different time-frequency localisation. The tree is known as a <a href="/wiki/Filter_bank" title="Filter bank">filter bank</a>. </p> <figure class="mw-halign-none" typeof="mw:File/Frame"><a href="/wiki/File:Wavelets_-_Filter_Bank.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/2/22/Wavelets_-_Filter_Bank.png" decoding="async" width="566" height="173" class="mw-file-element" data-file-width="566" data-file-height="173" /></a><figcaption>A 3 level filter bank</figcaption></figure> <p>At each level in the above diagram the signal is decomposed into low and high frequencies. Due to the decomposition process the input signal must be a multiple of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2^{n}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 2^{n}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8226f30650ee4fe4e640c6d2798127e80e9c160d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.381ex; height:2.343ex;" alt="{\displaystyle 2^{n}}"></span> where <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a601995d55609f2d9f5e233e36fbe9ea26011b3b" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.395ex; height:1.676ex;" alt="{\displaystyle n}"></span> is the number of levels. </p><p>For example a signal with 32 samples, frequency range 0 to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle f_{n}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>f</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle f_{n}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b2702450f0458a5e01a698e248af552a7fab2b50" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.358ex; height:2.509ex;" alt="{\displaystyle f_{n}}"></span> and 3 levels of decomposition, 4 output scales are produced: </p> <table class="wikitable"> <tbody><tr> <th>Level </th> <th>Frequencies </th> <th>Samples </th></tr> <tr> <td rowspan="2">3 </td> <td><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 0}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mn>0</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 0}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2aae8864a3c1fec9585261791a809ddec1489950" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.162ex; height:2.176ex;" alt="{\displaystyle 0}"></span> to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {f_{n}}/8}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>f</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mn>8</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {f_{n}}/8}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/39bffa97b70b5fac196a7beea3fc9e754a7857c1" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.683ex; height:2.843ex;" alt="{\displaystyle {f_{n}}/8}"></span> </td> <td>4 </td></tr> <tr> <td><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {f_{n}}/8}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>f</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mn>8</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {f_{n}}/8}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/39bffa97b70b5fac196a7beea3fc9e754a7857c1" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.683ex; height:2.843ex;" alt="{\displaystyle {f_{n}}/8}"></span> to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {f_{n}}/4}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>f</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mn>4</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {f_{n}}/4}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f47bdb3bba2869c88175c2f70ef90a7951814299" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.683ex; height:2.843ex;" alt="{\displaystyle {f_{n}}/4}"></span> </td> <td>4 </td></tr> <tr> <td>2 </td> <td><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {f_{n}}/4}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>f</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mn>4</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {f_{n}}/4}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f47bdb3bba2869c88175c2f70ef90a7951814299" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.683ex; height:2.843ex;" alt="{\displaystyle {f_{n}}/4}"></span> to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {f_{n}}/2}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>f</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mn>2</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {f_{n}}/2}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/57cfdc51c0841cb0aff050ccfea2821e0a1a194a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.683ex; height:2.843ex;" alt="{\displaystyle {f_{n}}/2}"></span> </td> <td>8 </td></tr> <tr> <td>1 </td> <td><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {f_{n}}/2}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>f</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mn>2</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {f_{n}}/2}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/57cfdc51c0841cb0aff050ccfea2821e0a1a194a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.683ex; height:2.843ex;" alt="{\displaystyle {f_{n}}/2}"></span> to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle f_{n}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>f</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle f_{n}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b2702450f0458a5e01a698e248af552a7fab2b50" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.358ex; height:2.509ex;" alt="{\displaystyle f_{n}}"></span> </td> <td>16 </td></tr></tbody></table> <figure class="mw-halign-none" typeof="mw:File/Frame"><a href="/wiki/File:Wavelets_-_DWT_Freq.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/d/dd/Wavelets_-_DWT_Freq.png" decoding="async" width="468" height="130" class="mw-file-element" data-file-width="468" data-file-height="130" /></a><figcaption>Frequency domain representation of the DWT</figcaption></figure> <div class="mw-heading mw-heading2"><h2 id="Relationship_to_the_mother_wavelet">Relationship to the mother wavelet</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=15" title="Edit section: Relationship to the mother wavelet"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The filterbank implementation of wavelets can be interpreted as computing the wavelet coefficients of a <a href="/wiki/Wavelet#Discrete_wavelet_transforms_.28discrete_shift_and_scale_parameters.29" title="Wavelet">discrete set of child wavelets</a> for a given mother wavelet <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \psi (t)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>ψ<!-- ψ --></mi> <mo stretchy="false">(</mo> <mi>t</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \psi (t)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6cf4a36b5f945be90a527b3dbe3d55d3f0439cdb" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.162ex; height:2.843ex;" alt="{\displaystyle \psi (t)}"></span>. In the case of the discrete wavelet transform, the mother wavelet is shifted and scaled by powers of two </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \psi _{j,k}(t)={\frac {1}{\sqrt {2^{j}}}}\psi \left({\frac {t-k2^{j}}{2^{j}}}\right)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>ψ<!-- ψ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>,</mo> <mi>k</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>t</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <msqrt> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> </msqrt> </mfrac> </mrow> <mi>ψ<!-- ψ --></mi> <mrow> <mo>(</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mrow> <mi>t</mi> <mo>−<!-- − --></mo> <mi>k</mi> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> </mrow> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> </mfrac> </mrow> <mo>)</mo> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \psi _{j,k}(t)={\frac {1}{\sqrt {2^{j}}}}\psi \left({\frac {t-k2^{j}}{2^{j}}}\right)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3197debcbf7e08502aced40215825171be7e2347" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:27.837ex; height:7.009ex;" alt="{\displaystyle \psi _{j,k}(t)={\frac {1}{\sqrt {2^{j}}}}\psi \left({\frac {t-k2^{j}}{2^{j}}}\right)}"></span> </p><p>where <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle j}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>j</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle j}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2f461e54f5c093e92a55547b9764291390f0b5d0" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.027ex; width:0.985ex; height:2.509ex;" alt="{\displaystyle j}"></span> is the scale parameter and <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.211ex; height:2.176ex;" alt="{\displaystyle k}"></span> is the shift parameter, both of which are integers. </p><p>Recall that the wavelet coefficient <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \gamma }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>γ<!-- γ --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \gamma }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a223c880b0ce3da8f64ee33c4f0010beee400b1a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:1.262ex; height:2.176ex;" alt="{\displaystyle \gamma }"></span> of a signal <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle x(t)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>x</mi> <mo stretchy="false">(</mo> <mi>t</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle x(t)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d54c275db3a1e620737b58e143b0818107fa5f5c" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:3.979ex; height:2.843ex;" alt="{\displaystyle x(t)}"></span> is the projection of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle x(t)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>x</mi> <mo stretchy="false">(</mo> <mi>t</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle x(t)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d54c275db3a1e620737b58e143b0818107fa5f5c" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:3.979ex; height:2.843ex;" alt="{\displaystyle x(t)}"></span> onto a wavelet, and let <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle x(t)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>x</mi> <mo stretchy="false">(</mo> <mi>t</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle x(t)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d54c275db3a1e620737b58e143b0818107fa5f5c" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:3.979ex; height:2.843ex;" alt="{\displaystyle x(t)}"></span> be a signal of length <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2^{N}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>N</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 2^{N}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f3cc22b5fa0e34487c8a6153965408e004c6e253" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.854ex; height:2.676ex;" alt="{\displaystyle 2^{N}}"></span>. In the case of a child wavelet in the discrete family above, </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \gamma _{jk}=\int _{-\infty }^{\infty }x(t){\frac {1}{\sqrt {2^{j}}}}\psi \left({\frac {t-k2^{j}}{2^{j}}}\right)dt}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>γ<!-- γ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mi>k</mi> </mrow> </msub> <mo>=</mo> <msubsup> <mo>∫<!-- ∫ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mi mathvariant="normal">∞<!-- ∞ --></mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="normal">∞<!-- ∞ --></mi> </mrow> </msubsup> <mi>x</mi> <mo stretchy="false">(</mo> <mi>t</mi> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <msqrt> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> </msqrt> </mfrac> </mrow> <mi>ψ<!-- ψ --></mi> <mrow> <mo>(</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mrow> <mi>t</mi> <mo>−<!-- − --></mo> <mi>k</mi> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> </mrow> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> </mfrac> </mrow> <mo>)</mo> </mrow> <mi>d</mi> <mi>t</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \gamma _{jk}=\int _{-\infty }^{\infty }x(t){\frac {1}{\sqrt {2^{j}}}}\psi \left({\frac {t-k2^{j}}{2^{j}}}\right)dt}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/adf5164f271cfb49fcb27a812e7854b33feefac5" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:35.677ex; height:7.009ex;" alt="{\displaystyle \gamma _{jk}=\int _{-\infty }^{\infty }x(t){\frac {1}{\sqrt {2^{j}}}}\psi \left({\frac {t-k2^{j}}{2^{j}}}\right)dt}"></span> </p><p>Now fix <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle j}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>j</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle j}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2f461e54f5c093e92a55547b9764291390f0b5d0" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.027ex; width:0.985ex; height:2.509ex;" alt="{\displaystyle j}"></span> at a particular scale, so that <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \gamma _{jk}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>γ<!-- γ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mi>k</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \gamma _{jk}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/cb9e18e535e2ab3662a4c6e9f1f49b2d1ddfcfea" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:2.97ex; height:2.343ex;" alt="{\displaystyle \gamma _{jk}}"></span> is a function of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.211ex; height:2.176ex;" alt="{\displaystyle k}"></span> only. In light of the above equation, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \gamma _{jk}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>γ<!-- γ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mi>k</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \gamma _{jk}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/cb9e18e535e2ab3662a4c6e9f1f49b2d1ddfcfea" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:2.97ex; height:2.343ex;" alt="{\displaystyle \gamma _{jk}}"></span> can be viewed as a <a href="/wiki/Convolution" title="Convolution">convolution</a> of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle x(t)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>x</mi> <mo stretchy="false">(</mo> <mi>t</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle x(t)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d54c275db3a1e620737b58e143b0818107fa5f5c" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:3.979ex; height:2.843ex;" alt="{\displaystyle x(t)}"></span> with a dilated, reflected, and normalized version of the mother wavelet, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle h(t)={\frac {1}{\sqrt {2^{j}}}}\psi \left({\frac {-t}{2^{j}}}\right)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>h</mi> <mo stretchy="false">(</mo> <mi>t</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <msqrt> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> </msqrt> </mfrac> </mrow> <mi>ψ<!-- ψ --></mi> <mrow> <mo>(</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mrow> <mo>−<!-- − --></mo> <mi>t</mi> </mrow> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> </mfrac> </mrow> <mo>)</mo> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle h(t)={\frac {1}{\sqrt {2^{j}}}}\psi \left({\frac {-t}{2^{j}}}\right)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e5a60a08c64efb598727ba579c3d614631bc1199" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:21.124ex; height:6.843ex;" alt="{\displaystyle h(t)={\frac {1}{\sqrt {2^{j}}}}\psi \left({\frac {-t}{2^{j}}}\right)}"></span>, sampled at the points <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 1,2^{j},2\cdot {2^{j}},...,2^{N}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mn>1</mn> <mo>,</mo> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo>,</mo> <mn>2</mn> <mo>⋅<!-- ⋅ --></mo> <mrow class="MJX-TeXAtom-ORD"> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> </mrow> <mo>,</mo> <mo>.</mo> <mo>.</mo> <mo>.</mo> <mo>,</mo> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>N</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 1,2^{j},2\cdot {2^{j}},...,2^{N}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/cee56ccc178e1849a5acf11f2924b31459abbd19" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:18.24ex; height:3.009ex;" alt="{\displaystyle 1,2^{j},2\cdot {2^{j}},...,2^{N}}"></span>. But this is precisely what the detail coefficients give at level <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle j}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>j</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle j}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2f461e54f5c093e92a55547b9764291390f0b5d0" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.027ex; width:0.985ex; height:2.509ex;" alt="{\displaystyle j}"></span> of the discrete wavelet transform. Therefore, for an appropriate choice of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle h[n]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>h</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle h[n]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/89981bbbb05ffd469eeadb828c18359965985e46" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.027ex; height:2.843ex;" alt="{\displaystyle h[n]}"></span> and <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g[n]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g[n]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3c5e1d771a2385e9aeb71838a40425bb07c89525" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:3.804ex; height:2.843ex;" alt="{\displaystyle g[n]}"></span>, the detail coefficients of the filter bank correspond exactly to a wavelet coefficient of a discrete set of child wavelets for a given mother wavelet <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \psi (t)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>ψ<!-- ψ --></mi> <mo stretchy="false">(</mo> <mi>t</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \psi (t)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6cf4a36b5f945be90a527b3dbe3d55d3f0439cdb" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.162ex; height:2.843ex;" alt="{\displaystyle \psi (t)}"></span>. </p><p>As an example, consider the discrete <a href="/wiki/Haar_wavelet" title="Haar wavelet">Haar wavelet</a>, whose mother wavelet is <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \psi =[1,-1]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>ψ<!-- ψ --></mi> <mo>=</mo> <mo stretchy="false">[</mo> <mn>1</mn> <mo>,</mo> <mo>−<!-- − --></mo> <mn>1</mn> <mo stretchy="false">]</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \psi =[1,-1]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/184cea2b9e81c07ceb47b147fef04a19a2c79048" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:11.072ex; height:2.843ex;" alt="{\displaystyle \psi =[1,-1]}"></span>. Then the dilated, reflected, and normalized version of this wavelet is <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle h[n]={\frac {1}{\sqrt {2}}}[-1,1]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>h</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <msqrt> <mn>2</mn> </msqrt> </mfrac> </mrow> <mo stretchy="false">[</mo> <mo>−<!-- − --></mo> <mn>1</mn> <mo>,</mo> <mn>1</mn> <mo stretchy="false">]</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle h[n]={\frac {1}{\sqrt {2}}}[-1,1]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/9bab290b077bb173832a55e0d0e9790f96d054d6" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.838ex; width:17.521ex; height:6.176ex;" alt="{\displaystyle h[n]={\frac {1}{\sqrt {2}}}[-1,1]}"></span>, which is, indeed, the highpass decomposition filter for the discrete Haar wavelet transform. </p> <div class="mw-heading mw-heading2"><h2 id="Time_complexity">Time complexity</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=16" title="Edit section: Time complexity"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The filterbank implementation of the Discrete Wavelet Transform takes only <a href="/wiki/Big_O_notation" title="Big O notation">O(<i>N</i>)</a> in certain cases, as compared to O(<i>N</i> log <i>N</i>) for the <a href="/wiki/Fast_Fourier_transform" title="Fast Fourier transform">fast Fourier transform</a>. </p><p>Note that if <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g[n]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g[n]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3c5e1d771a2385e9aeb71838a40425bb07c89525" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:3.804ex; height:2.843ex;" alt="{\displaystyle g[n]}"></span> and <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle h[n]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>h</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle h[n]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/89981bbbb05ffd469eeadb828c18359965985e46" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.027ex; height:2.843ex;" alt="{\displaystyle h[n]}"></span> are both a constant length (i.e. their length is independent of N), then <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle x*h}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>x</mi> <mo>∗<!-- ∗ --></mo> <mi>h</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle x*h}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/dc1866595e84e3beb2f32f0cc38c01519b72b8a9" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:4.863ex; height:2.176ex;" alt="{\displaystyle x*h}"></span> and <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle x*g}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>x</mi> <mo>∗<!-- ∗ --></mo> <mi>g</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle x*g}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6bdd7d49f4bcb10fc3beff370f7abf22d59e7b29" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:4.64ex; height:2.009ex;" alt="{\displaystyle x*g}"></span> each take <a href="/wiki/Big_O_notation" title="Big O notation">O(<i>N</i>)</a> time. The wavelet filterbank does each of these two <a href="/wiki/Big_O_notation" title="Big O notation">O(<i>N</i>)</a> convolutions, then splits the signal into two branches of size N/2. But it only recursively splits the upper branch convolved with <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g[n]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g[n]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3c5e1d771a2385e9aeb71838a40425bb07c89525" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:3.804ex; height:2.843ex;" alt="{\displaystyle g[n]}"></span> (as contrasted with the FFT, which recursively splits both the upper branch and the lower branch). This leads to the following <a href="/wiki/Recurrence_relation" title="Recurrence relation">recurrence relation</a> </p> <dl><dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle T(N)=2N+T\left({\frac {N}{2}}\right)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>T</mi> <mo stretchy="false">(</mo> <mi>N</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mn>2</mn> <mi>N</mi> <mo>+</mo> <mi>T</mi> <mrow> <mo>(</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mi>N</mi> <mn>2</mn> </mfrac> </mrow> <mo>)</mo> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle T(N)=2N+T\left({\frac {N}{2}}\right)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/01e57ffcf74e57654e60baf7fb1a6f5c71e8d483" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.505ex; width:23.018ex; height:6.176ex;" alt="{\displaystyle T(N)=2N+T\left({\frac {N}{2}}\right)}"></span></dd></dl> <p>which leads to an <a href="/wiki/Big_O_notation" title="Big O notation">O(<i>N</i>)</a> time for the entire operation, as can be shown by a <a href="/wiki/Geometric_series" title="Geometric series">geometric series</a> expansion of the above relation. </p><p>As an example, the discrete <a href="/wiki/Haar_wavelet" title="Haar wavelet">Haar wavelet</a> transform is linear, since in that case <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle h[n]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>h</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle h[n]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/89981bbbb05ffd469eeadb828c18359965985e46" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.027ex; height:2.843ex;" alt="{\displaystyle h[n]}"></span> and <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g[n]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g[n]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3c5e1d771a2385e9aeb71838a40425bb07c89525" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:3.804ex; height:2.843ex;" alt="{\displaystyle g[n]}"></span> are constant length 2. </p> <dl><dd><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle h[n]=\left[{\frac {-{\sqrt {2}}}{2}},{\frac {\sqrt {2}}{2}}\right]g[n]=\left[{\frac {\sqrt {2}}{2}},{\frac {\sqrt {2}}{2}}\right]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>h</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> <mo>=</mo> <mrow> <mo>[</mo> <mrow> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mrow> <mo>−<!-- − --></mo> <mrow class="MJX-TeXAtom-ORD"> <msqrt> <mn>2</mn> </msqrt> </mrow> </mrow> <mn>2</mn> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <msqrt> <mn>2</mn> </msqrt> <mn>2</mn> </mfrac> </mrow> </mrow> <mo>]</mo> </mrow> <mi>g</mi> <mo stretchy="false">[</mo> <mi>n</mi> <mo stretchy="false">]</mo> <mo>=</mo> <mrow> <mo>[</mo> <mrow> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <msqrt> <mn>2</mn> </msqrt> <mn>2</mn> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <msqrt> <mn>2</mn> </msqrt> <mn>2</mn> </mfrac> </mrow> </mrow> <mo>]</mo> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle h[n]=\left[{\frac {-{\sqrt {2}}}{2}},{\frac {\sqrt {2}}{2}}\right]g[n]=\left[{\frac {\sqrt {2}}{2}},{\frac {\sqrt {2}}{2}}\right]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/040faee166a5945c0fd99b632808e2143c978b0f" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.505ex; width:38.94ex; height:6.509ex;" alt="{\displaystyle h[n]=\left[{\frac {-{\sqrt {2}}}{2}},{\frac {\sqrt {2}}{2}}\right]g[n]=\left[{\frac {\sqrt {2}}{2}},{\frac {\sqrt {2}}{2}}\right]}"></span></dd></dl> <p>The locality of wavelets, coupled with the O(<i>N</i>) complexity, guarantees that the transform can be computed online (on a streaming basis). This property is in sharp contrast to FFT, which requires access to the entire signal at once. It also applies to the multi-scale transform and also to the multi-dimensional transforms (e.g., 2-D DWT).<sup id="cite_ref-Barina2020_25-0" class="reference"><a href="#cite_note-Barina2020-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Other_transforms">Other transforms</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=17" title="Edit section: Other transforms"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>The <a href="/wiki/Adam7_algorithm" title="Adam7 algorithm">Adam7 algorithm</a>, used for <a href="/wiki/Interlacing_(bitmaps)" title="Interlacing (bitmaps)">interlacing</a> in the <a href="/wiki/Portable_Network_Graphics" class="mw-redirect" title="Portable Network Graphics">Portable Network Graphics</a> (PNG) format, is a multiscale model of the data which is similar to a DWT with <a href="/wiki/Haar_wavelet" title="Haar wavelet">Haar wavelets</a>. Unlike the DWT, it has a specific scale – it starts from an 8×8 block, and it <a href="/wiki/Downsample" class="mw-redirect" title="Downsample">downsamples</a> the image, rather than <a href="/wiki/Decimation_(signal_processing)" class="mw-redirect" title="Decimation (signal processing)">decimating</a> (<a href="/wiki/Low-pass_filter" title="Low-pass filter">low-pass filtering</a>, then downsampling). It thus offers worse frequency behavior, showing artifacts (<a href="/wiki/Pixelation" title="Pixelation">pixelation</a>) at the early stages, in return for simpler implementation. <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236090951"><div role="note" class="hatnote navigation-not-searchable">See also: <a href="/wiki/Adam7_algorithm" title="Adam7 algorithm">Adam7 algorithm</a></div></li> <li>The <b>multiplicative (or geometric) discrete wavelet transform</b><sup id="cite_ref-atto16tgrs_26-0" class="reference"><a href="#cite_note-atto16tgrs-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup> is a variant that applies to an observation model <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\bf {y}}=f{\bf {X}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">y</mi> </mrow> </mrow> <mo>=</mo> <mi>f</mi> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">X</mi> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\bf {y}}=f{\bf {X}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2e679bcc5429211bfb7e44860425b131b34a7e78" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:7.808ex; height:2.509ex;" alt="{\displaystyle {\bf {y}}=f{\bf {X}}}"></span> involving interactions of a positive regular <b>function</b> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle f}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>f</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle f}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/132e57acb643253e7810ee9702d9581f159a1c61" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.279ex; height:2.509ex;" alt="{\displaystyle f}"></span> and a multiplicative independent positive <b>noise</b> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle X}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>X</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle X}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/68baa052181f707c662844a465bfeeb135e82bab" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.98ex; height:2.176ex;" alt="{\displaystyle X}"></span>, with <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbb {E} X=1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="double-struck">E</mi> </mrow> <mi>X</mi> <mo>=</mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \mathbb {E} X=1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/1f5bb4401704ea12dddaf1fb822765ee7ed57bd8" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:7.791ex; height:2.176ex;" alt="{\displaystyle \mathbb {E} X=1}"></span>. Denote <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\cal {W}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi class="MJX-tex-caligraphic" mathvariant="script">W</mi> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\cal {W}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2e30318941dd930448ba93cce03062fd31256ef6" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.405ex; height:2.176ex;" alt="{\displaystyle {\cal {W}}}"></span>, a wavelet transform. Since <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle f{\bf {X}}=f+{f({\bf {X}}-1)}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>f</mi> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">X</mi> </mrow> </mrow> <mo>=</mo> <mi>f</mi> <mo>+</mo> <mrow class="MJX-TeXAtom-ORD"> <mi>f</mi> <mo stretchy="false">(</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">X</mi> </mrow> </mrow> <mo>−<!-- − --></mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle f{\bf {X}}=f+{f({\bf {X}}-1)}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c918c4263c34248bd73951fe555340e4da07ec94" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:19.626ex; height:2.843ex;" alt="{\displaystyle f{\bf {X}}=f+{f({\bf {X}}-1)}}"></span>, then the standard (additive) discrete wavelet transform <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\cal {W^{+}}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <msup> <mi class="MJX-tex-caligraphic" mathvariant="script">W</mi> <mrow class="MJX-TeXAtom-ORD"> <mo class="MJX-tex-caligraphic" mathvariant="script">+</mo> </mrow> </msup> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\cal {W^{+}}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/72f5b2cb8574be6540eec4c9299e1aa7088c1fcf" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:3.949ex; height:2.509ex;" alt="{\displaystyle {\cal {W^{+}}}}"></span> is such that <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\cal {W^{+}}}{\bf {y}}={\cal {W^{+}}}f+{\cal {W^{+}}}{f({\bf {X}}-1)},}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <msup> <mi class="MJX-tex-caligraphic" mathvariant="script">W</mi> <mrow class="MJX-TeXAtom-ORD"> <mo class="MJX-tex-caligraphic" mathvariant="script">+</mo> </mrow> </msup> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">y</mi> </mrow> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <msup> <mi class="MJX-tex-caligraphic" mathvariant="script">W</mi> <mrow class="MJX-TeXAtom-ORD"> <mo class="MJX-tex-caligraphic" mathvariant="script">+</mo> </mrow> </msup> </mrow> </mrow> <mi>f</mi> <mo>+</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <msup> <mi class="MJX-tex-caligraphic" mathvariant="script">W</mi> <mrow class="MJX-TeXAtom-ORD"> <mo class="MJX-tex-caligraphic" mathvariant="script">+</mo> </mrow> </msup> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>f</mi> <mo stretchy="false">(</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">X</mi> </mrow> </mrow> <mo>−<!-- − --></mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\cal {W^{+}}}{\bf {y}}={\cal {W^{+}}}f+{\cal {W^{+}}}{f({\bf {X}}-1)},}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/9b202f0cf25cc2b5724e247ddeaff70935ebab83" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:30.232ex; height:3.009ex;" alt="{\displaystyle {\cal {W^{+}}}{\bf {y}}={\cal {W^{+}}}f+{\cal {W^{+}}}{f({\bf {X}}-1)},}"></span> where <i>detail coefficients</i> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\cal {W^{+}}}{f({\bf {X}}-1)}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <msup> <mi class="MJX-tex-caligraphic" mathvariant="script">W</mi> <mrow class="MJX-TeXAtom-ORD"> <mo class="MJX-tex-caligraphic" mathvariant="script">+</mo> </mrow> </msup> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>f</mi> <mo stretchy="false">(</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">X</mi> </mrow> </mrow> <mo>−<!-- − --></mo> <mn>1</mn> <mo stretchy="false">)</mo> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\cal {W^{+}}}{f({\bf {X}}-1)}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c9b0008dbb07e50440cc1fed829aafe8d4630bbf" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:13.059ex; height:3.009ex;" alt="{\displaystyle {\cal {W^{+}}}{f({\bf {X}}-1)}}"></span> cannot be considered as sparse in general, due to the contribution of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle f}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>f</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle f}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/132e57acb643253e7810ee9702d9581f159a1c61" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.279ex; height:2.509ex;" alt="{\displaystyle f}"></span> in the latter expression. In the multiplicative framework, the wavelet transform is such that <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\cal {W^{\times }}}{\bf {y}}=\left({\cal {W^{\times }}}f\right)\times \left({\cal {W^{\times }}}{\bf {X}}\right).}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <msup> <mi class="MJX-tex-caligraphic" mathvariant="script">W</mi> <mrow class="MJX-TeXAtom-ORD"> <mo>×<!-- × --></mo> </mrow> </msup> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">y</mi> </mrow> </mrow> <mo>=</mo> <mrow> <mo>(</mo> <mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <msup> <mi class="MJX-tex-caligraphic" mathvariant="script">W</mi> <mrow class="MJX-TeXAtom-ORD"> <mo>×<!-- × --></mo> </mrow> </msup> </mrow> </mrow> <mi>f</mi> </mrow> <mo>)</mo> </mrow> <mo>×<!-- × --></mo> <mrow> <mo>(</mo> <mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <msup> <mi class="MJX-tex-caligraphic" mathvariant="script">W</mi> <mrow class="MJX-TeXAtom-ORD"> <mo>×<!-- × --></mo> </mrow> </msup> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">X</mi> </mrow> </mrow> </mrow> <mo>)</mo> </mrow> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\cal {W^{\times }}}{\bf {y}}=\left({\cal {W^{\times }}}f\right)\times \left({\cal {W^{\times }}}{\bf {X}}\right).}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e85f30fd50e50435bb938d239ca63e71ffecd6b1" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:27.147ex; height:2.843ex;" alt="{\displaystyle {\cal {W^{\times }}}{\bf {y}}=\left({\cal {W^{\times }}}f\right)\times \left({\cal {W^{\times }}}{\bf {X}}\right).}"></span> This 'embedding' of wavelets in a <b>multiplicative algebra</b> involves generalized multiplicative approximations and detail operators: For instance, in the case of the Haar wavelets, then up to the normalization coefficient <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>α<!-- α --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b79333175c8b3f0840bfb4ec41b8072c83ea88d3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.488ex; height:1.676ex;" alt="{\displaystyle \alpha }"></span>, the standard <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\cal {W^{+}}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <msup> <mi class="MJX-tex-caligraphic" mathvariant="script">W</mi> <mrow class="MJX-TeXAtom-ORD"> <mo class="MJX-tex-caligraphic" mathvariant="script">+</mo> </mrow> </msup> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\cal {W^{+}}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/72f5b2cb8574be6540eec4c9299e1aa7088c1fcf" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:3.949ex; height:2.509ex;" alt="{\displaystyle {\cal {W^{+}}}}"></span> approximations (<b>arithmetic mean</b>) <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle c_{k}=\alpha (y_{k}+y_{k-1})}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>c</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <mo>=</mo> <mi>α<!-- α --></mi> <mo stretchy="false">(</mo> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <mo>+</mo> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle c_{k}=\alpha (y_{k}+y_{k-1})}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e6253d481f9ad4dd3ef964a70aafb99de9c3949a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:17.888ex; height:2.843ex;" alt="{\displaystyle c_{k}=\alpha (y_{k}+y_{k-1})}"></span> and details (<b>arithmetic differences</b>) <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle d_{k}=\alpha (y_{k}-y_{k-1})}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>d</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <mo>=</mo> <mi>α<!-- α --></mi> <mo stretchy="false">(</mo> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <mo>−<!-- − --></mo> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle d_{k}=\alpha (y_{k}-y_{k-1})}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/33c29c0ad4a6576fa1241d5094235bb54c1407da" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:18.09ex; height:2.843ex;" alt="{\displaystyle d_{k}=\alpha (y_{k}-y_{k-1})}"></span> become respectively <b>geometric mean</b> approximations <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle c_{k}^{\ast }=(y_{k}\times y_{k-1})^{\alpha }}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msubsup> <mi>c</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>∗<!-- ∗ --></mo> </mrow> </msubsup> <mo>=</mo> <mo stretchy="false">(</mo> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <mo>×<!-- × --></mo> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <msup> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mi>α<!-- α --></mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle c_{k}^{\ast }=(y_{k}\times y_{k-1})^{\alpha }}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/ce6384022df961a6a1bd59c4618584312b3bcfee" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:17.684ex; height:3.009ex;" alt="{\displaystyle c_{k}^{\ast }=(y_{k}\times y_{k-1})^{\alpha }}"></span> and <b>geometric differences</b> (details) <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle d_{k}^{\ast }=\left({\frac {y_{k}}{y_{k-1}}}\right)^{\alpha }}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msubsup> <mi>d</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>∗<!-- ∗ --></mo> </mrow> </msubsup> <mo>=</mo> <msup> <mrow> <mo>(</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msub> <mi>y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> </mfrac> </mrow> <mo>)</mo> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>α<!-- α --></mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle d_{k}^{\ast }=\left({\frac {y_{k}}{y_{k-1}}}\right)^{\alpha }}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e2534d1ef7546a3ffeb57ef0f56413e5c1056270" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.505ex; width:15.266ex; height:6.176ex;" alt="{\displaystyle d_{k}^{\ast }=\left({\frac {y_{k}}{y_{k-1}}}\right)^{\alpha }}"></span> when using <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\cal {W^{\times }}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <msup> <mi class="MJX-tex-caligraphic" mathvariant="script">W</mi> <mrow class="MJX-TeXAtom-ORD"> <mo>×<!-- × --></mo> </mrow> </msup> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\cal {W^{\times }}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3d8af3c1aeb902c07735c9b51637bbcbf9685382" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:3.949ex; height:2.343ex;" alt="{\displaystyle {\cal {W^{\times }}}}"></span>.</li></ul> <div class="mw-heading mw-heading2"><h2 id="Code_example">Code example</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=18" title="Edit section: Code example"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In its simplest form, the DWT is remarkably easy to compute. </p><p>The <a href="/wiki/Haar_wavelet" title="Haar wavelet">Haar wavelet</a> in <a href="/wiki/Java_(programming_language)" title="Java (programming language)">Java</a>: </p> <div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="nf">discreteHaarWaveletTransform</span><span class="p">(</span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="n">input</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="c1">// This function assumes that input.length=2^n, n>1</span> <span class="w"> </span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="n">output</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="o">[</span><span class="n">input</span><span class="p">.</span><span class="na">length</span><span class="o">]</span><span class="p">;</span> <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">length</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">input</span><span class="p">.</span><span class="na">length</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="p">;</span><span class="w"> </span><span class="n">length</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">length</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="c1">// length is the current length of the working area of the output array.</span> <span class="w"> </span><span class="c1">// length starts at half of the array size and every iteration is halved until it is 1.</span> <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">length</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sum</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">input</span><span class="o">[</span><span class="n">i</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="o">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">input</span><span class="o">[</span><span class="n">i</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="o">]</span><span class="p">;</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">difference</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">input</span><span class="o">[</span><span class="n">i</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="o">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">input</span><span class="o">[</span><span class="n">i</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="o">]</span><span class="p">;</span> <span class="w"> </span><span class="n">output</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sum</span><span class="p">;</span> <span class="w"> </span><span class="n">output</span><span class="o">[</span><span class="n">length</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">difference</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">length</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">output</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="c1">//Swap arrays to do next iteration</span> <span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">arraycopy</span><span class="p">(</span><span class="n">output</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">input</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="n">length</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p>Complete Java code for a 1-D and 2-D DWT using <a href="/wiki/Haar_wavelet" title="Haar wavelet">Haar</a>, <a href="/wiki/Daubechies_wavelet" title="Daubechies wavelet">Daubechies</a>, <a href="/wiki/Coiflet" title="Coiflet">Coiflet</a>, and <a href="/wiki/Legendre_wavelet" title="Legendre wavelet">Legendre</a> wavelets is available from the open source project: <a rel="nofollow" class="external text" href="https://github.com/cscheiblich/JWave">JWave</a>. Furthermore, a fast lifting implementation of the discrete biorthogonal <a href="/wiki/Cohen-Daubechies-Feauveau_wavelet" class="mw-redirect" title="Cohen-Daubechies-Feauveau wavelet">CDF</a> 9/7 wavelet transform in <a href="/wiki/C_(programming_language)" title="C (programming language)">C</a>, used in the <a href="/wiki/JPEG_2000" title="JPEG 2000">JPEG 2000</a> image compression standard can be found <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120305164605/http://www.embl.de/~gpau/misc/dwt97.c">here</a> (archived 5 March 2012). </p> <div class="mw-heading mw-heading3"><h3 id="Example_of_above_code">Example of above code</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=19" title="Edit section: Example of above code"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure typeof="mw:File/Thumb"><a href="/wiki/File:Haar_DWT_of_the_Sound_Waveform_%22I_Love_Wavelets%22.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/1/1f/Haar_DWT_of_the_Sound_Waveform_%22I_Love_Wavelets%22.png/300px-Haar_DWT_of_the_Sound_Waveform_%22I_Love_Wavelets%22.png" decoding="async" width="300" height="183" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/1f/Haar_DWT_of_the_Sound_Waveform_%22I_Love_Wavelets%22.png/450px-Haar_DWT_of_the_Sound_Waveform_%22I_Love_Wavelets%22.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/1f/Haar_DWT_of_the_Sound_Waveform_%22I_Love_Wavelets%22.png/600px-Haar_DWT_of_the_Sound_Waveform_%22I_Love_Wavelets%22.png 2x" data-file-width="1790" data-file-height="1094" /></a><figcaption>An example of computing the discrete Haar wavelet coefficients for a sound signal of someone saying "I Love Wavelets." The original waveform is shown in blue in the upper left, and the wavelet coefficients are shown in black in the upper right. Along the bottom are shown three zoomed-in regions of the wavelet coefficients for different ranges.</figcaption></figure> <p>This figure shows an example of applying the above code to compute the Haar wavelet coefficients on a sound waveform. This example highlights two key properties of the wavelet transform: </p> <ul><li>Natural signals often have some degree of smoothness, which makes them sparse in the wavelet domain. There are far fewer significant components in the wavelet domain in this example than there are in the time domain, and most of the significant components are towards the coarser coefficients on the left. Hence, natural signals are compressible in the wavelet domain.</li> <li>The wavelet transform is a multiresolution, bandpass representation of a signal. This can be seen directly from the filterbank definition of the discrete wavelet transform given in this article. For a signal of length <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2^{N}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>N</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 2^{N}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f3cc22b5fa0e34487c8a6153965408e004c6e253" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.854ex; height:2.676ex;" alt="{\displaystyle 2^{N}}"></span>, the coefficients in the range <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle [2^{N-j},2^{N-j+1}]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo stretchy="false">[</mo> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>N</mi> <mo>−<!-- − --></mo> <mi>j</mi> </mrow> </msup> <mo>,</mo> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>N</mi> <mo>−<!-- − --></mo> <mi>j</mi> <mo>+</mo> <mn>1</mn> </mrow> </msup> <mo stretchy="false">]</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle [2^{N-j},2^{N-j+1}]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/5a62478da394c615e67c78a0816606c4400c2543" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:14.048ex; height:3.176ex;" alt="{\displaystyle [2^{N-j},2^{N-j+1}]}"></span> represent a version of the original signal which is in the pass-band <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \left[{\frac {\pi }{2^{j}}},{\frac {\pi }{2^{j-1}}}\right]}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow> <mo>[</mo> <mrow> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mi>π<!-- π --></mi> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> </mfrac> </mrow> <mo>,</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mi>π<!-- π --></mi> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> </mfrac> </mrow> </mrow> <mo>]</mo> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \left[{\frac {\pi }{2^{j}}},{\frac {\pi }{2^{j-1}}}\right]}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/1818a598dac087031bfd7681f2aa03ee59a3dca5" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.505ex; width:11.406ex; height:6.176ex;" alt="{\displaystyle \left[{\frac {\pi }{2^{j}}},{\frac {\pi }{2^{j-1}}}\right]}"></span>. This is why zooming in on these ranges of the wavelet coefficients looks so similar in structure to the original signal. Ranges which are closer to the left (larger <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle j}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>j</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle j}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2f461e54f5c093e92a55547b9764291390f0b5d0" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.027ex; width:0.985ex; height:2.509ex;" alt="{\displaystyle j}"></span> in the above notation), are coarser representations of the signal, while ranges to the right represent finer details.</li></ul> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=20" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Discrete_cosine_transform" title="Discrete cosine transform">Discrete cosine transform</a> (DCT)</li> <li><a href="/wiki/Wavelet" title="Wavelet">Wavelet</a></li> <li><a href="/wiki/Wavelet_transform" title="Wavelet transform">Wavelet transform</a></li> <li><a href="/wiki/Wavelet_compression" class="mw-redirect" title="Wavelet compression">Wavelet compression</a></li> <li><a href="/wiki/List_of_wavelet-related_transforms" title="List of wavelet-related transforms">List of wavelet-related transforms</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=21" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap mw-references-columns"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text">A.N. Akansu, R.A. Haddad and H. Caglar, <a rel="nofollow" class="external text" href="http://web.njit.edu/~akansu/PAPERS/Akansu-BinomialQMF-Wavelet-SPIE-VCIP-Sept1990.pdf">Perfect Reconstruction Binomial QMF-Wavelet Transform</a>, Proc. SPIE Visual Communications and Image Processing, pp. 609–618, vol. 1360, Lausanne, Sept. 1990.</span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text">Akansu, Ali N.; Haddad, Richard A. (1992), Multiresolution signal decomposition: transforms, subbands, and wavelets, Boston, MA: Academic Press, <style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-12-047141-6" title="Special:BookSources/978-0-12-047141-6">978-0-12-047141-6</a></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text">A.N. Akansu, <a rel="nofollow" class="external text" href="https://web.njit.edu/~akansu/PAPERS/Akansu-FilterBanksWaveletsSP-SPIEOct1993.pdf">Filter Banks and Wavelets in Signal Processing: A Critical Review</a>, Proc. SPIE Video Communications and PACS for Medical Applications (Invited Paper), pp. 330-341, vol. 1977, Berlin, Oct. 1993.</span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text">Selesnick, I.W.; Baraniuk, R.G.; Kingsbury, N.C., 2005, <i>The dual-tree complex wavelet transform</i></span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFSullivan2003" class="citation web cs1">Sullivan, Gary (8–12 December 2003). <a rel="nofollow" class="external text" href="https://www.itu.int/wftp3/av-arch/video-site/0312_Wai/VCEG-U06.doc">"General characteristics and design considerations for temporal subband video coding"</a>. <i><a href="/wiki/ITU-T" title="ITU-T">ITU-T</a></i>. <a href="/wiki/Video_Coding_Experts_Group" title="Video Coding Experts Group">Video Coding Experts Group</a><span class="reference-accessdate">. Retrieved <span class="nowrap">13 September</span> 2019</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=ITU-T&rft.atitle=General+characteristics+and+design+considerations+for+temporal+subband+video+coding&rft.date=2003-12-08%2F2003-12-12&rft.aulast=Sullivan&rft.aufirst=Gary&rft_id=https%3A%2F%2Fwww.itu.int%2Fwftp3%2Fav-arch%2Fvideo-site%2F0312_Wai%2FVCEG-U06.doc&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBovik2009" class="citation book cs1">Bovik, Alan C. (2009). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=wXmSPPB_c_0C&pg=PA355"><i>The Essential Guide to Video Processing</i></a>. <a href="/wiki/Academic_Press" title="Academic Press">Academic Press</a>. p. 355. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/9780080922508" title="Special:BookSources/9780080922508"><bdi>9780080922508</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=The+Essential+Guide+to+Video+Processing&rft.pages=355&rft.pub=Academic+Press&rft.date=2009&rft.isbn=9780080922508&rft.aulast=Bovik&rft.aufirst=Alan+C.&rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DwXmSPPB_c_0C%26pg%3DPA355&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFGallTabatabai1988" class="citation book cs1">Gall, Didier Le; Tabatabai, Ali J. (1988). "Sub-band coding of digital images using symmetric short kernel filters and arithmetic coding techniques". <i>ICASSP-88., International Conference on Acoustics, Speech, and Signal Processing</i>. pp. 761–764 vol.2. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICASSP.1988.196696">10.1109/ICASSP.1988.196696</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:109186495">109186495</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=Sub-band+coding+of+digital+images+using+symmetric+short+kernel+filters+and+arithmetic+coding+techniques&rft.btitle=ICASSP-88.%2C+International+Conference+on+Acoustics%2C+Speech%2C+and+Signal+Processing&rft.pages=761-764+vol.2&rft.date=1988&rft_id=info%3Adoi%2F10.1109%2FICASSP.1988.196696&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A109186495%23id-name%3DS2CID&rft.aulast=Gall&rft.aufirst=Didier+Le&rft.au=Tabatabai%2C+Ali+J.&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><a href="/wiki/Ali_Naci_Akansu" class="mw-redirect" title="Ali Naci Akansu">Ali Naci Akansu</a>, <a rel="nofollow" class="external text" href="http://web.njit.edu/~akansu/NJITSYMP1990/AkansuNJIT1STWAVELETSSYMPAPRIL301990.pdf">An Efficient QMF-Wavelet Structure</a> (Binomial-QMF Daubechies Wavelets), Proc. 1st NJIT Symposium on Wavelets, April 1990.</span> </li> <li id="cite_note-Said-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-Said_9-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFSaidPearlman1996" class="citation journal cs1">Said, A.; Pearlman, W. A. (1996). <a rel="nofollow" class="external text" href="https://www.researchgate.net/publication/2835826">"A new, fast, and efficient image codec based on set partitioning in hierarchical trees"</a>. <i>IEEE Transactions on Circuits and Systems for Video Technology</i>. <b>6</b> (3): 243–250. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2F76.499834">10.1109/76.499834</a>. <a href="/wiki/ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1051-8215">1051-8215</a><span class="reference-accessdate">. Retrieved <span class="nowrap">18 October</span> 2019</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IEEE+Transactions+on+Circuits+and+Systems+for+Video+Technology&rft.atitle=A+new%2C+fast%2C+and+efficient+image+codec+based+on+set+partitioning+in+hierarchical+trees&rft.volume=6&rft.issue=3&rft.pages=243-250&rft.date=1996&rft_id=info%3Adoi%2F10.1109%2F76.499834&rft.issn=1051-8215&rft.aulast=Said&rft.aufirst=A.&rft.au=Pearlman%2C+W.+A.&rft_id=https%3A%2F%2Fwww.researchgate.net%2Fpublication%2F2835826&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text">S. Mallat, A Wavelet Tour of Signal Processing, 2nd ed. San Diego, CA: Academic, 1999.</span> </li> <li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text">S. G. Mallat and S. Zhong, "Characterization of signals from multiscale edges," IEEE Trans. Pattern Anal. Mach. Intell., vol. 14, no. 7, pp. 710– 732, Jul. 1992.</span> </li> <li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text">Ince, Kiranyaz, Gabbouj, 2009, <i>A generic and robust system for automated patient-specific classification of ECG signals</i></span> </li> <li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=DTpEVQSEBBk">"Novel method for stride length estimation with body area network accelerometers"</a>, <i>IEEE BioWireless 2011</i>, pp. 79–82</span> </li> <li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFNasirCoolSassani2019" class="citation journal cs1">Nasir, V.; Cool, J.; Sassani, F. (October 2019). <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/8754744">"Intelligent Machining Monitoring Using Sound Signal Processed With the Wavelet Method and a Self-Organizing Neural Network"</a>. <i>IEEE Robotics and Automation Letters</i>. <b>4</b> (4): 3449–3456. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FLRA.2019.2926666">10.1109/LRA.2019.2926666</a>. <a href="/wiki/ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/2377-3766">2377-3766</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:198474004">198474004</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IEEE+Robotics+and+Automation+Letters&rft.atitle=Intelligent+Machining+Monitoring+Using+Sound+Signal+Processed+With+the+Wavelet+Method+and+a+Self-Organizing+Neural+Network&rft.volume=4&rft.issue=4&rft.pages=3449-3456&rft.date=2019-10&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A198474004%23id-name%3DS2CID&rft.issn=2377-3766&rft_id=info%3Adoi%2F10.1109%2FLRA.2019.2926666&rft.aulast=Nasir&rft.aufirst=V.&rft.au=Cool%2C+J.&rft.au=Sassani%2C+F.&rft_id=https%3A%2F%2Fieeexplore.ieee.org%2Fdocument%2F8754744&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBroughton" class="citation web cs1">Broughton, S. Allen. <a rel="nofollow" class="external text" href="http://www.rose-hulman.edu/~brought/Epubs/Imaging/waveimage.html">"Wavelet Based Methods in Image Processing"</a>. <i>www.rose-hulman.edu</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2017-05-02</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=www.rose-hulman.edu&rft.atitle=Wavelet+Based+Methods+in+Image+Processing&rft.aulast=Broughton&rft.aufirst=S.+Allen&rft_id=http%3A%2F%2Fwww.rose-hulman.edu%2F~brought%2FEpubs%2FImaging%2Fwaveimage.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFChervyakovLyakhovNagornov2018" class="citation journal cs1">Chervyakov, N. I.; Lyakhov, P. A.; Nagornov, N. N. (2018-11-01). <a rel="nofollow" class="external text" href="https://doi.org/10.3103/S8756699018060092">"Quantization Noise of Multilevel Discrete Wavelet Transform Filters in Image Processing"</a>. <i>Optoelectronics, Instrumentation and Data Processing</i>. <b>54</b> (6): 608–616. <a href="/wiki/Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2018OIDP...54..608C">2018OIDP...54..608C</a>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.3103%2FS8756699018060092">10.3103/S8756699018060092</a>. <a href="/wiki/ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1934-7944">1934-7944</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:128173262">128173262</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Optoelectronics%2C+Instrumentation+and+Data+Processing&rft.atitle=Quantization+Noise+of+Multilevel+Discrete+Wavelet+Transform+Filters+in+Image+Processing&rft.volume=54&rft.issue=6&rft.pages=608-616&rft.date=2018-11-01&rft_id=info%3Adoi%2F10.3103%2FS8756699018060092&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A128173262%23id-name%3DS2CID&rft.issn=1934-7944&rft_id=info%3Abibcode%2F2018OIDP...54..608C&rft.aulast=Chervyakov&rft.aufirst=N.+I.&rft.au=Lyakhov%2C+P.+A.&rft.au=Nagornov%2C+N.+N.&rft_id=https%3A%2F%2Fdoi.org%2F10.3103%2FS8756699018060092&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFAkansuSmith1995" class="citation book cs1">Akansu, Ali N.; Smith, Mark J. T. (31 October 1995). <i>Subband and Wavelet Transforms: Design and Applications</i>. Kluwer Academic Publishers. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0792396456" title="Special:BookSources/0792396456"><bdi>0792396456</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Subband+and+Wavelet+Transforms%3A+Design+and+Applications&rft.pub=Kluwer+Academic+Publishers&rft.date=1995-10-31&rft.isbn=0792396456&rft.aulast=Akansu&rft.aufirst=Ali+N.&rft.au=Smith%2C+Mark+J.+T.&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFAkansuMedley2010" class="citation book cs1">Akansu, Ali N.; Medley, Michael J. (6 December 2010). <i>Wavelet, Subband and Block Transforms in Communications and Multimedia</i>. Kluwer Academic Publishers. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1441950864" title="Special:BookSources/978-1441950864"><bdi>978-1441950864</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Wavelet%2C+Subband+and+Block+Transforms+in+Communications+and+Multimedia&rft.pub=Kluwer+Academic+Publishers&rft.date=2010-12-06&rft.isbn=978-1441950864&rft.aulast=Akansu&rft.aufirst=Ali+N.&rft.au=Medley%2C+Michael+J.&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text">A.N. Akansu, P. Duhamel, X. Lin and M. de Courville <a rel="nofollow" class="external text" href="http://web.njit.edu/~akansu/PAPERS/AKANSU-ORTHOGONAL-MUX-1998.pdf">Orthogonal Transmultiplexers in Communication: A Review</a>, IEEE Trans. On Signal Processing, Special Issue on Theory and Applications of Filter Banks and Wavelets. Vol. 46, No.4, pp. 979–995, April, 1998.</span> </li> <li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text">A.N. Akansu, W.A. Serdijn, and I.W. Selesnick, <a rel="nofollow" class="external text" href="http://web.njit.edu/~akansu/PAPERS/ANA-IWS-WAS-ELSEVIER%20PHYSCOM%202010.pdf">Wavelet Transforms in Signal Processing: A Review of Emerging Applications</a>, Physical Communication, Elsevier, vol. 3, issue 1, pp. 1–18, March 2010.</span> </li> <li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPragadaSivaswamy2008" class="citation journal cs1">Pragada, S.; Sivaswamy, J. (2008-12-01). "Image Denoising Using Matched Biorthogonal Wavelets". <i>2008 Sixth Indian Conference on Computer Vision, Graphics Image Processing</i>: 25–32. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICVGIP.2008.95">10.1109/ICVGIP.2008.95</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:15516486">15516486</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=2008+Sixth+Indian+Conference+on+Computer+Vision%2C+Graphics+Image+Processing&rft.atitle=Image+Denoising+Using+Matched+Biorthogonal+Wavelets&rft.pages=25-32&rft.date=2008-12-01&rft_id=info%3Adoi%2F10.1109%2FICVGIP.2008.95&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A15516486%23id-name%3DS2CID&rft.aulast=Pragada&rft.aufirst=S.&rft.au=Sivaswamy%2C+J.&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.mathworks.com/help/wavelet/ref/wdcbm.html">"Thresholds for wavelet 1-D using Birgé-Massart strategy - MATLAB wdcbm"</a>. <i>www.mathworks.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2017-05-03</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=www.mathworks.com&rft.atitle=Thresholds+for+wavelet+1-D+using+Birg%C3%A9-Massart+strategy+-+MATLAB+wdcbm&rft_id=https%3A%2F%2Fwww.mathworks.com%2Fhelp%2Fwavelet%2Fref%2Fwdcbm.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.mathworks.com/matlabcentral/answers/71609-how-to-get-snr-for-2-images">"how to get SNR for 2 images - MATLAB Answers - MATLAB Central"</a>. <i>www.mathworks.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2017-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=www.mathworks.com&rft.atitle=how+to+get+SNR+for+2+images+-+MATLAB+Answers+-+MATLAB+Central&rft_id=https%3A%2F%2Fwww.mathworks.com%2Fmatlabcentral%2Fanswers%2F71609-how-to-get-snr-for-2-images&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-24"><span class="mw-cite-backlink"><b><a href="#cite_ref-24">^</a></b></span> <span class="reference-text">Prasanalakshmi, B., et.al., (2011). Frequency Domain Combination for Preserving Data in Space Specified Token with High Security. In: Informatics Engineering and Information Science. ICIEIS 2011. Communications in Computer and Information Science, vol 251. Springer, Berlin, Heidelberg.<a rel="nofollow" class="external free" href="https://link.springer.com/chapter/10.1007%2F978-3-642-25327-0_28">https://link.springer.com/chapter/10.1007%2F978-3-642-25327-0_28</a></span> </li> <li id="cite_note-Barina2020-25"><span class="mw-cite-backlink"><b><a href="#cite_ref-Barina2020_25-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBarina2020" class="citation journal cs1">Barina, David (2020). <a rel="nofollow" class="external text" href="https://rdcu.be/b5vdo">"Real-time wavelet transform for infinite image strips"</a>. <i>Journal of Real-Time Image Processing</i>. <b>18</b> (3). Springer: 585–591. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2Fs11554-020-00995-8">10.1007/s11554-020-00995-8</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:220396648">220396648</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2020-07-09</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Journal+of+Real-Time+Image+Processing&rft.atitle=Real-time+wavelet+transform+for+infinite+image+strips&rft.volume=18&rft.issue=3&rft.pages=585-591&rft.date=2020&rft_id=info%3Adoi%2F10.1007%2Fs11554-020-00995-8&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A220396648%23id-name%3DS2CID&rft.aulast=Barina&rft.aufirst=David&rft_id=https%3A%2F%2Frdcu.be%2Fb5vdo&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> <li id="cite_note-atto16tgrs-26"><span class="mw-cite-backlink"><b><a href="#cite_ref-atto16tgrs_26-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFAttoTrouvéNicolasLê2016" class="citation journal cs1">Atto, Abdourrahmane M.; Trouvé, Emmanuel; Nicolas, Jean-Marie; Lê, Thu Trang (2016). <a rel="nofollow" class="external text" href="https://hal.archives-ouvertes.fr/hal-01341064/file/TGRS-2015-00943_GeomWavelets%5B18%5D_Final%20-%20VersionHAL.pdf">"Wavelet Operators and Multiplicative Observation Models—Application to SAR Image Time-Series Analysis"</a> <span class="cs1-format">(PDF)</span>. <i>IEEE Transactions on Geoscience and Remote Sensing</i>. <b>54</b> (11): 6606–6624. <a href="/wiki/Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2016ITGRS..54.6606A">2016ITGRS..54.6606A</a>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FTGRS.2016.2587626">10.1109/TGRS.2016.2587626</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:1860049">1860049</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IEEE+Transactions+on+Geoscience+and+Remote+Sensing&rft.atitle=Wavelet+Operators+and+Multiplicative+Observation+Models%E2%80%94Application+to+SAR+Image+Time-Series+Analysis&rft.volume=54&rft.issue=11&rft.pages=6606-6624&rft.date=2016&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A1860049%23id-name%3DS2CID&rft_id=info%3Adoi%2F10.1109%2FTGRS.2016.2587626&rft_id=info%3Abibcode%2F2016ITGRS..54.6606A&rft.aulast=Atto&rft.aufirst=Abdourrahmane+M.&rft.au=Trouv%C3%A9%2C+Emmanuel&rft.au=Nicolas%2C+Jean-Marie&rft.au=L%C3%AA%2C+Thu+Trang&rft_id=https%3A%2F%2Fhal.archives-ouvertes.fr%2Fhal-01341064%2Ffile%2FTGRS-2015-00943_GeomWavelets%255B18%255D_Final%2520-%2520VersionHAL.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> </ol></div></div><p><sup id="cite_ref-27" class="reference"><a href="#cite_note-27"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> </p><div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Discrete_wavelet_transform&action=edit&section=22" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Stanford's <a rel="nofollow" class="external text" href="http://statweb.stanford.edu/~wavelab/">WaveLab</a> in matlab</li> <li><a rel="nofollow" class="external text" href="http://www.fit.vutbr.cz/research/view_product.php?id=211&notitle=1">libdwt</a>, a cross-platform DWT library written in C</li> <li><a rel="nofollow" class="external text" href="https://www.scribd.com/document/436856865/Concise-Introduction-to-Wavelets">Concise Introduction to Wavelets</a> by René Puschinger</li></ul> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-27"><span class="mw-cite-backlink"><b><a href="#cite_ref-27">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPrasadMaanVerma2021" class="citation journal cs1">Prasad, Akhilesh; Maan, Jeetendrasingh; Verma, Sandeep Kumar (2021). <a rel="nofollow" class="external text" href="https://onlinelibrary.wiley.com/doi/abs/10.1002/mma.7440">"Wavelet transforms associated with the index Whittaker transform"</a>. <i>Mathematical Methods in the Applied Sciences</i>. <b>44</b> (13): 10734–10752. <a href="/wiki/Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/2021MMAS...4410734P">2021MMAS...4410734P</a>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1002%2Fmma.7440">10.1002/mma.7440</a>. <a href="/wiki/ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1099-1476">1099-1476</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:235556542">235556542</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Mathematical+Methods+in+the+Applied+Sciences&rft.atitle=Wavelet+transforms+associated+with+the+index+Whittaker+transform&rft.volume=44&rft.issue=13&rft.pages=10734-10752&rft.date=2021&rft_id=info%3Adoi%2F10.1002%2Fmma.7440&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A235556542%23id-name%3DS2CID&rft.issn=1099-1476&rft_id=info%3Abibcode%2F2021MMAS...4410734P&rft.aulast=Prasad&rft.aufirst=Akhilesh&rft.au=Maan%2C+Jeetendrasingh&rft.au=Verma%2C+Sandeep+Kumar&rft_id=https%3A%2F%2Fonlinelibrary.wiley.com%2Fdoi%2Fabs%2F10.1002%2Fmma.7440&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADiscrete+wavelet+transform" class="Z3988"></span></span> </li> </ol></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐44nch Cached time: 20241122140849 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.560 seconds Real time usage: 0.943 seconds Preprocessor visited node count: 2281/1000000 Post‐expand include size: 41582/2097152 bytes Template argument size: 2210/2097152 bytes Highest expansion depth: 16/100 Expensive parser function count: 9/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 75705/5000000 bytes Lua time usage: 0.260/10.000 seconds Lua memory usage: 6071505/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 588.019 1 -total 40.17% 236.194 1 Template:Reflist 17.73% 104.241 1 Template:Short_description 14.76% 86.814 4 Template:Cite_web 11.20% 65.844 2 Template:Pagetype 10.91% 64.129 1 Template:Clarify 10.18% 59.832 1 Template:Fix-span 9.84% 57.851 1 Template:ISBN 8.31% 48.893 1 Template:Catalog_lookup_link 7.75% 45.598 7 Template:Cite_journal --> <!-- Saved in parser cache with key enwiki:pcache:idhash:857564-0!canonical and timestamp 20241122140849 and revision id 1250750378. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Discrete_wavelet_transform&oldid=1250750378">https://en.wikipedia.org/w/index.php?title=Discrete_wavelet_transform&oldid=1250750378</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Numerical_analysis" title="Category:Numerical analysis">Numerical analysis</a></li><li><a href="/wiki/Category:Digital_signal_processing" title="Category:Digital signal processing">Digital signal processing</a></li><li><a href="/wiki/Category:Wavelets" title="Category:Wavelets">Wavelets</a></li><li><a href="/wiki/Category:Discrete_transforms" title="Category:Discrete transforms">Discrete transforms</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_matches_Wikidata" title="Category:Short description matches Wikidata">Short description matches Wikidata</a></li><li><a href="/wiki/Category:Wikipedia_articles_needing_clarification_from_August_2020" title="Category:Wikipedia articles needing clarification from August 2020">Wikipedia articles needing clarification from August 2020</a></li><li><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_December_2019" title="Category:Articles with unsourced statements from December 2019">Articles with unsourced statements from December 2019</a></li><li><a href="/wiki/Category:Articles_with_example_Java_code" title="Category:Articles with example Java code">Articles with example Java code</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 12 October 2024, at 09:08<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Discrete_wavelet_transform&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-sqbd2","wgBackendResponseTime":167,"wgPageParseReport":{"limitreport":{"cputime":"0.560","walltime":"0.943","ppvisitednodes":{"value":2281,"limit":1000000},"postexpandincludesize":{"value":41582,"limit":2097152},"templateargumentsize":{"value":2210,"limit":2097152},"expansiondepth":{"value":16,"limit":100},"expensivefunctioncount":{"value":9,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":75705,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 588.019 1 -total"," 40.17% 236.194 1 Template:Reflist"," 17.73% 104.241 1 Template:Short_description"," 14.76% 86.814 4 Template:Cite_web"," 11.20% 65.844 2 Template:Pagetype"," 10.91% 64.129 1 Template:Clarify"," 10.18% 59.832 1 Template:Fix-span"," 9.84% 57.851 1 Template:ISBN"," 8.31% 48.893 1 Template:Catalog_lookup_link"," 7.75% 45.598 7 Template:Cite_journal"]},"scribunto":{"limitreport-timeusage":{"value":"0.260","limit":"10.000"},"limitreport-memusage":{"value":6071505,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-44nch","timestamp":"20241122140849","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Discrete wavelet transform","url":"https:\/\/en.wikipedia.org\/wiki\/Discrete_wavelet_transform","sameAs":"http:\/\/www.wikidata.org\/entity\/Q2414958","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q2414958","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2004-07-26T00:00:33Z","dateModified":"2024-10-12T09:08:24Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/e\/e0\/Jpeg2000_2-level_wavelet_transform-lichtenstein.png","headline":"transform in numerical harmonic analysis"}</script> </body> </html>