<?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 Chao, in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023606#M23580</link>
    <description>&lt;P&gt;Hi Chao,&lt;/P&gt;

&lt;P&gt;thanks for your response, I solved the problem&lt;/P&gt;</description>
    <pubDate>Tue, 12 May 2015 16:53:33 GMT</pubDate>
    <dc:creator>Alexandr_S_1</dc:creator>
    <dc:date>2015-05-12T16:53:33Z</dc:date>
    <item>
      <title>Canny Edge Detector</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023601#M23575</link>
      <description>&lt;P&gt;Hi, I have some problems width canny edge detector using IPP&lt;/P&gt;

&lt;P&gt;I make three steps:&lt;/P&gt;

&lt;P&gt;I have 3-channel image(byte array), that ordered like this RGBRGB...&lt;/P&gt;

&lt;P&gt;The first step is applying grayScale filter.&lt;/P&gt;

&lt;P&gt;The second is calculation gradients dx and dy using IPP vertical and horizontal Sobel filters with border,&amp;nbsp;&lt;/P&gt;

&lt;P&gt;The last step is using ippiCanny&lt;/P&gt;

&lt;P&gt;Code:&lt;/P&gt;

&lt;P&gt;unsigned char * RGBToGrayScaleIpp(unsigned char * src, int width, int height, int channels)&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;IppiSize ROI = {width, height};&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;Ipp8u *GrayScaleImg = new Ipp8u[width * height];&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;ippiRGBToGray_8u_C3C1R(src, width * channels * sizeof(Ipp8u), GrayScaleImg, width * sizeof(Ipp8u), ROI);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;return GrayScaleImg;&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;extern "C" __declspec(dllexport) unsigned char* __stdcall Canny(unsigned char * img, int channels, int width, int height)&lt;BR /&gt;
	{&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Ipp8u *GrayScaleImg = RGBToGrayScaleIpp(img, width, height, channels);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;IppiSize roiSize = {width - 1, height - 1};&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int horizBufferSize, vertBufferSize;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;IppiMaskSize maskSize = ippMskSize3x3;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;ippiFilterSobelVertGetBufferSize_8u16s_C1R(roiSize, maskSize, &amp;amp;vertBufferSize);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; ippiFilterSobelHorizGetBufferSize_8u16s_C1R(roiSize, maskSize, &amp;amp;horizBufferSize);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Ipp8u *horizBuffer = ippsMalloc_8u(horizBufferSize);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;Ipp8u *vertBuffer = ippsMalloc_8u(vertBufferSize);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Ipp16s *dx = new Ipp16s[width * height];&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;Ipp16s *dy = new Ipp16s[width * height];&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;ippiFilterSobelVertBorder_8u16s_C1R(GrayScaleImg, width * sizeof(Ipp8u), dx, (width - 1) * sizeof(Ipp16s), roiSize, maskSize, ippBorderRepl, 0, vertBuffer);&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; ippiFilterSobelHorizBorder_8u16s_C1R(GrayScaleImg, width * sizeof(Ipp8u), dy, (width - 1) * sizeof(Ipp16s), roiSize, maskSize, ippBorderRepl, 0, horizBuffer);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Ipp8u *buffer;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;if (vertBufferSize &amp;lt; horizBufferSize)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ippiCannyGetSize(roiSize, &amp;amp;horizBufferSize);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;buffer = ippsMalloc_8u(horizBufferSize);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ippiCannyGetSize(roiSize, &amp;amp;vertBufferSize);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;buffer = ippsMalloc_8u(vertBufferSize);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;Ipp32f low=100.0f, high=100.0f;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp;Ipp8u* dst = new Ipp8u[width * height];&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp; ippiCanny_16s8u_C1R(dx, (width - 1) * sizeof(Ipp16s), dy, (width - 1) * sizeof(Ipp16s), dst, width * sizeof(Ipp8u), roiSize, low, high, buffer);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ippsFree(buffer);&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return dst;&lt;/P&gt;

&lt;P&gt;}&lt;/P&gt;

