<?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 Hi, in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/ipp-2017-Big-Images-C/m-p/1080160#M24712</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;BLOCKQUOTE&gt;
	&lt;P&gt;Using images of ~8gb or more&lt;/P&gt;

	&lt;P&gt;1. Copy functions Should work with those sizes ?&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;

&lt;P&gt;It depends on image parameters. If your image width, height and step does not exceed IPP_MAX_32S, then function should work.&lt;/P&gt;

&lt;BLOCKQUOTE&gt;
	&lt;P&gt;2. ErodeBorder&amp;nbsp;&lt;BR /&gt;
		&amp;nbsp;&amp;nbsp; &amp;nbsp;since there is no "In Place" , should i allocate additional temp buffer ?&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;

&lt;P&gt;Yes, for functions without "I" suffix, you should use temporary buffer if you want to emulate in-place behavior.&lt;/P&gt;

&lt;BLOCKQUOTE&gt;
	&lt;P&gt;3. ErodeBorder few iterations&amp;nbsp;&lt;BR /&gt;
		&amp;nbsp; &amp;nbsp; possible to get an example ?&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;

&lt;P&gt;I don't have C# on my hands but in C++ it could look like this:&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;#include "ippcv.h"
Status opMorphology_ipp(Image &amp;amp;src, Image &amp;amp;dst)
{
    src.ConvertColor(CF_GRAY);
    dst = src;
    dst.Alloc();

    Ipp8u   *pSrc      = (Ipp8u*)src.ptr();
    int      srcStep   = src.m_step;
    Ipp8u   *pDst      = (Ipp8u*)dst.ptr();
    int      dstStep   = dst.m_step;
    Ipp8u   *pInter    = NULL;
    int      interStep = 0;
    IppiSize size      = {src.m_size.width, src.m_size.height};
    Ipp8u    mask[]    = {0, 1, 0,
                          1, 1, 1,
                          0, 1, 0};
    IppiSize maskSize  = {3, 3};
    int iterations     = 4;

    IppStatus       status;
    IppiMorphState *pState     = NULL;
    int             stateSize  = 0;
    Ipp8u          *pBuffer    = NULL;
    int             bufferSize = 0;

    status = ippiMorphologyBorderGetSize_8u_C1R(size, maskSize, &amp;amp;stateSize, &amp;amp;bufferSize);
    if(status &amp;lt; 0)
        return STS_ERR_FAILED;

    pState = (IppiMorphState*)ippMalloc(stateSize);
    if(!pState)
        return STS_ERR_FAILED;

    pBuffer = (Ipp8u*)ippMalloc(bufferSize);
    if(bufferSize &amp;amp;&amp;amp; !pBuffer)
        return STS_ERR_FAILED;

    status = ippiMorphologyBorderInit_8u_C1R(size, mask, maskSize, pState, pBuffer);
    if(status &amp;lt; 0)
        return STS_ERR_FAILED;

    if(iterations &amp;gt; 1)
        pInter = ippiMalloc_8u_C1(size.width, size.height, &amp;amp;interStep);

    status = ippiErodeBorder_8u_C1R(pSrc, srcStep, pDst, dstStep, size, ippBorderRepl, 0, pState, pBuffer);
    if(status &amp;lt; 0)
        return STS_ERR_FAILED;

    for(int i = 1; i &amp;lt; iterations; i++)
    {
        Ipp8u *pInpl1;
        int    step1;
        Ipp8u *pInpl2;
        int    step2;
        if(i%2)
        {
            pInpl1 = pDst;
            step1  = dstStep;
            pInpl2 = pInter;
            step2  = interStep;
        }
        else
        {
            pInpl1 = pInter;
            step1  = interStep;
            pInpl2 = pDst;
            step2  = dstStep;
        }

        status = ippiErodeBorder_8u_C1R(pInpl1, step1, pInpl2, step2, size, ippBorderRepl, 0, pState, pBuffer);
        if(status &amp;lt; 0)
            return STS_ERR_FAILED;
    }
    if(!(iterations%2))
    {
        status = ippiCopy_8u_C1R(pInter, interStep, pDst, dstStep, size);
        if(status &amp;lt; 0)
            return STS_ERR_FAILED;
    }

    if(pInter)
        ippiFree(pInter);

    return STS_OK;
}&lt;/PRE&gt;</description>
    <pubDate>Wed, 01 Jun 2016 07:31:40 GMT</pubDate>
    <dc:creator>Pavel_V_Intel</dc:creator>
    <dc:date>2016-06-01T07:31:40Z</dc:date>
    <item>
      <title>ipp 2017 Big Images - C#</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ipp-2017-Big-Images-C/m-p/1080159#M24711</link>
      <description>&lt;P&gt;Using images of ~8gb or more&lt;/P&gt;

&lt;P&gt;1. Copy functions Should work with those sizes ?&lt;/P&gt;

&lt;P&gt;2. ErodeBorder&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;since there is no "In Place" , should i allocate additional temp buffer ?&lt;/P&gt;

