<?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: Hi Ella, in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1420205#M28128</link>
    <description>&lt;P&gt;Hello everybody,&lt;/P&gt;
&lt;P&gt;any answer to my question?&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Nick&lt;/P&gt;</description>
    <pubDate>Fri, 07 Oct 2022 06:48:09 GMT</pubDate>
    <dc:creator>Nick17</dc:creator>
    <dc:date>2022-10-07T06:48:09Z</dc:date>
    <item>
      <title>Separable Filters</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1170339#M26914</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;

&lt;P&gt;I’m implementing a pipeline for separable filter, using function ippiFilterRowBorderPipeline_16u_C1R and ippiFilterColumnPipeline_16u_C1R.&lt;/P&gt;

&lt;P&gt;Since the documentation for these functions is quite poor, I use as a reference the example FilterColumnPipeline_Low.c.&lt;/P&gt;

&lt;P&gt;The kernel size in the example is 3, and I’m trying to adjust it to different kernel size. Some adjustments are obvious, and some less.&lt;/P&gt;

&lt;P&gt;In the second call to ippiFilterRowBorderPipeline_Low_16s_C1R (inside the loop) the destination is (Ipp16u**)(pGet + 2). What it the correct destination for kernel size=5? My first guess (4) doesn't seem to work.&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;Thanks,&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;Ella&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 13 Aug 2018 13:41:49 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1170339#M26914</guid>
      <dc:creator>P__Ella</dc:creator>
      <dc:date>2018-08-13T13:41:49Z</dc:date>
    </item>
    <item>
      <title>Hi Ella.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1170340#M26915</link>
      <description>&lt;P&gt;Hi Ella.&lt;/P&gt;

&lt;P&gt;I'm attaching new modified example for arbitrary kernel size. I hope it is very easy now.&lt;/P&gt;

&lt;P&gt;Thanks for your interest to IPP library.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 24 Sep 2018 13:07:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1170340#M26915</guid>
      <dc:creator>Andrey_B_Intel</dc:creator>
      <dc:date>2018-09-24T13:07:42Z</dc:date>
    </item>
    <item>
      <title>Hi Ella,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1170341#M26916</link>
      <description>&lt;P&gt;Hi Ella,&lt;/P&gt;

&lt;P&gt;in the latest IPP versions we added the new special API for separable filters - you can use it instead of sequential calls of FilterRowPipeline &amp;amp; FilterColumnPipeline with circular bugffer in a loop:&lt;/P&gt;

&lt;P&gt;IPPAPI(IppStatus, ippiFilterSeparableGetBufferSize, (IppiSize roiSize, IppiSize kernelSize, IppDataType dataType, IppDataType kernelType, int numChannels, int* pBufferSize))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparableGetSpecSize, (IppiSize kernelSize, IppDataType dataType, int numChannels, int* pSpecSize))&lt;/P&gt;

&lt;P&gt;IPPAPI(IppStatus, ippiFilterSeparableInit_16s, (const Ipp16s* pRowKernel, const Ipp16s* pColumnKernel, IppiSize kernelSize, int divisor, int scaleFactor, IppDataType dataType,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; int numChannels, IppiFilterSeparableSpec* pSpec))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparableInit_32f, (const Ipp32f* pRowKernel, const Ipp32f* pColumnKernel, IppiSize kernelSize, IppDataType dataType,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; int numChannels, IppiFilterSeparableSpec* pSpec))&lt;/P&gt;

