<?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 (No subject) in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000364#M23079</link>
    <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="filter.jpg"&gt;&lt;img src="https://community.intel.com/t5/image/serverpage/image-id/7667i569D98406B193537/image-size/large?v=v2&amp;amp;px=999&amp;amp;whitelist-exif-data=Orientation%2CResolution%2COriginalDefaultFinalSize%2CCopyright" role="button" title="filter.jpg" alt="filter.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 08 Jul 2015 15:36:44 GMT</pubDate>
    <dc:creator>Igor_A_Intel</dc:creator>
    <dc:date>2015-07-08T15:36:44Z</dc:date>
    <item>
      <title>Why ippiFilter should be deprecated?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000356#M23071</link>
      <description>&lt;P&gt;&amp;nbsp;Hello,&lt;/P&gt;

&lt;P&gt;&amp;nbsp;I'm a ten-year user of the IPP.&lt;BR /&gt;
	&amp;nbsp;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;I've been using ippiFilter in many parts of my codes. And&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;I found that the function is deprecated.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp;The manual recommends that I should use ippiFilterBorder instead.&lt;BR /&gt;
	&amp;nbsp;But I wonder why ippiFilter is obsolete.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;I think that ippiFilterBorder has the function of ippiFilter with some border options.&lt;BR /&gt;
	&amp;nbsp;But there are many cases that border options don't be needed or a&amp;nbsp;user may want to copy borders by oneself.&lt;BR /&gt;
	&amp;nbsp;So, I think that ippiFilter is still needed in these cases and should not be replaced with&amp;nbsp;ippiFilterBorder.&lt;BR /&gt;
	&amp;nbsp;ippiFilter is very important base function in the image processing as you know.&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp;Do I use ippiFilterBorder even when I don't need arguments like &lt;EM&gt;border&lt;/EM&gt;, &lt;EM&gt;borderValue&lt;/EM&gt;, &lt;EM&gt;pSpec&lt;/EM&gt; and &lt;EM&gt;pBuffer&lt;/EM&gt;?&lt;/SPAN&gt;&lt;BR /&gt;
	&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp;Should I copy borders even if I filter a small inner ROI which don't need to extend borders?&lt;BR /&gt;
	&amp;nbsp;I don't want to add allocate and initialize functions like ippiFilterBorderGetSize, ippsMalloc and ippiFilterBorderInit, either.&lt;BR /&gt;
	&amp;nbsp;It doesn't have any benefit even for speed issue.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;I hope that ippiFilter is not deprecated even for backward compatibility.&lt;BR /&gt;
	&amp;nbsp;ippiFilterRow and ippiFilterColumn functions are not deprecated, either.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;Thank &amp;amp; regards,&lt;/P&gt;

&lt;P&gt;&amp;nbsp;Dongkyu&lt;/P&gt;</description>
      <pubDate>Mon, 06 Jul 2015 15:05:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000356#M23071</guid>
      <dc:creator>Dongkyu</dc:creator>
      <dc:date>2015-07-06T15:05:00Z</dc:date>
    </item>
    <item>
      <title>Hi Dongkyu,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000357#M23072</link>
      <description>&lt;P&gt;Hi Dongkyu,&lt;/P&gt;

