Woolz Image Processing Version 1.4.0
WlzNMSuppress.c File Reference

A non-maximal supression filter, which constructs a new domain object using a Canny-like non-maximal suppression algorithm. The domain is the non-maximally suppressed domain and the values are the encoded gradient direction. More...

Functions

WlzObjectWlzNMSuppress (WlzObject *grdM, WlzObject *grdZ, WlzObject *grdY, WlzObject *grdX, WlzPixelV minThrV, WlzErrorNum *dstErr)
 Computes the maximal domain and gradient direction of given Woolz domain object.

Detailed Description

A non-maximal supression filter, which constructs a new domain object using a Canny-like non-maximal suppression algorithm. The domain is the non-maximally suppressed domain and the values are the encoded gradient direction.

Author:
Bill Hill
Date:
May 1999
Version:
Id:
264a3f8b8272485f8e3b1d10ecd0508d63cec1a6
Address: MRC Human Genetics Unit, MRC Institute of Genetics and Molecular Medicine, University of Edinburgh, Western General Hospital, Edinburgh, EH4 2XU, UK.
Copyright (C), [2012], The University Court of the University of Edinburgh, Old College, Edinburgh, UK.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.


Function Documentation

WlzObject* WlzNMSuppress ( WlzObject grdM,
WlzObject grdZ,
WlzObject grdY,
WlzObject grdX,
WlzPixelV  minThrV,
WlzErrorNum dstErr 
)

Computes the maximal domain and gradient direction of given Woolz domain object.

Returns:
Currently only implemented for 2D domain objects. The domain is the maximaly suppressed domain and the values are the encoded gradient direction. The direction is encoding is from the +ve x-axis counter clockwise in eight steps with a mask of 0x80, ie directions values are in the range 128 -> 128 + 7.
                             ^ Y axis (downwards when displayed)
                             |
                  +----------+---------+
                  | \        |        /|
                  |  \128 + 2|128 + 1/ |
                  |   \      |      /  |
                  |    \     |     /   |
                  |     \    |    /    |
                  |      \   |   /     |
                  |       \  |  /      |
                  |128 + 3 \ | /128 + 0|
                  |         \|/        |
                  +----------O---------+--> X axis
                  |         /|\        |
                  |128 + 4 / | \128 + 7|
                  |       /  |  \      |
                  |      /   |   \     |
                  |     /    |    \    |
                  |    /     |     \   |
                  |   /      |      \  |
                  |  /128 + 5|128 + 6\ |
                  | /        |        \|
                  +----------+---------+
		
Parameters:
grdMGradient magnitude.
grdZGradient (partial derivative) through planes.
grdYGradient (partial derivative) through lines.
grdXGradient (partial derivative) through columns.
minThrVMinimum gradient value to consider.
dstErrDestination error pointer, may be null.

References _WlzObject::domain, _WlzObject::type, _WlzObject::values, WLZ_2D_DOMAINOBJ, WLZ_3D_DOMAINOBJ, WLZ_EMPTY_OBJ, WLZ_ERR_NONE, WLZ_ERR_OBJECT_NULL, WLZ_ERR_OBJECT_TYPE, WlzFreeObj(), WlzIntersectN(), WlzMakeEmpty(), and WlzMakeMain().

Referenced by WlzCannyDeriche().