root/doc/html/group__dct.html @ 354

Revision 353, 8.0 kB (checked in by smidl, 16 years ago)

doc

Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>mixpp: Discrete Cosine Transform (DCT)</title>
4<link href="tabs.css" rel="stylesheet" type="text/css">
5<link href="doxygen.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.8 -->
8<script type="text/javascript">
9<!--
10function changeDisplayState (e){
11  var num=this.id.replace(/[^[0-9]/g,'');
12  var button=this.firstChild;
13  var sectionDiv=document.getElementById('dynsection'+num);
14  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
15    sectionDiv.style.display='block';
16    button.src='open.gif';
17  }else{
18    sectionDiv.style.display='none';
19    button.src='closed.gif';
20  }
21}
22function initDynSections(){
23  var divs=document.getElementsByTagName('div');
24  var sectionCounter=1;
25  for(var i=0;i<divs.length-1;i++){
26    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
27      var header=divs[i];
28      var section=divs[i+1];
29      var button=header.firstChild;
30      if (button!='IMG'){
31        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
32        button=document.createElement('img');
33        divs[i].insertBefore(button,divs[i].firstChild);
34      }
35      header.style.cursor='pointer';
36      header.onclick=changeDisplayState;
37      header.id='dynheader'+sectionCounter;
38      button.src='closed.gif';
39      section.id='dynsection'+sectionCounter;
40      section.style.display='none';
41      section.style.marginLeft='14px';
42      sectionCounter++;
43    }
44  }
45}
46window.onload = initDynSections;
47-->
48</script>
49<div class="navigation" id="top">
50  <div class="tabs">
51    <ul>
52      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
53      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
54      <li><a href="modules.html"><span>Modules</span></a></li>
55      <li><a href="annotated.html"><span>Classes</span></a></li>
56      <li><a href="files.html"><span>Files</span></a></li>
57    </ul>
58  </div>
59</div>
60<div class="contents">
61<h1>Discrete Cosine Transform (DCT)<br>
62<small>
63[<a class="el" href="group__transforms.html">Transforms</a>]</small>
64</h1>One dimensional Dicrete Cosine Transform. 
65<a href="#_details">More...</a>
66<p>
67<table border="0" cellpadding="0" cellspacing="0">
68<tr><td></td></tr>
69<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
70<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g8c08cf857cfcb687d996f85ad7d73c4e"></a><!-- doxytag: member="dct::dct" ref="g8c08cf857cfcb687d996f85ad7d73c4e" args="(const vec &amp;in, vec &amp;out)" -->
71void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dct.html#g8c08cf857cfcb687d996f85ad7d73c4e">itpp::dct</a> (const <a class="el" href="classitpp_1_1Vec.html#02e1bb55f60f3c2eb7a020eb1c2cfcf4">vec</a> &amp;in, <a class="el" href="classitpp_1_1Vec.html#02e1bb55f60f3c2eb7a020eb1c2cfcf4">vec</a> &amp;out)</td></tr>
72
73<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Discrete Cosine Transform (DCT). <br></td></tr>
74<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g00edf4680dd48a395f1e068996d70dbd"></a><!-- doxytag: member="dct::dct" ref="g00edf4680dd48a395f1e068996d70dbd" args="(const vec &amp;in)" -->
75<a class="el" href="classitpp_1_1Vec.html#02e1bb55f60f3c2eb7a020eb1c2cfcf4">vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dct.html#g00edf4680dd48a395f1e068996d70dbd">itpp::dct</a> (const <a class="el" href="classitpp_1_1Vec.html#02e1bb55f60f3c2eb7a020eb1c2cfcf4">vec</a> &amp;in)</td></tr>
76
77<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Discrete Cosine Transform (DCT). <br></td></tr>
78<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gbacbd75dce6d1661597332664eded3ac"></a><!-- doxytag: member="dct::idct" ref="gbacbd75dce6d1661597332664eded3ac" args="(const vec &amp;in, vec &amp;out)" -->
79void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dct.html#gbacbd75dce6d1661597332664eded3ac">itpp::idct</a> (const <a class="el" href="classitpp_1_1Vec.html#02e1bb55f60f3c2eb7a020eb1c2cfcf4">vec</a> &amp;in, <a class="el" href="classitpp_1_1Vec.html#02e1bb55f60f3c2eb7a020eb1c2cfcf4">vec</a> &amp;out)</td></tr>
80
81<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inverse Discrete Cosine Transform (IDCT). <br></td></tr>
82<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g941866a19b82318fa8ca2124fdbaa53c"></a><!-- doxytag: member="dct::idct" ref="g941866a19b82318fa8ca2124fdbaa53c" args="(const vec &amp;in)" -->
83<a class="el" href="classitpp_1_1Vec.html#02e1bb55f60f3c2eb7a020eb1c2cfcf4">vec</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__dct.html#g941866a19b82318fa8ca2124fdbaa53c">itpp::idct</a> (const <a class="el" href="classitpp_1_1Vec.html#02e1bb55f60f3c2eb7a020eb1c2cfcf4">vec</a> &amp;in)</td></tr>
84
85<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inverse Discrete Cosine Transform (IDCT). <br></td></tr>
86</table>
87<hr><a name="_details"></a><h2>Detailed Description</h2>
88One dimensional Dicrete Cosine Transform.
89<p>
90<dl class="author" compact><dt><b>Author:</b></dt><dd>Tony Ottosson and Adam Piatyszek</dd></dl>
91The functions <div class="fragment"><pre class="fragment"> X = <a class="code" href="group__dct.html#g8c08cf857cfcb687d996f85ad7d73c4e" title="Discrete Cosine Transform (DCT).">dct</a>(x)
92</pre></div> and <div class="fragment"><pre class="fragment"> x = <a class="code" href="group__dct.html#gbacbd75dce6d1661597332664eded3ac" title="Inverse Discrete Cosine Transform (IDCT).">idct</a>(X)
93</pre></div> are the dicrete cosine and inverse discrete cosine transforms of size <em>N</em> defined as: <p class="formulaDsp">
94<img class="formulaDsp" alt="\[ X(k) = w(k) \sum_{j=0}^{N-1} x(j) \cos \left(\frac{(2j+1)k \pi}{2N} \right) \]" src="form_360.png">
95<p>
96<p>
97<p class="formulaDsp">
98<img class="formulaDsp" alt="\[ x(j) = \sum_{k=0}^{N-1} w(k) X(k) \cos \left(\frac{(2j+1)k \pi}{2N} \right) \]" src="form_361.png">
99<p>
100 where <img class="formulaInl" alt="$w(k) = 1/sqrt{N}$" src="form_362.png"> for <img class="formulaInl" alt="$k=0$" src="form_363.png"> and <img class="formulaInl" alt="$w(k) = sqrt{2/N}$" src="form_364.png"> for <img class="formulaInl" alt="$k\geq 1$" src="form_365.png">.<p>
101The implementation is built upon one of the following libraries:<ul>
102<li>FFTW (version 3.0.0 or higher)</li><li>MKL (version 8.0.0 or higher)</li><li>ACML (version 2.5.3 or higher).</li></ul>
103<p>
104<dl class="note" compact><dt><b>Note:</b></dt><dd>FFTW-based implementation is the fastest for powers of two. Furthermore, the second time you call the routine with the same size, the calculation is much faster due to many things were calculated and stored the first time the routine was called.<p>
105Achieving maximum runtime efficiency with the FFTW library on some computer architectures requires that data are stored in the memory with a special alignment (to 16-byte boundaries). The IT++ memory management functions and container classes do not generally allocate memory aligned this way, and as a result calling FFTW via the IT++ interface (i.e. the <a class="el" href="group__dct.html#g8c08cf857cfcb687d996f85ad7d73c4e" title="Discrete Cosine Transform (DCT).">dct()</a>/idct() function) may be slower than using the FFTW library directly. Therefore, FFTW users concerned about maximum possible performance may want to consider the possibility of calling the FFTW library and its memory management/allocation routines directly, bypassing the IT++ storage classes and the <a class="el" href="group__dct.html#g8c08cf857cfcb687d996f85ad7d73c4e" title="Discrete Cosine Transform (DCT).">dct()</a>/idct() interface to FFTW. </dd></dl>
106</div>
107<hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:14 2009 for mixpp by&nbsp;
108<a href="http://www.doxygen.org/index.html">
109<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
110</body>
111</html>
Note: See TracBrowser for help on using the browser.