putpacket.wst2D(wst2D, level, index, type="S", packet, Ccode=T)
level
nlevels(wpst)-1
.
index
r
digits long. Each digit can be 0, 1, 2 or
3 corresponding to no shifts, horizontal shift, vertical shift or
horizontal and vertical shifts. The number r
indicates
the depth of the resolution level from the data resolution i.e.
where r = nlevels - level
.
Where there is a string of more than one digit the left most digits correspond to finest scale shift selection, the right most digits to the coarser scales (I think).
packet
2^level
which contains
the new coefficients that you wish to insert.
type
Ccode
T
then fast C code is used to obtain the packet,
otherwise slow SPlus code is used. Unless you have some special
reason always use the C code (and leave the argument at its
default).
level
, packet index
and
orientation given by type
replaced by the matrix
packet
.
So the next level is obtained from the previous level with basically
HH, HG, GH and GG but with extra shifts in the horizontal, vertical
and horizontal and vertical directions. The index
provides
a way to enumerate the paths through this tree where each smooth
has 4 children and indexed by a number between 0 and 3.
Each of the 4 children has 4 components: a smooth, horizontal, vertical and diagonal detail, much in the same way as for the Mallat 2D wavelet transform implemented in the WaveThresh function imwd.
# # Create a random image. # myrand <- matrix(rnorm(16), nrow=4, ncol=4) > myrand # [,1] [,2] [,3] [,4] #[1,] 0.01692807 0.1400891 -0.38225727 0.3372708 #[2,] -0.79799841 -0.3306080 1.59789958 -1.0606204 #[3,] 0.29151629 -0.2028172 -0.02346776 0.5833292 #[4,] -2.21505532 -0.3591296 -0.39354119 0.6147043 # # Do the 2D non-decimated wavelet transform # myrwst2D <- wst2D(myrand) # # Let's access the finest scale detail, not shifted in the vertical # direction. # getpacket(myrwst2D, nlevels(myrwst2D)-1, index=0, type="V") # [,1] [,2] #[1,] -0.1626819 -1.3244064 #[2,] 1.4113247 -0.7383336 # # Let's put some zeros in instead... # zmat <- matrix(c(0,0,0,0), 2,2) newwst2D <- putpacket(myrwst2D, nlevels(myrwst2D)-1, index=0, packet=zmat, type="V") # # And now look at the same packet as before # getpacket(myrwst2D, nlevels(myrwst2D)-1, index=0, type ="V") # [,1] [,2] #[1,] 0 0 #[2,] 0 0 # # Yup, packet insertion o.k.