Woolz Image Processing  Version 1.7.5
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. More...
 

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
57b0a149d96184d5fadbb7a7665d1b7f5b9f5443
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.

Todo:
WlzNMSuppress3D() has yet to be implemented.

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 _WlzRsvFilter::c, _WlzValues::core, _WlzDomain::core, _WlzObject::domain, _WlzGreyV::inv, main(), _WlzPixelV::type, _WlzObject::type, _WlzPixelV::v, _WlzObject::values, WLZ_2D_DOMAINOBJ, WLZ_3D_DOMAINOBJ, WLZ_EMPTY_OBJ, WLZ_ERR_DOMAIN_NULL, WLZ_ERR_NONE, WLZ_ERR_OBJECT_NULL, WLZ_ERR_OBJECT_TYPE, WLZ_ERR_VALUES_NULL, WLZ_GREY_INT, WLZ_RSVFILTER_NAME_DERICHE_1, WlzAssignObject(), WlzFreeObj(), WlzGreyGradient(), WlzIntersectN(), WlzMakeEmpty(), WlzMakeMain(), WlzReadObj(), WlzRsvFilterFreeFilter(), WlzRsvFilterMakeFilter(), and WlzWriteObj().

Referenced by WlzCannyDeriche().