15.3. EDGE DETECTORS AS TEXTURE OPERATORS
What we want is an operator that could characterize the things and pat-
terns that comprise texture. Such an operator would represent a texture by
anumber just as gray levels represent the lightness or darkness of objects.
We could then use the gray level and edge-based segmentation techniques
discussed in earlier chapters. Unfortunately, simple operators that work for
all textures do not exist. There is a collection of operators that work in some
cases. Edge detectors and dierence operators work in certain situations.
The Hurst operator [15.2] produces good results in many images, but has
ahigh computational cost. The common sense comparison approach works
well in many images, but only isolates one texture per image.
One bad trait of texture operators is their computations. Several of them
required many, complex,
oating point calculations. There is no way around
this problem with texture operators. This was an issue in 1993 when I rst
tried to write texture operators. It is not an issue in late 1998 as PCs are
much more powerful.
15.3 Edge Detectors as Texture Operators
Edge detectors can be used as texture operators. This is because a textured
area has many edges compared with a smooth area. Applying an edge de-
tector to a texture produces many strong, bright edges while edge detecting
asmooth area yields nothing. Smoothing the edge detector result gives a
bright area that can be separated from the dark area that lacked edges.
Not all edge detectors work well with textures. The four parts of Figure
15.3 illustrate how the Sobel edge detector (chapter 5) failed to distinguish
two textures. The upper left quarter of the image contains a tightly woven
texture. The upper right quarter contains a random grass texture. Beneath
each texture is the result of the Sobel edge detector. It detected all the edges
in the two distinctly dierent textures. The result, however, is two areas
with similar gray levels.
The range operator is an edge detector that does work well on some
textures. It takes the pixels in an nxn area, sorts them by value, and replaces
the center pixel with the range (the largest pixel value minus the smallest).
Figure 15.4 shows an example of the range operator (chapter 6) applied
to a texture. The upper left quarter is the input image. I placed a small
section of the tightly woven texture of Figure 15.2 into a square of the carpet
texture from Figure 15.2. The upper right quarter of Figure 15.4 shows the