<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Using ResizeSqrPixel  to perform SPLINE interpolation in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Using-ResizeSqrPixel-to-perform-SPLINE-interpolation/m-p/804482#M3486</link>
    <description>Hello,&lt;BR /&gt;I'm trying to write a 2D matrix interpolator using ResizeSqrPixel without success. I try to use axes information to compute the ROI of original and interpolated version but I obtain matrix with huge quantity of not allocated value. Also in the very simple case without ROI shift I obtain the same results.&lt;BR /&gt;&lt;BR /&gt;To determine the size of the calling I use the higher dimension between the original and the interpolated matrix&lt;BR /&gt;&lt;BR /&gt;the code used is similar to this one&lt;BR /&gt;&lt;BR /&gt;m_maxRange=IPPI_MAX(i_inputRange,i_outputRange);&lt;BR /&gt;   m_maxAzimuth=IPPI_MAX(i_inputAzimuth,i_outputAzimuth);&lt;BR /&gt;IppiSize size = {m_maxRange,m_maxAzimuth};&lt;BR /&gt;   IppiRect drect = {0,0,i_outputRange,i_outputAzimuth};&lt;BR /&gt;   IppiRect srect = {0,0,i_inputRange,i_inputAzimuth};&lt;BR /&gt;   SetSrcROI(srect);&lt;BR /&gt;   SetDestROI(drect);&lt;BR /&gt;&lt;BR /&gt;   Ipp8u *buf;&lt;BR /&gt;&lt;BR /&gt;   int bufsize; &lt;BR /&gt;   IppStatus status = ippStsNoErr;&lt;BR /&gt;&lt;BR /&gt;   IppiSize roi = {i_inputRange,i_inputAzimuth};&lt;BR /&gt;&lt;BR /&gt;   /* calculation of work buffer size */&lt;BR /&gt;   ippiResizeGetBufSize_64f( srect, drect, 1, i_method, &amp;amp;bufsize );&lt;BR /&gt;&lt;BR /&gt;   /* memory allocate */&lt;BR /&gt;   buf = ippsMalloc_8u( bufsize );&lt;BR /&gt;&lt;BR /&gt;    status = ippiResizeSqrPixel_64f_C1R(&lt;BR /&gt;    are_core::os::reinterpret_ptr&lt;IPP64F&gt;(i_bufferIn), size, i_inputRange*sizeof(Ipp64f), m_srcROI,&lt;BR /&gt;    are_core::os::reinterpret_ptr&lt;IPP64F&gt;(o_bufferOut), i_outputRange*sizeof(Ipp64f), m_dstROI,&lt;BR /&gt;    m_xFactor, m_yFactor, m_xShift, m_yShift, i_method, buf );&lt;BR /&gt;&lt;BR /&gt; Could you please give me a hint ? there is something wrong in ROI or IPPISize?&lt;BR /&gt;&lt;BR /&gt;Thanks in advance&lt;BR /&gt;Michele&lt;BR /&gt;&lt;/IPP64F&gt;&lt;/IPP64F&gt;</description>
    <pubDate>Wed, 26 Oct 2011 20:45:08 GMT</pubDate>
    <dc:creator>Michele_Belotti</dc:creator>
    <dc:date>2011-10-26T20:45:08Z</dc:date>
    <item>
      <title>Using ResizeSqrPixel  to perform SPLINE interpolation</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Using-ResizeSqrPixel-to-perform-SPLINE-interpolation/m-p/804482#M3486</link>
      <description>Hello,&lt;BR /&gt;I'm trying to write a 2D matrix interpolator using ResizeSqrPixel without success. I try to use axes information to compute the ROI of original and interpolated version but I obtain matrix with huge quantity of not allocated value. Also in the very simple case without ROI shift I obtain the same results.&lt;BR /&gt;&lt;BR /&gt;To determine the size of the calling I use the higher dimension between the original and the interpolated matrix&lt;BR /&gt;&lt;BR /&gt;the code used is similar to this one&lt;BR /&gt;&lt;BR /&gt;m_maxRange=IPPI_MAX(i_inputRange,i_outputRange);&lt;BR /&gt;   m_maxAzimuth=IPPI_MAX(i_inputAzimuth,i_outputAzimuth);&lt;BR /&gt;IppiSize size = {m_maxRange,m_maxAzimuth};&lt;BR /&gt;   IppiRect drect = {0,0,i_outputRange,i_outputAzimuth};&lt;BR /&gt;   IppiRect srect = {0,0,i_inputRange,i_inputAzimuth};&lt;BR /&gt;   SetSrcROI(srect);&lt;BR /&gt;   SetDestROI(drect);&lt;BR /&gt;&lt;BR /&gt;   Ipp8u *buf;&lt;BR /&gt;&lt;BR /&gt;   int bufsize; &lt;BR /&gt;   IppStatus status = ippStsNoErr;&lt;BR /&gt;&lt;BR /&gt;   IppiSize roi = {i_inputRange,i_inputAzimuth};&lt;BR /&gt;&lt;BR /&gt;   /* calculation of work buffer size */&lt;BR /&gt;   ippiResizeGetBufSize_64f( srect, drect, 1, i_method, &amp;amp;bufsize );&lt;BR /&gt;&lt;BR /&gt;   /* memory allocate */&lt;BR /&gt;   buf = ippsMalloc_8u( bufsize );&lt;BR /&gt;&lt;BR /&gt;    status = ippiResizeSqrPixel_64f_C1R(&lt;BR /&gt;    are_core::os::reinterpret_ptr&lt;IPP64F&gt;(i_bufferIn), size, i_inputRange*sizeof(Ipp64f), m_srcROI,&lt;BR /&gt;    are_core::os::reinterpret_ptr&lt;IPP64F&gt;(o_bufferOut), i_outputRange*sizeof(Ipp64f), m_dstROI,&lt;BR /&gt;    m_xFactor, m_yFactor, m_xShift, m_yShift, i_method, buf );&lt;BR /&gt;&lt;BR /&gt; Could you please give me a hint ? there is something wrong in ROI or IPPISize?&lt;BR /&gt;&lt;BR /&gt;Thanks in advance&lt;BR /&gt;Michele&lt;BR /&gt;&lt;/IPP64F&gt;&lt;/IPP64F&gt;</description>
      <pubDate>Wed, 26 Oct 2011 20:45:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Using-ResizeSqrPixel-to-perform-SPLINE-interpolation/m-p/804482#M3486</guid>
      <dc:creator>Michele_Belotti</dc:creator>
      <dc:date>2011-10-26T20:45:08Z</dc:date>
    </item>
    <item>
      <title>Using ResizeSqrPixel  to perform SPLINE interpolation</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Using-ResizeSqrPixel-to-perform-SPLINE-interpolation/m-p/804483#M3487</link>
      <description>I manage to correct generate the resized image by setting the size to the source image size (it was in the doc... sorry about that).&lt;BR /&gt;However the comparison between matlab spline is not satisfactory. Do you suggest other function (at the moment performance are not an issue) to perform the interpolation?&lt;BR /&gt;If I would like to interpolate on axes how I can adjust xshift/yshift and xfactor/yfactor to perform interpolation on data from initial axis to final axis ? If I understand well axes should be regular it is correct?&lt;BR /&gt;&lt;BR /&gt;Thanks &lt;BR /&gt;&lt;BR /&gt;Michele</description>
      <pubDate>Thu, 27 Oct 2011 15:30:49 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Using-ResizeSqrPixel-to-perform-SPLINE-interpolation/m-p/804483#M3487</guid>
      <dc:creator>Michele_Belotti</dc:creator>
      <dc:date>2011-10-27T15:30:49Z</dc:date>
    </item>
    <item>
      <title>Using ResizeSqrPixel  to perform SPLINE interpolation</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Using-ResizeSqrPixel-to-perform-SPLINE-interpolation/m-p/804484#M3488</link>
      <description>Hi Michele, &lt;BR /&gt;&lt;BR /&gt;Sorry for missing the issue for so long time. &lt;BR /&gt;&lt;BR /&gt;You may refer to the discussion &lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://software.intel.com/en-us/forums/showthread.php?t=65400&amp;amp;o=a&amp;amp;s=lr"&gt;http://software.intel.com/en-us/forums/showthread.php?t=65400&amp;amp;o=a&amp;amp;s=lr&lt;/A&gt;;&lt;BR /&gt;&lt;BR /&gt;considerign the xshift/yshift (most of case, it is 0, 0 if interpolation Rect(0, 0, srcwidth, srcheight) to Rect(0, 0, dstwidth, dstheight)and xfactor/yfactor (which should be fixed too, dstwidth/srcwidth) . &lt;BR /&gt;&lt;BR /&gt;But it may not comparsion between matabl spline as they may usingdifferent coefficients and algrithim. The algrithim of the intepolation of IPP, please refer to IPP manual. &lt;BR /&gt;&lt;H1 class="topictitle1"&gt;Appendix B: Interpolation in Image Geometric Transform Functions&lt;/H1&gt;&lt;BR /&gt;&lt;H1 class="topictitle1"&gt;Linear Interpolation&lt;/H1&gt;&lt;DIV&gt;&lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;This is the fastest and least accurate interpolation mode. The pixel value in the destination image is set to the value of the source image pixel closest to the point&lt;/P&gt;&lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;&lt;SAMP class="codeph"&gt;&lt;SPAN style="font-family: Courier New;"&gt;(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;,&lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;):&lt;VAR&gt;D&lt;/VAR&gt;(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;D&lt;/VAR&gt;&lt;/SUB&gt;,&lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;D&lt;/VAR&gt;&lt;/SUB&gt;) = &lt;VAR&gt;S&lt;/VAR&gt;(round(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;), round(&lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;)).&lt;/SPAN&gt;&lt;/SAMP&gt;&lt;/P&gt;&lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;The linear interpolation is slower but more accurate than the nearest neighbor interpolation. On the other hand, it is faster but less accurate than cubic interpolation. The linear interpolation algorithm uses source image intensities at the four pixels (&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;), (&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;), (&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt;), (&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt;) that are closest to (&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;) in the source image: &lt;/P&gt;&lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt; = int(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;), &lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt; = &lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt; + 1, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt; = int(&lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;), &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt; = &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt; + 1.&lt;/P&gt;&lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;First, the intensity values are interpolated along the x-axis to produce two intermediate results &lt;VAR&gt;I&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;0&lt;/VAR&gt;&lt;/SUB&gt; and &lt;VAR&gt;I&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;1&lt;/VAR&gt;&lt;/SUB&gt; (see Figure&lt;SPAN&gt;Linear Interpolation&lt;/SPAN&gt;):&lt;/P&gt;&lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;&lt;VAR&gt;I&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;0&lt;/VAR&gt;&lt;/SUB&gt; = &lt;VAR&gt;S&lt;/VAR&gt;(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;) = &lt;VAR&gt;S&lt;/VAR&gt;(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;)*(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt; - &lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;) + &lt;VAR&gt;S&lt;/VAR&gt;(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;)*(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt; - &lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;)&lt;/P&gt;&lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;&lt;VAR&gt;I&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;1&lt;/VAR&gt;&lt;/SUB&gt; = &lt;VAR&gt;S&lt;/VAR&gt;(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt;) = &lt;VAR&gt;S&lt;/VAR&gt;(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt;)*(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt; - &lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;) + &lt;VAR&gt;S&lt;/VAR&gt;(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt;)*(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt; - &lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;).&lt;/P&gt;&lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;Then, the sought-for intensity &lt;VAR&gt;D&lt;/VAR&gt;(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;D&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;D&lt;/VAR&gt;&lt;/SUB&gt;) is computed by interpolating the intermediate values &lt;VAR&gt;I&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;0&lt;/VAR&gt;&lt;/SUB&gt; and &lt;VAR&gt;I&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;1&lt;/VAR&gt;&lt;/SUB&gt; along the &lt;VAR&gt;y&lt;/VAR&gt;-axis:&lt;/P&gt;&lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;&lt;VAR&gt;D&lt;/VAR&gt;(&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;D&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;D&lt;/VAR&gt;&lt;/SUB&gt;) = &lt;VAR&gt;I&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;0&lt;/VAR&gt;&lt;/SUB&gt;*(&lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S1&lt;/VAR&gt;&lt;/SUB&gt; - &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;) + &lt;VAR&gt;I&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;1&lt;/VAR&gt;&lt;/SUB&gt;*(&lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt; - &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S0&lt;/VAR&gt;&lt;/SUB&gt;).&lt;/P&gt;&lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;To use the linear interpolation, set the parameter &lt;SPAN class="parmname"&gt;interpolation&lt;/SPAN&gt; to &lt;SPAN class="keyword"&gt;IPPI_INTER_LINEAR&lt;/SPAN&gt;. For images with 8-bit unsigned color channels, the functions &lt;SPAN class="option"&gt;ippiWarpAffine&lt;/SPAN&gt;, &lt;SPAN class="option"&gt;ippiRotate&lt;/SPAN&gt;, and &lt;SPAN class="option"&gt;ippiShear&lt;/SPAN&gt; compute the coordinates (&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;y&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;S&lt;/VAR&gt;&lt;/SUB&gt;) with the accuracy 2&lt;SUP&gt;-16&lt;/SUP&gt; = 1/65536. For images with 16-bit unsigned color channels, these functions compute the coordinates with floating-point precision.&lt;/P&gt;&lt;DIV class="fignone" id="figB-1"&gt;&lt;A MSHELP="http://www.microsoft.com/MSHelp/" name="figB-1"&gt;&lt;!-- --&gt;&lt;/A&gt;&lt;SPAN MSHELP="http://www.microsoft.com/MSHelp/" class="figcap"&gt;Linear Interpolation&lt;/SPAN&gt; &lt;P MSHELP="http://www.microsoft.com/MSHelp/"&gt;&lt;/P&gt;&lt;DIV class="imagecenter"&gt;&lt;BR /&gt;&lt;BR /&gt;Regards, &lt;BR /&gt;Ying&lt;BR /&gt;&lt;BR /&gt;P.S If you'd like, you may try MKL (math kernal library), IPP's sister library. It providespline interpolation in the mathematical. Please see MKL doc : &lt;A href="http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/index.htm"&gt;http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/index.htm&lt;/A&gt;&lt;BR /&gt;data fitting domain&lt;BR /&gt;&lt;TABLE frame="hsides" cellpadding="4" rules="all" border="1" class="NoLineStandard" id="TBL17-0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD align="left" headers="d843516e51 " width="NaN%" valign="top" class="cellrowborder"&gt;&lt;P&gt;Partition of interpolation interval [&lt;VAR&gt;a&lt;/VAR&gt;, &lt;VAR&gt;b&lt;/VAR&gt;] , where &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL type="disc" id="GUID-457FEBB1-3E16-4FA0-AD4C-F446272733ED"&gt;&lt;LI&gt;&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt; denotes breakpoints. &lt;/LI&gt;&lt;LI&gt;[&lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;+1&lt;/SUB&gt;) denotes a sub-interval (cell) of size &lt;SPAN class="eqsymbol"&gt;&lt;/SPAN&gt;&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;+1&lt;/SUB&gt;-&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt; . &lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD align="left" headers="d843516e54 " width="NaN%" valign="top" class="row-nocellborder"&gt;&lt;P&gt;{&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;}&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;=1,...,&lt;VAR&gt;n&lt;/VAR&gt;&lt;/SUB&gt;, where &lt;VAR&gt;a&lt;/VAR&gt; =&lt;VAR class="eqsymbol"&gt; x&lt;/VAR&gt;&lt;SUB&gt;1&lt;/SUB&gt; &amp;lt; &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;2&lt;/SUB&gt;&amp;lt;... &amp;lt;&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;n&lt;/VAR&gt;&lt;/SUB&gt; =&lt;VAR&gt; b&lt;/VAR&gt; &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" headers="d843516e51 " width="NaN%" valign="top" class="cellrowborder"&gt;&lt;P&gt;Vector-valued function of dimension &lt;VAR class="eqsymbol"&gt;p&lt;/VAR&gt; being fit &lt;/P&gt;&lt;/TD&gt;&lt;TD align="left" headers="d843516e54 " width="NaN%" valign="top" class="row-nocellborder"&gt;&lt;P&gt;&lt;SPAN class="eqsymbol"&gt;&lt;/SPAN&gt;(&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;) = (&lt;SPAN class="eqsymbol"&gt;&lt;/SPAN&gt;&lt;SUB&gt;1&lt;/SUB&gt;(&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;),..., &lt;SPAN class="eqsymbol"&gt;&lt;/SPAN&gt;&lt;SUB&gt;&lt;VAR&gt;p&lt;/VAR&gt;&lt;/SUB&gt;(&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;VAR class="eqsymbol"&gt;&lt;/VAR&gt;)&lt;VAR class="eqsymbol"&gt;&lt;/VAR&gt;) &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" headers="d843516e51 " width="NaN%" valign="top" class="cellrowborder"&gt;&lt;P&gt;Piecewise polynomial (PP) function &lt;SPAN class="eqsymbol"&gt;&lt;/SPAN&gt; of order &lt;SAMP class="codeph"&gt;&lt;SPAN style="font-family: Courier New;"&gt;&lt;VAR&gt;k&lt;/VAR&gt;+1&lt;/SPAN&gt;&lt;/SAMP&gt; &lt;/P&gt;&lt;/TD&gt;&lt;TD align="left" headers="d843516e54 " width="NaN%" valign="top" class="row-nocellborder"&gt;&lt;P&gt;&lt;SPAN class="eqsymbol"&gt;&lt;/SPAN&gt;(&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;)  &lt;VAR&gt;P&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt; (&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;), if &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;  [ &lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;+1&lt;/SUB&gt;), &lt;VAR&gt;i&lt;/VAR&gt; = 1,..., &lt;VAR&gt;n&lt;/VAR&gt;-1 &lt;/P&gt;&lt;P&gt;where &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL type="disc" id="GUID-83BE8F9D-9397-486F-B171-23E0F4A56BE3"&gt;&lt;LI&gt;{&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;}&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;= 1,..., &lt;VAR&gt;n&lt;/VAR&gt;&lt;/SUB&gt; is a strictly increasing sequence of breakpoints. &lt;/LI&gt;&lt;LI&gt;&lt;VAR&gt;P&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;(&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;) = &lt;VAR&gt;c&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;,0&lt;/SUB&gt; + &lt;VAR&gt;c&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;,1&lt;/SUB&gt;(&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt; - &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;) + ... + &lt;VAR&gt;c&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;,&lt;VAR&gt;k&lt;/VAR&gt;&lt;/SUB&gt;(&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt; - &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;)&lt;SUP&gt;&lt;VAR&gt;k&lt;/VAR&gt;&lt;/SUP&gt; is a polynomial of degree &lt;VAR&gt;k&lt;/VAR&gt; (order &lt;VAR&gt;k&lt;/VAR&gt;+1) over the interval &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;  [ &lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;, &lt;VAR&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;+1&lt;/SUB&gt;). &lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" headers="d843516e51 " width="NaN%" valign="top" class="cellrowborder"&gt;&lt;P&gt;Function &lt;VAR&gt;p&lt;/VAR&gt; agrees with function &lt;VAR&gt;g&lt;/VAR&gt; at the points {&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;}&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;=1,...,&lt;VAR&gt;n&lt;/VAR&gt;&lt;/SUB&gt; . &lt;/P&gt;&lt;/TD&gt;&lt;TD align="left" headers="d843516e54 " width="NaN%" valign="top" class="row-nocellborder"&gt;&lt;P&gt;For every point  in sequence {&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;}&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;=1,...,&lt;VAR&gt;n&lt;/VAR&gt;&lt;/SUB&gt; that occurs &lt;VAR&gt;m&lt;/VAR&gt; times, the equality &lt;VAR&gt;p&lt;/VAR&gt;&lt;SUP&gt;(&lt;VAR&gt;i&lt;/VAR&gt;-1)&lt;/SUP&gt;() = &lt;VAR&gt;g&lt;/VAR&gt;&lt;SUP&gt;(&lt;VAR&gt;i&lt;/VAR&gt;-1)&lt;/SUP&gt;() holds for all &lt;VAR&gt;i&lt;/VAR&gt; = 1,...,&lt;VAR&gt;m&lt;/VAR&gt;, where &lt;VAR&gt;p&lt;/VAR&gt;&lt;SUP&gt;(&lt;VAR&gt;i&lt;/VAR&gt;)&lt;/SUP&gt;(&lt;VAR&gt;t&lt;/VAR&gt;&lt;VAR class="eqsymbol"&gt;&lt;/VAR&gt;) is the derivative of the &lt;VAR&gt;i&lt;/VAR&gt;-th order. &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" headers="d843516e51 " width="NaN%" valign="top" class="cellrowborder"&gt;&lt;P&gt;The &lt;VAR&gt;k&lt;/VAR&gt;-th divided difference of function &lt;VAR&gt;g&lt;/VAR&gt; at points &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;,..., &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt; + &lt;VAR&gt;k&lt;/VAR&gt;&lt;/SUB&gt;. This difference is the leading coefficient of the polynomial of order &lt;VAR&gt;k&lt;/VAR&gt;+1 that agrees with &lt;VAR&gt;g&lt;/VAR&gt; at &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;,..., &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt; + &lt;VAR&gt;k&lt;/VAR&gt;&lt;/SUB&gt;. &lt;/P&gt;&lt;/TD&gt;&lt;TD align="left" headers="d843516e54 " width="NaN%" valign="top" class="row-nocellborder"&gt;&lt;P&gt;[ &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt;&lt;/SUB&gt;,..., &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;&lt;VAR&gt;i&lt;/VAR&gt; + &lt;VAR&gt;k&lt;/VAR&gt;&lt;/SUB&gt;] &lt;VAR class="eqsymbol"&gt;g&lt;/VAR&gt; &lt;/P&gt;&lt;P&gt;In particular, &lt;/P&gt;&lt;UL type="disc" id="GUID-57DD2751-27BC-4052-995D-BAFF18033018"&gt;&lt;LI&gt;[&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;1&lt;/SUB&gt;]&lt;VAR class="eqsymbol"&gt;g&lt;/VAR&gt; = &lt;VAR class="eqsymbol"&gt;g&lt;/VAR&gt;(&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;1&lt;/SUB&gt;) &lt;/LI&gt;&lt;LI&gt;[ &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;1&lt;/SUB&gt;, &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;2&lt;/SUB&gt;] &lt;VAR class="eqsymbol"&gt;g&lt;/VAR&gt; = (&lt;VAR class="eqsymbol"&gt;g&lt;/VAR&gt;(&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;1&lt;/SUB&gt;) - &lt;VAR class="eqsymbol"&gt;g&lt;/VAR&gt;(&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;2&lt;/SUB&gt;)) / (&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;1&lt;/SUB&gt; - &lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;&lt;SUB&gt;2&lt;/SUB&gt;) &lt;/LI&gt;&lt;/UL&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="left" headers="d843516e51 " width="NaN%" valign="top" class="cellrowborder"&gt;&lt;P&gt;A &lt;VAR&gt;k&lt;/VAR&gt;-order derivative of interpolant &lt;SPAN class="eqsymbol"&gt;&lt;/SPAN&gt;(&lt;VAR class="eqsymbol"&gt;x&lt;/VAR&gt;) at interpolation site &lt;IMG height="14" width="13" src="http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/GUID-8772A661-0D6F-4E4D-AF58-5912D09FFFBA-low.gif" /&gt;. &lt;/P&gt;&lt;/TD&gt;&lt;TD align="left" headers="d843516e54 " width="NaN%" valign="top" class="row-nocellborder"&gt;&lt;IMG height="25" width="49" src="http://software.intel.com/sites/products/documentation/hpc/mkl/mklman/GUID-98DC3AAF-ADFB-4F57-A595-42B8863D2EC9-low.gif" /&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 04 Jun 2012 07:54:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Using-ResizeSqrPixel-to-perform-SPLINE-interpolation/m-p/804484#M3488</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2012-06-04T07:54:48Z</dc:date>
    </item>
  </channel>
</rss>

