<?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 ippiConvValid and ippiFilter in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiConvValid-and-ippiFilter/m-p/798798#M2971</link>
    <description>&lt;P&gt;Hi, &lt;/P&gt;&lt;P&gt;Please find some comemnts from our experts: &lt;/P&gt;&lt;P&gt;Let t represents mask (filter) and x  image:&lt;/P&gt;&lt;P&gt;ConvFull case calculates the full cyclic convolution of two images as there is a border of size (mask-1) around the image filled with zeroes:&lt;/P&gt;&lt;P&gt;1st point: 2nd point: 3rd point:&lt;/P&gt;&lt;P&gt;ttttt00000000000000 0ttttt00000000000000 00ttttt00000000000000&lt;/P&gt;&lt;P&gt;ttttt00000000000000 0ttttt00000000000000 00ttttt00000000000000&lt;/P&gt;&lt;P&gt;ttttt00000000000000 0ttttt00000000000000 00ttttt00000000000000&lt;/P&gt;&lt;P&gt;ttttt00000000000000 0ttttt00000000000000 00ttttt00000000000000&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx 0tttttxxxxxxxxxxxxxx 00tttttxxxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;0000xxxxxxxxxxxxxxx 0000xxxxxxxxxxxxxxxx 0000xxxxxxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;0000xxxxxxxxxxxxxxx 0000xxxxxxxxxxxxxxxx 00000xxxxxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;0000xxxxxxxxxxxxxxx 0000xxxxxxxxxxxxxxxx 00000xxxxxxxxxxxxxxxx etc.&lt;/P&gt;&lt;P&gt;ConvValid case calculates its valid part only  without assumption on any border:&lt;/P&gt;&lt;P&gt;1st point: 2nd point: 3rd point:&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx xtttttxxxxxxxxxxxxx xxtttttxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx xtttttxxxxxxxxxxxxx xxtttttxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx xtttttxxxxxxxxxxxxx xxtttttxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx xtttttxxxxxxxxxxxxx xxtttttxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx xtttttxxxxxxxxxxxxx xxtttttxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx etc.&lt;/P&gt;&lt;P&gt;Filter function works as ConvSame case but uses real pixels outside ROI  so user must be sure that (mask/2-1) pixels border is available around the ROI. It is possible to manipulate with pointers to ROI and ROI size in order to have the same result both for Filter and ConvValid, but Filter has several limitations  for example for C3/C4/AC4 coefficients for R,G,B and A are the same, while Conv convolve two images  so if the second image is interpreted as a filter  you can have different coefficients for each channel. Filter is optimized for masks size range 3x3  11x11, while Conv optimized for any image sizes as for ~&amp;gt;11x11 images uses convolution theorem (based on FFT).&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Chao&lt;/P&gt;</description>
    <pubDate>Fri, 01 Jul 2011 08:25:07 GMT</pubDate>
    <dc:creator>Chao_Y_Intel</dc:creator>
    <dc:date>2011-07-01T08:25:07Z</dc:date>
    <item>
      <title>ippiConvValid and ippiFilter</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiConvValid-and-ippiFilter/m-p/798797#M2970</link>
      <description>can somebody explain the difference between ippiConvValid and ippiFilter. I don't see the difference. any help would be great!&lt;BR /&gt;</description>
      <pubDate>Mon, 27 Jun 2011 11:16:05 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiConvValid-and-ippiFilter/m-p/798797#M2970</guid>
      <dc:creator>Adel_El-rayyes</dc:creator>
      <dc:date>2011-06-27T11:16:05Z</dc:date>
    </item>
    <item>
      <title>ippiConvValid and ippiFilter</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiConvValid-and-ippiFilter/m-p/798798#M2971</link>
      <description>&lt;P&gt;Hi, &lt;/P&gt;&lt;P&gt;Please find some comemnts from our experts: &lt;/P&gt;&lt;P&gt;Let t represents mask (filter) and x  image:&lt;/P&gt;&lt;P&gt;ConvFull case calculates the full cyclic convolution of two images as there is a border of size (mask-1) around the image filled with zeroes:&lt;/P&gt;&lt;P&gt;1st point: 2nd point: 3rd point:&lt;/P&gt;&lt;P&gt;ttttt00000000000000 0ttttt00000000000000 00ttttt00000000000000&lt;/P&gt;&lt;P&gt;ttttt00000000000000 0ttttt00000000000000 00ttttt00000000000000&lt;/P&gt;&lt;P&gt;ttttt00000000000000 0ttttt00000000000000 00ttttt00000000000000&lt;/P&gt;&lt;P&gt;ttttt00000000000000 0ttttt00000000000000 00ttttt00000000000000&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx 0tttttxxxxxxxxxxxxxx 00tttttxxxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;0000xxxxxxxxxxxxxxx 0000xxxxxxxxxxxxxxxx 0000xxxxxxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;0000xxxxxxxxxxxxxxx 0000xxxxxxxxxxxxxxxx 00000xxxxxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;0000xxxxxxxxxxxxxxx 0000xxxxxxxxxxxxxxxx 00000xxxxxxxxxxxxxxxx etc.&lt;/P&gt;&lt;P&gt;ConvValid case calculates its valid part only  without assumption on any border:&lt;/P&gt;&lt;P&gt;1st point: 2nd point: 3rd point:&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx xtttttxxxxxxxxxxxxx xxtttttxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx xtttttxxxxxxxxxxxxx xxtttttxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx xtttttxxxxxxxxxxxxx xxtttttxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx xtttttxxxxxxxxxxxxx xxtttttxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;tttttxxxxxxxxxxxxxx xtttttxxxxxxxxxxxxx xxtttttxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx&lt;/P&gt;&lt;P&gt;xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx etc.&lt;/P&gt;&lt;P&gt;Filter function works as ConvSame case but uses real pixels outside ROI  so user must be sure that (mask/2-1) pixels border is available around the ROI. It is possible to manipulate with pointers to ROI and ROI size in order to have the same result both for Filter and ConvValid, but Filter has several limitations  for example for C3/C4/AC4 coefficients for R,G,B and A are the same, while Conv convolve two images  so if the second image is interpreted as a filter  you can have different coefficients for each channel. Filter is optimized for masks size range 3x3  11x11, while Conv optimized for any image sizes as for ~&amp;gt;11x11 images uses convolution theorem (based on FFT).&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Chao&lt;/P&gt;</description>
      <pubDate>Fri, 01 Jul 2011 08:25:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiConvValid-and-ippiFilter/m-p/798798#M2971</guid>
      <dc:creator>Chao_Y_Intel</dc:creator>
      <dc:date>2011-07-01T08:25:07Z</dc:date>
    </item>
    <item>
      <title>ippiConvValid and ippiFilter</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiConvValid-and-ippiFilter/m-p/798799#M2972</link>
      <description>&lt;P&gt;Hi &lt;BR /&gt;&lt;BR /&gt;I guess you mean thecaculating formula of ippiConvValid and ippiFilter. Yes, they are almost same. &lt;BR /&gt;&lt;BR /&gt;Just a little difference in function form and parameter according to the purpose of function, &lt;BR /&gt;likeand ippiFilter, the src 1 is image with 8u 3channel, but the Kernalis 32s, 1 channel.&lt;BR /&gt;ippiconvValid, the src 1 and src 2 are same data type image, for example 8u, 3 channel.&lt;BR /&gt;so when your image is 1 channel thethey are same, but not when multiple channel. &lt;BR /&gt;In general,when operate convolutionon two image, the ippiconvValid is needed.&lt;BR /&gt;and if operate with afilter, the ippiFilter is better. &lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;Ying &lt;BR /&gt;&lt;BR /&gt;By helpingremember , attach the test code&lt;BR /&gt;void main()&lt;BR /&gt;{&lt;BR /&gt; Ipp16s src1[4*4]={ 0, 1, 2, 3, &lt;BR /&gt; 0, 1, 2, 3,&lt;BR /&gt; 1, 2, 3, 0,&lt;BR /&gt; 2, 3, 1, 0};&lt;BR /&gt;Ipp16s src2[3*1]={1, -2, -1};&lt;/P&gt;&lt;P&gt;Ipp16s dst1[6*6]={0};&lt;BR /&gt;Ipp16s dst2[2*4]={0};&lt;BR /&gt;Ipp16s dst3[2*4]={0};&lt;/P&gt;&lt;P&gt;IppiSize src1Size = { 4, 4 };&lt;BR /&gt;IppiSize src2Size = { 3, 1 };&lt;BR /&gt;int divisor = 1;&lt;BR /&gt;int sign = 1;&lt;BR /&gt;int i=0, j=0;&lt;BR /&gt;IppStatus s ;&lt;/P&gt;&lt;P&gt;s= ippiConvFull_16s_C1R ( src1, 4*sizeof(Ipp16s), src1Size, src2,3*sizeof(Ipp16s), src2Size, dst1, 6*sizeof(Ipp16s), divisor);&lt;BR /&gt;&lt;BR /&gt;s=ippiConvValid_16s_C1R ( src1, 4*sizeof(Ipp16s), src1Size, src2,3*sizeof(Ipp16s), src2Size, dst2, 2*sizeof(Ipp16s), divisor );&lt;/P&gt;&lt;P&gt;Ipp32s kern[] = { 1, -2, -1 }; // using "Sobel" kernel. &lt;BR /&gt;IppiSize kernelSize = {3,1};&lt;BR /&gt;&lt;STRONG&gt;IppiPoint anchor = {2,0}; // the anchor need be bottom-right. &lt;BR /&gt;&lt;/STRONG&gt;IppiSize dstRoiSize={2,4};&lt;/P&gt;&lt;P&gt;s=ippiFilter_16s_C1R(src1, 4*sizeof(Ipp16s),dst3, 2*sizeof(Ipp16s), dstRoiSize, kern,kernelSize, anchor, divisor);&lt;/P&gt;&lt;P&gt;printf ("ippiFilter_16s dst3, %s\n", ippGetStatusString(s));&lt;BR /&gt;return ;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;The result &lt;BR /&gt;src1&lt;BR /&gt;0 1 2 3&lt;BR /&gt;0 1 2 3&lt;BR /&gt;1 2 3 0&lt;BR /&gt;2 3 1 0&lt;BR /&gt;src2&lt;BR /&gt;1 -2 -1 // when calculate, the element is in inverse order.&lt;BR /&gt;ConvFul dst1&lt;BR /&gt;0 1 0 -2 -8 -3&lt;BR /&gt;0 1 0 -2 -8 -3&lt;BR /&gt;1 0 -2 -8 -3 0&lt;BR /&gt;2 -1 -7 -5 -1 0&lt;BR /&gt;0 0 0 0 0 0&lt;BR /&gt;0 0 0 0 0 0&lt;BR /&gt;ippiConvValid dst2&lt;BR /&gt;0 -2&lt;BR /&gt;0 -2&lt;BR /&gt;-2 -8&lt;BR /&gt;-7 -5&lt;BR /&gt;ippiFilter_16s dst3, ippStsNoErr: No error, it's OK&lt;BR /&gt;0 -2&lt;BR /&gt;0 -2&lt;BR /&gt;-2 -8&lt;BR /&gt;-7 -5&lt;BR /&gt;Press any key to continue . . .&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 01 Jul 2011 09:39:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiConvValid-and-ippiFilter/m-p/798799#M2972</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2011-07-01T09:39:59Z</dc:date>
    </item>
    <item>
      <title>ippiConvValid and ippiFilter</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiConvValid-and-ippiFilter/m-p/798800#M2973</link>
      <description>Hi Chao,&lt;BR /&gt;&lt;BR /&gt;sounds complicated, but i think i got it, thank you!</description>
      <pubDate>Fri, 01 Jul 2011 09:44:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiConvValid-and-ippiFilter/m-p/798800#M2973</guid>
      <dc:creator>Adel_El-rayyes</dc:creator>
      <dc:date>2011-07-01T09:44:55Z</dc:date>
    </item>
  </channel>
</rss>

