wst2D
) object and returns the modified object.## S3 method for class 'wst2D':
putpacket(wst2D, level, index, type="S", packet, Ccode=TRUE, \dots)
nlevelsWT(wpst)-1
.r
digits long. Each digit can be 0, 1, 2 or 3 corresponding to no shifts, horizontal shift, vertical shift 2^level
which contains the new coefficients that you wish to insert.wst2D
with coefficients at resolution level level, packet index and orientation given by type replaced by the matrix packet.wst2D
function creates a wst2D
class object. Starting with a smooth the operators H, G, GS and HS (where G, H are the usual Mallat operators and S is the shift-by-one operator) are operated first on the rows and then the columns: i.e. so each of the operators HH, HG, GH, GG, HSH, HSG, GSH, GSG HHS, GHS, HGS, GGS HSHS, HSGS, GSHS and GSGS are applied. Then the same collection of operators is applied to all the derived smooths, i.e. HH, HSH, HHS and HSHS. 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
.
getpacket.wst2D
, wst2D
, wst2D.object
.#
# 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, nlevelsWT(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, nlevelsWT(myrwst2D)-1,
index=0, packet=zmat, type="V")
#
# And now look at the same packet as before
#
getpacket(myrwst2D, nlevelsWT(myrwst2D)-1, index=0, type ="V")
# [,1] [,2]
#[1,] 0 0
#[2,] 0 0
#
# Yup, packet insertion o.k.
Run the code above in your browser using DataLab