Structure Matrices and Convolution Kernels
DiskMatrix[r] | a radius r disk of 1s inside a (2r+1)×(2r+1) matrix of 0s |
DiskMatrix[{r1,…}] | an ellipsoid of 1s with radii r1, … inside an array of dimension (2r1+1)× … |
DiskMatrix[{r1, …},{n1, …}] | an ellipsoid with radii r1, … inside an array of dimension n1× … |
DiamondMatrix[{r1,…},{n1,…}] | a diamond of 1s with radii r1, … inside an array of dimension n1× … |
BoxMatrix[{r1,…},{n1,…}] | a box of 1s with radii r1, … inside an array of dimension n1× … |
CrossMatrix[{r1,…},{n1,…}] | a cross of 1s with radii r1, … inside an array of dimension n1× … |
GaussianMatrix[r] | a (2r+1)×(2r+1) matrix that samples a Gaussian |
GaussianMatrix[{r,σ}] | a (2r+1)×(2r+1) matrix that samples a Gaussian with standard deviation σ |
GaussianMatrix[{{r1,…},{σ1,…}}] | a (2r1+1)× … array that samples a Gaussian with standard deviation σi in the i th direction |
GaussianMatrix[{{r1,…},{σ1,…}},{n1,…}] | a (2r1+1)× … array that samples the ni th discrete derivative in the i th direction of a Gaussian with standard deviation σi in the i th direction |
GaussianMatrix can construct arrays with any rank:
By default, the matrix elements are numerical and constructed to behave optimally under discrete convolution. Using WorkingPrecision->Infinity will produce an exact representation:
Use Method->"Gaussian" to sample a true Gaussian:
Sum derivatives by using nested List objects in the second argument. For example, this plots the Laplacian: