Learn R Programming

wavethresh (version 4.7.3)

putpacket.wst2D: Replace packet of coefficients in a two-dimensional non-decimated wavelet object (wst2D).

Description

This function replaces a packet of coefficients from a two-dimensional non-decimated wavelet (wst2D) object and returns the modified object.

Usage

# S3 method for wst2D
putpacket(wst2D, level, index, type="S", packet, Ccode=TRUE, ...)

Value

An object of class wst2D with coefficients at resolution level level, packet index and orientation given by type replaced by the matrix packet.

Arguments

wst2D

2D non-decimated wavelet object containing the coefficients you wish to replace.

level

The resolution level of the coefficients that you wish to replace. Can range from 0 to nlevelsWT(wpst)-1.

index

The index number within the resolution level of the packet of coefficients that you wish to replace. Index is a base-4 number which is 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 = nlevelsWT - 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

A square matrix of dimension 2^level which contains the new coefficients that you wish to insert.

type

This is a one letter character string: one of "S", "H", "V" or "D" for the smooth coefficients, horizontal, vertical or diagonal detail.

Ccode

If 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).

...

any other arguments

RELEASE

Version 3.9 Copyright Guy Nason 1998

Author

G P Nason

Details

The 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.

See Also

getpacket.wst2D, wst2D, wst2D.object.

Examples

Run this code
#
# 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