H-maxima transform


I2 = imhmax(I,h)
I2 = imhmax(I,h,conn)


I2 = imhmax(I,h) suppresses all maxima in the intensity image I whose height is less than h, where h is a scalar.

Regional maxima are connected components of pixels with a constant intensity value, and whose external boundary pixels all have a lower value.

By default, imhmax uses 8-connected neighborhoods for 2-D images, and 26-connected neighborhoods for 3-D images. For higher dimensions, imhmax uses conndef(ndims(I),'maximal').

I2 = imhmax(I,h,conn) computes the H-maxima transform, where conn specifies the connectivity. conn can have any of the following scalar values.



Two-dimensional connectivities


4-connected neighborhood


8-connected neighborhood

Three-dimensional connectivities


6-connected neighborhood


18-connected neighborhood


26-connected neighborhood

Connectivity can be defined in a more general way for any dimension by using for conn a 3-by-3-by- ...-by-3 matrix of 0's and 1's. The 1-valued elements define neighborhood locations relative to the center element of conn. Note that conn must be symmetric about its center element.

Code Generation

imhmax supports the generation of efficient, production-quality C/C++ code from MATLAB. When generating code, the optional third input argument, conn, must be a compile-time constant. Generated code for this function uses a precompiled platform-specific shared library. To see a complete list of toolbox functions that support code generation, see List of Supported Functions with Usage Notes.

Class Support

I can be of any nonsparse numeric class and any dimension. I2 has the same size and class as I.


a = zeros(10,10);
a(2:4,2:4) = 3;  % maxima 3 higher than surround
a(6:8,6:8) = 8;  % maxima 8 higher than surround
b = imhmax(a,4); % only the maxima higher than 4 survive.


[1] Soille, P., Morphological Image Analysis: Principles and Applications, Springer-Verlag, 1999, pp. 170-171.

Was this topic helpful?