Learn R Programming

grt (version 0.1-2)

gaborPatch: Draw a gray-scale Gabor Patch

Description

Draw a gray-scale Gabor Patch

Usage

gaborPatch(sf, 
    theta = 0, 
    rad = (theta * pi)/180, 
    pc = 1, 
    sigma = 1/6, 
    psi = 0, 
    grating = c("cosine", "sine"), 
    npoints = 100, 
    trim = 0, 
    trim.col = .5,
    ...)

Arguments

sf
number of cycles per image.
theta
orientation in degree. See Details
rad
orientation in radian
pc
a fraction (0 to 1) specifying the peak contrast of the Gabor
sigma
the standard deviation of the Gaussian mask. Either a single numeric or a numeric vector of length 2.
psi
phase offset in radian
grating
type of grating to be used. Default to cosine.
npoints
number of points per line used to draw the patch.
trim
Gaussian values smaller than the specified value should be trimmed.
trim.col
gray level of the trimmed part of the image, between 0 (black) and 1 (white). Default to .5 (gray)
...
additional parameters for image may be passed as arguments to this function.

Value

  • invisibly returns the matrix of the plotted values.

Details

The arguments theta and rad is the same thing but in different units. If both are supplied, rad takes the precedence.

References

Fredericksen, R. E., Bex, P. J., & Verstraten, F. A. J. (1997). How Big is a Gabor and Why Should We Care? Journal of the Optical Society of America A. 14, 1--12. Gabor Filter. (2010, June 5). In Wikipedia, the free encyclopedia. Retrieved July 7, 2010, from http://en.wikipedia.org/wiki/Gabor_filter

Examples

Run this code
# An imitation of Fredericksen et al.'s (1997) Fig 1.
# that demonstrate the relation between peak contrast
# and perceived size of the Gabor

op <- par(mfcol = c(3, 3), pty = "m", mai = c(0,0,0,0))
for(i in c(.85, .21, .06)){
    for(j in c(1/6, 1/7, 1/8)){
        gaborPatch(20, pc = i, sigma = j)
    }
}
par(op)

# a typical plot of the stimuli and category structure
# often seen in artificial category-learning literatures.
m  <-  list(c(268, 157), c(332, 93))
covs  <-  matrix(c(4538, 4351, 4351, 4538), ncol = 2)
II <- grtrnorm(n = 40, np = 2, means = m, covs = covs,
   clip.sd = 4, seed = 1234)
II$sf <- .25+(II$x1/50)
II$theta <- II$x2*(18/50)

plot(II[,2:3], xlim = c(-100,600), ylim = c(-200,500), 
    pch = 21, bg = c("white","gray")[II$category])
abline(a = -175, b = 1)

library(Hmisc)
idx <- c(20, 31, 35, 49, 62)
xpos <- c(0, 100, 300, 350, 550)
ypos <- c(50, 300, 420, -120, 50)
for(i in 1:5)
{
    j = idx[i]
    segments(x0=II[j,"x1"], y0=II[j,"x2"], x1=xpos[i], y1=ypos[i])
    subplot(gaborPatch(sf=II[j,"sf"], theta=II[j,"theta"]), x=xpos[i], y=ypos[i])
}

Run the code above in your browser using DataLab