arm_compute v17.04
[platform/upstream/armcl.git] / documentation / harris__corners_8cl.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>ARM Compute Library: src/core/CL/cl_kernels/harris_corners.cl File 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">ARM Compute Library
43    &#160;<span id="projectnumber">17.04</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="namespaces.xhtml"><span>Namespaces</span></a></li>
59       <li><a href="annotated.xhtml"><span>Data&#160;Structures</span></a></li>
60       <li class="current"><a href="files.xhtml"><span>Files</span></a></li>
61       <li>
62         <div id="MSearchBox" class="MSearchBoxInactive">
63         <span class="left">
64           <img id="MSearchSelect" src="search/mag_sel.png"
65                onmouseover="return searchBox.OnSearchSelectShow()"
66                onmouseout="return searchBox.OnSearchSelectHide()"
67                alt=""/>
68           <input type="text" id="MSearchField" value="Search" accesskey="S"
69                onfocus="searchBox.OnSearchFieldFocus(true)" 
70                onblur="searchBox.OnSearchFieldFocus(false)" 
71                onkeyup="searchBox.OnSearchFieldChange(event)"/>
72           </span><span class="right">
73             <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
74           </span>
75         </div>
76       </li>
77     </ul>
78   </div>
79   <div id="navrow2" class="tabs2">
80     <ul class="tablist">
81       <li><a href="files.xhtml"><span>File&#160;List</span></a></li>
82       <li><a href="globals.xhtml"><span>Globals</span></a></li>
83     </ul>
84   </div>
85 </div><!-- top -->
86 <div id="side-nav" class="ui-resizable side-nav-resizable">
87   <div id="nav-tree">
88     <div id="nav-tree-contents">
89       <div id="nav-sync" class="sync"></div>
90     </div>
91   </div>
92   <div id="splitbar" style="-moz-user-select:none;" 
93        class="ui-resizable-handle">
94   </div>
95 </div>
96 <script type="text/javascript">
97 $(document).ready(function(){initNavTree('harris__corners_8cl.xhtml','');});
98 </script>
99 <div id="doc-content">
100 <!-- window showing the filter options -->
101 <div id="MSearchSelectWindow"
102      onmouseover="return searchBox.OnSearchSelectShow()"
103      onmouseout="return searchBox.OnSearchSelectHide()"
104      onkeydown="return searchBox.OnSearchSelectKey(event)">
105 </div>
106
107 <!-- iframe showing the search results (closed by default) -->
108 <div id="MSearchResultsWindow">
109 <iframe src="javascript:void(0)" frameborder="0" 
110         name="MSearchResults" id="MSearchResults">
111 </iframe>
112 </div>
113
114 <div class="header">
115   <div class="summary">
116 <a href="#func-members">Functions</a>  </div>
117   <div class="headertitle">
118 <div class="title">harris_corners.cl File Reference</div>  </div>
119 </div><!--header-->
120 <div class="contents">
121 <div class="textblock"><code>#include &quot;<a class="el" href="helpers_8h_source.xhtml">helpers.h</a>&quot;</code><br />
122 </div>
123 <p><a href="harris__corners_8cl_source.xhtml">Go to the source code of this file.</a></p>
124 <table class="memberdecls">
125 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
126 Functions</h2></td></tr>
127 <tr class="memitem:a2cf3b8c23c9f8f383d81d13bfff96e3d"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="harris__corners_8cl.xhtml#a2cf3b8c23c9f8f383d81d13bfff96e3d">harris_score_3x3</a> (__global uchar *src_gx_ptr, uint src_gx_stride_x, uint src_gx_step_x, uint src_gx_stride_y, uint src_gx_step_y, uint src_gx_offset_first_element_in_bytes, __global uchar *src_gy_ptr, uint src_gy_stride_x, uint src_gy_step_x, uint src_gy_stride_y, uint src_gy_step_y, uint src_gy_offset_first_element_in_bytes, __global uchar *vc_ptr, uint vc_stride_x, uint vc_step_x, uint vc_stride_y, uint vc_step_y, uint vc_offset_first_element_in_bytes, float sensitivity, float strength_thresh, float pow4_normalization_factor)</td></tr>
128 <tr class="memdesc:a2cf3b8c23c9f8f383d81d13bfff96e3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function running harris score on 3x3 block size.  <a href="#a2cf3b8c23c9f8f383d81d13bfff96e3d">More...</a><br /></td></tr>
129 <tr class="separator:a2cf3b8c23c9f8f383d81d13bfff96e3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
130 <tr class="memitem:a71d10f5d9e840b6d270620a2cd856926"><td class="memItemLeft" align="right" valign="top">float16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="harris__corners_8cl.xhtml#a71d10f5d9e840b6d270620a2cd856926">harris_score_1x5</a> (<a class="el" href="struct_image.xhtml">Image</a> *src_gx, <a class="el" href="struct_image.xhtml">Image</a> *src_gy, int row)</td></tr>
131 <tr class="memdesc:a71d10f5d9e840b6d270620a2cd856926"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for calculating harris score 1x5.  <a href="#a71d10f5d9e840b6d270620a2cd856926">More...</a><br /></td></tr>
132 <tr class="separator:a71d10f5d9e840b6d270620a2cd856926"><td class="memSeparator" colspan="2">&#160;</td></tr>
133 <tr class="memitem:a0f0af2add0a40f2f4b8a14f409186a02"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="harris__corners_8cl.xhtml#a0f0af2add0a40f2f4b8a14f409186a02">harris_score_5x5</a> (__global uchar *src_gx_ptr, uint src_gx_stride_x, uint src_gx_step_x, uint src_gx_stride_y, uint src_gx_step_y, uint src_gx_offset_first_element_in_bytes, __global uchar *src_gy_ptr, uint src_gy_stride_x, uint src_gy_step_x, uint src_gy_stride_y, uint src_gy_step_y, uint src_gy_offset_first_element_in_bytes, __global uchar *vc_ptr, uint vc_stride_x, uint vc_step_x, uint vc_stride_y, uint vc_step_y, uint vc_offset_first_element_in_bytes, float sensitivity, float strength_thresh, float pow4_normalization_factor)</td></tr>
134 <tr class="memdesc:a0f0af2add0a40f2f4b8a14f409186a02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function running harris score on 5x5 block size.  <a href="#a0f0af2add0a40f2f4b8a14f409186a02">More...</a><br /></td></tr>
135 <tr class="separator:a0f0af2add0a40f2f4b8a14f409186a02"><td class="memSeparator" colspan="2">&#160;</td></tr>
136 <tr class="memitem:a2fadfd6378605824bb7926e1ac0123fb"><td class="memItemLeft" align="right" valign="top">float16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="harris__corners_8cl.xhtml#a2fadfd6378605824bb7926e1ac0123fb">harris_score_1x7</a> (<a class="el" href="struct_image.xhtml">Image</a> *src_gx, <a class="el" href="struct_image.xhtml">Image</a> *src_gy, int row)</td></tr>
137 <tr class="memdesc:a2fadfd6378605824bb7926e1ac0123fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for calculating harris score 1x7.  <a href="#a2fadfd6378605824bb7926e1ac0123fb">More...</a><br /></td></tr>
138 <tr class="separator:a2fadfd6378605824bb7926e1ac0123fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
139 <tr class="memitem:a468ac2728816485f017f51faeb0a7d65"><td class="memItemLeft" align="right" valign="top">__kernel void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="harris__corners_8cl.xhtml#a468ac2728816485f017f51faeb0a7d65">harris_score_7x7</a> (__global uchar *src_gx_ptr, uint src_gx_stride_x, uint src_gx_step_x, uint src_gx_stride_y, uint src_gx_step_y, uint src_gx_offset_first_element_in_bytes, __global uchar *src_gy_ptr, uint src_gy_stride_x, uint src_gy_step_x, uint src_gy_stride_y, uint src_gy_step_y, uint src_gy_offset_first_element_in_bytes, __global uchar *vc_ptr, uint vc_stride_x, uint vc_step_x, uint vc_stride_y, uint vc_step_y, uint vc_offset_first_element_in_bytes, float sensitivity, float strength_thresh, float pow4_normalization_factor)</td></tr>
140 <tr class="memdesc:a468ac2728816485f017f51faeb0a7d65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function running harris score on 7x7 block size.  <a href="#a468ac2728816485f017f51faeb0a7d65">More...</a><br /></td></tr>
141 <tr class="separator:a468ac2728816485f017f51faeb0a7d65"><td class="memSeparator" colspan="2">&#160;</td></tr>
142 </table>
143 <h2 class="groupheader">Function Documentation</h2>
144 <a class="anchor" id="a71d10f5d9e840b6d270620a2cd856926"></a>
145 <div class="memitem">
146 <div class="memproto">
147 <table class="mlabels">
148   <tr>
149   <td class="mlabels-left">
150       <table class="memname">
151         <tr>
152           <td class="memname">float16 harris_score_1x5 </td>
153           <td>(</td>
154           <td class="paramtype"><a class="el" href="struct_image.xhtml">Image</a> *&#160;</td>
155           <td class="paramname"><em>src_gx</em>, </td>
156         </tr>
157         <tr>
158           <td class="paramkey"></td>
159           <td></td>
160           <td class="paramtype"><a class="el" href="struct_image.xhtml">Image</a> *&#160;</td>
161           <td class="paramname"><em>src_gy</em>, </td>
162         </tr>
163         <tr>
164           <td class="paramkey"></td>
165           <td></td>
166           <td class="paramtype">int&#160;</td>
167           <td class="paramname"><em>row</em>&#160;</td>
168         </tr>
169         <tr>
170           <td></td>
171           <td>)</td>
172           <td></td><td></td>
173         </tr>
174       </table>
175   </td>
176   <td class="mlabels-right">
177 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
178   </tr>
179 </table>
180 </div><div class="memdoc">
181
182 <p>Function for calculating harris score 1x5. </p>
183 <dl class="params"><dt>Parameters</dt><dd>
184   <table class="params">
185     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx</td><td>Pointer to gx gradient image. </td></tr>
186     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy</td><td>Pointer to gy gradient image. </td></tr>
187     <tr><td class="paramdir">[in]</td><td class="paramname">row</td><td>Relative row. </td></tr>
188   </table>
189   </dd>
190 </dl>
191
192 <p>Definition at line <a class="el" href="harris__corners_8cl_source.xhtml#l00138">138</a> of file <a class="el" href="harris__corners_8cl_source.xhtml">harris_corners.cl</a>.</p>
193
194 <p>References <a class="el" href="convolution3x3_8cl_source.xhtml#l00027">DATA_TYPE</a>, <a class="el" href="helpers_8h_source.xhtml#l00201">offset()</a>, and <a class="el" href="helpers_8h_source.xhtml#l00032">VEC_DATA_TYPE</a>.</p>
195
196 <p>Referenced by <a class="el" href="harris__corners_8cl_source.xhtml#l00210">harris_score_5x5()</a>.</p>
197 <div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;{</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    float4 gx2  = 0.0f;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    float4 gy2  = 0.0f;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    float4 gxgy = 0.0f;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <span class="comment">/* Row */</span></div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>, 8)</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    temp_gx = vload8(0, (__global <a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a> *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(src_gx, -2, row));</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>, 8)</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    temp_gy = vload8(0, (__global DATA_TYPE *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(src_gy, -2, row));</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;    float4 gx = convert_float4(temp_gx.s0123);</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    float4 gy = convert_float4(temp_gy.s0123);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    gx = convert_float4(temp_gx.s1234);</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    gy = convert_float4(temp_gy.s1234);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    gx = convert_float4(temp_gx.s2345);</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;    gy = convert_float4(temp_gy.s2345);</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    gx = convert_float4(temp_gx.s3456);</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    gy = convert_float4(temp_gy.s3456);</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    gx = convert_float4(temp_gx.s4567);</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    gy = convert_float4(temp_gy.s4567);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;    return (float16)(gx2, gy2, gxgy, (float4)0);</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;}</div><div class="ttc" id="convolution3x3_8cl_xhtml_afb8c72ce35c4a1f4a2588d6573e54aa1"><div class="ttname"><a href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a></div><div class="ttdeci">#define DATA_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="convolution3x3_8cl_source.xhtml#l00027">convolution3x3.cl:27</a></div></div>
198 <div class="ttc" id="helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00201">helpers.h:201</a></div></div>
199 <div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00032">helpers.h:32</a></div></div>
200 </div><!-- fragment -->
201 </div>
202 </div>
203 <a class="anchor" id="a2fadfd6378605824bb7926e1ac0123fb"></a>
204 <div class="memitem">
205 <div class="memproto">
206 <table class="mlabels">
207   <tr>
208   <td class="mlabels-left">
209       <table class="memname">
210         <tr>
211           <td class="memname">float16 harris_score_1x7 </td>
212           <td>(</td>
213           <td class="paramtype"><a class="el" href="struct_image.xhtml">Image</a> *&#160;</td>
214           <td class="paramname"><em>src_gx</em>, </td>
215         </tr>
216         <tr>
217           <td class="paramkey"></td>
218           <td></td>
219           <td class="paramtype"><a class="el" href="struct_image.xhtml">Image</a> *&#160;</td>
220           <td class="paramname"><em>src_gy</em>, </td>
221         </tr>
222         <tr>
223           <td class="paramkey"></td>
224           <td></td>
225           <td class="paramtype">int&#160;</td>
226           <td class="paramname"><em>row</em>&#160;</td>
227         </tr>
228         <tr>
229           <td></td>
230           <td>)</td>
231           <td></td><td></td>
232         </tr>
233       </table>
234   </td>
235   <td class="mlabels-right">
236 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
237   </tr>
238 </table>
239 </div><div class="memdoc">
240
241 <p>Function for calculating harris score 1x7. </p>
242 <dl class="params"><dt>Parameters</dt><dd>
243   <table class="params">
244     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx</td><td>Pointer to gx gradient image. </td></tr>
245     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy</td><td>Pointer to gy gradient image. </td></tr>
246     <tr><td class="paramdir">[in]</td><td class="paramname">row</td><td>Relative row. </td></tr>
247   </table>
248   </dd>
249 </dl>
250
251 <p>Definition at line <a class="el" href="harris__corners_8cl_source.xhtml#l00253">253</a> of file <a class="el" href="harris__corners_8cl_source.xhtml">harris_corners.cl</a>.</p>
252
253 <p>References <a class="el" href="convolution3x3_8cl_source.xhtml#l00027">DATA_TYPE</a>, <a class="el" href="helpers_8h_source.xhtml#l00201">offset()</a>, and <a class="el" href="helpers_8h_source.xhtml#l00032">VEC_DATA_TYPE</a>.</p>
254
255 <p>Referenced by <a class="el" href="harris__corners_8cl_source.xhtml#l00341">harris_score_7x7()</a>.</p>
256 <div class="fragment"><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;{</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    float4 gx2  = 0.0f;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    float4 gy2  = 0.0f;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    float4 gxgy = 0.0f;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    <span class="comment">/* Row */</span></div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>, 8)</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;    temp_gx0 = vload8(0, (__global <a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a> *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(src_gx, -3, row));</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>, 8)</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    temp_gy0 = vload8(0, (__global DATA_TYPE *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(src_gy, -3, row));</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(DATA_TYPE, 2)</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;    temp_gx1 = vload2(0, (__global DATA_TYPE *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(src_gx, 5, row));</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(DATA_TYPE, 2)</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    temp_gy1 = vload2(0, (__global DATA_TYPE *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(src_gy, 5, row));</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;    float4 gx = convert_float4(temp_gx0.s0123);</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    float4 gy = convert_float4(temp_gy0.s0123);</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    gx = convert_float4(temp_gx0.s1234);</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    gy = convert_float4(temp_gy0.s1234);</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    gx = convert_float4(temp_gx0.s2345);</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;    gy = convert_float4(temp_gy0.s2345);</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    gx = convert_float4(temp_gx0.s3456);</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;    gy = convert_float4(temp_gy0.s3456);</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;    gx = convert_float4(temp_gx0.s4567);</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    gy = convert_float4(temp_gy0.s4567);</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;    gx = convert_float4((<a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(DATA_TYPE, 4))(temp_gx0.s567, temp_gx1.s0));</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;    gy = convert_float4((<a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(DATA_TYPE, 4))(temp_gy0.s567, temp_gy1.s0));</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    gx = convert_float4((<a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(DATA_TYPE, 4))(temp_gx0.s67, temp_gx1.s01));</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;    gy = convert_float4((<a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(DATA_TYPE, 4))(temp_gy0.s67, temp_gy1.s01));</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    gx2 += (gx * gx);</div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    gy2 += (gy * gy);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    gxgy += (gx * gy);</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    return (float16)(gx2, gy2, gxgy, (float4)0);</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;}</div><div class="ttc" id="convolution3x3_8cl_xhtml_afb8c72ce35c4a1f4a2588d6573e54aa1"><div class="ttname"><a href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a></div><div class="ttdeci">#define DATA_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="convolution3x3_8cl_source.xhtml#l00027">convolution3x3.cl:27</a></div></div>
257 <div class="ttc" id="helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00201">helpers.h:201</a></div></div>
258 <div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00032">helpers.h:32</a></div></div>
259 </div><!-- fragment -->
260 </div>
261 </div>
262 <a class="anchor" id="a2cf3b8c23c9f8f383d81d13bfff96e3d"></a>
263 <div class="memitem">
264 <div class="memproto">
265       <table class="memname">
266         <tr>
267           <td class="memname">__kernel void harris_score_3x3 </td>
268           <td>(</td>
269           <td class="paramtype">__global uchar *&#160;</td>
270           <td class="paramname"><em>src_gx_ptr</em>, </td>
271         </tr>
272         <tr>
273           <td class="paramkey"></td>
274           <td></td>
275           <td class="paramtype">uint&#160;</td>
276           <td class="paramname"><em>src_gx_stride_x</em>, </td>
277         </tr>
278         <tr>
279           <td class="paramkey"></td>
280           <td></td>
281           <td class="paramtype">uint&#160;</td>
282           <td class="paramname"><em>src_gx_step_x</em>, </td>
283         </tr>
284         <tr>
285           <td class="paramkey"></td>
286           <td></td>
287           <td class="paramtype">uint&#160;</td>
288           <td class="paramname"><em>src_gx_stride_y</em>, </td>
289         </tr>
290         <tr>
291           <td class="paramkey"></td>
292           <td></td>
293           <td class="paramtype">uint&#160;</td>
294           <td class="paramname"><em>src_gx_step_y</em>, </td>
295         </tr>
296         <tr>
297           <td class="paramkey"></td>
298           <td></td>
299           <td class="paramtype">uint&#160;</td>
300           <td class="paramname"><em>src_gx_offset_first_element_in_bytes</em>, </td>
301         </tr>
302         <tr>
303           <td class="paramkey"></td>
304           <td></td>
305           <td class="paramtype">__global uchar *&#160;</td>
306           <td class="paramname"><em>src_gy_ptr</em>, </td>
307         </tr>
308         <tr>
309           <td class="paramkey"></td>
310           <td></td>
311           <td class="paramtype">uint&#160;</td>
312           <td class="paramname"><em>src_gy_stride_x</em>, </td>
313         </tr>
314         <tr>
315           <td class="paramkey"></td>
316           <td></td>
317           <td class="paramtype">uint&#160;</td>
318           <td class="paramname"><em>src_gy_step_x</em>, </td>
319         </tr>
320         <tr>
321           <td class="paramkey"></td>
322           <td></td>
323           <td class="paramtype">uint&#160;</td>
324           <td class="paramname"><em>src_gy_stride_y</em>, </td>
325         </tr>
326         <tr>
327           <td class="paramkey"></td>
328           <td></td>
329           <td class="paramtype">uint&#160;</td>
330           <td class="paramname"><em>src_gy_step_y</em>, </td>
331         </tr>
332         <tr>
333           <td class="paramkey"></td>
334           <td></td>
335           <td class="paramtype">uint&#160;</td>
336           <td class="paramname"><em>src_gy_offset_first_element_in_bytes</em>, </td>
337         </tr>
338         <tr>
339           <td class="paramkey"></td>
340           <td></td>
341           <td class="paramtype">__global uchar *&#160;</td>
342           <td class="paramname"><em>vc_ptr</em>, </td>
343         </tr>
344         <tr>
345           <td class="paramkey"></td>
346           <td></td>
347           <td class="paramtype">uint&#160;</td>
348           <td class="paramname"><em>vc_stride_x</em>, </td>
349         </tr>
350         <tr>
351           <td class="paramkey"></td>
352           <td></td>
353           <td class="paramtype">uint&#160;</td>
354           <td class="paramname"><em>vc_step_x</em>, </td>
355         </tr>
356         <tr>
357           <td class="paramkey"></td>
358           <td></td>
359           <td class="paramtype">uint&#160;</td>
360           <td class="paramname"><em>vc_stride_y</em>, </td>
361         </tr>
362         <tr>
363           <td class="paramkey"></td>
364           <td></td>
365           <td class="paramtype">uint&#160;</td>
366           <td class="paramname"><em>vc_step_y</em>, </td>
367         </tr>
368         <tr>
369           <td class="paramkey"></td>
370           <td></td>
371           <td class="paramtype">uint&#160;</td>
372           <td class="paramname"><em>vc_offset_first_element_in_bytes</em>, </td>
373         </tr>
374         <tr>
375           <td class="paramkey"></td>
376           <td></td>
377           <td class="paramtype">float&#160;</td>
378           <td class="paramname"><em>sensitivity</em>, </td>
379         </tr>
380         <tr>
381           <td class="paramkey"></td>
382           <td></td>
383           <td class="paramtype">float&#160;</td>
384           <td class="paramname"><em>strength_thresh</em>, </td>
385         </tr>
386         <tr>
387           <td class="paramkey"></td>
388           <td></td>
389           <td class="paramtype">float&#160;</td>
390           <td class="paramname"><em>pow4_normalization_factor</em>&#160;</td>
391         </tr>
392         <tr>
393           <td></td>
394           <td>)</td>
395           <td></td><td></td>
396         </tr>
397       </table>
398 </div><div class="memdoc">
399
400 <p>Function running harris score on 3x3 block size. </p>
401 <dl class="section attention"><dt>Attention</dt><dd>: The input data type should be passed using a compile option -DDATA_TYPE. Supported types: short and int. e.g. -DDATA_TYPE=short.</dd></dl>
402 <dl class="params"><dt>Parameters</dt><dd>
403   <table class="params">
404     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_ptr</td><td>Pointer to the first source image. Supported data types: S16, S32 </td></tr>
405     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
406     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_step_x</td><td>src_gx_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
407     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
408     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_step_y</td><td>src_gx_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
409     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
410     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_ptr</td><td>Pointer to the second source image. Supported data types: S16, S32 </td></tr>
411     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
412     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_step_x</td><td>src_gy_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
413     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
414     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_step_y</td><td>src_gy_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
415     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
416     <tr><td class="paramdir">[out]</td><td class="paramname">vc_ptr</td><td>Pointer to the destination image. Supported data types: F32 </td></tr>
417     <tr><td class="paramdir">[in]</td><td class="paramname">vc_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
418     <tr><td class="paramdir">[in]</td><td class="paramname">vc_step_x</td><td>vc_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
419     <tr><td class="paramdir">[in]</td><td class="paramname">vc_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
420     <tr><td class="paramdir">[in]</td><td class="paramname">vc_step_y</td><td>vc_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
421     <tr><td class="paramdir">[in]</td><td class="paramname">vc_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
422     <tr><td class="paramdir">[in]</td><td class="paramname">sensitivity</td><td>Sensitivity threshold k from the Harris-Stephens equation </td></tr>
423     <tr><td class="paramdir">[in]</td><td class="paramname">strength_thresh</td><td>Minimum threshold with which to eliminate Harris Corner scores </td></tr>
424     <tr><td class="paramdir">[in]</td><td class="paramname">pow4_normalization_factor</td><td>Normalization factor to apply harris score </td></tr>
425   </table>
426   </dd>
427 </dl>
428
429 <p>Definition at line <a class="el" href="harris__corners_8cl_source.xhtml#l00053">53</a> of file <a class="el" href="harris__corners_8cl_source.xhtml">harris_corners.cl</a>.</p>
430
431 <p>References <a class="el" href="helpers_8h_source.xhtml#l00073">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="convolution3x3_8cl_source.xhtml#l00027">DATA_TYPE</a>, <a class="el" href="helpers_8h_source.xhtml#l00201">offset()</a>, <a class="el" href="helpers_8h_source.xhtml#l00097">Image::ptr</a>, and <a class="el" href="helpers_8h_source.xhtml#l00032">VEC_DATA_TYPE</a>.</p>
432 <div class="fragment"><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;{</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> src_gx = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(src_gx);</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> src_gy = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(src_gy);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> vc     = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(vc);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;    <span class="comment">/* Gx^2, Gy^2 and Gx*Gy */</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    float4 gx2  = (float4)0.0f;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;    float4 gy2  = (float4)0.0f;</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    float4 gxgy = (float4)0.0f;</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;    <span class="comment">/* Row0 */</span></div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;    <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>, 8)</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    temp_gx = vload8(0, (__global <a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a> *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(&amp;src_gx, -1, -1));</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;    <a class="code" href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a>(<a class="code" href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a>, 8)</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;    temp_gy = vload8(0, (__global DATA_TYPE *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(&amp;src_gy, -1, -1));</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    float4 l_gx = convert_float4(temp_gx.s0123);</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    float4 m_gx = convert_float4(temp_gx.s1234);</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    float4 r_gx = convert_float4(temp_gx.s2345);</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    float4 l_gy = convert_float4(temp_gy.s0123);</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;    float4 m_gy = convert_float4(temp_gy.s1234);</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;    float4 r_gy = convert_float4(temp_gy.s2345);</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;    gx2 += (l_gx * l_gx) + (m_gx * m_gx) + (r_gx * r_gx);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    gy2 += (l_gy * l_gy) + (m_gy * m_gy) + (r_gy * r_gy);</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    gxgy += (l_gx * l_gy) + (m_gx * m_gy) + (r_gx * r_gy);</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="comment">/* Row1 */</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    temp_gx = vload8(0, (__global DATA_TYPE *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(&amp;src_gx, -1, 0));</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    temp_gy = vload8(0, (__global DATA_TYPE *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(&amp;src_gy, -1, 0));</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    l_gx = convert_float4(temp_gx.s0123);</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    m_gx = convert_float4(temp_gx.s1234);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;    r_gx = convert_float4(temp_gx.s2345);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    l_gy = convert_float4(temp_gy.s0123);</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    m_gy = convert_float4(temp_gy.s1234);</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;    r_gy = convert_float4(temp_gy.s2345);</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    gx2 += (l_gx * l_gx) + (m_gx * m_gx) + (r_gx * r_gx);</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    gy2 += (l_gy * l_gy) + (m_gy * m_gy) + (r_gy * r_gy);</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    gxgy += (l_gx * l_gy) + (m_gx * m_gy) + (r_gx * r_gy);</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="comment">/* Row2 */</span></div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    temp_gx = vload8(0, (__global DATA_TYPE *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(&amp;src_gx, -1, 1));</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    temp_gy = vload8(0, (__global DATA_TYPE *)<a class="code" href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a>(&amp;src_gy, -1, 1));</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    l_gx = convert_float4(temp_gx.s0123);</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    m_gx = convert_float4(temp_gx.s1234);</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    r_gx = convert_float4(temp_gx.s2345);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    l_gy = convert_float4(temp_gy.s0123);</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    m_gy = convert_float4(temp_gy.s1234);</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    r_gy = convert_float4(temp_gy.s2345);</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;    gx2 += (l_gx * l_gx) + (m_gx * m_gx) + (r_gx * r_gx);</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    gy2 += (l_gy * l_gy) + (m_gy * m_gy) + (r_gy * r_gy);</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    gxgy += (l_gx * l_gy) + (m_gx * m_gy) + (r_gx * r_gy);</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="comment">/* Compute trace and determinant */</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    float4 trace = gx2 + gy2;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    float4 det   = gx2 * gy2 - (gxgy * gxgy);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="comment">/* Compute harris score */</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    float4 mc = (det - (sensitivity * (trace * trace))) * pow4_normalization_factor;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    mc = select(0.0f, mc, mc &gt; (float4)strength_thresh);</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    vstore4(mc, 0, (__global <span class="keywordtype">float</span> *)vc.ptr);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;}</div><div class="ttc" id="convolution3x3_8cl_xhtml_afb8c72ce35c4a1f4a2588d6573e54aa1"><div class="ttname"><a href="convolution3x3_8cl.xhtml#afb8c72ce35c4a1f4a2588d6573e54aa1">DATA_TYPE</a></div><div class="ttdeci">#define DATA_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="convolution3x3_8cl_source.xhtml#l00027">convolution3x3.cl:27</a></div></div>
433 <div class="ttc" id="helpers_8h_xhtml_a009469e4d9b8fce3b6d5e97d2077827d"><div class="ttname"><a href="helpers_8h.xhtml#a009469e4d9b8fce3b6d5e97d2077827d">offset</a></div><div class="ttdeci">__global uchar * offset(const Image *img, int x, int y)</div><div class="ttdoc">Get the pointer position of a Image. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00201">helpers.h:201</a></div></div>
434 <div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00073">helpers.h:73</a></div></div>
435 <div class="ttc" id="helpers_8h_xhtml_a36f754c05b6fddf6df0d8d0a74f8159f"><div class="ttname"><a href="helpers_8h.xhtml#a36f754c05b6fddf6df0d8d0a74f8159f">VEC_DATA_TYPE</a></div><div class="ttdeci">#define VEC_DATA_TYPE(type, size)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00032">helpers.h:32</a></div></div>
436 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00095">helpers.h:95</a></div></div>
437 </div><!-- fragment -->
438 </div>
439 </div>
440 <a class="anchor" id="a0f0af2add0a40f2f4b8a14f409186a02"></a>
441 <div class="memitem">
442 <div class="memproto">
443       <table class="memname">
444         <tr>
445           <td class="memname">__kernel void harris_score_5x5 </td>
446           <td>(</td>
447           <td class="paramtype">__global uchar *&#160;</td>
448           <td class="paramname"><em>src_gx_ptr</em>, </td>
449         </tr>
450         <tr>
451           <td class="paramkey"></td>
452           <td></td>
453           <td class="paramtype">uint&#160;</td>
454           <td class="paramname"><em>src_gx_stride_x</em>, </td>
455         </tr>
456         <tr>
457           <td class="paramkey"></td>
458           <td></td>
459           <td class="paramtype">uint&#160;</td>
460           <td class="paramname"><em>src_gx_step_x</em>, </td>
461         </tr>
462         <tr>
463           <td class="paramkey"></td>
464           <td></td>
465           <td class="paramtype">uint&#160;</td>
466           <td class="paramname"><em>src_gx_stride_y</em>, </td>
467         </tr>
468         <tr>
469           <td class="paramkey"></td>
470           <td></td>
471           <td class="paramtype">uint&#160;</td>
472           <td class="paramname"><em>src_gx_step_y</em>, </td>
473         </tr>
474         <tr>
475           <td class="paramkey"></td>
476           <td></td>
477           <td class="paramtype">uint&#160;</td>
478           <td class="paramname"><em>src_gx_offset_first_element_in_bytes</em>, </td>
479         </tr>
480         <tr>
481           <td class="paramkey"></td>
482           <td></td>
483           <td class="paramtype">__global uchar *&#160;</td>
484           <td class="paramname"><em>src_gy_ptr</em>, </td>
485         </tr>
486         <tr>
487           <td class="paramkey"></td>
488           <td></td>
489           <td class="paramtype">uint&#160;</td>
490           <td class="paramname"><em>src_gy_stride_x</em>, </td>
491         </tr>
492         <tr>
493           <td class="paramkey"></td>
494           <td></td>
495           <td class="paramtype">uint&#160;</td>
496           <td class="paramname"><em>src_gy_step_x</em>, </td>
497         </tr>
498         <tr>
499           <td class="paramkey"></td>
500           <td></td>
501           <td class="paramtype">uint&#160;</td>
502           <td class="paramname"><em>src_gy_stride_y</em>, </td>
503         </tr>
504         <tr>
505           <td class="paramkey"></td>
506           <td></td>
507           <td class="paramtype">uint&#160;</td>
508           <td class="paramname"><em>src_gy_step_y</em>, </td>
509         </tr>
510         <tr>
511           <td class="paramkey"></td>
512           <td></td>
513           <td class="paramtype">uint&#160;</td>
514           <td class="paramname"><em>src_gy_offset_first_element_in_bytes</em>, </td>
515         </tr>
516         <tr>
517           <td class="paramkey"></td>
518           <td></td>
519           <td class="paramtype">__global uchar *&#160;</td>
520           <td class="paramname"><em>vc_ptr</em>, </td>
521         </tr>
522         <tr>
523           <td class="paramkey"></td>
524           <td></td>
525           <td class="paramtype">uint&#160;</td>
526           <td class="paramname"><em>vc_stride_x</em>, </td>
527         </tr>
528         <tr>
529           <td class="paramkey"></td>
530           <td></td>
531           <td class="paramtype">uint&#160;</td>
532           <td class="paramname"><em>vc_step_x</em>, </td>
533         </tr>
534         <tr>
535           <td class="paramkey"></td>
536           <td></td>
537           <td class="paramtype">uint&#160;</td>
538           <td class="paramname"><em>vc_stride_y</em>, </td>
539         </tr>
540         <tr>
541           <td class="paramkey"></td>
542           <td></td>
543           <td class="paramtype">uint&#160;</td>
544           <td class="paramname"><em>vc_step_y</em>, </td>
545         </tr>
546         <tr>
547           <td class="paramkey"></td>
548           <td></td>
549           <td class="paramtype">uint&#160;</td>
550           <td class="paramname"><em>vc_offset_first_element_in_bytes</em>, </td>
551         </tr>
552         <tr>
553           <td class="paramkey"></td>
554           <td></td>
555           <td class="paramtype">float&#160;</td>
556           <td class="paramname"><em>sensitivity</em>, </td>
557         </tr>
558         <tr>
559           <td class="paramkey"></td>
560           <td></td>
561           <td class="paramtype">float&#160;</td>
562           <td class="paramname"><em>strength_thresh</em>, </td>
563         </tr>
564         <tr>
565           <td class="paramkey"></td>
566           <td></td>
567           <td class="paramtype">float&#160;</td>
568           <td class="paramname"><em>pow4_normalization_factor</em>&#160;</td>
569         </tr>
570         <tr>
571           <td></td>
572           <td>)</td>
573           <td></td><td></td>
574         </tr>
575       </table>
576 </div><div class="memdoc">
577
578 <p>Function running harris score on 5x5 block size. </p>
579 <dl class="section attention"><dt>Attention</dt><dd>: The input data type should be passed using a compile option -DDATA_TYPE. Supported types: short and int. e.g. -DDATA_TYPE=short.</dd></dl>
580 <dl class="params"><dt>Parameters</dt><dd>
581   <table class="params">
582     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_ptr</td><td>Pointer to the first source image. Supported data types: S16, S32 </td></tr>
583     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
584     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_step_x</td><td>src_gx_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
585     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
586     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_step_y</td><td>src_gx_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
587     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
588     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_ptr</td><td>Pointer to the second source image. Supported data types: S16, S32 </td></tr>
589     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
590     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_step_x</td><td>src_gy_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
591     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
592     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_step_y</td><td>src_gy_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
593     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
594     <tr><td class="paramdir">[out]</td><td class="paramname">vc_ptr</td><td>Pointer to the destination image. Supported data types: F32 </td></tr>
595     <tr><td class="paramdir">[in]</td><td class="paramname">vc_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
596     <tr><td class="paramdir">[in]</td><td class="paramname">vc_step_x</td><td>vc_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
597     <tr><td class="paramdir">[in]</td><td class="paramname">vc_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
598     <tr><td class="paramdir">[in]</td><td class="paramname">vc_step_y</td><td>vc_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
599     <tr><td class="paramdir">[in]</td><td class="paramname">vc_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
600     <tr><td class="paramdir">[in]</td><td class="paramname">sensitivity</td><td>Sensitivity threshold k from the Harris-Stephens equation </td></tr>
601     <tr><td class="paramdir">[in]</td><td class="paramname">strength_thresh</td><td>Minimum threshold with which to eliminate Harris Corner scores </td></tr>
602     <tr><td class="paramdir">[in]</td><td class="paramname">pow4_normalization_factor</td><td>Normalization factor to apply harris score </td></tr>
603   </table>
604   </dd>
605 </dl>
606
607 <p>Definition at line <a class="el" href="harris__corners_8cl_source.xhtml#l00210">210</a> of file <a class="el" href="harris__corners_8cl_source.xhtml">harris_corners.cl</a>.</p>
608
609 <p>References <a class="el" href="helpers_8h_source.xhtml#l00073">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="harris__corners_8cl_source.xhtml#l00138">harris_score_1x5()</a>, and <a class="el" href="helpers_8h_source.xhtml#l00097">Image::ptr</a>.</p>
610 <div class="fragment"><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;{</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> src_gx = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(src_gx);</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> src_gy = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(src_gy);</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> vc     = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(vc);</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <span class="comment">/* Gx^2, Gy^2 and Gx*Gy */</span></div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    float16 res = (float16)0.0f;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <span class="comment">/* Compute row */</span></div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = -2; i &lt; 3; i++)</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    {</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        res += <a class="code" href="harris__corners_8cl.xhtml#a71d10f5d9e840b6d270620a2cd856926">harris_score_1x5</a>(&amp;src_gx, &amp;src_gy, i);</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    }</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    float4 gx2  = res.s0123;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    float4 gy2  = res.s4567;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    float4 gxgy = res.s89AB;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <span class="comment">/* Compute trace and determinant */</span></div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    float4 trace = gx2 + gy2;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    float4 det   = gx2 * gy2 - (gxgy * gxgy);</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    <span class="comment">/* Compute harris score */</span></div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    float4 mc = (det - (sensitivity * (trace * trace))) * pow4_normalization_factor;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    mc = select(0.0f, mc, mc &gt; (float4)strength_thresh);</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    vstore4(mc, 0, (__global <span class="keywordtype">float</span> *)vc.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;}</div><div class="ttc" id="harris__corners_8cl_xhtml_a71d10f5d9e840b6d270620a2cd856926"><div class="ttname"><a href="harris__corners_8cl.xhtml#a71d10f5d9e840b6d270620a2cd856926">harris_score_1x5</a></div><div class="ttdeci">float16 harris_score_1x5(Image *src_gx, Image *src_gy, int row)</div><div class="ttdoc">Function for calculating harris score 1x5. </div><div class="ttdef"><b>Definition:</b> <a href="harris__corners_8cl_source.xhtml#l00138">harris_corners.cl:138</a></div></div>
611 <div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00073">helpers.h:73</a></div></div>
612 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00095">helpers.h:95</a></div></div>
613 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00097">helpers.h:97</a></div></div>
614 </div><!-- fragment -->
615 </div>
616 </div>
617 <a class="anchor" id="a468ac2728816485f017f51faeb0a7d65"></a>
618 <div class="memitem">
619 <div class="memproto">
620       <table class="memname">
621         <tr>
622           <td class="memname">__kernel void harris_score_7x7 </td>
623           <td>(</td>
624           <td class="paramtype">__global uchar *&#160;</td>
625           <td class="paramname"><em>src_gx_ptr</em>, </td>
626         </tr>
627         <tr>
628           <td class="paramkey"></td>
629           <td></td>
630           <td class="paramtype">uint&#160;</td>
631           <td class="paramname"><em>src_gx_stride_x</em>, </td>
632         </tr>
633         <tr>
634           <td class="paramkey"></td>
635           <td></td>
636           <td class="paramtype">uint&#160;</td>
637           <td class="paramname"><em>src_gx_step_x</em>, </td>
638         </tr>
639         <tr>
640           <td class="paramkey"></td>
641           <td></td>
642           <td class="paramtype">uint&#160;</td>
643           <td class="paramname"><em>src_gx_stride_y</em>, </td>
644         </tr>
645         <tr>
646           <td class="paramkey"></td>
647           <td></td>
648           <td class="paramtype">uint&#160;</td>
649           <td class="paramname"><em>src_gx_step_y</em>, </td>
650         </tr>
651         <tr>
652           <td class="paramkey"></td>
653           <td></td>
654           <td class="paramtype">uint&#160;</td>
655           <td class="paramname"><em>src_gx_offset_first_element_in_bytes</em>, </td>
656         </tr>
657         <tr>
658           <td class="paramkey"></td>
659           <td></td>
660           <td class="paramtype">__global uchar *&#160;</td>
661           <td class="paramname"><em>src_gy_ptr</em>, </td>
662         </tr>
663         <tr>
664           <td class="paramkey"></td>
665           <td></td>
666           <td class="paramtype">uint&#160;</td>
667           <td class="paramname"><em>src_gy_stride_x</em>, </td>
668         </tr>
669         <tr>
670           <td class="paramkey"></td>
671           <td></td>
672           <td class="paramtype">uint&#160;</td>
673           <td class="paramname"><em>src_gy_step_x</em>, </td>
674         </tr>
675         <tr>
676           <td class="paramkey"></td>
677           <td></td>
678           <td class="paramtype">uint&#160;</td>
679           <td class="paramname"><em>src_gy_stride_y</em>, </td>
680         </tr>
681         <tr>
682           <td class="paramkey"></td>
683           <td></td>
684           <td class="paramtype">uint&#160;</td>
685           <td class="paramname"><em>src_gy_step_y</em>, </td>
686         </tr>
687         <tr>
688           <td class="paramkey"></td>
689           <td></td>
690           <td class="paramtype">uint&#160;</td>
691           <td class="paramname"><em>src_gy_offset_first_element_in_bytes</em>, </td>
692         </tr>
693         <tr>
694           <td class="paramkey"></td>
695           <td></td>
696           <td class="paramtype">__global uchar *&#160;</td>
697           <td class="paramname"><em>vc_ptr</em>, </td>
698         </tr>
699         <tr>
700           <td class="paramkey"></td>
701           <td></td>
702           <td class="paramtype">uint&#160;</td>
703           <td class="paramname"><em>vc_stride_x</em>, </td>
704         </tr>
705         <tr>
706           <td class="paramkey"></td>
707           <td></td>
708           <td class="paramtype">uint&#160;</td>
709           <td class="paramname"><em>vc_step_x</em>, </td>
710         </tr>
711         <tr>
712           <td class="paramkey"></td>
713           <td></td>
714           <td class="paramtype">uint&#160;</td>
715           <td class="paramname"><em>vc_stride_y</em>, </td>
716         </tr>
717         <tr>
718           <td class="paramkey"></td>
719           <td></td>
720           <td class="paramtype">uint&#160;</td>
721           <td class="paramname"><em>vc_step_y</em>, </td>
722         </tr>
723         <tr>
724           <td class="paramkey"></td>
725           <td></td>
726           <td class="paramtype">uint&#160;</td>
727           <td class="paramname"><em>vc_offset_first_element_in_bytes</em>, </td>
728         </tr>
729         <tr>
730           <td class="paramkey"></td>
731           <td></td>
732           <td class="paramtype">float&#160;</td>
733           <td class="paramname"><em>sensitivity</em>, </td>
734         </tr>
735         <tr>
736           <td class="paramkey"></td>
737           <td></td>
738           <td class="paramtype">float&#160;</td>
739           <td class="paramname"><em>strength_thresh</em>, </td>
740         </tr>
741         <tr>
742           <td class="paramkey"></td>
743           <td></td>
744           <td class="paramtype">float&#160;</td>
745           <td class="paramname"><em>pow4_normalization_factor</em>&#160;</td>
746         </tr>
747         <tr>
748           <td></td>
749           <td>)</td>
750           <td></td><td></td>
751         </tr>
752       </table>
753 </div><div class="memdoc">
754
755 <p>Function running harris score on 7x7 block size. </p>
756 <dl class="section attention"><dt>Attention</dt><dd>: The input data type should be passed using a compile option -DDATA_TYPE. Supported types: short and int. e.g. -DDATA_TYPE=short.</dd></dl>
757 <dl class="params"><dt>Parameters</dt><dd>
758   <table class="params">
759     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_ptr</td><td>Pointer to the first source image. Supported data types: S16, S32 </td></tr>
760     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_stride_x</td><td>Stride of the source image in X dimension (in bytes) </td></tr>
761     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_step_x</td><td>src_gx_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
762     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_stride_y</td><td>Stride of the source image in Y dimension (in bytes) </td></tr>
763     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_step_y</td><td>src_gx_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
764     <tr><td class="paramdir">[in]</td><td class="paramname">src_gx_offset_first_element_in_bytes</td><td>The offset of the first element in the source image </td></tr>
765     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_ptr</td><td>Pointer to the second source image. Supported data types: S16, S32 </td></tr>
766     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
767     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_step_x</td><td>src_gy_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
768     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
769     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_step_y</td><td>src_gy_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
770     <tr><td class="paramdir">[in]</td><td class="paramname">src_gy_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
771     <tr><td class="paramdir">[out]</td><td class="paramname">vc_ptr</td><td>Pointer to the destination image. Supported data types: F32 </td></tr>
772     <tr><td class="paramdir">[in]</td><td class="paramname">vc_stride_x</td><td>Stride of the destination image in X dimension (in bytes) </td></tr>
773     <tr><td class="paramdir">[in]</td><td class="paramname">vc_step_x</td><td>vc_stride_x * number of elements along X processed per workitem(in bytes) </td></tr>
774     <tr><td class="paramdir">[in]</td><td class="paramname">vc_stride_y</td><td>Stride of the destination image in Y dimension (in bytes) </td></tr>
775     <tr><td class="paramdir">[in]</td><td class="paramname">vc_step_y</td><td>vc_stride_y * number of elements along Y processed per workitem(in bytes) </td></tr>
776     <tr><td class="paramdir">[in]</td><td class="paramname">vc_offset_first_element_in_bytes</td><td>The offset of the first element in the destination image </td></tr>
777     <tr><td class="paramdir">[in]</td><td class="paramname">sensitivity</td><td>Sensitivity threshold k from the Harris-Stephens equation </td></tr>
778     <tr><td class="paramdir">[in]</td><td class="paramname">strength_thresh</td><td>Minimum threshold with which to eliminate Harris Corner scores </td></tr>
779     <tr><td class="paramdir">[in]</td><td class="paramname">pow4_normalization_factor</td><td>Normalization factor to apply harris score </td></tr>
780   </table>
781   </dd>
782 </dl>
783
784 <p>Definition at line <a class="el" href="harris__corners_8cl_source.xhtml#l00341">341</a> of file <a class="el" href="harris__corners_8cl_source.xhtml">harris_corners.cl</a>.</p>
785
786 <p>References <a class="el" href="helpers_8h_source.xhtml#l00073">CONVERT_TO_IMAGE_STRUCT</a>, <a class="el" href="harris__corners_8cl_source.xhtml#l00253">harris_score_1x7()</a>, and <a class="el" href="helpers_8h_source.xhtml#l00097">Image::ptr</a>.</p>
787 <div class="fragment"><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;{</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> src_gx = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(src_gx);</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> src_gy = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(src_gy);</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;    <a class="code" href="struct_image.xhtml">Image</a> vc     = <a class="code" href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a>(vc);</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    <span class="comment">/* Gx^2, Gy^2 and Gx*Gy */</span></div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    float16 res = (float16)0.0f;</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    <span class="comment">/* Compute row */</span></div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;    <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = -3; i &lt; 4; i++)</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    {</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        res += <a class="code" href="harris__corners_8cl.xhtml#a2fadfd6378605824bb7926e1ac0123fb">harris_score_1x7</a>(&amp;src_gx, &amp;src_gy, i);</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    }</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;    float4 gx2  = res.s0123;</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    float4 gy2  = res.s4567;</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;    float4 gxgy = res.s89AB;</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;    <span class="comment">/* Compute trace and determinant */</span></div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;    float4 trace = gx2 + gy2;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;    float4 det   = gx2 * gy2 - (gxgy * gxgy);</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;    <span class="comment">/* Compute harris score */</span></div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;    float4 mc = (det - (sensitivity * (trace * trace))) * pow4_normalization_factor;</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;    mc = select(0.0f, mc, mc &gt; (float4)strength_thresh);</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;    vstore4(mc, 0, (__global <span class="keywordtype">float</span> *)vc.<a class="code" href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">ptr</a>);</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;}</div><div class="ttc" id="helpers_8h_xhtml_aebe814363556c244be043b13e7969197"><div class="ttname"><a href="helpers_8h.xhtml#aebe814363556c244be043b13e7969197">CONVERT_TO_IMAGE_STRUCT</a></div><div class="ttdeci">#define CONVERT_TO_IMAGE_STRUCT(name)</div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00073">helpers.h:73</a></div></div>
788 <div class="ttc" id="struct_image_xhtml"><div class="ttname"><a href="struct_image.xhtml">Image</a></div><div class="ttdoc">Structure to hold Image information. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00095">helpers.h:95</a></div></div>
789 <div class="ttc" id="struct_image_xhtml_acf52c23cbd7424606c10a606524e3e32"><div class="ttname"><a href="struct_image.xhtml#acf52c23cbd7424606c10a606524e3e32">Image::ptr</a></div><div class="ttdeci">__global uchar * ptr</div><div class="ttdoc">Pointer to the starting postion of the buffer. </div><div class="ttdef"><b>Definition:</b> <a href="helpers_8h_source.xhtml#l00097">helpers.h:97</a></div></div>
790 <div class="ttc" id="harris__corners_8cl_xhtml_a2fadfd6378605824bb7926e1ac0123fb"><div class="ttname"><a href="harris__corners_8cl.xhtml#a2fadfd6378605824bb7926e1ac0123fb">harris_score_1x7</a></div><div class="ttdeci">float16 harris_score_1x7(Image *src_gx, Image *src_gy, int row)</div><div class="ttdoc">Function for calculating harris score 1x7. </div><div class="ttdef"><b>Definition:</b> <a href="harris__corners_8cl_source.xhtml#l00253">harris_corners.cl:253</a></div></div>
791 </div><!-- fragment -->
792 </div>
793 </div>
794 </div><!-- contents -->
795 </div><!-- doc-content -->
796 <!-- start footer part -->
797 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
798   <ul>
799     <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.xhtml">src</a></li><li class="navelem"><a class="el" href="dir_aebb8dcc11953d78e620bbef0b9e2183.xhtml">core</a></li><li class="navelem"><a class="el" href="dir_8c278f79c760e5c5fbd911f9870614c1.xhtml">CL</a></li><li class="navelem"><a class="el" href="dir_25885286e9dad4fa105b7b25a8031bbf.xhtml">cl_kernels</a></li><li class="navelem"><a class="el" href="harris__corners_8cl.xhtml">harris_corners.cl</a></li>
800     <li class="footer">Generated on Wed Apr 12 2017 14:26:05 for ARM Compute Library by
801     <a href="http://www.doxygen.org/index.html">
802     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
803   </ul>
804 </div>
805 </body>
806 </html>