&lt;P&gt;All API changes in IPP have been done in order to make application level threading of pipelines of IPP functions more effective, to remove internal memory allocations and make filtering operation "non reducing" (it's known that CopyReplicate/&amp;lt;...&amp;gt;Border functionality significantly affects performance), to make possible processing of huge images (by slices), etc. ippiFilter had implicit malloc(). For FilterBorder you should do it explicitly - therefore you can reuse this memory buffer&amp;nbsp;for other needs and make this buffer "warm".&amp;nbsp;Just set IppiBorderType border to ippBorderInMem and you'll have the same function behavior as ippiFilter_xx has.&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Mon, 06 Jul 2015 15:29:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000357#M23072</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2015-07-06T15:29:39Z</dc:date>
    </item>
    <item>
      <title>  Igor, thanks for reply.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000358#M23073</link>
      <description>&lt;P&gt;&amp;nbsp; Igor, thanks for reply.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;But I don't know exactly how I can&amp;nbsp;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;reuse this memory buffer&amp;nbsp;for other needs and make this buffer "warm" as you said.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;For example, I'm trying to filter an image repeatedly with 8 directional and 5 varying kernel sizes.(3x3, 5x5, 9x9, 13x13, 17x17)&lt;BR /&gt;
	&amp;nbsp;Please teach me how to make the max speed using FilterBorder.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;I've tried to compare FilterBorder and Filter.&lt;BR /&gt;
	&amp;nbsp;Sample image is 256x256 size and 16-bit.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;Case1: using FilterBorder&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp; &amp;nbsp;IppiSize kernelSizeMax = { 17,17 };&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;int specSize, bufferSize;&lt;BR /&gt;
	&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;IppiFilterBorderSpec* pSpec;&lt;/SPAN&gt;&lt;BR /&gt;
	&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;Ipp8u* pBuffer;&lt;/SPAN&gt;&lt;BR /&gt;
	&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;IppStatus status;&lt;/SPAN&gt;&lt;BR /&gt;
	&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;Ipp32f &amp;nbsp; borderValue = 0;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;status = ippiFilterBorderGetSize(kernelSizeMax, roiSize, ipp32f, ipp32f, 1, &amp;amp;specSize, &amp;amp;bufferSize));&lt;/SPAN&gt;&lt;BR /&gt;
	&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;pSpec = (IppiFilterBorderSpec*)ippsMalloc_8u(specSize);&lt;/SPAN&gt;&lt;BR /&gt;
	&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;pBuffer = ippsMalloc_8u(bufferSize);&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;for (int d = 0; d &amp;lt; 8; ++d)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;for (int n = 0; n &amp;lt; 5; ++n)&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;status = ippiFilterBorderInit_32f(kernel&lt;D&gt;&lt;N&gt;, kernelSize&lt;N&gt;, ipp32f, 1, ippRndZero, pSpec);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;status = ippiFilterBorder_32f_C1R(src, srcStep, dst&lt;D&gt;&lt;N&gt;, dstStep,&amp;nbsp;roiSize, ippBorderConst, &amp;amp;borderValue, pSpec, pBuffer);&lt;BR /&gt;
	&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;
	&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;&amp;nbsp; &amp;nbsp;}&lt;/SPAN&gt;&lt;/N&gt;&lt;/D&gt;&lt;/N&gt;&lt;/N&gt;&lt;/D&gt;&lt;/P&gt;

&lt;P style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;&amp;nbsp; &amp;nbsp;ippsFree(pSpec);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;ippsFree(pBuffer);&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;

&lt;DIV&gt;&amp;nbsp; &amp;nbsp;Case2: using Filter&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;&amp;nbsp;IppiSize kernelSizeMax = { 17,17 };&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;&amp;nbsp;&amp;nbsp; int&amp;nbsp;hkernelMax = 9;&lt;/SPAN&gt;

	&lt;P style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;IppStatus status;&lt;/SPAN&gt;&lt;/P&gt;

	&lt;P style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;status =&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt; ippiCopyConstBorder_32f_C1R(src, srcStep, srcRoi,&amp;nbsp;srcExt, srcExtStep, srcExtRoi, hkernelMax, hkernelMax, 0);&lt;/SPAN&gt;&lt;/P&gt;

	&lt;P style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;for (int d = 0; d &amp;lt; 8; ++d)&lt;BR /&gt;
		&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;
		&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;for (int n = 0; n &amp;lt; 5; ++n)&lt;BR /&gt;
		&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;BR /&gt;
		&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IppiPoint &amp;nbsp; anchor = { &lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;kernelSize&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;/2, &lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;kernelSize&lt;N&gt;&lt;/N&gt;&lt;/SPAN&gt;/2 };&lt;BR /&gt;
		&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;status = ippiFilter_32f_C1R(srcRoiLTPtr, &lt;/SPAN&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;srcExtStep&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;dst&lt;D&gt;&lt;N&gt;, dstStep, roiSize, kernel&lt;D&gt;&lt;N&gt;, kernelSize&lt;N&gt;, anchor);&lt;/N&gt;&lt;/N&gt;&lt;/D&gt;&lt;/N&gt;&lt;/D&gt;&lt;/SPAN&gt;&lt;BR /&gt;
		&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;
		&lt;SPAN style="font-size: 13.0080003738403px; line-height: 19.5120010375977px;"&gt;&amp;nbsp; &amp;nbsp;}&lt;/SPAN&gt;&lt;/P&gt;

	&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;
		&amp;nbsp; Result:&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp;Case 2: using Filter was about 30% faster than Case 1: using FilterBorder.&lt;/DIV&gt;

	&lt;DIV&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp; &amp;nbsp;How can I speed up in Case 1 like Case 2?&lt;/SPAN&gt;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp;&amp;nbsp; One more thing, FilterBorder does not have anchor parameter. I need it. My directional kernels don't have the center anchor point.&lt;BR /&gt;
		&amp;nbsp;&amp;nbsp; How can I set the anchor point?&lt;/SPAN&gt;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp;&amp;nbsp; Thanks &amp;amp; regards,&lt;/SPAN&gt;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp; &amp;nbsp;Dongkyu.&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Tue, 07 Jul 2015 07:32:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000358#M23073</guid>
      <dc:creator>Dongkyu</dc:creator>
      <dc:date>2015-07-07T07:32:00Z</dc:date>
    </item>
    <item>
      <title>Hi Dongkyu,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000359#M23074</link>
      <description>&lt;P&gt;Hi Dongkyu,&lt;/P&gt;