&lt;P&gt;I get incorrect result. In attach files there are 3 images source, filtered using .NET Aforge and filtered using IPP. Can you see any mistakes&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;&amp;nbsp;in my code? Please, help.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 14 Apr 2015 10:25:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023601#M23575</guid>
      <dc:creator>Alexandr_S_1</dc:creator>
      <dc:date>2015-04-14T10:25:23Z</dc:date>
    </item>
    <item>
      <title>Hi Alexandr,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023602#M23576</link>
      <description>&lt;P&gt;Hi Alexandr,&lt;/P&gt;

&lt;P&gt;in the latest IPP versions you can find more advanced function:&lt;/P&gt;

&lt;P&gt;/*F///////////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt;
	//&amp;nbsp; Name:&amp;nbsp;&amp;nbsp;&amp;nbsp; ippiCannyBorder_8u_C1R&lt;BR /&gt;
	//&amp;nbsp; Purpose: Perform convolution operation with fixed kernels 3x3 and 5x5 and creates binary image of source's image edges,&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using derivatives of the first order.&lt;BR /&gt;
	//&amp;nbsp; Parameters:&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; pSrc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The pointer to the source image&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; srcStep&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The step in the source image&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; pDst&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The pointer to the destination image&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; dstStep&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The step in the destination image&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; roiSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The image ROI size&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; filterType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the filter type(ippFilterSobel,ippFilterScharr)&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; mask&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The mask size(ippMskSize3x3,ippMskSize5x5)&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; borderType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type of border. Possible values are:&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ippBorderConst Values of all border pixels are set to constant.&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ippBorderRepl Border is replicated from the edge pixels.&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ippBorderInMem Border is obtained from the source image pixels in memory.&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mixed borders are also supported. They can be obtained by the bitwise operation OR between ippBorderRepl and ippBorderInMemTop, ippBorderInMemBottom, ippBorderInMemLeft, ippBorderInMemRight.&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; borderValue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The value for the constant border&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; lowThresh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Low threshold for edges detection&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; highThresh&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Upper threshold for edges detection&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; norm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Norm type (ippNormL1,ippNormL2)&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; pBuffer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pointer to the pre-allocated temporary buffer, which size can be&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; calculated using ippiCannyEdgeDetectionGetSize function&lt;BR /&gt;
	//&amp;nbsp; Return:&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; ippStsNoErr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ok&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; ippStsNullPtrErr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; One of pointers is NULL&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; ippStsSizeErr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The width or height of images is less or equal zero&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; ippStsNotEvenStepErr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Step is not multiple of element.&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; ippStsBadArgErr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bad thresholds&lt;BR /&gt;
	//&lt;BR /&gt;
	//F*/&lt;/P&gt;

&lt;P&gt;IPPAPI(IppStatus, ippiCannyBorder_8u_C1R,( const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize roiSize,&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IppiDifferentialKernel filterType, IppiMaskSize mask,IppiBorderType borderType, Ipp8u borderValue,&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ipp32f lowThresh, Ipp32f highThresh, IppNormType norm,Ipp8u* pBuffer ))&lt;BR /&gt;
	/*F///////////////////////////////////////////////////////////////////////////////////////&lt;BR /&gt;
	//&amp;nbsp; Name:&amp;nbsp;&amp;nbsp;&amp;nbsp; ippiCannyBorderGetSize&lt;BR /&gt;
	//&lt;BR /&gt;
	//&amp;nbsp; Purpose: Calculates size of temporary buffer, required to run ippiCannyBorder_8u_C1R function.&lt;BR /&gt;
	//&amp;nbsp; Parameters:&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; roiSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Size of image ROI in pixel&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; filterType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The filter type(ippFilterSobel,ippFilterScharr)&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; mask&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The mask size(ippMskSize3x3,ippMskSize5x5)&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; dataType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Data type of the image. Possible values are Ipp8u, Ipp16u, Ipp16s, or Ipp32f.&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; pBufferSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pointer to the variable that returns the size of the temporary buffer&lt;BR /&gt;
	//&lt;BR /&gt;
	//&amp;nbsp; Return:&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; ippStsNoErr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ok&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; ippStsNullPtrErr&amp;nbsp; Pointer bufferSize is NULL&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; ippStsMaskSizeErr Indicates an error when mask has an illegal value.&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; ippStsDataTypeErr Indicates an error when dataType has an illegal value.&lt;BR /&gt;
	//&amp;nbsp;&amp;nbsp;&amp;nbsp; ippStsSizeErr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; roiSize has a field with zero or negative value&lt;BR /&gt;
	//&lt;BR /&gt;
	//F*/&lt;BR /&gt;
	IPPAPI(IppStatus, ippiCannyBorderGetSize,( IppiSize roiSize, IppiDifferentialKernel filterType,IppiMaskSize mask, IppDataType dataType, int* pBufferSize ))&lt;/P&gt;

