KPG1_HMLTx

Multiplies two Hermitian images

Description:

Each input Hermitian image represents a COMPLEX image in which certain symmetries exist. These symmetries allow all the information stored in the COMPLEX image to be compressed into a single REAL image. This routine effectively unpacks the two REAL images given as input into two COMPLEX images, multiplies them together pixel-by-pixel to produce another COMPLEX image, and then packs the COMPLEX image back into a single Hermitian REAL image. In fact it is not necessary to do the actual unpacking and packing of these Hermitian images; this algorithm generates the output Hermitian image directly and thus saves time.

See the Notes for more details of Hermitian images and how they are multiplied.

Invocation

CALL KPG1_HMLTx( M, N, IN1, IN2, OUT, STATUS )

Arguments

M = INTEGER (Given)
Number of columns.
N = INTEGER (Given)
Number of rows.
IN1( N, M ) = ? (Given)
The first input Hermitian image.
IN2( N, M ) = ? (Given)
The second input Hermitian image.
OUT( N, M ) = ? (Returned)
The product of the two input images, in Hermitian form.
STATUS = INTEGER (Given and Returned)
The global status.

Notes:

1) Take the one-dimensional FFT of each row of the original image. 2) Stack all these one-dimensional FFTs into a pair of two-dimensional images the same size as the original image. One two-dimensional image (" A" ) holds the real part and the other (" B" ) holds the imaginary part. Each row of image A will have symmetry such that A(J,row) = A(M-J,row) (J goes from 0 to M-1), while each row of image B will have symmetry such that B(J,row) = -B(M-J,row). 3) Take the one-dimensional FFT of each column of image A. 4) Stack all these one-dimensional FFTs into a pair of two-dimensional images, image AA holds the real part of each FFT, and image BA holds the imaginary part. Each column of AA will have symmetry such that AA(column,K) = AA(column,N-K) (K goes from 0 to N-1), each column of BA will have symmetry such that BA(column,K) =

The product of two Hermitian FFTs is itself Hermitian and so can be described in a similar manner. If the first input FFT corresponds to the four images AA1, AB1, BA1 and BB1, and the second input FFT corresponds to the four images AA2, AB2, BA2, BB2, then the output is described by the four images AA, AB, BA and BB where:

AA = AA1AA2 + BB1BB2 - BA1BA2 - AB1AB2 BB = AA1BB2 + BB1AA2 + BA1AB2 + AB1BA2 BA = BA1AA2 - AB1BB2 + AA1BA2 - BB1AB2 AB = -BA1BB2 + AB1AA2 + AA1AB2 - BB1BA1