<?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 Re: How should I use the separable filters? in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/How-should-I-use-the-separable-filters/m-p/876968#M9653</link>
    <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;BR /&gt;Hi &lt;BR /&gt;thank you for asking the result 0,0,0,0 102,101,101,100 0,0,0,0 from Example 9-4. It is our manual error. The code should be modified as&lt;BR /&gt;Ipp8u src[4*5] = {&lt;BR /&gt;1, 2, 3, 4,&lt;BR /&gt;1, 2, 3, 4,&lt;BR /&gt;1, 2, 3, 4,&lt;BR /&gt;1, 2, 3, 4,&lt;BR /&gt;1, 2, 3, 4&lt;BR /&gt;};&lt;BR /&gt;and the result are 0. &lt;BR /&gt;&lt;BR /&gt;Use the function, you may need take care of two things, &lt;BR /&gt;1. all IPP filter function assume that each pixel being processed, including the all referred neighborhood pixels necessary for the operation are available. You may read such description in chapter: Filtering function of manual. So either trim the input buffer or add border to input buffer are required.&lt;BR /&gt;there isone KB article talking about it, &lt;A href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-processing-an-image-from-edge-to-edge/"&gt;http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-processing-an-image-from-edge-to-edge/&lt;/A&gt;&lt;BR /&gt;
&lt;P&gt;&lt;BR /&gt;2. about the step error, it depends on your array memory layout and data type. Here is a small example&lt;/P&gt;
&lt;P&gt; int nRow = 200;&lt;BR /&gt; int nCol = 655;&lt;BR /&gt; int nCount = nRow * nCol;&lt;/P&gt;
&lt;P&gt; Ipp16s *temp = (Ipp16s *)malloc(nCount * sizeof(Ipp16s));&lt;BR /&gt; Ipp16s *temp2 = (Ipp16s *)malloc(nCount * sizeof(Ipp16s));&lt;/P&gt;
&lt;P&gt; Ipp32s fKernel[] = {1, 2, -3};&lt;BR /&gt; int nAnchor = 1; // please notes, ifit is 1 , then itrequired border at upward of image. &lt;BR /&gt; int nKernelSize = 3;&lt;BR /&gt; int divisor = 2;&lt;/P&gt;
&lt;P&gt; IppiSize dstRoiSize2 = {nCol, nRow - 2};&lt;/P&gt;
&lt;P&gt;// please note, the step is width*sizeof(Ipp16s) &lt;BR /&gt;IppStatus b = ippiFilterColumn_16s_C1R((Ipp16s*)temp + nCol, nCol*sizeof(Ipp16s), (Ipp16s*)temp2 + nCol, nCol*sizeof(Ipp16s), dstRoiSize2, (Ipp32s*)fKernel, nKernelSize, nAnchor,divisor );&lt;/P&gt;
&lt;P&gt; printf ("%d: %sn", b, ippGetStatusString(b));&lt;BR /&gt; printf ("the step is %dn", nCol*sizeof(Ipp16s));&lt;BR /&gt; return 0;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Ying&lt;/P&gt;</description>
    <pubDate>Thu, 26 Nov 2009 06:43:24 GMT</pubDate>
    <dc:creator>Ying_H_Intel</dc:creator>
    <dc:date>2009-11-26T06:43:24Z</dc:date>
    <item>
      <title>How should I use the separable filters?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/How-should-I-use-the-separable-filters/m-p/876966#M9651</link>
      <description>when I use the function ippiFilterRow32f, I made the kernel[] = {1,0,-1}, and I set the parameter kernelSize = 3. But an error ippStsStepErr happens. But the same error does not happen when using the function ippiFilterColumn32f. Thus, I doubt that the kernel array is recognized as a column vector. If so, I have no idea about how to get a row vector.
