<?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 2D Wavelet transform with different border extension in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/2D-Wavelet-transform-with-different-border-extension/m-p/810995#M3902</link>
    <description>&lt;P&gt;Hi Yoav, &lt;/P&gt;&lt;P&gt;I think ReplicateBorder cannot create a perfect reconstruction, because the wavelet filtered data cannot be replicated. For example, &lt;/P&gt;&lt;P&gt;If we have input data: {1 2 3 4}&lt;/P&gt;&lt;P&gt;and filter tap{ 1 1 1 }, suppose anchor is 0.&lt;/P&gt;&lt;P&gt;if we extern it data to with Replicated Border { 1, 2,3,4, 4,4.}. After the filtering the data, it will be { 6,9,11,12,12.}&lt;/P&gt;&lt;P&gt;If you use replicated border extension: extent the data of { 6,9,10}, it will be { 6,9,11, 11,11..}&lt;/P&gt;&lt;P&gt;The border actually is not consistent with the data after the filtering. &lt;/P&gt;&lt;P&gt;Symmetric and wraparound (periodic) extension is fine. For the symmetric problem, could you attach you full test code here? So we can run the test code here. &lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Chao &lt;/P&gt;</description>
    <pubDate>Mon, 11 Oct 2010 08:25:39 GMT</pubDate>
    <dc:creator>Chao_Y_Intel</dc:creator>
    <dc:date>2010-10-11T08:25:39Z</dc:date>
    <item>
      <title>2D Wavelet transform with different border extension</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/2D-Wavelet-transform-with-different-border-extension/m-p/810994#M3901</link>
      <description>Hello all,&lt;BR /&gt;&lt;BR /&gt;I'm implementing image compression tool using IPP 2D wavelet transform.&lt;BR /&gt;After establishing the forward and inverse transform (using the 9/7 filter) with wraparound border extension and acheiving perfect reconstruction with various decomposition levels, I tried to check the algorithm with different kind of border extension. to my surprise, I could not reconstruct the image with"Replicate" border extension (ippiCopyReplicateBorder_32f_C1R) nor with symmetric extension that I wrote myself. &lt;BR /&gt;the different IPP "copy+extension" functions receive the same arguments, so I can't see what's wrong.&lt;BR /&gt;&lt;BR /&gt;hope you can help me. I'v pasted my forward wavelet transform code below.&lt;BR /&gt;and another question - why isn't there a symmetric "copy+extension" function in ippi?&lt;BR /&gt;&lt;BR /&gt;thanks,&lt;BR /&gt;&lt;BR /&gt;Yoav&lt;BR /&gt;&lt;BR /&gt;------------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;&lt;P&gt;bool WT::ForwardWT (const float* pSrc, int srcStep, int width, int height,&lt;BR /&gt; float* pSrcB, int srcStepWBorder, int srcWidthWBorder, int srcHeightWBorder, int leftTopBorder,&lt;BR /&gt; IppiWTFwdSpec_32f_C1R* pSpec, Ipp8u* pBuffer,&lt;BR /&gt; float* pApproxDst, float* pDetailXDst, float* pDetailYDst, float* pDetailXYDst, int dstStep,&lt;BR /&gt; BorderExtensionType extType) {&lt;/P&gt;&lt;P&gt; if (srcStep % 4 != 0 || srcStepWBorder % 4 != 0 || dstStep % 4 != 0)&lt;BR /&gt; return false;&lt;/P&gt;&lt;P&gt; // adds borders to the source buffer:&lt;/P&gt;&lt;P&gt; IppiSize srcRoi = {width, height};&lt;BR /&gt; IppiSize srcWBorderRoi = {srcWidthWBorder, srcHeightWBorder};&lt;/P&gt;&lt;P&gt; switch (extType) {&lt;BR /&gt; case eWRAP:&lt;BR /&gt; {&lt;BR /&gt;if (ippStsNoErr != ippiCopyWrapBorder_32f_C1R (pSrc, srcStep, srcRoi, pSrcB, srcStepWBorder, srcWBorderRoi, leftTopBorder, leftTopBorder))&lt;BR /&gt; return false;&lt;BR /&gt; }&lt;BR /&gt; break;&lt;BR /&gt; case eSYM:&lt;BR /&gt; {&lt;BR /&gt;if (!WT::CopySymmBorder_32f_C1R (pSrc, srcStep, srcRoi, pSrcB, srcStepWBorder, srcWBorderRoi, leftTopBorder, leftTopBorder))&lt;BR /&gt; return false;&lt;BR /&gt; }&lt;BR /&gt; break;&lt;BR /&gt; case eCONST:&lt;BR /&gt; {&lt;BR /&gt;if (ippStsNoErr != ippiCopyReplicateBorder_32f_C1R (pSrc, srcStep, srcRoi, pSrcB, srcStepWBorder, srcWBorderRoi, leftTopBorder, leftTopBorder))&lt;BR /&gt; return false;&lt;BR /&gt; }&lt;BR /&gt; break;&lt;BR /&gt; default:&lt;BR /&gt;return false; // a border extension must be dealt with.&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt; // perform the forward transform:&lt;/P&gt;&lt;P&gt; IppiSize dstRoi = {width/2, height/2};&lt;BR /&gt; int srcROIOffset = leftTopBorder * srcStepWBorder/4 + leftTopBorder;&lt;BR /&gt; if (ippStsNoErr != ippiWTFwd_32f_C1R (pSrcB + srcROIOffset, srcStepWBorder, pApproxDst, dstStep, pDetailXDst,&lt;BR /&gt; dstStep, pDetailYDst, dstStep, pDetailXYDst, dstStep, dstRoi, pSpec, pBuffer)) {&lt;BR /&gt;return false;&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt; return true;&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Wed, 06 Oct 2010 14:21:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/2D-Wavelet-transform-with-different-border-extension/m-p/810994#M3901</guid>
      <dc:creator>yoavnaveh</dc:creator>
      <dc:date>2010-10-06T14:21:32Z</dc:date>
    </item>
    <item>
      <title>2D Wavelet transform with different border extension</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/2D-Wavelet-transform-with-different-border-extension/m-p/810995#M3902</link>
      <description>&lt;P&gt;Hi Yoav, &lt;/P&gt;&lt;P&gt;I think ReplicateBorder cannot create a perfect reconstruction, because the wavelet filtered data cannot be replicated. For example, &lt;/P&gt;&lt;P&gt;If we have input data: {1 2 3 4}&lt;/P&gt;&lt;P&gt;and filter tap{ 1 1 1 }, suppose anchor is 0.&lt;/P&gt;&lt;P&gt;if we extern it data to with Replicated Border { 1, 2,3,4, 4,4.}. After the filtering the data, it will be { 6,9,11,12,12.}&lt;/P&gt;&lt;P&gt;If you use replicated border extension: extent the data of { 6,9,10}, it will be { 6,9,11, 11,11..}&lt;/P&gt;&lt;P&gt;The border actually is not consistent with the data after the filtering. &lt;/P&gt;&lt;P&gt;Symmetric and wraparound (periodic) extension is fine. For the symmetric problem, could you attach you full test code here? So we can run the test code here. &lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Chao &lt;/P&gt;</description>
      <pubDate>Mon, 11 Oct 2010 08:25:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/2D-Wavelet-transform-with-different-border-extension/m-p/810995#M3902</guid>
      <dc:creator>Chao_Y_Intel</dc:creator>
      <dc:date>2010-10-11T08:25:39Z</dc:date>
    </item>
  </channel>
</rss>

