Understanding Rasters

advertisement
Understanding Rasters
By Joseph Collins-Unruh
-1-
Table of Contents
Introduction and Statement of Purpose...........................................................................3
General Properties of Rasters..........................................................................................4
Height and Width........................................................................................................4
Data Type....................................................................................................................4
Vertical Order.............................................................................................................4
Endianness (Byte Order).............................................................................................5
Raster Graphics...............................................................................................................6
Bands..........................................................................................................................6
Color Model................................................................................................................6
Interleave.....................................................................................................................7
Geographical Rasters......................................................................................................9
Cell spacing.................................................................................................................9
Nodata Values (Null Values)......................................................................................9
Cell Origin..................................................................................................................9
Raster Origin.............................................................................................................10
Data Structures..............................................................................................................10
Continuous................................................................................................................10
Classified...................................................................................................................10
Compression.................................................................................................................11
Run Length Encoding (RLE)....................................................................................11
LZW Compression....................................................................................................11
Case Study: ENVI .hdr format......................................................................................12
Header File................................................................................................................12
Binary File................................................................................................................13
References.....................................................................................................................14
-2-
Introduction and Statement of Purpose
When I started working at Safe Software I had no idea what a raster Dataset was. I spent
hours scanning the internet searching for a precise definition of raster.
Unfortunately, resources were scarce and I never got beyond the basic definition, “A grid
of cells or pixels, with each pixel containing a single value.” While simple enough, this
definition taught me nothing about how those pixels were represented or what you could
do with them.
This guide is my attempt to save you trouble by giving you a solid reference to the terms
and ideas involved with rasters. It is an introduction to what a raster is so that you can
start using them without worrying about terminology.
Although the document was designed for programmers I’ve put a great deal of effort into
making it understandable by everyone. Non-programmers who read this can safely ignore
the points that refer to programming languages and techniques. Also, the ENVI .hdr
format case study in the last section will be of little use to non-programmers.
This is by no means a complete reference. It is comprised only of the main subset of what
I was exposed to while working at safe software, augmented significantly by research
conducted at the time of writing to ensure accuracy. There are certainly other raster
implementations and models beyond what I describe here. However, the vast majority of
raster formats that I worked with while at Safe Software could be described by this model
or an extension of this model with additional aspects such as compression methods or
color models.
-3-
General Properties of Rasters
Height and Width
The height and width of a raster is, quite simply, the number of
rows and columns contained in the grid. Height and width are
sometimes referred to as lines and samples respectively. The
individual entries of a raster are called cells or, in the case of
raster graphics, pixels.
Figure 1
Raster Data
Type
8-bit unsigned
Integer
8-bit signed
Integer
16-bit unsigned
integer
16-bit signed
integer
32-bit unsigned
integer
32-bit integer
32-bit real/float
64-bit real/float
Corresponding
C++ Data Type
unsigned char
char (character)
unsigned short
short
unsigned int
int
float
double
Data Type
A raster’s data type is the type of information
stored in each cell of the raster. Raster data types
are almost always numeric but practically any data
type is possible.
The standard for representing numeric data types
has the form:
[allocation]-bit [type]
Where the allocation is the number of bits that the
data type occupies and the type is one of: integer,
unsigned integer (integers with no negative
values), or real (numbers with decimals).
The table to the left shows many common numeric
raster data types and the associated C/C++ data
types.
Table 1
Common numeric raster data types
Vertical Order
The vertical order of a raster specifies what row of the raster you
start reading from. For a vertical order that is top-down you start
reading across the top row of the raster. When you’ve read all of
the columns of the top row you move on the second row down, and
so on. The bottom-up vertical order is exactly the opposite. Here,
you read all of the columns from the bottom row first then move
on to the second row up.
Figure 3
Bottom-Up Vertical
Ordering
-4-
Endianness (Byte Order)
The endianness of a raster describes how the raster data is stored in memory. Endianness
is not a property inherent to rasters, but rather a consequence of working with rasters on
different computer systems with different standards for storing numeric data. The two
most common endianness’ are ‘little endian’ and ‘big endian’. Little endiandiannes is
sometimes called ‘least significant byte’ and occurs most commonly on machines based
on the Intel architecture. Big Endianness is sometimes called ‘most significant byte’ and
occurs most commonly on machines based on the Motorola and SPARC architectures.
The technical details that are important for dealing with endianness programmatically
will not be dealt with here. Programmers should already know the specifics of endianness
and Non-programmers shouldn’t worry about endianness as it isn’t critical in
understanding rasters.
-5-
Raster Graphics
The most common type of raster is a digital image or graphical raster. Raster graphics are
a computers primary method for displaying images and pictures.
Most of the terms covered here are not limited solely to raster graphics. The ideas behind
terms like band and interleave are most easily represented in the context of images.
Bands
The number of bands that a raster has specifies the number of values for each cell or pixel
in the raster grid. For example, a RGB color image includes one band for each color
red(R), green(G) and blue(B). Another word that is commonly used for bands is layers.
Color Model
The color model describes how the color of individual pixels is determined from the
values at that point in the different bands. For single banded color models like grayscale,
the pixel value simply represents a range of light values. However, in order to produce
colors, more complex models are required.
Mono Color:
The most basic color model for rasters is mono color. With mono color each
pixel can be represented by a single bit. When the bit is 0 then the pixel is
black; when set to 1 the pixel is white.
Figure 4
Grayscale:
The next color model is grayscale. Grayscale images can use any data type with
the minimum value representing black and the highest value representing white.
However, almost all grayscale image formats use 8-bit unsigned integers with
some using 16-bit unsigned integers for a more precise representation of color. In
figure 5, to the right, the 8-bit unsigned integer data type is used for simplicity. So,
in this case black is represented by 0 and white by 255. (starts counting from 0)
RGB (Red Green Blue):
Figure 5
The RGB color model requires that the raster have 3 bands, with one
band for each of the three RGB colors; Red, Green and Blue. Like
Grayscale each color typically uses 8-bit unsigned integers to represent
the color rage. The difference is that each cell ranges from 0 being
black and 255 being the associated color. The resulting pixel uses
additive color mixing to obtain the final color, as shown in
figures 6 and 7.
Figure 6
Additive Color Mixing
Figure 7
-6-
RGBA (Red Green Blue Alpha):
The RGBA color model is exactly like that of RGB, except there is an additional band
representing the pixel’s alpha value or transparency. For example, if the alpha value for a
pixel is 0 then the pixel will not be visible at all and you should see what is behind the
image at that pixel. If, on the other hand, the alpha value is 255, then the pixel will be
opaque and it will appear as a RGB pixel would.
CMYK (Cyan Magenta Yellow Black):
Like RGB and RGBA, CMYK is another type of color mixing color
model, except CMYK uses subtractive color mixing instead. RGB
color is analogous to the mixing of colors of light, with black
representing the absence of light. CMYK on the other hand, is
analogous to the mixing of pigments, where black represents all
pigments combined.
Figure 8
Subtractive Color Mixing
Interleave
The raster’s interleave specifies how the pixels and bands in a
raster are arranged. Different interleaves allow you to arrange the
data non-contiguously to optimize certain methods of access.
Interleave is only relevant in multi-banded rasters; the cell values
for rasters with one band are written sequentially. The main
interleaves are BIL, BIP, BSQ and Tiled, which are defined below.
Figure 9
Base image for
interleave examples
To the right, Figure 7 is a 4x4 image which is the basis for
demonstrating how each of the interleaves is organized with the
RGB color model. In each case the overall size of the image will triple since all three
bands of each pixel will be shown. Also, the values should all be read from left to right,
top to bottom.
Band-Interleaved-by-Pixel (BIP): This
is the most intuitive interleave, where for
a given pixel, the values for all bands are
side by side. This interleave is most
efficient for determining all of the values
for a given pixel since they are all side
by side.
Figure 10: BIP
Each block outlined in white represents one
pixel. Each line is one line of the image.
-7-
Band-Interleaved-by-Line (BIL): With
BIL each raster row is made up of 3
band rows, one for each color
component. BIL interleave is most
efficient for accessing all bands of a
given row sequentially.
Figure 11: BIL
Each block outlined in white represents one
band of one row. Each line represents one line
of the image.
Band-Sequential (BSQ) Interleave: With BSQ interleave the entirety
of the first band is written first, followed by the second band, and so
on. BSQ Interleave is most efficient for accessing each band
sequentially. This was the most commonly used interleave that I
encountered while working with geographic data since it efficiently
accesses all of the values for a single band.
Tiled Interleave: With this interleave a raster is
divided into some number of equal sized blocks,
each written sequentially from left to right and top
to bottom. Typically, each tile is interleaved with
BSQ. For the example on the right, figure 9 was
divided into 4 2x2 blocks.
Figure 12: BSQ
Each block outlined in white
represents one band of the image
Figure 13: Tiled Interleave
Each block outlined in white
represents one 2x2 tile
-8-
Geographical Rasters
Next to image rasters, geographical rasters are the most commonly encountered type of
rasters. A geographical raster essentially divides a real world place into a grid and assigns
some element of the real world to each cell of the grid. Often the data that is stored is the
elevation at the cells position, but it can be almost anything that varies continuously or
discretely over a geographical range. Other common geographical rasters measure
temperature, soil composition or even land ownership.
Cell spacing
A raster’s cell spacing describes the area that each cell covers in the real world. This cell
spacing indirectly determines the smallest size an object can be and still be visible in the
raster. For example, if a raster’s cell spacing measures 3 meters in the x and y direction
for a total of 9 square meters, in order for the feature to be observable it must take up
most of the area of the cell or be at least 4.5 meters square. A raster’s cell spacing is often
described as the resolution of the raster since it determines how much detail can be
observed.
It’s important to note that there is no requirement that the area represented by cell has to
be square. There are many formats, such as GeoTiff and ENVI .hdr, which is described
below, where the area covered by a cell can be defined as rectangular.
Nodata Values (Null Values)
Often when measuring values over a geographical range it is not possible to get data for
every cell of the grid. For example, when measuring soil composition in the vicinity of a
lake it’s often not possible or relevant to get the data from below the surface of the lake.
In those cases, you would enter a nodata value in that position. Typically, if a raster
format supports nodata values it will reserve one extreme value that is rarely used to be
the nodata value. For example, USGS DEM format uses -32768, which is the smallest
possible integer value as its nodata value.
Nodata values are often used in images as well, for an example of this all you have to do
is look at your computers desktop. There, the icons only have image data in some areas.
All of the areas where you can see the background visible within icon, like the middle of
the e in the Internet Explorer® icon, are actually nodata values.
Cell Origin
The raster origin describes where within the cell the values are taken. Often when you are
taking measurements the cell values of a raster, you will only take data from one position
within each cell. That position is known as the cell origin. Other times, value contained
within a cell will be the average value of the area the cell covers. In these cases the cell
origin is less important.
-9-
Raster Origin
The raster’s origin is where, geographically, the raster is located. It’s what allows you to
map the cell’s values to a location in the real world. The rasters origin is taken relative to
some position in the raster. Often that position is the lower left corner of the raster, but it
varies depending on the format.
Data Structures
Continuous
This is the most basic and straightforward raster representation. It is
also the structure. Here, the value of each cell is sequentially written
one right after the other. This structure has a flexibility advantage
over other data structures since the values each cell can have aren’t
limited and is very simple to locate the value for a specific cell.
However, it is not very space efficient without compression.
Figure 14
Continuous Raster
Classified
Figure 15
Classified version of figure 14
With a classified data structure a map of possible cell
values in the raster is first created. Then, the raster body
is created with the actual cell values replaced by the
index of those values in the map. Classified rasters are
space efficient if there are few differing cell values. You
also maintain the ability to quickly locate the value of a
given cell. Web formats like PNG and GIF use
classified rasters with compression since it allows them
to put 24-bit or 32-bit images into 8-bit or 16-bit space.
- 10 -
Compression
Compression is used to reduce the final size of a raster by applying an algorithm to the
raster that allows you to change the way that the data is represented. With rasters that are
sufficiently large it is often vital that the raster be compressed. It can take a great deal
more time load an uncompressed raster from a hard drive or the internet into memory
than it takes to uncompress a raster already in memory.
Compression algorithms are often divided into two types, lossy and lossless. With lossy
compression algorithms the correctness of the data is often sacrificed in order to
compress a raster in to as small a space as possible. Lossless algorithms, on the other
hand, ensure that the data remains completely intact and because of this can’t approach
the compression ratios you can achieve with a lossy algorithm.
The majority of efficient algorithms, both lossy and lossless, used these days require a
strong mathematical background to understand, much less implement. Unfortunately,
because of this, many widely used and important compression algorithms won’t be
included here. Below, a few relatively simple lossless compression algorithms are
explained
Run Length Encoding (RLE)
Run Length Encoding is probably the most simple and naïve compression algorithm there
is. With run length encoding, instead of specifying a value at every single location in the
raster, you specify values as they appear and report how many occurrences of that value
there are consecutively. RLE encoding is can save a great deal of space if many
sequential cells contain the same values.
LZW Compression
LZW compression is a type of compression that allows you to optimize for space based
on sequences of bytes occurring frequently. First a dictionary of the 255 possible 8-bit
bytes is created and a code is assigned to each one. Then it traverses the binary file
adding character sequences that it finds that are not already in the dictionary and assigns
codes to each of those. The dictionary does not have to be transmitted with the
compressed data since the decompressor can build it in the same way the compressor did.
This compression algorithm is used by the GIF format.
- 11 -
Case Study: ENVI .hdr format
There are a number of features of the ENVI header format that make it a good
introductory raster format. ENVI has a simple structure; there is no compression or other
derivation from the standard continuous representation. This makes it easy to find
individual cell values within the binary file. It also has a lot of flexibility in the kinds of
data that can be stored. EVNI can have one of 6 data types for storing numerical data, it
can also store color images in RGB format. There is even the option to specify
geographic location information.
An ENVI raster is divided into two separate files. One is a header file which stores all of
the raster properties; such as its dimensions, data type and interleave. The second is the
binary file which stores all of the actual raster data.
Header File
The header is a plain ASCII text file that has the .hdr extension. Each property of the
raster is placed on a separate line in the format:
[keyword] = [value]
Below is a table of keywords and their possible values.
ENVI .hdr Keyword
samples
lines
bands
interleave
data type
byte order
(optional)
map info
(optional)
Desciption
Number of columns in raster
Number of rows in raster
Number of bands. If set to 3 or 4 most readers
will interpret as RGB or RGBA color.
Value can be one of bsq, bil or bip
Possible values:
1 – 8-bit unsigned integer
2 – 16-bit signed integer
3 – 32-bit signed integer
4 – 32-bit real
5 – 64-bit real
12 – 16-bit unsigned integer
13 - 32-bit unsigned integer
Possible values:
0 – little endian (default)
1 – big endian
This keyword provides geographical positioning.
See next page for complete description.
Table 2
ENVI .hdr header file keywords
- 12 -
Map Info Keyword:
The map info keyword will have the following format:
map info = {[projection], [reference cell x coordinate],
[reference cell y coordinate], [cell easting], [cell northing],
[x cell size], [y cell size], [projection zone], [direction]}
[projection]: This is the projection system that the raster uses, will almost always be
UTM in ENVI .hdr files.
[reference pixel x/y coordinate]: These two fields specify the grid location of the
first pixel in the binary file. This will be 1,1 for top-down vertical order or 1,<number
of columns> for bottom-up.
[pixel easting]: This is the number of meters east of the zone origin the reference
pixel is located.
[pixel northing]: This is the number of meters north of the projection zone origin the
reference pixel is located.
[x/y pixel size]: This is the size/resolution of each cell in meters.
[projection zone]: This is the projection zone that the raster is located in.
[direction](UTM only): Because there are two of every UTM projection zone – one
on each side of the equator – you must specify which one by entering North or South.
Binary File
After reading the header file you now know all of the raster’s properties relevant to
reading the binary image data. The ENVI .hdr format is a standard continuous format, so
accessing individual cells of the raster is straightforward.
Below, I’ve included a table of formulae for accessing the individual cell values for a
given row, column and band from the binary file based on the header properties. The
table assumes that row, column and band are counted starting from zero.
Interleave
One band, no
interleave
BIP
BIL
BSQ
Formula for file position
(row*samples + column)*allocation
(row*samples + column)*allocation*bands+band
(row*bands+band*column)*samples*allocation
(lines*band*samples+row*samples + column)*allocation
Table 3
- 13 -
References
1. Complete description of LZW Compression algorithm in Dr. Dobb’s Journal by
Mark Nelson. Created October 1989. Accessed January 2006.
http://www.dogma.net/markn/articles/lzw/lzw.htm
2. Reference in creating the ENVI .hdr Case study:
RSI Documentation, “ENVI Reader for ArcGIS® User’s Guide”, March 2003,
RSI Inc.
3. Reference for information about color spaces and color models.
Unknown Author
http://en.wikipedia.org/wiki/Color_space
Updated January 11, 2006: Accessed January 11, 2006
4. Geographical raster information.
http://www.sli.unimelb.edu.au/gisweb/GISModule/GIST_Raster.htm
All text and images in this document were created by Joseph Collins-Unruh.
- 14 -
Download