&lt;P&gt;You provided very synthetic case with 2 unequal approaches. Border processing is too expensive operation. If you compare performance of one call to CopyConstBorder+Filter and one call to FilterBorder(...ippBorderConst...) - you'll see that the second call is visibly faster. In your case, when the same const border is used in a filtering loop - you should create border only once (as for "old" Filter function) and use ippBorderInMem mode. The Anchor parameter is responsible for pSrc shift only - therefore you always can simulate it by pSrc parameter shifting:&lt;/P&gt;

&lt;P&gt;ippiFilter internals for applying Anchor parameter: &amp;nbsp;&amp;nbsp;&amp;nbsp; strtSrc = (Ipp8u*)pSrc - ( kHeight - anchor.y - 1 ) * srcStep - ( kWidth - anchor.x - 1 );&lt;/P&gt;

&lt;P&gt;regards, Igor.&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Jul 2015 08:08:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000359#M23074</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2015-07-07T08:08:54Z</dc:date>
    </item>
    <item>
      <title> Hi, Igor.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000360#M23075</link>
      <description>&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;Hi, Igor.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;Thanks for reply.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;I understood for the speed issue. I'm gonna use copyBorder and&amp;nbsp;ippBorderInMem option.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;But for the anchor parameter I don't know exactly what you said.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;I've done a simple test by source shift as you said, but I didn't understand.&lt;BR /&gt;
	&amp;nbsp;But I couldn't simulate it by pSrc parameter shifting.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;Show me a real example for simulating anchor which is not the center of a kernel, please.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;Thanks &amp;amp; regards.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;Dongkyu.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jul 2015 06:54:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000360#M23075</guid>
      <dc:creator>Dongkyu</dc:creator>
      <dc:date>2015-07-08T06:54:00Z</dc:date>
    </item>
    <item>
      <title>Hello,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000361#M23076</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;

&lt;P&gt;b = border value (if const than all b[X,X] values are equal, if replicate – than b[X,Y]==x[X,Y])&lt;/P&gt;

&lt;P&gt;x[X,Y] = ROI, roiSize = {N,M}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;b00 b00 b00 b01 b02 b03 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P&gt;b00 b00 b00 b01 b02 b03 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P&gt;b00 b00 x00 x01 x02 x03 x04 x05 x06 x07 … x0N&lt;/P&gt;

&lt;P&gt;b10 b10 x10 x11 x12 x13 x14 x15 x16 x17 … x1N&lt;/P&gt;

&lt;P&gt;b20 b20 x20 x21 x22 x23 x24 x25 x26 x27 … x2N&lt;/P&gt;

&lt;P&gt;b30 b30 x30 x31 x32 x33 x34 x35 x36 x37 … x3N&lt;/P&gt;

