Rank-Strength-Texture Algorithm Background


The ENVI Rank-Strength-Texture algorithm provides texture metrics that aid in unsupervised classification, cloud detection, and feature extraction. It can be used with any band from any sensor, but it is most effective with panchromatic imagery. The Rank-Strength-Texture algorithm is based on the algorithm described in the following reference, with several modifications:

Patel, D., and T. J. Stonham. "Texture Image Classification and Segmentation using RANK-Order Clustering." 11th IAPR International Conference on Pattern Recognition (1992), pp. 92-95.

The Patel and Stonham algorithm is similar to other texture algorithms in that moving kernel values are evaluated to yield a texture score for each pixel. It sorts the values in each of the four directions (horizontal, vertical, and two diagonals) by decreasing order and assigns them a "RANK." This is the index of the sorted permutation in a list of all permutations. For a kernel size of 5x5 pixels (ignoring the center pixel), each direction has four values. These can be arranged in 4! = 24 RANK permutations. Please refer to the above reference for details.

ENVI improves upon the Patel and Stonham algorithm in the following ways:

In the original algorithm, each direction has its own RANK vector from 1 to 24 where the counts of each RANK are stored. It does not compute a single RANK value for each pixel. The collection of four RANK vectors is called the RANK strength.

ENVI does not maintain a RANK vector. Instead, it determines the direction that has the largest variance, then it computes the difference between the largest and smallest values in that direction. This difference is called texture strength. It is a single value computed for every pixel. ENVI does not compute RANK value or strength for a given pixel if the kernel contains any null values.

ENVI defines a 25th permutation in which all four values are equal; it also uses a different RANK order than the Patel and Stonham algorithm:

RANK permutations

Original RANK

ENVI RANK

Equal

 

1

A B C D

1

6

A B D C

2

7

A D B C

3

2

A D C B

4

3

A C D B

5

4

A C B D

6

5

C A B D

7

16

C A D B

8

17

C D A B

9

18

C D B A

10

19

C B D A

11

14

C B A D

12

15

B C A D

13

12

B C D A

14

13

B D C A

15

10

B D A C

16

11

B A D C

17

8

B A C D

18

9

D A C B

19

24

D A B C

20

25

D B A C

21

22

D B C A

22

23

D C B A

23

20

D C A B

24

21

Label and Strength

For each pixel, ENVI converts the RANK values in the above table to a single Label value that includes direction.

Label = 25 * direction of maximum strength + RANK -1

The Label value ranges from 0 to 99, in the following order of direction:

  • 0 to 24: Horizontal
  • 25 to 49: Diagonal 1
  • 50 to 74: Vertical
  • 75 to 99: Diagonal 2

The directions and RANK positions are defined as follows:

The Label measure is not as effective as Strength for visually interpreting texture in an image. It is used as input to the Strength value and to other texture measures.

ENVI determines the direction that has the largest strength variance. It computes the difference between the largest and smallest values in that direction. The Strength value is a measure of this difference. Rougher textures have higher Strength values. The following image shows an example. The brightest pixels indicate rough textures such as building outlines and residential trees. Darker pixels indicate uniform surfaces such as roads and grassy surfaces.

Texture strength is effective at discriminating cloud shadows from other features, but not necessarily for detecting clouds.

See Also


Texture Metrics Background, ENVIRankStrengthTextureRaster