rmrf2d: Sampling of Markov Random Fields on 2d lattices

Description Usage Arguments Details Value Note Author(s) See Also Examples

View source: R/rmrf.R

Description

Performs pixelwise updates based on conditional distributions to sample from a Markov random field.

Usage

1
2
3
4
5
6
7
8
rmrf2d(
  init_Z,
  mrfi,
  theta,
  cycles = 60,
  sub_region = NULL,
  fixed_region = NULL
)

Arguments

init_Z

One of two options:

  • A matrix object with the initial field configuration. Its valuesmust be integers in {0,...,C}.

  • A length 2 numeric vector with the lattice dimensions.

mrfi

A mrfi object representing the interaction structure.

theta

A 3-dimensional array describing potentials. Slices represent interacting positions, rows represent pixel values and columns represent neighbor values. As an example: theta[1,3,2] has the potential for the pair of values 0,2 observed in the second relative position of mrfi.

cycles

The number of updates to be done (for each each pixel).

sub_region

NULL if the whole lattice is considered or a logical matrix with TRUE for pixels in the considered region.

fixed_region

NULL if the whole lattice is to be sampled or a logical matrix with TRUE for pixels to be considered fixed. Fixed pixels are not updated in the Gibbs Sampler.

Details

This function implements a Gibbs Sampling scheme to sample from a Markov random field by iteratively sampling pixel values from the conditional distribution

P(Z_i | Z_{{N}_i}, θ).

A cycle means exactly one update to each pixel. The order pixels are sampled is randomized within each cycle.

If init_Z is passed as a length 2 vector with lattice dimensions, the initial field is sampled from independent discrete uniform distributions in {0,...,C}. The value of C is obtained from the number of rows/columns of theta.

A MRF can be sampled in a non-rectangular region of the lattice with the use of the sub_region argument or by setting pixels to NA in the initial configuration init_Z. Pixels with NA values in init_Z are completely disconsidered from the conditional probabilities and have the same effect as setting sub_region = is.na(init_Z). If init_Z has NA values, sub_region is ignored and a warning is produced.

A specific region can be kept constant during the Gibbs Sampler by using the fixed_region argument. Keeping a subset of pixels constant is useful when you want to sample in a specific region of the image conditional to the rest, for example, in texture synthesis problems.

Value

A matrix with the sampled field.

Note

As in any Gibbs Sampling scheme, a large number of cycles may be required to achieve the target distribution, specially for strong interaction systems.

Author(s)

Victor Freguglia

See Also

A paper with detailed description of the package can be found at https://arxiv.org/abs/2006.00383.

rmrf2d_mc for generating multiple points of a Markov Chain to be used in Monte-Carlo methods.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Sample using specified lattice dimension
Z <- rmrf2d(c(150,150), mrfi(1), theta_potts)

#Sample using itial configuration

Z2 <- rmrf2d(Z, mrfi(1), theta_potts)

# View results
dplot(Z)
dplot(Z2)

# Using sub-regions
subreg <- matrix(TRUE, 150, 150)
subreg <- abs(row(subreg) - 75) + abs(col(subreg) - 75) <= 80
# view the sub-region
dplot(subreg)

Z3 <- rmrf2d(c(150,150), mrfi(1), theta_potts, sub_region = subreg)
dplot(Z3)

# Using fixed regions
fixreg <- matrix(as.logical(diag(150)), 150, 150)
# Set initial configuration: diagonal values are 0.
init_Z4 <- Z
init_Z4[fixreg] <- 0

Z4 <- rmrf2d(init_Z4, mrfi(1), theta_potts, fixed_region = fixreg)
dplot(Z4)

# Combine fixed regions and sub-regions
Z5 <- rmrf2d(init_Z4, mrfi(1), theta_potts,
fixed_region = fixreg, sub_region = subreg)
dplot(Z5)

mrf2d documentation built on Oct. 30, 2020, 1:07 a.m.