Imagick::forwardFourierTransformImage

Description

Description

public void Imagick::forwardFourierTransformimage ( bool $magnitude )

Implements the discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.

Parameters

magnitude

If true, return as magnitude / phase pair otherwise a real / imaginary image pair.

Return Values

Examples

Example #1 Imagick::forwardFourierTransformImage

<?php
//Utility function for forwardTransformImage
function createMask() {
    
$draw = new \ImagickDraw();

    
$draw->setStrokeOpacity(0);
    
$draw->setStrokeColor('rgb(255, 255, 255)');
    
$draw->setFillColor('rgb(255, 255, 255)');

    
//Draw a circle on the y-axis, with it's centre
    //at x, y that touches the origin
    
$draw->circle(250250220250);

    
$imagick = new \Imagick();
    
$imagick->newImage(512512"black");
    
$imagick->drawImage($draw);
    
$imagick->gaussianBlurImage(2020);
    
$imagick->autoLevelImage();

    return 
$imagick;
}


function 
forwardFourierTransformImage($imagePath) {
    
$imagick = new \Imagick(realpath($imagePath));
    
$imagick->resizeimage(512512, \Imagick::FILTER_LANCZOS1);

    
$mask createMask();
    
$imagick->forwardFourierTransformImage(true);

    @
$imagick->setimageindex(0);
    
$magnitude $imagick->getimage();

    @
$imagick->setimageindex(1);
    
$imagickPhase $imagick->getimage();

    if (
true) {
        
$imagickPhase->compositeImage($mask, \Imagick::COMPOSITE_MULTIPLY00);
    }

    if (
false) {
        
$output = clone $imagickPhase;
        
$output->setimageformat('png');
        
header("Content-Type: image/png");
        echo 
$output->getImageBlob();
    }

    
$magnitude->inverseFourierTransformImage($imagickPhasetrue);

    
$magnitude->setimageformat('png');
    
header("Content-Type: image/png");
    echo 
$magnitude->getImageBlob();
}

?>