Herror ::fuzzy_perimeter (
    Hobject Regions,
    Hobject Image,
    const HTuple &Apar,
    const HTuple &Cpar,
    double *Perimeter
)
Herror ::fuzzy_perimeter (
    Hobject Regions,
    Hobject Image,
    const HTuple &Apar,
    const HTuple &Cpar,
    HTuple *Perimeter
)
double HRegion::FuzzyPerimeter (
    const HImage &Image,
    const HTuple &Apar,
    const HTuple &Cpar
) const
HTuple HRegionArray::FuzzyPerimeter (
    const HImage &Image,
    const HTuple &Apar,
    const HTuple &Cpar
) const

Calculate the fuzzy perimeter of a region.

The operator ::fuzzy_perimeter is used to determine the differences of fuzzy membership between an image point and its neighbor points. The right and lower neighbor are taken into account. The fuzzy perimeter is then defined as follows:

       M-1   N-1
       ----  ----
       \     \
p(x) = /     /    |u(x(m,n)) - u(x(m,n+1))|  +
       ----  ----
	 m=1   n=1

       M-1   N-1
       ----  ----
       \     \
	 /     /    |u(x(m,n)) - u(x(m+1,n))|
       ----  ----
	 m=1   n=1
where MxN is the size of the image, and u(x(m,n)) is the fuzzy membership function (i.e., the input image). This implementation uses Zadeh's Standard-S function, which is defined as follows:
         / 0,                   x <= a
  u(x) = | 2((x-a)/(c-a))**2,   a < x <= b
         | 1-2((x-a)/(c-a))**2, b < x < c
	   \ 1,                   c <= x.
The parameters a, b and c obey the following restrictions: b = (a+c)/2 is the inflection point of the function, Db = b - a = c - b is the bandwith, and for x = b u(x) = 0.5 holds. In ::fuzzy_perimeter, the parameters Apar and Cpar are defined as follows: b is (Apar + Cpar)/2.


Parameters

Regions (input_object)
region(-array) -> Hobject: HRegion(Array)
Regions for which the fuzzy perimeter is to be calculated.

Image (input_object)
image -> Hobject: HImage ( byte )
Input image containing the fuzzy membership values.

Apar (input_control)
integer -> HTuple.long
Start of the fuzzy function.
Default value: 0
Suggested values: 0, 5, 10, 20, 50, 100
Typical range of values: 0 <= Apar <= 255 (lin)
Minimum increment: 1
Recommended increment: 5

Cpar (input_control)
integer -> HTuple.long
End of the fuzzy function.
Default value: 255
Suggested values: 50, 100, 150, 200, 220, 255
Typical range of values: 0 <= Cpar <= 255 (lin)
Minimum increment: 1
Recommended increment: 5
Restriction: Apar <= Cpar

Perimeter (output_control)
real(-array) -> (HTuple.) double *
Fuzzy perimeter of a region.


Example
/* To find a Fuzzy Entropy from an Image */
read_image(&Image,"affe");
fuzzy_perimeter(Trans,Trans,Apar,Bpar,&Per);

Result

The operator ::fuzzy_perimeter returns the value H_MSG_TRUE if the parameters are correct. Otherwise an exception is raised.


See also

::fuzzy_entropy


References

M.K. Kundu, S.K. Pal: `Äutomatic selection of object enhancement operator with quantitative justification based on fuzzy set theoretic measures''; Pattern Recognition Letters 11; 1990; pp. 811-829.


Module

Image filters



Copyright © 1996-2002 MVTec Software GmbH