&lt;P&gt;b40 b40 x40 x41 x42 x43 x44 x45 x46 x47 … x4N&lt;/P&gt;

&lt;P&gt;b50 b50 x50 x51 x52 x53 x54 x55 x56 x57 … x5N&lt;/P&gt;

&lt;P&gt;…………………………………………………………………………………………………………………….&lt;/P&gt;

&lt;P&gt;bM0 bM0 xM0 xM1 xM2 xM3 xM4 xM5 xM6 xM7 … xMN&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;k[X,Y] = kernel, size = {5,5}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;k00 k01 k02 k03 k04&lt;/P&gt;

&lt;P&gt;k10 k11 k12 k13 k14&lt;/P&gt;

&lt;P&gt;k20 k21&lt;STRONG&gt; k22&lt;/STRONG&gt; k23 k24&lt;/P&gt;

&lt;P&gt;k30 k31 k32 k33 k34&lt;/P&gt;

&lt;P&gt;k40 k41 k42 k43 k44&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;if anchor = {2,2} than pSrc should point to x00:&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;k00 k01 k02 k03 k04 b03 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P&gt;k10 k11 k12 k13 k14 b03 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P&gt;k20 k21 &lt;STRONG&gt;k22&lt;/STRONG&gt; k23 k24 x03 x04 x05 x06 x07 … x0N&lt;/P&gt;

&lt;P&gt;k30 k31 k32 k33 k34 x13 x14 x15 x16 x17 … x1N&lt;/P&gt;

&lt;P&gt;k40 k41 k42 k43 k44 x23 x24 x25 x26 x27 … x2N&lt;/P&gt;

&lt;P&gt;b30 b30 x30 x31 x32 x33 x34 x35 x36 x37 … x3N&lt;/P&gt;

&lt;P&gt;b40 b40 x40 x41 x42 x43 x44 x45 x46 x47 … x4N&lt;/P&gt;

&lt;P&gt;b50 b50 x50 x51 x52 x53 x54 x55 x56 x57 … x5N&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;if anchor = {1,1} than pSrc should point to x{1,1}: (a point where k[2,2] is applied)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;b00 b00 b00 b01 b02 b03 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P&gt;b00 k00 k01 k02 k03 k04 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P&gt;b00 k10 k11 k12 k13 k14 x04 x05 x06 x07 … x0N&lt;/P&gt;

&lt;P&gt;b10 k20 k21 &lt;STRONG&gt;k22&lt;/STRONG&gt; k23 k24 x14 x15 x16 x17 … x1N&lt;/P&gt;

&lt;P&gt;b20 k30 k31 k32 k33 k34 x24 x25 x26 x27 … x2N&lt;/P&gt;

&lt;P&gt;b30 k40 k41 k42 k43 k44 x34 x35 x36 x37 … x3N&lt;/P&gt;

&lt;P&gt;b40 b40 x40 x41 x42 x43 x44 x45 x46 x47 … x4N&lt;/P&gt;

&lt;P&gt;b50 b50 x50 x51 x52 x53 x54 x55 x56 x57 … x5N&lt;/P&gt;

&lt;P&gt;…………………………………………………………………………………………………………………….&lt;/P&gt;

&lt;P&gt;bM0 bM0 xM0 xM1 xM2 xM3 xM4 xM5 xM6 xM7 … xMN&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;if anchor = {3,3} than pSrc should point to b00 = x{-1,-1}: (also to the point where k[2,2] is applied), and it’s visible that you should provide additional border row and column at the top and at the left for this case (and at the bottom and right – for the previous)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;k00 k01 k02 k03 k04&lt;/P&gt;

&lt;P&gt;k10 k11 k12 k13 k14 b02 b03 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P&gt;k20 k21 &lt;STRONG&gt;k22&lt;/STRONG&gt; k23 k24 b02 b03 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P&gt;k30 k31 k32 k33 k34 x02 x03 x04 x05 x06 x07 … x0N&lt;/P&gt;

