The SZM and DZM are statistical descriptors which assume that the texture is composed of a random non periodic tiling of homogeneous zones, each one being described by its intensity value and its size/distance (to border). This principle, which is appropriate to describe intensity-dependent homogeneous vs. heterogeneous textures, is not compatible with other kinds of more structured textures; in particular, with fibrous textures (microtubule network, wood, carbon, wool, etc.

If fibers have a low tortuosity and a limited width variation, they can mainly be described by their length (geodesic) l and orientation .
In order to characterize such texture, we proposed a new matrix named Orientation Length Zone Matrix (OLZM) and denoted
OLf (n; l), which yields the number of ”fibers” of orientation n and length l. The number of rows of OLZM depends on the degree of discretization of the orientation space and the number of columns equal to the longest fiber of the texture.

To deal with the problem of rotation invariance, we offer the following alternative solutions. If the texture f is a segmented object, the orientation of each zone is given with respect to the coordinate system associated to the main axis of the object (computed by PCA). If the texture f is not bounded in the image, the main axis can be replaced by the average of orientations of all the zones which compose the texture.

Obviously, this matrix can be split into two matrices in order to treat specific problems: geodesic length and orientation.

An example of utilization:
BufferedImage image = ... ; // use your reader
MGlolzm mglolzm = new MGlolzm() ;
mglolzm.Parameters(nbLength, nbOrientation, FixedSize, UseAverageOrientation, UseGapToAO, reducer, null, ForbiddenValue, EightConnex, distance) ;
mglolzm.Compute(vignette, nbCPU) ;
double[] features = mglolzm.Features() ;

nbLength is the number of length to take into account.
nbOrientation is the number of orientation to take into account.
FixedSize is a variable to know if the matrix must have a fixed size. Empirically, I have never obtained better results with a fixed size, so my advice is to always use this parameter as « false ».
UseAverageOrientation Is the orientation computed according to the average orientation? If true, the matrix is rotation invariant.
UseGapToAO Is the orientation set in the matrix equal to the gap with the average orientation?
reducer reduces the number of gray level. Use this one.
null. Normally, it could be a leveling in order to transform the texture in flat zones before matrix filling, but it can be null. This reduction could improve results. Contact me if you want code.
ForbiddenValue The value to not take into account during computations. If it is equal to a negative value, the entire texture is process. Caution, that can depend on the class which labels connected component.
EightConnex Is the labeling realized with 8-connexity.
distance is the distance to use for the computation of the geodesic diameter.

Here a complete example.

not hesitate to contact me for explanations or everything else.

Related publication:

- 1 -
Advanced Statistical Matrices for Texture Characterization: Application to DNA Chromatin and Microtubule Netwok Classification, IEEE ICIP 2012.