Generate modified uniformly redundant arrays (MURAs) as described in the publication below. These arrays are used for coded aperture imaging.
S. R. Gottesman and E. E. Fenimore. New family of binary arrays for coded aperture imaging. Appl. Opt., 28:4344–4352, October 1989. doi:10.1364/AO.28.004344.
Currently implements linear and square patterns and their decoding arrays. Square patterns can be mosaicked.
The list of valid linear MURA pattern lengths L
, where L
is prime
and L % 4 == 1
up to the first one greater or equal to n
can be
obtained by:
linearlengths(n)
You can generate a linear MURA pattern of length L
by calling:
linearpattern(L)
The corresponding decoding pattern can be generated by:
lineardecoding(L)
Both can be made symmetric under reversal by symmshift
, e.g.:
29 |> linearpattern |> symmshift |> x -> join(x, " ")
"0 1 0 0 0 1 0 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0"
Not implemented
You can generate a square MURA pattern with p
× p
elements, where
p
is prime by calling:
squarepattern(p)
The corresponding decoding pattern can be generated by:
squaredecoding(p)
Both can be made symmetric under rotation by 180° by symmshift
. A
mosaic of 2 × 2 patterns, excluding the first row and the first
column, can be generated by:
squaremosaic(p)
The list of valid mosaic lengths p
up to the first one greater or
equal to n
can be obtained from:
mosaiclengths(n)