&lt;P&gt;IPPAPI(IppStatus, ippiFilterSeparable_8u_C1R, (const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp8u borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparable_8u_C3R, (const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp8u* borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparable_8u_C4R, (const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp8u* borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;/P&gt;

&lt;P&gt;IPPAPI(IppStatus, ippiFilterSeparable_8u16s_C1R, (const Ipp8u* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp8u borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparable_8u16s_C3R, (const Ipp8u* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp8u* borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparable_8u16s_C4R, (const Ipp8u* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp8u* borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;/P&gt;

&lt;P&gt;IPPAPI(IppStatus, ippiFilterSeparable_16s_C1R, (const Ipp16s* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp16s borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparable_16s_C3R, (const Ipp16s* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp16s* borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparable_16s_C4R, (const Ipp16s* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp16s* borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;/P&gt;

&lt;P&gt;IPPAPI(IppStatus, ippiFilterSeparable_16u_C1R, (const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp16u borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparable_16u_C3R, (const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp16u* borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparable_16u_C4R, (const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp16u* borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;/P&gt;

&lt;P&gt;IPPAPI(IppStatus, ippiFilterSeparable_32f_C1R, (const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp32f borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparable_32f_C3R, (const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp32f* borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;BR /&gt;
	IPPAPI(IppStatus, ippiFilterSeparable_32f_C4R, (const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; IppiBorderType borderType, Ipp32f* borderValue, const IppiFilterSeparableSpec* pSpec, Ipp8u* pBuffer))&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Mon, 24 Sep 2018 15:38:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1170341#M26916</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2018-09-24T15:38:01Z</dc:date>
    </item>
    <item>
      <title>Hi Igor,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1170342#M26917</link>
      <description>&lt;P&gt;Hi Igor,&lt;/P&gt;

&lt;P&gt;I just tried using the new functions but had a problem that it was writing one row past the destination buffer. I described it in another post. Can you verify what is the source of the problem?&lt;/P&gt;

&lt;P&gt;In the mean time can I use the ippiFilterRow(Column)BorderPipeline functions as an alternative? Do they provide equivalent performance?&lt;/P&gt;

&lt;P&gt;Regards Nikolai&lt;/P&gt;</description>
      <pubDate>Wed, 26 Sep 2018 08:52:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1170342#M26917</guid>
      <dc:creator>Nikolai_T_</dc:creator>
      <dc:date>2018-09-26T08:52:29Z</dc:date>
    </item>
    <item>
      <title>Re: Hi Ella,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1411892#M28105</link>
      <description>&lt;P&gt;Hello Igor,&lt;/P&gt;
&lt;P&gt;to me, &lt;STRONG&gt;the implementation of separable filter does not make sense when using different row- and column-kernels&lt;/STRONG&gt;:&lt;/P&gt;
&lt;P&gt;There is only one parameter which is used as divisor for both row- and column-calculations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;-&amp;gt; As an example for mean-filtering, how shall one set the "divisor" and "scaleFactor" when filtering with row-kernel={1, 1, 1} and col-kernel={1, 1, 1, 1, 1} ?&lt;/P&gt;
&lt;P&gt;Function ippiFilterSeparableInit_16s() has relevant parameters "int divisor, int scaleFactor".&lt;/P&gt;
&lt;P&gt;In my test, when using "divisor=3", the resulting image-values are too high, when using "divisor=5", the values are too low.&lt;/P&gt;
&lt;P&gt;"scaleFactor" does not seem to be used internally at all.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;-&amp;gt; I would expect to have distinct parameters "divisorRow" and "divisorCol", which are applied to the row- and column-calculations, resp.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for feedback.&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Nick&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 31 Aug 2022 11:18:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1411892#M28105</guid>
      <dc:creator>Nick17</dc:creator>
      <dc:date>2022-08-31T11:18:46Z</dc:date>
    </item>
    <item>
      <title>Re: Hi Ella,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1420205#M28128</link>
      <description>&lt;P&gt;Hello everybody,&lt;/P&gt;
&lt;P&gt;any answer to my question?&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Nick&lt;/P&gt;</description>
      <pubDate>Fri, 07 Oct 2022 06:48:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Separable-Filters/m-p/1420205#M28128</guid>
      <dc:creator>Nick17</dc:creator>
      <dc:date>2022-10-07T06:48:09Z</dc:date>
    </item>
  </channel>
</rss>