&lt;P&gt;And I can't find any attachments...&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Tue, 14 Apr 2015 13:27:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023602#M23576</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2015-04-14T13:27:23Z</dc:date>
    </item>
    <item>
      <title>one more thing: I don't</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023603#M23577</link>
      <description>&lt;P&gt;one more thing: I don't understand your manipulations with "width" - if you have allocated image of width*height, you can't use "&amp;nbsp;(width - 1) * sizeof(Ipp16s)" as a step - you can set any roi inside this image (for example (width-N)x(height-M)), but image step still is == width...&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Tue, 14 Apr 2015 13:43:05 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023603#M23577</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2015-04-14T13:43:05Z</dc:date>
    </item>
    <item>
      <title>Igor, thanks for your answer</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023604#M23578</link>
      <description>&lt;P&gt;Igor, thanks for your answer&lt;/P&gt;

&lt;P&gt;I rewrote the code like this:&lt;/P&gt;

&lt;P&gt;Ipp8u *GrayScaleImg = RGBToGrayScaleIpp(img, width, height, channels);&lt;/P&gt;

&lt;P&gt;Ipp8u* pBuffer = 0;&lt;BR /&gt;
	int bufferSize;&lt;BR /&gt;
	IppiSize roiSize = {width, height};&lt;BR /&gt;
	IppiDifferentialKernel filterType = ippFilterSobel;&lt;/P&gt;

&lt;P&gt;ippiCannyBorderGetSize( roiSize, filterType,ippMskSize3x3, ipp8u, &amp;amp;bufferSize);&lt;BR /&gt;
	pBuffer = ippsMalloc_8u( bufferSize );&lt;BR /&gt;
	Ipp32f low = 100.0f, high = 100.0f;&lt;BR /&gt;
	ippiCannyBorder_8u_C1R(GrayScaleImg, width, GrayScaleImg, width, roiSize, filterType, ippMskSize3x3, ippBorderRepl,0, low, high, ippNormL2, pBuffer);&lt;BR /&gt;
	ippsFree(pBuffer);&lt;/P&gt;

&lt;P&gt;but I have almost the same result, and&amp;nbsp;I did not understand what values should take "src step", "dst step " and "roi size" in my case.&lt;/P&gt;

&lt;P&gt;regards, Alexandr&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 14 Apr 2015 14:26:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023604#M23578</guid>
      <dc:creator>Alexandr_S_1</dc:creator>
      <dc:date>2015-04-14T14:26:19Z</dc:date>
    </item>
    <item>
      <title>Hi Alexander,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023605#M23579</link>
      <description>&lt;P&gt;Hi Alexander,&lt;/P&gt;

&lt;P&gt;Check this document on the step, ROI for image function:&lt;BR /&gt;
	&lt;A href="https://software.intel.com/en-us/node/503725"&gt;https://software.intel.com/en-us/node/503725&lt;/A&gt;&lt;BR /&gt;
	&lt;BR /&gt;
	Thanks,&lt;BR /&gt;
	Chao&lt;/P&gt;</description>
      <pubDate>Fri, 17 Apr 2015 07:40:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023605#M23579</guid>
      <dc:creator>Chao_Y_Intel</dc:creator>
      <dc:date>2015-04-17T07:40:02Z</dc:date>
    </item>
    <item>
      <title>Hi Chao,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023606#M23580</link>
      <description>&lt;P&gt;Hi Chao,&lt;/P&gt;

&lt;P&gt;thanks for your response, I solved the problem&lt;/P&gt;</description>
      <pubDate>Tue, 12 May 2015 16:53:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Canny-Edge-Detector/m-p/1023606#M23580</guid>
      <dc:creator>Alexandr_S_1</dc:creator>
      <dc:date>2015-05-12T16:53:33Z</dc:date>
    </item>
  </channel>
</rss>

