<?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 Leo. in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/AccessViolation-exception-in-using-ippiErodeBorder-8u-C1R-and/m-p/1127850#M25705</link>
    <description>&lt;P&gt;Hi Leo.&lt;/P&gt;

&lt;P&gt;Looks like that output image in your code is bigger than input. Input 416x416 and output is 419x419. It is non-standart situation but it is not a problem because you provide correct '&lt;SPAN style="font-size: 13.008px;"&gt;imageSize' to function&lt;/SPAN&gt;. But step&amp;nbsp; '&lt;SPAN style="font-size: 12px;"&gt;imageSizeWithBorder.width * sizeof(float)' is too big that causes crash. Please mul by sizeof(Ipp8u) or malloc 4x time more image.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px;"&gt;I've redesigned your code with correct steps and pSpec.&lt;/SPAN&gt;&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;#include "ipp.h"
#include "ippcv.h"
void main()
{
    int iSpecSize;
    int iBufferSize;
    IppiSize imageSize = { 416, 416 };
    IppiSize kernelSize = { 3, 3 };
    IppStatus ippResult;
    ippResult = ippiMorphologyBorderGetSize_8u_C1R(imageSize, kernelSize, &amp;amp;iSpecSize, &amp;amp;iBufferSize);
    int nBytesPerImageLine = 416;
    int offsetBinaryMaskWithBorder = 420;
    IppiSize imageSizeWithBorder = { 419, 419 };
    Ipp8u pKernelMask[3 * 3] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
    Ipp8u* pImageAsBinaryMask           ;
    Ipp8u* pImageAsBinaryMaskWithBorder ;
    pImageAsBinaryMask = ippsMalloc_8u(416 * 416);
    pImageAsBinaryMaskWithBorder = ippsMalloc_8u(419 * 419);

    IppiMorphState* pSpec = (IppiMorphState*)ippsMalloc_8u(iSpecSize);
    Ipp8u* pBuffer        = ippsMalloc_8u(iBufferSize);
    ippResult = ippiMorphologyBorderInit_8u_C1R(imageSize, pKernelMask, kernelSize, pSpec, pBuffer);

    ippResult = ippiErodeBorder_8u_C1R(pImageAsBinaryMask, nBytesPerImageLine,
        pImageAsBinaryMaskWithBorder + offsetBinaryMaskWithBorder, imageSizeWithBorder.width * sizeof(Ipp8u),
        imageSize, ippBorderRepl, 0, pSpec, pBuffer);
    ippResult = ippiDilateBorder_8u_C1R(pImageAsBinaryMask, nBytesPerImageLine, pImageAsBinaryMaskWithBorder + offsetBinaryMaskWithBorder, imageSizeWithBorder.width * sizeof(Ipp8u),
        imageSize, ippBorderRepl, 0, pSpec, pBuffer);
    ippsFree(pBuffer);
    ippsFree(pSpec);
}
&lt;/PRE&gt;

&lt;P&gt;Thanks for using IPP library.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 22 May 2018 17:45:45 GMT</pubDate>
    <dc:creator>Andrey_B_Intel</dc:creator>
    <dc:date>2018-05-22T17:45:45Z</dc:date>
    <item>
      <title>AccessViolation exception in using ippiErodeBorder_8u_C1R and ippiDilateBorder_8u_C1R</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/AccessViolation-exception-in-using-ippiErodeBorder-8u-C1R-and/m-p/1127849#M25704</link>
      <description>&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;Hi,&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;I have started using ippiErodeBorder_8u_C1R and ippiDilateBorder_8u_C1R and I call these APIs in a loop ,however I get access violation exception during iteration.IPP2018 version is used here.Below is the code,can someone please point out the error?&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;The exception comes from ippiErodeBorder_8u_C1R&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int iSpecSize;&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int iBufferSize;&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imageSize = 416 x 416&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; kernelSize = 3x3&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ippResult = ippcv_l.ippiMorphologyBorderGetSize_8u_C1R(imageSize, kernelSize, &amp;amp;iSpecSize, &amp;amp;iBufferSize);&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; iSpecSize = 137&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; iBufferSize = 2640&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nBytesPerImageLine = 1664&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; offsetBinaryMaskWithBorder = 420&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imageSizeWithBorder.width = 419&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pKernelMask = byte[3,3] all filled with 1&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;byte[,] pImageAsBinaryMask = new byte[416,416];&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;byte[,] pImageAsBinaryMaskWithBorder = new byte[419,419];&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ipcvMorphState* pSpec = (ipcvMorphState*)ipps.ippsMalloc_8u(iSpecSize);&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; byte* pBuffer = ipps.ippsMalloc_8u(iBufferSize);&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ippResult = ippcv_l.ippiMorphologyBorderInit_8u_C1R(imageSize, pKernelMask, kernelSize, pSpec, pBuffer);&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Apply erosion filter&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ippResult = ippcv_l.ippiErodeBorder_8u_C1R(pImageAsBinaryMask, nBytesPerImageLine, pImageAsBinaryMaskWithBorder + offsetBinaryMaskWithBorder,imageSizeWithBorder.width * sizeof(float),&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imageSize,IppiBorderType.ippBorderRepl, 0, pSpec, pBuffer);&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ippResult = ippcv_l.ippiDilateBorder_8u_C1R(pImageAsBinaryMask, nBytesPerImageLine, pImageAsBinaryMaskWithBorder + offsetBinaryMaskWithBorder, imageSizeWithBorder.width * sizeof(float),&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; imageSize, IppiBorderType.ippBorderRepl, 0, pSpec, pBuffer);&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ipps.ippsFree(pBuffer);&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ipps.ippsFree(pSpec);&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;Regards,&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;DIV&gt;&lt;SPAN style="font-size: 13.008px;"&gt;Leo&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 21 May 2018 18:26:05 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/AccessViolation-exception-in-using-ippiErodeBorder-8u-C1R-and/m-p/1127849#M25704</guid>
      <dc:creator>MM_Leo</dc:creator>
      <dc:date>2018-05-21T18:26:05Z</dc:date>
    </item>
    <item>
      <title>Hi Leo.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/AccessViolation-exception-in-using-ippiErodeBorder-8u-C1R-and/m-p/1127850#M25705</link>
      <description>&lt;P&gt;Hi Leo.&lt;/P&gt;

