PxConvolveImage

Gamma/Photon: Using Gamma™ with the Photon microGUIŽ, Version 4.0
Prev |  | Next

# `PxConvolveImage`

`PxConvolveImage` -- performs matrix-based convolutions on images.

## Syntax

    PxConvolveImage (image, matrix)

## Arguments

`image`

  A PhImage, previously grey-scaled with a call to PxGreyImage.

`matrix`

  Usually a 3 X 3 matrix, entered as an array of arrays in the format:

      [[v1 v2 v3]
       [v4 v5 v6]
       [v7 v8 v9]]

## Returns

A PhImage.

## Description

This function is used to convolve images. It applies the `matrix` to every point of the image, allowing for such effects as edge enhancement and image sharpening.

## Example

This example, `ex_PxConvolveImage.g`, is included in the `gamma_ph_`#`_examples_1_QNX4.tgz` file available on the Cogent Web Site.

    #!/usr/cogent/bin/phgamma

    /*
    The following example demonstrates PxCopyImage(), PxGreyImage(),
    and PxConvolveImage().  An image is loaded and converted to grey
    scales. Then it is convolved for image sharpening, vertical and
    horizontal edge enhancement, and laplace edge detection.
    */

    PtInit(nil);
    require_lisp("PhotonWidgets.lsp");

    win = new(PtWindow);

    // Load and display the image.
    pic1 = PxLoadImage("taj.bmp");
    lab1 = new(PtLabel);
    lab1.label_type = Pt_IMAGE;
    lab1.label_data = pic1;

    // Copy the image and convert the colors to grey scales.
    pic2 = PxCopyImage(pic1);
    pic2 = PxGreyImage(pic2);
    lab2 = new(PtLabel);
    lab2.label_type = Pt_IMAGE;
    lab2.label_data = pic2;
    lab2.SetPos(300,0);

    // Copy the grey_scaled image and convolve for image sharpening.
    matrix = array(array(0,-1,0),
    	       array(-1,5,-1),
    	       array(0,-1,0));
    pic3 = PxCopyImage(pic2);
    pic3 = PxConvolveImage(pic3, matrix);
    lab3 = new(PtLabel);
    lab3.label_type = Pt_IMAGE;
    lab3.label_data = pic3;
    lab3.SetPos(600,0);

    // Copy the grey_scaled image and convolve for vertical edge enhancement.
    matrix = array(array(2,0,-2),
    	       array(2,0,-2),
    	       array(2,0,-2));
    pic4 = PxCopyImage(pic2);
    pic4 = PxConvolveImage(pic4, matrix);
    lab4 = new(PtLabel);
    lab4.label_type = Pt_IMAGE;
    lab4.label_data = pic4;
    lab4.SetPos(0,200);

    // Copy the grey_scaled image and convolve for horizontal edge enhancement.
    matrix = array(array(2,2,2),
    	       array(0,0,0),
    	       array(-2,-2,-2));
    pic5 = PxCopyImage(pic2);
    pic5 = PxConvolveImage(pic5, matrix);
    lab5 = new(PtLabel);
    lab5.label_type = Pt_IMAGE;
    lab5.label_data = pic5;
    lab5.SetPos(300,200);

    // Copy the grey_scaled image and convolve for laplace edge detector.
    matrix = array(array(1,1,1),
    	       array(1,-8,1),
    	       array(1,1,1));
    pic6 = PxCopyImage(pic2);
    pic6 = PxConvolveImage(pic6, matrix);
    lab6 = new(PtLabel);
    lab6.label_type = Pt_IMAGE;
    lab6.label_data = pic6;
    lab6.SetPos(600,200);

    PtRealizeWidget(win);
    PtMainLoop();

## See Also

PxCopyImage, PxGreyImage, PxThresholdImage

Prev | Home | Next
`PgRGB` | Up | `PxCopyImage`

Copyright 1995-2002 by Cogent Real-Time Systems, Inc.