Mathematical Approach to Detect If a 2D Signal Is Separable

In the Special 2-D Sequences page the following examples are demonstrated,

1. 2D dirac
2. 2D diagonals
3. 2D unit step function

Is there a more defined method or series of steps for determining if a function is separable or not? Other than:

$$x(n_1, n_2) = f(n_1)g(n_2)$$

Note: is there any difference between this and saying that:

$$x(n_1, n_2) = f(n_1)\times g(n_2)$$, where $$\times$$ is the orthogonal product (See SIMG-716 Linear Imaging Mathematics I section 2.1)? Is this simply referring to the inner product?

To me the solutions are highly intuitive and the requirement to solve such problems solely relies on the understanding of properties associated with the function.

Let's assume our data is in finite dimension.
So $$x \left[ m, n \right] \in \mathbb{R}^{M \times N}$$. So it can be written as a matrix $$X \in \mathbb{R}^{M \times N}$$.

Using the SVD Decomposition the matrix can be written as:

$$X = \sum_{i = 1}^{n} {\sigma}_{i} {u}_{i} {v}_{i}^{T}$$

Seprable 2D Matrix is defined as a rank 1 Matrix which can be composed by Outer Product of 2 vectors.
Looking at the SVD Decomposition of $$X$$ we can conclude that $$X$$ is separable operator if and only if $$\forall i > 1 \; {\sigma}_{i} = 0$$ and it is given by:

$$X = {\sigma}_{1} {u}_{1} {v}_{1}^{T}$$

So, here is a simple recipe:

1. Write you data in Matrix Form.
2. Apply the SVD on the matrix.
In MATLAB it can be done using svd().
3. Look for the rank of the matrix. Namely how many non vanishing singular values it has.
4. If the number is 1 the matrix is considered separable. It can be separable by the its first left eigen vector and first right eigen vector.

For example on Separable Operators have a look at - How to Prove a 2D Filter Is Separable?.

You just have to check the rank of the matrix.

When you look a discrete signals, it is customary to express their product the following way. If vectors are considered "column-wise", then you typically use the transpose operation:

$$x[n_1,n_2] = f[n_1]^T g[n_2]$$

This implies that the 2D signal is of rank one or less (rank being the maximal number of linearly independent rows or columns). Conversely, any (infinite) matrix of rank $$0$$ or $$1$$ is separable. Note: the separation is not unique in general.