<?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 PS there is one great in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Filter-with-single-diagonal-kernel/m-p/1006271#M23207</link>
    <description>&lt;P&gt;PS there is one great function for this purpose (I mean case #3):&lt;/P&gt;

&lt;P&gt;IPPAPI(IppStatus, ippsAddProductC_32f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( const Ipp32f* pSrc, const Ipp32f val, Ipp32f* pSrcDst, int len ))&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 13 Jul 2015 08:59:40 GMT</pubDate>
    <dc:creator>Igor_A_Intel</dc:creator>
    <dc:date>2015-07-13T08:59:40Z</dc:date>
    <item>
      <title>Filter with single diagonal kernel</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Filter-with-single-diagonal-kernel/m-p/1006269#M23205</link>
      <description>&lt;P&gt;&amp;nbsp;Hello,&lt;/P&gt;

&lt;P&gt;&amp;nbsp;I've been filtering with 8 single width directional kernels.(0, 45, 90,..., 270 and 315 degrees)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;For horizontal and vertical kernels I use&amp;nbsp;FilterRow and&amp;nbsp;FilterColumn.&lt;BR /&gt;
	&amp;nbsp;But for diagonal directions there's no filter for single width kernel like &lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;FilterRow and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;FilterColumn.&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;So, I've been using kernels &lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;like below&amp;nbsp;&lt;/SPAN&gt;for diagonal directions.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;0 0 0 0 k4&lt;BR /&gt;
	&amp;nbsp;0 0 0 k3 0&lt;BR /&gt;
	&amp;nbsp;0 0 k2 0 0&lt;BR /&gt;
	&amp;nbsp;0 k1 0 0 0&lt;BR /&gt;
	&amp;nbsp;k0 0 0 0 0&lt;/P&gt;

&lt;P&gt;&amp;nbsp;Filtering with these kernels is much slower than single row or column filtering.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;How can I boost up the speed for filtering with single width diagonal kernels?&lt;BR /&gt;
	&amp;nbsp;Any good idea?&lt;/P&gt;

&lt;P&gt;&amp;nbsp;Thanks &amp;amp; regards.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;Dongkyu.&lt;/P&gt;</description>
      <pubDate>Fri, 10 Jul 2015 10:06:49 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Filter-with-single-diagonal-kernel/m-p/1006269#M23205</guid>
      <dc:creator>Dongkyu</dc:creator>
      <dc:date>2015-07-10T10:06:49Z</dc:date>
    </item>
    <item>
      <title>Hello Dongkyu,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Filter-with-single-diagonal-kernel/m-p/1006270#M23206</link>
      <description>&lt;P&gt;Hello Dongkyu,&lt;/P&gt;

&lt;P&gt;It is impossible to support special optimizations for all possible kinds of kernels with some distribution of zeroes. For you particular case I see at least&amp;nbsp;3 solutions: (1) rotate image, then perform filtering with row or column filter, then rotate it back (guess it will be slower than direct&amp;nbsp;filtering with 2D kernel); (2) - try to use the simple C-loop and Intel compiler - it has very good vectorizer and can generate you very fast code; (3) use roi.width buffer&amp;nbsp;and several IPP function calls in a loop:&lt;/P&gt;

&lt;P&gt;ippsMulC_32f(row0,k0,dst,roi.width);&lt;/P&gt;

&lt;P&gt;ippsMulC_32f(row1+1,k1,buffer,roi.width);&lt;/P&gt;

&lt;P&gt;ippsAdd_32f(dst,buffer,dst,roi.width);&lt;/P&gt;

&lt;P&gt;ippsMulC_32f(row2+2,k2,buffer,roi.width);&lt;/P&gt;

&lt;P&gt;ippsAdd_32f(dst,buffer,dst,roi.width);&lt;/P&gt;

&lt;P&gt;.................. etc.&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Mon, 13 Jul 2015 08:57:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Filter-with-single-diagonal-kernel/m-p/1006270#M23206</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2015-07-13T08:57:00Z</dc:date>
    </item>
    <item>
      <title>PS there is one great</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Filter-with-single-diagonal-kernel/m-p/1006271#M23207</link>
      <description>&lt;P&gt;PS there is one great function for this purpose (I mean case #3):&lt;/P&gt;

&lt;P&gt;IPPAPI(IppStatus, ippsAddProductC_32f,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( const Ipp32f* pSrc, const Ipp32f val, Ipp32f* pSrcDst, int len ))&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 13 Jul 2015 08:59:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Filter-with-single-diagonal-kernel/m-p/1006271#M23207</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2015-07-13T08:59:40Z</dc:date>
    </item>
    <item>
      <title> Hi, Igor</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Filter-with-single-diagonal-kernel/m-p/1006272#M23208</link>
      <description>&lt;P&gt;&amp;nbsp;Hi, Igor&lt;/P&gt;

&lt;P&gt;&amp;nbsp;Thanks for reply.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;I'm gonna try #2.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;Regards, Dongkyu.&lt;/P&gt;</description>
      <pubDate>Mon, 13 Jul 2015 09:18:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Filter-with-single-diagonal-kernel/m-p/1006272#M23208</guid>
      <dc:creator>Dongkyu</dc:creator>
      <dc:date>2015-07-13T09:18:37Z</dc:date>
    </item>
  </channel>
</rss>

