| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> |
| <title>CMSIS DSP Software Library: Bilinear Interpolation</title> |
| <link href="tabs.css" rel="stylesheet" type="text/css"/> |
| <link href="search/search.css" rel="stylesheet" type="text/css"/> |
| <script type="text/javaScript" src="search/search.js"></script> |
| <link href="doxygen.css" rel="stylesheet" type="text/css"/> |
| </head> |
| <body onload='searchBox.OnSelectItem(0);'> |
| <!-- Generated by Doxygen 1.7.2 --> |
| <script type="text/javascript"><!-- |
| var searchBox = new SearchBox("searchBox", "search",false,'Search'); |
| --></script> |
| <div class="navigation" id="top"> |
| <div class="tabs"> |
| <ul class="tablist"> |
| <li><a href="index.html"><span>Main Page</span></a></li> |
| <li><a href="modules.html"><span>Modules</span></a></li> |
| <li><a href="annotated.html"><span>Data Structures</span></a></li> |
| <li><a href="files.html"><span>Files</span></a></li> |
| <li><a href="examples.html"><span>Examples</span></a></li> |
| <li id="searchli"> |
| <div id="MSearchBox" class="MSearchBoxInactive"> |
| <span class="left"> |
| <img id="MSearchSelect" src="search/mag_sel.png" |
| onmouseover="return searchBox.OnSearchSelectShow()" |
| onmouseout="return searchBox.OnSearchSelectHide()" |
| alt=""/> |
| <input type="text" id="MSearchField" value="Search" accesskey="S" |
| onfocus="searchBox.OnSearchFieldFocus(true)" |
| onblur="searchBox.OnSearchFieldFocus(false)" |
| onkeyup="searchBox.OnSearchFieldChange(event)"/> |
| </span><span class="right"> |
| <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> |
| </span> |
| </div> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <div class="header"> |
| <div class="summary"> |
| <a href="#func-members">Functions</a> </div> |
| <div class="headertitle"> |
| <h1>Bilinear Interpolation<br/> |
| <small> |
| [<a class="el" href="group__group_interpolation.html">Interpolation Functions</a>]</small> |
| </h1> </div> |
| </div> |
| <div class="contents"> |
| <table class="memberdecls"> |
| <tr><td colspan="2"><h2><a name="func-members"></a> |
| Functions</h2></td></tr> |
| <tr><td class="memItemLeft" align="right" valign="top">static __INLINE <a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___bilinear_interpolate.html#gab49a4c0f64854903d996d01ba38f711a">arm_bilinear_interp_f32</a> (const <a class="el" href="structarm__bilinear__interp__instance__f32.html">arm_bilinear_interp_instance_f32</a> *S, <a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> X, <a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> Y)</td></tr> |
| <tr><td class="memItemLeft" align="right" valign="top">static __INLINE <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___bilinear_interpolate.html#ga202a033c8a2ad3678b136f93153b6d13">arm_bilinear_interp_q31</a> (<a class="el" href="structarm__bilinear__interp__instance__q31.html">arm_bilinear_interp_instance_q31</a> *S, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> X, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> Y)</td></tr> |
| <tr><td class="memItemLeft" align="right" valign="top">static __INLINE <a class="el" href="arm__math_8h.html#ab5a8fb21a5b3b983d5f54f31614052ea">q15_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___bilinear_interpolate.html#gaa8dffbc2a01bb7accf231384498ec85e">arm_bilinear_interp_q15</a> (<a class="el" href="structarm__bilinear__interp__instance__q15.html">arm_bilinear_interp_instance_q15</a> *S, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> X, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> Y)</td></tr> |
| <tr><td class="memItemLeft" align="right" valign="top">static __INLINE <a class="el" href="arm__math_8h.html#ae541b6f232c305361e9b416fc9eed263">q7_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___bilinear_interpolate.html#gade8db9706a3ae9ad03b2750a239d2ee6">arm_bilinear_interp_q7</a> (<a class="el" href="structarm__bilinear__interp__instance__q7.html">arm_bilinear_interp_instance_q7</a> *S, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> X, <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> Y)</td></tr> |
| </table> |
| <hr/><a name="_details"></a><h2>Detailed Description</h2> |
| <p>Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. The underlying function <code>f(x, y)</code> is sampled on a regular grid and the interpolation process determines values between the grid points. Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. Bilinear interpolation is often used in image processing to rescale images. The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types.</p> |
| <p><b>Algorithm</b> </p> |
| <dl class="user"><dt><b></b></dt><dd>The instance structure used by the bilinear interpolation functions describes a two dimensional data table. For floating-point, the instance structure is defined as: <pre> |
| typedef struct |
| { |
| uint16_t numRows; |
| uint16_t numCols; |
| float32_t *pData; |
| } <a class="el" href="structarm__bilinear__interp__instance__f32.html" title="Instance structure for the floating-point bilinear interpolation function.">arm_bilinear_interp_instance_f32</a>; |
| </pre></dd></dl> |
| <dl class="user"><dt><b></b></dt><dd>where <code>numRows</code> specifies the number of rows in the table; <code>numCols</code> specifies the number of columns in the table; and <code>pData</code> points to an array of size <code>numRows*numCols</code> values. The data table <code>pTable</code> is organized in row order and the supplied data values fall on integer indexes. That is, table element (x,y) is located at <code>pTable[x + y*numCols]</code> where x and y are integers.</dd></dl> |
| <dl class="user"><dt><b></b></dt><dd>Let <code>(x, y)</code> specify the desired interpolation point. Then define: <pre> |
| XF = floor(x) |
| YF = floor(y) |
| </pre> </dd></dl> |
| <dl class="user"><dt><b></b></dt><dd>The interpolated output point is computed as: <pre> |
| f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF)) |
| + f(XF+1, YF) * (x-XF)*(1-(y-YF)) |
| + f(XF, YF+1) * (1-(x-XF))*(y-YF) |
| + f(XF+1, YF+1) * (x-XF)*(y-YF) |
| </pre> Note that the coordinates (x, y) contain integer and fractional components. The integer components specify which portion of the table to use while the fractional components control the interpolation processor.</dd></dl> |
| <dl class="user"><dt><b></b></dt><dd>if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output. </dd></dl> |
| <hr/><h2>Function Documentation</h2> |
| <a class="anchor" id="gab49a4c0f64854903d996d01ba38f711a"></a><!-- doxytag: member="arm_math.h::arm_bilinear_interp_f32" ref="gab49a4c0f64854903d996d01ba38f711a" args="(const arm_bilinear_interp_instance_f32 *S, float32_t X, float32_t Y)" --> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">static __INLINE <a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> arm_bilinear_interp_f32 </td> |
| <td>(</td> |
| <td class="paramtype">const <a class="el" href="structarm__bilinear__interp__instance__f32.html">arm_bilinear_interp_instance_f32</a> * </td> |
| <td class="paramname"> <em>S</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> </td> |
| <td class="paramname"> <em>X</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="arm__math_8h.html#a4611b605e45ab401f02cab15c5e38715">float32_t</a> </td> |
| <td class="paramname"> <em>Y</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td><code> [static]</code></td> |
| </tr> |
| </table> |
| </div> |
| <div class="memdoc"> |
| |
| <p>Floating-point bilinear interpolation. </p> |
| <dl><dt><b>Parameters:</b></dt><dd> |
| <table class="params"> |
| <tr><td class="paramdir">[in,out]</td><td class="paramname">*S</td><td>points to an instance of the interpolation structure. </td></tr> |
| <tr><td class="paramdir">[in]</td><td class="paramname">X</td><td>interpolation coordinate. </td></tr> |
| <tr><td class="paramdir">[in]</td><td class="paramname">Y</td><td>interpolation coordinate. </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="return"><dt><b>Returns:</b></dt><dd>out interpolated value. </dd></dl> |
| |
| <p>Definition at line <a class="el" href="arm__math_8h_source.html#l06739">6739</a> of file <a class="el" href="arm__math_8h_source.html">arm_math.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="ga202a033c8a2ad3678b136f93153b6d13"></a><!-- doxytag: member="arm_math.h::arm_bilinear_interp_q31" ref="ga202a033c8a2ad3678b136f93153b6d13" args="(arm_bilinear_interp_instance_q31 *S, q31_t X, q31_t Y)" --> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">static __INLINE <a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> arm_bilinear_interp_q31 </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structarm__bilinear__interp__instance__q31.html">arm_bilinear_interp_instance_q31</a> * </td> |
| <td class="paramname"> <em>S</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> </td> |
| <td class="paramname"> <em>X</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> </td> |
| <td class="paramname"> <em>Y</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td><code> [static]</code></td> |
| </tr> |
| </table> |
| </div> |
| <div class="memdoc"> |
| |
| <p>Q31 bilinear interpolation. </p> |
| <dl><dt><b>Parameters:</b></dt><dd> |
| <table class="params"> |
| <tr><td class="paramdir">[in,out]</td><td class="paramname">*S</td><td>points to an instance of the interpolation structure. </td></tr> |
| <tr><td class="paramdir">[in]</td><td class="paramname">X</td><td>interpolation coordinate in 12.20 format. </td></tr> |
| <tr><td class="paramdir">[in]</td><td class="paramname">Y</td><td>interpolation coordinate in 12.20 format. </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="return"><dt><b>Returns:</b></dt><dd>out interpolated value. </dd></dl> |
| |
| <p>Definition at line <a class="el" href="arm__math_8h_source.html#l06806">6806</a> of file <a class="el" href="arm__math_8h_source.html">arm_math.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="gaa8dffbc2a01bb7accf231384498ec85e"></a><!-- doxytag: member="arm_math.h::arm_bilinear_interp_q15" ref="gaa8dffbc2a01bb7accf231384498ec85e" args="(arm_bilinear_interp_instance_q15 *S, q31_t X, q31_t Y)" --> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">static __INLINE <a class="el" href="arm__math_8h.html#ab5a8fb21a5b3b983d5f54f31614052ea">q15_t</a> arm_bilinear_interp_q15 </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structarm__bilinear__interp__instance__q15.html">arm_bilinear_interp_instance_q15</a> * </td> |
| <td class="paramname"> <em>S</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> </td> |
| <td class="paramname"> <em>X</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> </td> |
| <td class="paramname"> <em>Y</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td><code> [static]</code></td> |
| </tr> |
| </table> |
| </div> |
| <div class="memdoc"> |
| |
| <p>Q15 bilinear interpolation. </p> |
| <dl><dt><b>Parameters:</b></dt><dd> |
| <table class="params"> |
| <tr><td class="paramdir">[in,out]</td><td class="paramname">*S</td><td>points to an instance of the interpolation structure. </td></tr> |
| <tr><td class="paramdir">[in]</td><td class="paramname">X</td><td>interpolation coordinate in 12.20 format. </td></tr> |
| <tr><td class="paramdir">[in]</td><td class="paramname">Y</td><td>interpolation coordinate in 12.20 format. </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="return"><dt><b>Returns:</b></dt><dd>out interpolated value. </dd></dl> |
| |
| <p>Definition at line <a class="el" href="arm__math_8h_source.html#l06882">6882</a> of file <a class="el" href="arm__math_8h_source.html">arm_math.h</a>.</p> |
| |
| </div> |
| </div> |
| <a class="anchor" id="gade8db9706a3ae9ad03b2750a239d2ee6"></a><!-- doxytag: member="arm_math.h::arm_bilinear_interp_q7" ref="gade8db9706a3ae9ad03b2750a239d2ee6" args="(arm_bilinear_interp_instance_q7 *S, q31_t X, q31_t Y)" --> |
| <div class="memitem"> |
| <div class="memproto"> |
| <table class="memname"> |
| <tr> |
| <td class="memname">static __INLINE <a class="el" href="arm__math_8h.html#ae541b6f232c305361e9b416fc9eed263">q7_t</a> arm_bilinear_interp_q7 </td> |
| <td>(</td> |
| <td class="paramtype"><a class="el" href="structarm__bilinear__interp__instance__q7.html">arm_bilinear_interp_instance_q7</a> * </td> |
| <td class="paramname"> <em>S</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> </td> |
| <td class="paramname"> <em>X</em>, </td> |
| </tr> |
| <tr> |
| <td class="paramkey"></td> |
| <td></td> |
| <td class="paramtype"><a class="el" href="arm__math_8h.html#adc89a3547f5324b7b3b95adec3806bc0">q31_t</a> </td> |
| <td class="paramname"> <em>Y</em> </td> |
| </tr> |
| <tr> |
| <td></td> |
| <td>)</td> |
| <td></td><td><code> [static]</code></td> |
| </tr> |
| </table> |
| </div> |
| <div class="memdoc"> |
| |
| <p>Q7 bilinear interpolation. </p> |
| <dl><dt><b>Parameters:</b></dt><dd> |
| <table class="params"> |
| <tr><td class="paramdir">[in,out]</td><td class="paramname">*S</td><td>points to an instance of the interpolation structure. </td></tr> |
| <tr><td class="paramdir">[in]</td><td class="paramname">X</td><td>interpolation coordinate in 12.20 format. </td></tr> |
| <tr><td class="paramdir">[in]</td><td class="paramname">Y</td><td>interpolation coordinate in 12.20 format. </td></tr> |
| </table> |
| </dd> |
| </dl> |
| <dl class="return"><dt><b>Returns:</b></dt><dd>out interpolated value. </dd></dl> |
| |
| <p>Definition at line <a class="el" href="arm__math_8h_source.html#l06962">6962</a> of file <a class="el" href="arm__math_8h_source.html">arm_math.h</a>.</p> |
| |
| </div> |
| </div> |
| </div> |
| <!--- window showing the filter options --> |
| <div id="MSearchSelectWindow" |
| onmouseover="return searchBox.OnSearchSelectShow()" |
| onmouseout="return searchBox.OnSearchSelectHide()" |
| onkeydown="return searchBox.OnSearchSelectKey(event)"> |
| <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> |
| |
| <!-- iframe showing the search results (closed by default) --> |
| <div id="MSearchResultsWindow"> |
| <iframe src="" frameborder="0" |
| name="MSearchResults" id="MSearchResults"> |
| </iframe> |
| </div> |
| |
| <hr class="footer"/><address class="footer"><small>Generated on Fri Jul 15 2011 13:16:22 for CMSIS DSP Software Library by  |
| <a href="http://www.doxygen.org/index.html"> |
| <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.2 </small></address> |
| </body> |
| </html> |