&lt;P&gt;Looks like that output image in your code is bigger than input. Input 416x416 and output is 419x419. It is non-standart situation but it is not a problem because you provide correct '&lt;SPAN style="font-size: 13.008px;"&gt;imageSize' to function&lt;/SPAN&gt;. But step&amp;nbsp; '&lt;SPAN style="font-size: 12px;"&gt;imageSizeWithBorder.width * sizeof(float)' is too big that causes crash. Please mul by sizeof(Ipp8u) or malloc 4x time more image.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 12px;"&gt;I've redesigned your code with correct steps and pSpec.&lt;/SPAN&gt;&lt;/P&gt;

&lt;PRE class="brush:cpp;"&gt;#include "ipp.h"
#include "ippcv.h"
void main()
{
    int iSpecSize;
    int iBufferSize;
    IppiSize imageSize = { 416, 416 };
    IppiSize kernelSize = { 3, 3 };
    IppStatus ippResult;
    ippResult = ippiMorphologyBorderGetSize_8u_C1R(imageSize, kernelSize, &amp;amp;iSpecSize, &amp;amp;iBufferSize);
    int nBytesPerImageLine = 416;
    int offsetBinaryMaskWithBorder = 420;
    IppiSize imageSizeWithBorder = { 419, 419 };
    Ipp8u pKernelMask[3 * 3] = { 1, 1, 1, 1, 1, 1, 1, 1, 1 };
    Ipp8u* pImageAsBinaryMask           ;
    Ipp8u* pImageAsBinaryMaskWithBorder ;
    pImageAsBinaryMask = ippsMalloc_8u(416 * 416);
    pImageAsBinaryMaskWithBorder = ippsMalloc_8u(419 * 419);

    IppiMorphState* pSpec = (IppiMorphState*)ippsMalloc_8u(iSpecSize);
    Ipp8u* pBuffer        = ippsMalloc_8u(iBufferSize);
    ippResult = ippiMorphologyBorderInit_8u_C1R(imageSize, pKernelMask, kernelSize, pSpec, pBuffer);

    ippResult = ippiErodeBorder_8u_C1R(pImageAsBinaryMask, nBytesPerImageLine,
        pImageAsBinaryMaskWithBorder + offsetBinaryMaskWithBorder, imageSizeWithBorder.width * sizeof(Ipp8u),
        imageSize, ippBorderRepl, 0, pSpec, pBuffer);
    ippResult = ippiDilateBorder_8u_C1R(pImageAsBinaryMask, nBytesPerImageLine, pImageAsBinaryMaskWithBorder + offsetBinaryMaskWithBorder, imageSizeWithBorder.width * sizeof(Ipp8u),
        imageSize, ippBorderRepl, 0, pSpec, pBuffer);
    ippsFree(pBuffer);
    ippsFree(pSpec);
}
&lt;/PRE&gt;

&lt;P&gt;Thanks for using IPP library.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 22 May 2018 17:45:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/AccessViolation-exception-in-using-ippiErodeBorder-8u-C1R-and/m-p/1127850#M25705</guid>
      <dc:creator>Andrey_B_Intel</dc:creator>
      <dc:date>2018-05-22T17:45:45Z</dc:date>
    </item>
    <item>
      <title>Thanks ,,that worked.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/AccessViolation-exception-in-using-ippiErodeBorder-8u-C1R-and/m-p/1127851#M25706</link>
      <description>Thanks ,that worked.

Regards,
Leo</description>
      <pubDate>Wed, 23 May 2018 02:35:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/AccessViolation-exception-in-using-ippiErodeBorder-8u-C1R-and/m-p/1127851#M25706</guid>
      <dc:creator>MM_Leo</dc:creator>
      <dc:date>2018-05-23T02:35:00Z</dc:date>
    </item>
  </channel>
</rss>

