NAME
texture - Texture Feature Extraction
SYNOPSIS
#include "CVIPtoolkit.h"
#include "CVIPdef.h"
#include "CVIPimage.h"
#include "string.h"
#include "math.h"
#include "CVIPsegment.h"
#include "adaptThresh.h"
#include "stdio.h"
#include "string.h"
#include "CVIPtexture.h"
#include "CVIPtransform.h"
TEXTURE * texture( const Image *ImgP, const Image *segP, int
band, int r, int c, long int hex_equiv, int distance)
Parameters:
<ImgP> - pointer to source Image structure
<segP> - pointer to labeled Image structure
<band> - the band of the source image to be worked on
<r> - the row co-ordinate of the object
<c> - the column co-ordinate of the object
<hex_equiv> - the hex equivalent of the Texture feature map
<distance> - the pixel distance to calculate the co-
occurence matrix
PATH
$CVIPHOME/FEATURE/CVIP_textureSetUp.c
DESCRIPTION
Calculates the 14 textural features based on the co-
occurrence matrices at 0, 45, 90, and 135 degrees. See the
structure "TEXTURE" for the 14 features. The input parame-
ter <distance> is used in calculating the co-occurence
matrices. The average and range of the four directions is
also calculated and returned for each feature.
The algorithms for calculating the 14 textural features are
taken from R.M. Haralick, K. Shanmugam, and I. Dinstein.
1973. Textural features for image classification. "IEEE
Transactions on Systems, Man, and Cybertinetics, SMC-3 (6) :
610-621.
The input parameter <hex_equiv> is used to signal which of
the 14 features to find. See the struct
"TEXTURE_FEATURE_MAP" for each features hex value. To cal-
culate more than one feature at a time simply add the hex
values together. Features that are not selected to be calcu-
lated will be set to zero. The function will only do one
band of the image, the input parameter <band> is used to
select which band to extract the features from.
Gray level values of zero will be ignored, they will not be
used in the features calculations.
The code for implementing the algrorithm was taken from
another program written by James Darrell McCauley, Texas
Agricultural Experiment Station, Texas A&M University The
algorithms were used as coded with some minor modifications.
TYPES AND CONSTANTS
typedef struct {
/* [0] -> 0 degree, [1] -> 45 degree, [2] -> 90 degree, [3] -> 135 degree, [4] -> average, [5] -> range (max - min) */
float ASM[6]; /* (1) Angular Second Moment */
float contrast[6]; /* (2) Contrast */
float correlation[6]; /* (3) Correlation */
float variance[6]; /* (4) Variance */
float IDM[6]; /* (5) Inverse Diffenence Moment */
float sum_avg[6]; /* (6) Sum Average */
float sum_var[6]; /* (7) Sum Variance */
float sum_entropy[6]; /* (8) Sum Entropy */
float entropy[6]; /* (9) Entropy */
float diff_var[6]; /* (10) Difference Variance */
float diff_entropy[6]; /* (11) Diffenence Entropy */
float meas_corr1[6]; /* (12) Measure of Correlation 1 */
float meas_corr2[6]; /* (13) Measure of Correlation 2 */
float max_corr_coef[6];/* (14) Maximal Correlation Coefficient */
} TEXTURE;
typedef struct {
/* Allows the user to choose which features to extract, a zero will cause
the feature to be ignored, the returned feature value will be 0.0 */
int ASM; /* (1) Angular Second Moment (hex_equiv 0x0001) */
int contrast; /* (2) Contrast (hex_equiv 0x0002) */
int correlation; /* (3) Correlation (hex_equiv 0x0004) */
int variance; /* (4) Variance (hex_equiv 0x0008) */
int IDM; /* (5) Inverse Diffenence Moment (hex_equiv 0x0010) */
int sum_avg; /* (6) Sum Average (hex_equiv 0x0020) */
int sum_var; /* (7) Sum Variance (hex_equiv 0x0040) */
int sum_entropy; /* (8) Sum Entropy (hex_equiv 0x0080) */
int entropy; /* (9) Entropy (hex_equiv 0x0100) */
int diff_var; /* (10) Difference Variance (hex_equiv 0x0200) */
int diff_entropy; /* (11) Diffenence Entropy (hex_equiv 0x0400) */
int meas_corr1; /* (12) Measure of Correlation 1 (hex_equiv 0x0800) */
int meas_corr2; /* (13) Measure of Correlation 2 (hex_equiv 0x1000) */
int max_corr_coef; /* (14) Maximal Correlation Coefficient (hex_equiv 0x2000) */
} TEXTURE_FEATURE_MAP;
RETURN VALUES
Pointer to a Texture Feature structure
HISTORY
History information recorded: None
BUGS
Runs slow with large objects (speed is also dependent on the
number of different gray levels present in the image).
The Maximal Correlation Coefficient does not always con-
verge, a NULL will be returned as its data. Calculation of
the Maximal Correlation Coefficient can take a long time,
especially if it does not converge
SEE ALSO
libfeature, cvip_pgmtexture.c
AUTHOR
Copyright (C) 1996 SIUE - by Scott E. Umbaugh and Steven M
Costello.