DWT2Dv2 passes all my tests!

This commit is contained in:
Samuel Li 2016-08-31 15:58:58 -07:00
parent c4387bb71c
commit ccbff3ff67
2 changed files with 13 additions and 16 deletions

@ -95,7 +95,6 @@ public:
// Work on right extension
typedef vtkm::worklet::wavelets::RightExtentionWorklet2D RightWorkletType;
typedef vtkm::worklet::wavelets::AssignZero2DColumnWorklet AssignZero2DType;
ExtendArrayType rightExtend;
if( !attachZeroRightLeft ) // no attach zero, or only attach on RightRight
{
@ -685,16 +684,9 @@ public:
// Transpose afterYBuf to output
coeffOut.PrepareForOutput( sigInLen, DeviceTag() );
WaveletBase::DeviceTranspose( afterYBuf, inYLen, inXLen, coeffOut,
inYLen, inXLen, 0, 0, DeviceTag() );
#if 0
for( vtkm::Id i = 0; i < afterYBuf.GetNumberOfValues(); i++ )
{
std::cerr << afterYBuf.GetPortalConstControl().Get(i) << " ";
if( i % inYLen == inYLen-1 ) std::cerr << std::endl;
}
#endif
WaveletBase::DeviceTranspose( afterYBuf, inYLen, inXLen,
coeffOut, inXLen, inYLen,
0, 0, DeviceTag() );
return elapsedTime;
}
@ -813,6 +805,7 @@ for( vtkm::Id i = 0; i < afterYBuf.GetNumberOfValues(); i++ )
afterX.InterpretAs2D( outDimX, outDimY );
typedef vtkm::worklet::wavelets::ForwardTransform2D ForwardXForm;
{
ForwardXForm worklet( filterLen, L[0], oddLow, sigExtendedDimX, sigExtendedDimY,
outDimX, outDimY );
vtkm::worklet::DispatcherMapField< ForwardXForm, DeviceTag > dispatcher( worklet );
@ -820,6 +813,7 @@ for( vtkm::Id i = 0; i < afterYBuf.GetNumberOfValues(); i++ )
WaveletBase::filter.GetLowDecomposeFilter(),
WaveletBase::filter.GetHighDecomposeFilter(),
afterX );
}
sigExtended.ReleaseResources();
// Then do transform in Y direction
@ -836,16 +830,19 @@ for( vtkm::Id i = 0; i < afterYBuf.GetNumberOfValues(); i++ )
WaveletBase::wmode, WaveletBase::wmode,
false, false, DeviceTag() );
afterXTransposed.ReleaseResources();
ArrayType afterY;
afterY.PrepareForOutput( outDimY * outDimX, DeviceTag() );
afterY.InterpretAs2D( outDimY, outDimX );
{
ForwardXForm worklet2( filterLen, L[1], oddLow, sigExtendedDimX, sigExtendedDimY,
outDimY, outDimX );
vtkm::worklet::DispatcherMapField< ForwardXForm, DeviceTag > dispatcher2( worklet2 );
dispatcher.Invoke( sigExtended,
WaveletBase::filter.GetLowDecomposeFilter(),
WaveletBase::filter.GetHighDecomposeFilter(),
afterY );
dispatcher2.Invoke( sigExtended,
WaveletBase::filter.GetLowDecomposeFilter(),
WaveletBase::filter.GetHighDecomposeFilter(),
afterY );
}
sigExtended.ReleaseResources();
// Transpose to output

@ -138,7 +138,7 @@ private:
this->xlstart = this->oddlow ? 1 : 0;
this->xhstart = this->oddhigh ? 1 : 0;
}
}; // Finish class ForwardTransform
};
// Worklet: perform a simple 2D forward transform