&lt;P&gt;k40 k41 k42 k43 k44 x12 x13 x14 x15 x16 x17 … x1N&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b20 b20 x20 x21 x22 x23 x24 x25 x26 x27 … x2N&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b30 b30 x30 x31 x32 x33 x34 x35 x36 x37 … x3N&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b40 b40 x40 x41 x42 x43 x44 x45 x46 x47 … x4N&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b50 b50 x50 x51 x52 x53 x54 x55 x56 x57 … x5N&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; …………………………………………………………………………………………………………………….&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bM0 bM0 xM0 xM1 xM2 xM3 xM4 xM5 xM6 xM7 … xMN&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Note: ippiFilter transposes a kernel before the filtering operation and therefore anchor coordinates have meaning for initial – non-transposed kernel, while ippiFilterBorder doesn’t transpose a kernel (see the manual).&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jul 2015 08:14:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000361#M23076</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2015-07-08T08:14:01Z</dc:date>
    </item>
    <item>
      <title> Hi, Igor.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000362#M23077</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;Hi, Igor.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;I think that your description is different from what I know.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;I agree with you if&amp;nbsp;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;anchor = {2,2}.&lt;/SPAN&gt;&lt;BR /&gt;
	&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;But if anchor point is not the center of a kernel, I think that it's different from the formula which is described about ippiFilter in the manual.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;IMG alt="" src="http://coreware.co.kr/~supos/GUID-90571E81-8618-442E-9090-119E2A686145-low.jpg" /&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;In your example,&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px; line-height: 1.5;"&gt;&amp;nbsp;If anchor = {1,1} then P=3, Q=3 and pSrc should point to x{-1,-1}: (a point where &lt;STRONG&gt;k[1,1] &lt;/STRONG&gt;is applied)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;k44 k43 k42 k41 k40&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;k34 k33 k32 k31 k30 b02 b03 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;k24 k23 k22&amp;nbsp;k21 k20 b02 b03 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;k14 k13 k12 &lt;STRONG&gt;k11&lt;/STRONG&gt; k10 x02 x03 x04 x05 x06 x07 … x0N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;k04 k03 k02 k01 k00 x12 x13 x14 x15 x16 x17 … x1N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b20 b20 x20 x21 x22 x23 x24 x25 x26 x27 … x2N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b30 b30 x30 x31 x32 x33 x34 x35 x36 x37 … x3N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b40 b40 x40 x41 x42 x43 x44 x45 x46 x47 … x4N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b50 b50 x50 x51 x52 x53 x54 x55 x56 x57 … x5N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; …………………………………………………………………………………………………………………….&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bM0 bM0 xM0 xM1 xM2 xM3 xM4 xM5 xM6 xM7 … xMN&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&lt;SPAN style="font-size: 12px; line-height: 18px;"&gt;&amp;nbsp;If anchor = {3,3} than P=1,Q=1 and pSrc should point to x{1,1}: (a point where &lt;STRONG&gt;k[3,3]&lt;/STRONG&gt; is applied)&lt;/SPAN&gt;&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;b00 b00 b00 b01 b02 b03 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;b00 k44 k43 k42 k41 k40 b04 b05 b06 b07 … b0N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;b00 k34 &lt;STRONG&gt;k33&lt;/STRONG&gt; k32 k31 k30 x04 x05 x06 x07 … x0N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;b10 k24 k23 k22&amp;nbsp;k21 k20 x14 x15 x16 x17 … x1N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;b20 k14 k13 k12 k11 k10 x24 x25 x26 x27 … x2N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;b30 k04 k03 k02 k01 k00 x34 x35 x36 x37 … x3N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;b40 b40 x40 x41 x42 x43 x44 x45 x46 x47 … x4N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;b50 b50 x50 x51 x52 x53 x54 x55 x56 x57 … x5N&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;…………………………………………………………………………………………………………………….&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;bM0 bM0 xM0 xM1 xM2 xM3 xM4 xM5 xM6 xM7 … xMN&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;Because I use the formula of ippiFilter, kernel coefficients are used in inverse order, I think.&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;But the point that I want to say is that the destination point is the anchor point of a kernel, not always the center of the kernel.&lt;BR /&gt;
	&amp;nbsp;I think that it has different result with that is applied to k22.&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;So, I think the anchor parameter is still needed to FilterBorder function if Filter function is deprecated.&lt;SPAN style="line-height: 1.5;"&gt;&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;What do you think about that?&lt;/SPAN&gt;&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&lt;SPAN style="line-height: 1.5;"&gt;&amp;nbsp;Regards,&lt;/SPAN&gt;&lt;/P&gt;

