IPCT Function
Performs the inverse principle components transform on a multi-layered image.
Usage
result = IPCT(pct_images, pct_trans)
Input Parameters
pct_images—A 3D real or complex array containing image, row or pixel-interleaved images.
pct_trans—An n-by-n real or complex array where n is the number of images in the pct_images array. This is the principle components transform matrix for pct_images, usually resulting from a previous call to PCT.
Returned Value
result—A 3D complex array containing the transformed images.
Keywords
Imaginary—If set, returns only the imaginary portion of the result.
Intleave—A scalar string indicating the type of interleaving of 3D input image arrays. Valid strings and the corresponding interleaving methods are:
'pixel'—The input array arrangement is (
p,
x,
y) for
p pixel-interleaved images of
x-by-
y.
'row'—The 3D
image array arrangement is (
x,
p,
y) for
p row-interleaved images of
x-by-
y.
'image'—The 3D
image array arrangement is (
x,
y,
p) for
p image-interleaved images of
x-by-
y.
Mx—The mean of the sample array formed from the images. This keyword is a 1D, n-element array.
Offset—If set, result is offset by its minimum value so that the returned result has a minimum of zero.
Real—If set, returns only the real portion of the result.
Discussion
The inverse principle components transform (IPCT) differs from most inverse transforms in that the transformation matrix is not generic. The inverse transform can’t be performed without the transformation matrix, in this case the pct_trans input parameter. The pct_trans input parameter is generated by calling the PCT function with Pct_trans. The returned matrix is used as the pct_trans input parameter in the IPCT function.
Example
The image in this example is image-interleaved, which is the default for the Intleave keyword.
rgb_i = IMAGE_READ(!IP_Data + 'boulder_image.tif')
rgb_i = rgb_i('pixels')
; Compute the principle components transform (PCT).
pct_i = PCT(rgb_i, Pct_trans = itrans, Mx = imx)
FOR I = 0, 2 DO BEGIN & $
TVSCL, pct_i(*, *, I) & $
HAK, /Mesg
ipct_i = IPCT(pct_i, itrans, Mx = imx)
FOR I = 0, 2 DO BEGIN & $
TVSCL, ipct_i(*, *, I) & $
HAK, /Mesg
See Also