&lt;DIV&gt;Furthermore, I do not understand how the result comes about in the example using the function ippiFilterColumn. Why the result should be&lt;BR /&gt;&lt;/DIV&gt;
&lt;DIV&gt;0,0,0,0&lt;/DIV&gt;
&lt;DIV&gt;102,101,101,100&lt;/DIV&gt;
&lt;DIV&gt;0,0,0,0  ?&lt;/DIV&gt;
&lt;DIV&gt;It would be very helpful if any one can help me.&lt;/DIV&gt;
&lt;DIV&gt;Thank you!!&lt;/DIV&gt;</description>
      <pubDate>Wed, 25 Nov 2009 07:32:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/How-should-I-use-the-separable-filters/m-p/876966#M9651</guid>
      <dc:creator>zhpn</dc:creator>
      <dc:date>2009-11-25T07:32:48Z</dc:date>
    </item>
    <item>
      <title>Re: How should I use the separable filters?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/How-should-I-use-the-separable-filters/m-p/876967#M9652</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;BR /&gt;Hello,&lt;BR /&gt;&lt;BR /&gt;you can find an example of how to use separable filters in IPP sample package underfolder image-processing&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir</description>
      <pubDate>Wed, 25 Nov 2009 10:01:15 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/How-should-I-use-the-separable-filters/m-p/876967#M9652</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-11-25T10:01:15Z</dc:date>
    </item>
    <item>
      <title>Re: How should I use the separable filters?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/How-should-I-use-the-separable-filters/m-p/876968#M9653</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
&lt;BR /&gt;Hi &lt;BR /&gt;thank you for asking the result 0,0,0,0 102,101,101,100 0,0,0,0 from Example 9-4. It is our manual error. The code should be modified as&lt;BR /&gt;Ipp8u src[4*5] = {&lt;BR /&gt;1, 2, 3, 4,&lt;BR /&gt;1, 2, 3, 4,&lt;BR /&gt;1, 2, 3, 4,&lt;BR /&gt;1, 2, 3, 4,&lt;BR /&gt;1, 2, 3, 4&lt;BR /&gt;};&lt;BR /&gt;and the result are 0. &lt;BR /&gt;&lt;BR /&gt;Use the function, you may need take care of two things, &lt;BR /&gt;1. all IPP filter function assume that each pixel being processed, including the all referred neighborhood pixels necessary for the operation are available. You may read such description in chapter: Filtering function of manual. So either trim the input buffer or add border to input buffer are required.&lt;BR /&gt;there isone KB article talking about it, &lt;A href="http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-processing-an-image-from-edge-to-edge/"&gt;http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-processing-an-image-from-edge-to-edge/&lt;/A&gt;&lt;BR /&gt;
&lt;P&gt;&lt;BR /&gt;2. about the step error, it depends on your array memory layout and data type. Here is a small example&lt;/P&gt;
&lt;P&gt; int nRow = 200;&lt;BR /&gt; int nCol = 655;&lt;BR /&gt; int nCount = nRow * nCol;&lt;/P&gt;
&lt;P&gt; Ipp16s *temp = (Ipp16s *)malloc(nCount * sizeof(Ipp16s));&lt;BR /&gt; Ipp16s *temp2 = (Ipp16s *)malloc(nCount * sizeof(Ipp16s));&lt;/P&gt;
&lt;P&gt; Ipp32s fKernel[] = {1, 2, -3};&lt;BR /&gt; int nAnchor = 1; // please notes, ifit is 1 , then itrequired border at upward of image. &lt;BR /&gt; int nKernelSize = 3;&lt;BR /&gt; int divisor = 2;&lt;/P&gt;
&lt;P&gt; IppiSize dstRoiSize2 = {nCol, nRow - 2};&lt;/P&gt;
&lt;P&gt;// please note, the step is width*sizeof(Ipp16s) &lt;BR /&gt;IppStatus b = ippiFilterColumn_16s_C1R((Ipp16s*)temp + nCol, nCol*sizeof(Ipp16s), (Ipp16s*)temp2 + nCol, nCol*sizeof(Ipp16s), dstRoiSize2, (Ipp32s*)fKernel, nKernelSize, nAnchor,divisor );&lt;/P&gt;
&lt;P&gt; printf ("%d: %sn", b, ippGetStatusString(b));&lt;BR /&gt; printf ("the step is %dn", nCol*sizeof(Ipp16s));&lt;BR /&gt; return 0;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Ying&lt;/P&gt;</description>
      <pubDate>Thu, 26 Nov 2009 06:43:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/How-should-I-use-the-separable-filters/m-p/876968#M9653</guid>
      <dc:creator>Ying_H_Intel</dc:creator>
      <dc:date>2009-11-26T06:43:24Z</dc:date>
    </item>
  </channel>
</rss>