&lt;P style="font-size: 12px;"&gt;&amp;nbsp;Dongkyu.&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jul 2015 11:46:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000362#M23077</guid>
      <dc:creator>Dongkyu</dc:creator>
      <dc:date>2015-07-08T11:46:00Z</dc:date>
    </item>
    <item>
      <title>Dongkyu,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000363#M23078</link>
      <description>&lt;P&gt;Dongkyu,&lt;/P&gt;

&lt;P&gt;take a look at the "note" from my previous post:&lt;/P&gt;

&lt;P&gt;"Note: ippiFilter transposes a kernel before the filtering operation and therefore anchor coordinates have meaning for initial – non-transposed kernel, while ippiFilterBorder doesn’t transpose a kernel (see the manual)."&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-family: &amp;quot;Calibri&amp;quot;,sans-serif; font-size: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-ansi-language: RU; mso-fareast-language: RU; mso-bidi-language: AR-SA;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600"
 o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
 stroked="f"&gt;
 &lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;
 &lt;v:formulas&gt;
  &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;
  &lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;
  &lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;
  &lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;
  &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;
  &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;
  &lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;
  &lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;
  &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;
  &lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;
  &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;
  &lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;
 &lt;/v:formulas&gt;
 &lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;
 &lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;
&lt;/v:shapetype&gt;&lt;v:shape id="Picture_x0020_18" o:spid="_x0000_i1025" type="#_x0000_t75"
 alt="" style='width:217.8pt;height:250.2pt'&gt;
 &lt;v:imagedata src="file:///C:\Users\iastakh\AppData\Local\Temp\msohtmlclip1\01\clip_image001.jpg"
  o:href="cid:image001.jpg@01D0B9AB.30D36190"&gt;&lt;/v:imagedata&gt;
&lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;IMG width="363" height="417" src="file:/C:/Users/iastakh/AppData/Local/Temp/msohtmlclip1/01/clip_image001.jpg" shapes="Picture_x0020_18" /&gt;&lt;!--[endif]--&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jul 2015 15:29:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000363#M23078</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2015-07-08T15:29:45Z</dc:date>
    </item>
    <item>
      <title>(No subject)</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000364#M23079</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="filter.jpg"&gt;&lt;img src="https://community.intel.com/t5/image/serverpage/image-id/7667i569D98406B193537/image-size/large?v=v2&amp;amp;px=999&amp;amp;whitelist-exif-data=Orientation%2CResolution%2COriginalDefaultFinalSize%2CCopyright" role="button" title="filter.jpg" alt="filter.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Jul 2015 15:36:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000364#M23079</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2015-07-08T15:36:44Z</dc:date>
    </item>
    <item>
      <title> Hi, Igor</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000365#M23080</link>
      <description>&lt;P&gt;&amp;nbsp;Hi, Igor&lt;/P&gt;

&lt;P&gt;&amp;nbsp;I understood by the last picture. I see that pSrc shift you said means the ROI position shift of the src image due to fix the anchor point to the center of a kernel.&lt;BR /&gt;
	&amp;nbsp;I tried to test it with some sample codes and it worked well. Thank you.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;I didn't find out any description about the anchor in FilterBorder page of the ippi manual.&lt;BR /&gt;
	&amp;nbsp;I think that it will be better if the picture and some description about the anchor are added to the manual.&lt;BR /&gt;
	&amp;nbsp;Anyway, thanks again!&lt;/P&gt;

&lt;P&gt;&amp;nbsp;I think that ippiFilter may be replaced with ippiFilterBorder, now.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;Regards, Dongkyu.&lt;/P&gt;</description>
      <pubDate>Fri, 10 Jul 2015 09:34:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Why-ippiFilter-should-be-deprecated/m-p/1000365#M23080</guid>
      <dc:creator>Dongkyu</dc:creator>
      <dc:date>2015-07-10T09:34:00Z</dc:date>
    </item>
  </channel>
</rss>

