arm_compute v18.05
[platform/upstream/armcl.git] / documentation / classarm__compute_1_1_c_l_laplacian_pyramid.xhtml
1 <!-- HTML header for doxygen 1.8.9.1-->
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
6 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
7 <meta name="generator" content="Doxygen 1.8.11"/>
8 <meta name="robots" content="NOINDEX, NOFOLLOW" /> <!-- Prevent indexing by search engines -->
9 <title>Compute Library: CLLaplacianPyramid Class Reference</title>
10 <link href="tabs.css" rel="stylesheet" type="text/css"/>
11 <script type="text/javascript" src="jquery.js"></script>
12 <script type="text/javascript" src="dynsections.js"></script>
13 <link href="navtree.css" rel="stylesheet" type="text/css"/>
14 <script type="text/javascript" src="resize.js"></script>
15 <script type="text/javascript" src="navtreedata.js"></script>
16 <script type="text/javascript" src="navtree.js"></script>
17 <script type="text/javascript">
18   $(document).ready(initResizable);
19   $(window).load(resizeHeight);
20 </script>
21 <link href="search/search.css" rel="stylesheet" type="text/css"/>
22 <script type="text/javascript" src="search/searchdata.js"></script>
23 <script type="text/javascript" src="search/search.js"></script>
24 <script type="text/javascript">
25   $(document).ready(function() { init_search(); });
26 </script>
27 <script type="text/x-mathjax-config">
28   MathJax.Hub.Config({
29     extensions: ["tex2jax.js"],
30     jax: ["input/TeX","output/HTML-CSS"],
31 });
32 </script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
33 <link href="doxygen.css" rel="stylesheet" type="text/css" />
34 </head>
35 <body>
36 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
37 <div id="titlearea">
38 <table cellspacing="0" cellpadding="0">
39  <tbody>
40  <tr style="height: 56px;">
41   <td style="padding-left: 0.5em;">
42    <div id="projectname">Compute Library
43    &#160;<span id="projectnumber">18.05</span>
44    </div>
45   </td>
46  </tr>
47  </tbody>
48 </table>
49 </div>
50 <!-- end header part -->
51 <!-- Generated by Doxygen 1.8.11 -->
52 <script type="text/javascript">
53 var searchBox = new SearchBox("searchBox", "search",false,'Search');
54 </script>
55   <div id="navrow1" class="tabs">
56     <ul class="tablist">
57       <li><a href="index.xhtml"><span>Main&#160;Page</span></a></li>
58       <li><a href="pages.xhtml"><span>Related&#160;Pages</span></a></li>
59       <li><a href="namespaces.xhtml"><span>Namespaces</span></a></li>
60       <li class="current"><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
61       <li><a href="files.xhtml"><span>Files</span></a></li>
62       <li>
63         <div id="MSearchBox" class="MSearchBoxInactive">
64         <span class="left">
65           <img id="MSearchSelect" src="search/mag_sel.png"
66                onmouseover="return searchBox.OnSearchSelectShow()"
67                onmouseout="return searchBox.OnSearchSelectHide()"
68                alt=""/>
69           <input type="text" id="MSearchField" value="Search" accesskey="S"
70                onfocus="searchBox.OnSearchFieldFocus(true)" 
71                onblur="searchBox.OnSearchFieldFocus(false)" 
72                onkeyup="searchBox.OnSearchFieldChange(event)"/>
73           </span><span class="right">
74             <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
75           </span>
76         </div>
77       </li>
78     </ul>
79   </div>
80   <div id="navrow2" class="tabs2">
81     <ul class="tablist">
82       <li><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
83       <li><a href="classes.xhtml"><span>Data&#160;Structure&#160;Index</span></a></li>
84       <li><a href="inherits.xhtml"><span>Class&#160;Hierarchy</span></a></li>
85       <li><a href="functions.xhtml"><span>Data&#160;Fields</span></a></li>
86     </ul>
87   </div>
88 </div><!-- top -->
89 <div id="side-nav" class="ui-resizable side-nav-resizable">
90   <div id="nav-tree">
91     <div id="nav-tree-contents">
92       <div id="nav-sync" class="sync"></div>
93     </div>
94   </div>
95   <div id="splitbar" style="-moz-user-select:none;" 
96        class="ui-resizable-handle">
97   </div>
98 </div>
99 <script type="text/javascript">
100 $(document).ready(function(){initNavTree('classarm__compute_1_1_c_l_laplacian_pyramid.xhtml','');});
101 </script>
102 <div id="doc-content">
103 <!-- window showing the filter options -->
104 <div id="MSearchSelectWindow"
105      onmouseover="return searchBox.OnSearchSelectShow()"
106      onmouseout="return searchBox.OnSearchSelectHide()"
107      onkeydown="return searchBox.OnSearchSelectKey(event)">
108 </div>
109
110 <!-- iframe showing the search results (closed by default) -->
111 <div id="MSearchResultsWindow">
112 <iframe src="javascript:void(0)" frameborder="0" 
113         name="MSearchResults" id="MSearchResults">
114 </iframe>
115 </div>
116
117 <div class="header">
118   <div class="summary">
119 <a href="#pub-methods">Public Member Functions</a>  </div>
120   <div class="headertitle">
121 <div class="title">CLLaplacianPyramid Class Reference</div>  </div>
122 </div><!--header-->
123 <div class="contents">
124
125 <p>Basic function to execute laplacian pyramid.  
126  <a href="classarm__compute_1_1_c_l_laplacian_pyramid.xhtml#details">More...</a></p>
127
128 <p><code>#include &lt;<a class="el" href="_c_l_laplacian_pyramid_8h_source.xhtml">CLLaplacianPyramid.h</a>&gt;</code></p>
129 <div class="dynheader">
130 Collaboration diagram for CLLaplacianPyramid:</div>
131 <div class="dyncontent">
132 <div class="center"><iframe scrolling="no" frameborder="0" src="classarm__compute_1_1_c_l_laplacian_pyramid__coll__graph.svg" width="162" height="112"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
133 </div>
134 <center><span class="legend">[<a target="top" href="graph_legend.xhtml">legend</a>]</span></center></div>
135 <table class="memberdecls">
136 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
137 Public Member Functions</h2></td></tr>
138 <tr class="memitem:abc061ac0f69ff7cfe1ec11168d32547c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_laplacian_pyramid.xhtml#abc061ac0f69ff7cfe1ec11168d32547c">CLLaplacianPyramid</a> ()</td></tr>
139 <tr class="memdesc:abc061ac0f69ff7cfe1ec11168d32547c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#abc061ac0f69ff7cfe1ec11168d32547c">More...</a><br /></td></tr>
140 <tr class="separator:abc061ac0f69ff7cfe1ec11168d32547c"><td class="memSeparator" colspan="2">&#160;</td></tr>
141 <tr class="memitem:affa012258b464b065d72cc26657119d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_laplacian_pyramid.xhtml#affa012258b464b065d72cc26657119d4">configure</a> (<a class="el" href="classarm__compute_1_1_i_c_l_tensor.xhtml">ICLTensor</a> *input, <a class="el" href="classarm__compute_1_1_c_l_pyramid.xhtml">CLPyramid</a> *pyramid, <a class="el" href="classarm__compute_1_1_i_c_l_tensor.xhtml">ICLTensor</a> *output, <a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a> border_mode, uint8_t constant_border_value)</td></tr>
142 <tr class="memdesc:affa012258b464b065d72cc26657119d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialise the function's source, destinations and border mode.  <a href="#affa012258b464b065d72cc26657119d4">More...</a><br /></td></tr>
143 <tr class="separator:affa012258b464b065d72cc26657119d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
144 <tr class="memitem:ad1717410afd0be936c6213a63c8005fb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_c_l_laplacian_pyramid.xhtml#ad1717410afd0be936c6213a63c8005fb">run</a> () override</td></tr>
145 <tr class="memdesc:ad1717410afd0be936c6213a63c8005fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run the kernels contained in the function.  <a href="#ad1717410afd0be936c6213a63c8005fb">More...</a><br /></td></tr>
146 <tr class="separator:ad1717410afd0be936c6213a63c8005fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
147 <tr class="inherit_header pub_methods_classarm__compute_1_1_i_function"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classarm__compute_1_1_i_function')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classarm__compute_1_1_i_function.xhtml">IFunction</a></td></tr>
148 <tr class="memitem:ab921ecc3f3f6ae2b4bd61f3e1998d8c4 inherit pub_methods_classarm__compute_1_1_i_function"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_function.xhtml#ab921ecc3f3f6ae2b4bd61f3e1998d8c4">~IFunction</a> ()=default</td></tr>
149 <tr class="memdesc:ab921ecc3f3f6ae2b4bd61f3e1998d8c4 inherit pub_methods_classarm__compute_1_1_i_function"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="#ab921ecc3f3f6ae2b4bd61f3e1998d8c4">More...</a><br /></td></tr>
150 <tr class="separator:ab921ecc3f3f6ae2b4bd61f3e1998d8c4 inherit pub_methods_classarm__compute_1_1_i_function"><td class="memSeparator" colspan="2">&#160;</td></tr>
151 <tr class="memitem:a820f7291c24155a2980512fae45aac26 inherit pub_methods_classarm__compute_1_1_i_function"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classarm__compute_1_1_i_function.xhtml#a820f7291c24155a2980512fae45aac26">prepare</a> ()</td></tr>
152 <tr class="memdesc:a820f7291c24155a2980512fae45aac26 inherit pub_methods_classarm__compute_1_1_i_function"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepare the function for executing.  <a href="#a820f7291c24155a2980512fae45aac26">More...</a><br /></td></tr>
153 <tr class="separator:a820f7291c24155a2980512fae45aac26 inherit pub_methods_classarm__compute_1_1_i_function"><td class="memSeparator" colspan="2">&#160;</td></tr>
154 </table>
155 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
156 <div class="textblock"><p>Basic function to execute laplacian pyramid. </p>
157 <p>This function calls the following OpenCL kernels and functions:</p>
158 <ol type="1">
159 <li><a class="el" href="classarm__compute_1_1_c_l_gaussian_pyramid_half.xhtml">CLGaussianPyramidHalf</a></li>
160 <li><a class="el" href="classarm__compute_1_1_c_l_gaussian5x5.xhtml">CLGaussian5x5</a></li>
161 <li><p class="startli"><a class="el" href="classarm__compute_1_1_c_l_arithmetic_subtraction.xhtml">CLArithmeticSubtraction</a></p>
162 <p class="startli">First a Gaussian pyramid is created. Then, for each level i, the corresponding tensor I(i) is blurred with the Gaussian 5x5 filter, and then difference between the two tensors is the corresponding level L(i) of the Laplacian pyramid. L(i) = I(i) - Gaussian5x5(I(i)) Level 0 has always the same first two dimensions as the input tensor. </p>
163 </li>
164 </ol>
165
166 <p>Definition at line <a class="el" href="_c_l_laplacian_pyramid_8h_source.xhtml#l00054">54</a> of file <a class="el" href="_c_l_laplacian_pyramid_8h_source.xhtml">CLLaplacianPyramid.h</a>.</p>
167 </div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
168 <a class="anchor" id="abc061ac0f69ff7cfe1ec11168d32547c"></a>
169 <div class="memitem">
170 <div class="memproto">
171       <table class="memname">
172         <tr>
173           <td class="memname"><a class="el" href="classarm__compute_1_1_c_l_laplacian_pyramid.xhtml">CLLaplacianPyramid</a> </td>
174           <td>(</td>
175           <td class="paramname"></td><td>)</td>
176           <td></td>
177         </tr>
178       </table>
179 </div><div class="memdoc">
180
181 <p>Constructor. </p>
182
183 </div>
184 </div>
185 <h2 class="groupheader">Member Function Documentation</h2>
186 <a class="anchor" id="affa012258b464b065d72cc26657119d4"></a>
187 <div class="memitem">
188 <div class="memproto">
189       <table class="memname">
190         <tr>
191           <td class="memname">void configure </td>
192           <td>(</td>
193           <td class="paramtype"><a class="el" href="classarm__compute_1_1_i_c_l_tensor.xhtml">ICLTensor</a> *&#160;</td>
194           <td class="paramname"><em>input</em>, </td>
195         </tr>
196         <tr>
197           <td class="paramkey"></td>
198           <td></td>
199           <td class="paramtype"><a class="el" href="classarm__compute_1_1_c_l_pyramid.xhtml">CLPyramid</a> *&#160;</td>
200           <td class="paramname"><em>pyramid</em>, </td>
201         </tr>
202         <tr>
203           <td class="paramkey"></td>
204           <td></td>
205           <td class="paramtype"><a class="el" href="classarm__compute_1_1_i_c_l_tensor.xhtml">ICLTensor</a> *&#160;</td>
206           <td class="paramname"><em>output</em>, </td>
207         </tr>
208         <tr>
209           <td class="paramkey"></td>
210           <td></td>
211           <td class="paramtype"><a class="el" href="namespacearm__compute.xhtml#a15a05537a472ee742404821851529327">BorderMode</a>&#160;</td>
212           <td class="paramname"><em>border_mode</em>, </td>
213         </tr>
214         <tr>
215           <td class="paramkey"></td>
216           <td></td>
217           <td class="paramtype">uint8_t&#160;</td>
218           <td class="paramname"><em>constant_border_value</em>&#160;</td>
219         </tr>
220         <tr>
221           <td></td>
222           <td>)</td>
223           <td></td><td></td>
224         </tr>
225       </table>
226 </div><div class="memdoc">
227
228 <p>Initialise the function's source, destinations and border mode. </p>
229 <dl class="params"><dt>Parameters</dt><dd>
230   <table class="params">
231     <tr><td class="paramdir">[in]</td><td class="paramname">input</td><td>Source tensor. Data types supported: U8. </td></tr>
232     <tr><td class="paramdir">[out]</td><td class="paramname">pyramid</td><td>Destination pyramid tensors, Data types supported at each level: S16. </td></tr>
233     <tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>The lowest resolution tensor necessary to reconstruct the input tensor from the pyramid. Data types supported: S16. The first two dimensions of this tensor must match the first two dimensions of the tensor in the last level of the pyramid, that is: output.width = input.width() / pow(2,pyramid_levels-1) and out.height = in.height() / pow(2,pyramid_levels-1) </td></tr>
234     <tr><td class="paramdir">[in]</td><td class="paramname">border_mode</td><td>Border mode to use. </td></tr>
235     <tr><td class="paramdir">[in]</td><td class="paramname">constant_border_value</td><td>(Optional) Constant value to use for borders if border_mode is set to CONSTANT. </td></tr>
236   </table>
237   </dd>
238 </dl>
239
240 </div>
241 </div>
242 <a class="anchor" id="ad1717410afd0be936c6213a63c8005fb"></a>
243 <div class="memitem">
244 <div class="memproto">
245 <table class="mlabels">
246   <tr>
247   <td class="mlabels-left">
248       <table class="memname">
249         <tr>
250           <td class="memname">void run </td>
251           <td>(</td>
252           <td class="paramname"></td><td>)</td>
253           <td></td>
254         </tr>
255       </table>
256   </td>
257   <td class="mlabels-right">
258 <span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
259   </tr>
260 </table>
261 </div><div class="memdoc">
262
263 <p>Run the kernels contained in the function. </p>
264 <p>For NEON kernels:</p><ul>
265 <li>Multi-threading is used for the kernels which are parallelisable.</li>
266 <li>By default std::thread::hardware_concurrency() threads are used.</li>
267 </ul>
268 <dl class="section note"><dt>Note</dt><dd><a class="el" href="classarm__compute_1_1_c_p_p_scheduler.xhtml#ae64eebaa07f4d2da6cc2ba538c3cb095">CPPScheduler::set_num_threads()</a> can be used to manually set the number of threads</dd></dl>
269 <p>For OpenCL kernels:</p><ul>
270 <li>All the kernels are enqueued on the queue associated with <a class="el" href="classarm__compute_1_1_c_l_scheduler.xhtml" title="Provides global access to a CL context and command queue. ">CLScheduler</a>.</li>
271 <li>The queue is then flushed.</li>
272 </ul>
273 <dl class="section note"><dt>Note</dt><dd>The function will not block until the kernels are executed. It is the user's responsibility to wait. </dd>
274 <dd>
275 Will call <a class="el" href="classarm__compute_1_1_i_function.xhtml#a820f7291c24155a2980512fae45aac26" title="Prepare the function for executing. ">prepare()</a> on first run if hasn't been done </dd></dl>
276
277 <p>Implements <a class="el" href="classarm__compute_1_1_i_function.xhtml#a18954417d3124a8095783ea13dc6d00b">IFunction</a>.</p>
278
279 </div>
280 </div>
281 <hr/>The documentation for this class was generated from the following file:<ul>
282 <li>arm_compute/runtime/CL/functions/<a class="el" href="_c_l_laplacian_pyramid_8h_source.xhtml">CLLaplacianPyramid.h</a></li>
283 </ul>
284 </div><!-- contents -->
285 </div><!-- doc-content -->
286 <!-- start footer part -->
287 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
288   <ul>
289     <li class="navelem"><a class="el" href="namespacearm__compute.xhtml">arm_compute</a></li><li class="navelem"><a class="el" href="classarm__compute_1_1_c_l_laplacian_pyramid.xhtml">CLLaplacianPyramid</a></li>
290     <li class="footer">Generated on Wed May 23 2018 11:36:41 for Compute Library by
291     <a href="http://www.doxygen.org/index.html">
292     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
293   </ul>
294 </div>
295 </body>
296 </html>