&lt;P&gt;3. ErodeBorder few iterations&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; possible to get an example ?&lt;/P&gt;</description>
      <pubDate>Tue, 31 May 2016 09:16:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ipp-2017-Big-Images-C/m-p/1080159#M24711</guid>
      <dc:creator>Roni_F_</dc:creator>
      <dc:date>2016-05-31T09:16:10Z</dc:date>
    </item>
    <item>
      <title>Hi,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ipp-2017-Big-Images-C/m-p/1080160#M24712</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;BLOCKQUOTE&gt;
	&lt;P&gt;Using images of ~8gb or more&lt;/P&gt;

	&lt;P&gt;1. Copy functions Should work with those sizes ?&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;

&lt;P&gt;It depends on image parameters. If your image width, height and step does not exceed IPP_MAX_32S, then function should work.&lt;/P&gt;

&lt;BLOCKQUOTE&gt;
	&lt;P&gt;2. ErodeBorder&amp;nbsp;&lt;BR /&gt;
		&amp;nbsp;&amp;nbsp; &amp;nbsp;since there is no "In Place" , should i allocate additional temp buffer ?&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;

&lt;P&gt;Yes, for functions without "I" suffix, you should use temporary buffer if you want to emulate in-place behavior.&lt;/P&gt;

&lt;BLOCKQUOTE&gt;
	&lt;P&gt;3. ErodeBorder few iterations&amp;nbsp;&lt;BR /&gt;
		&amp;nbsp; &amp;nbsp; possible to get an example ?&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;

&lt;P&gt;I don't have C# on my hands but in C++ it could look like this:&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;#include "ippcv.h"
Status opMorphology_ipp(Image &amp;amp;src, Image &amp;amp;dst)
{
    src.ConvertColor(CF_GRAY);
    dst = src;
    dst.Alloc();

    Ipp8u   *pSrc      = (Ipp8u*)src.ptr();
    int      srcStep   = src.m_step;
    Ipp8u   *pDst      = (Ipp8u*)dst.ptr();
    int      dstStep   = dst.m_step;
    Ipp8u   *pInter    = NULL;
    int      interStep = 0;
    IppiSize size      = {src.m_size.width, src.m_size.height};
    Ipp8u    mask[]    = {0, 1, 0,
                          1, 1, 1,
                          0, 1, 0};
    IppiSize maskSize  = {3, 3};
    int iterations     = 4;

    IppStatus       status;
    IppiMorphState *pState     = NULL;
    int             stateSize  = 0;
    Ipp8u          *pBuffer    = NULL;
    int             bufferSize = 0;

    status = ippiMorphologyBorderGetSize_8u_C1R(size, maskSize, &amp;amp;stateSize, &amp;amp;bufferSize);
    if(status &amp;lt; 0)
        return STS_ERR_FAILED;

    pState = (IppiMorphState*)ippMalloc(stateSize);
    if(!pState)
        return STS_ERR_FAILED;

    pBuffer = (Ipp8u*)ippMalloc(bufferSize);
    if(bufferSize &amp;amp;&amp;amp; !pBuffer)
        return STS_ERR_FAILED;

    status = ippiMorphologyBorderInit_8u_C1R(size, mask, maskSize, pState, pBuffer);
    if(status &amp;lt; 0)
        return STS_ERR_FAILED;

    if(iterations &amp;gt; 1)
        pInter = ippiMalloc_8u_C1(size.width, size.height, &amp;amp;interStep);

    status = ippiErodeBorder_8u_C1R(pSrc, srcStep, pDst, dstStep, size, ippBorderRepl, 0, pState, pBuffer);
    if(status &amp;lt; 0)
        return STS_ERR_FAILED;

    for(int i = 1; i &amp;lt; iterations; i++)
    {
        Ipp8u *pInpl1;
        int    step1;
        Ipp8u *pInpl2;
        int    step2;
        if(i%2)
        {
            pInpl1 = pDst;
            step1  = dstStep;
            pInpl2 = pInter;
            step2  = interStep;
        }
        else
        {
            pInpl1 = pInter;
            step1  = interStep;
            pInpl2 = pDst;
            step2  = dstStep;
        }

        status = ippiErodeBorder_8u_C1R(pInpl1, step1, pInpl2, step2, size, ippBorderRepl, 0, pState, pBuffer);
        if(status &amp;lt; 0)
            return STS_ERR_FAILED;
    }
    if(!(iterations%2))
    {
        status = ippiCopy_8u_C1R(pInter, interStep, pDst, dstStep, size);
        if(status &amp;lt; 0)
            return STS_ERR_FAILED;
    }

    if(pInter)
        ippiFree(pInter);

    return STS_OK;
}&lt;/PRE&gt;</description>
      <pubDate>Wed, 01 Jun 2016 07:31:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ipp-2017-Big-Images-C/m-p/1080160#M24712</guid>
      <dc:creator>Pavel_V_Intel</dc:creator>
      <dc:date>2016-06-01T07:31:40Z</dc:date>
    </item>
  </channel>
</rss>

