Cross GLCM¶
Cross GLCM is when I & J for GLCM is taken from separate images, yielding statistical relationships between images
Usage¶
Use Cross GLCM on an image like so.
>>> from glcm_cupy import GLCMCross
>>> import numpy as np
>>> from PIL import Image
>>> ar = np.asarray(Image.open("image.jpg"))
>>> ar.shape
(1080, 1920, 3)
>>> g = GLCMCross(...).run(ar)
>>> g.shape
(1080, 1920, 3, 6)
Last dimension of g is the GLCM Features.
To retrieve a GLCM Feature:
>>> from glcm_cupy import CONTRAST
>>> g[..., CONTRAST].shape
Consider glcm_cross if not reusing GLCMCross()
>>> from glcm_cupy import glcm
>>> g = glcm_cross(ar, ...)
Selecting and Retrieving Combinations¶
In each GLCMCross() instance, is a ix_combos property to specify combinations
In a 3 channel image, the following will only cross indices, 0 with 1, 1 with 2, skipping 0 with 2
>>> from glcm_cupy import glcm
>>> g = GLCMCross(..., ix_combos=[[0, 1], [1, 2]]).run(ar)
>>> g.shape
(1080, 1920, 2, 6)
g[:,:,0,:] retrieves 0 cross 1, g[:,:,1,:] retrieves 1 cross 2.
Default Combinations¶
By default, ix_combos is None, uses all possible combinations. After run(...), ix_combos will be populated
with combinations used. Thus, you can retrieve the default ordering of the 3rd dimension.
The combinations uses the ordering of itertools.combinations(range(CHANNELS), 2).
Warning
When using glcm_cross, you can’t retrieve the generated order.
However, you may use itertools.combinations to indirectly yield it.