[ Usenet FAQs | Web FAQs | Documents | RFC Index ]
Part1 - Part2 - Part3 - Part4 - Part5 - Single Page
Top Document: Satellite Imagery FAQ - 3/5
Previous Document: Resolution
Next Document: Basic Processing Levels
-
Search the FAQ Archives
Part1 - Part2 - Part3 - Part4 - Part5 - Single Page
Top Document: Satellite Imagery FAQ - 3/5
Previous Document: Resolution
Next Document: Basic Processing Levels
Image Formats
Image data on tape
Looking at the images stored on tape there's three types of
information
* Volume Directory, which is actually meta-information about the way
the headers/trailers and image data itself are stored
* Information about the images
This information can be stored in separate files or together with
the image data in one file.
This information can be virtually anything related to the image
data
+ Dimensions. Number of lines, pixels per line and bands etc.
+ Calibration data
+ Earth location data
+ Orbital elements from the satellite
+ Sun elevation and azimuth angle
+ Annotation text
+ Color Lookup tables
+ Histograms
+ Etc. etc...
The information is often called a _header_, information _after_
the image data is called a _trailer_
* The pure image data itself
The image data can be arranged inside the files in many ways. Most
common ones are
* BIP, Band Interleaved by Pixel
* BIL, Band Interleaved by Line
* BSQ, Band SeQuential
If the pixels of the bands A, B, C and D are denoted a, b, c and d
respectively then _BIP_ is organized like
abcdabcdabcdabcdabcdabcdabcdabcdabcd... line 1
abcdabcdabcdabcdabcdabcdabcdabcdabcd... line 2
abcdabcdabcdabcdabcdabcdabcdabcdabcd... line 3
...
abcdabcdabcdabcdabcdabcdabcdabcdabcd...
abcdabcdabcdabcdabcdabcdabcdabcdabcd...
BIP can be read with the following pseudo-code program
FOR EACH line
FOR EACH pixel
FOR EACH band
I[pixel, line, band] = get_pixel(input);
_BIL_ looks like
aaaaaaaaaaaa... band 1, line 1
bbbbbbbbbbbb... band 2
cccccccccccc... band 3
dddddddddddd... band 4
aaaaaaaaaaaa... band 1, line 2
...
BIL can be read with the following pseudo-code program
FOR EACH line
FOR EACH band
FOR EACH pixel
I[pixel, line, band] = get_pixel(input);
_BSQ_ shows
aaaaaaaaaaaa... line 1, band 1
aaaaaaaaaaaa... line 2
aaaaaaaaaaaa... line 3
...
bbbbbbbbbbbb... line 1, band 2
bbbbbbbbbbbb... line 2
bbbbbbbbbbbb... line 3
...
cccccccccccc... line 1, band 3
cccccccccccc... line 2
cccccccccccc... line 3
...
dddddddddddd... line 1, band 4
dddddddddddd... line 2
dddddddddddd... line 3
...
BSQ can be read with the following pseudo-code program
FOR EACH band
FOR EACH line
FOR EACH pixel
I[pixel, line, band] = get_pixel(input);
Of course others are possible, like the old _EROS BIP2_ format (for
four band MSS images) where the image is first divided into four
strips. EROS BIP2 strips
Then each strip is stored like
aabbccddaabbccddaabbccddaabbccdd... line 1
aabbccddaabbccddaabbccddaabbccdd... line 2
...
To decode one strip the following pseudo-code can be used
/* The '%' character is the modulo operator */
/* Note that operations on 'i' are integer operations! */
/* Copyright 1994 by W.H. Bakker - ITC */
FOR EACH line
FOR i=0 TO BANDS*WIDTH
I[(i/8)*2+i%2, line, (i/2)%4] = get_pixel(input);
Subsequently, the strips must be glued back together.
_________________________________________________________________
Top Document: Satellite Imagery FAQ - 3/5
Previous Document: Resolution
Next Document: Basic Processing Levels
Part1 - Part2 - Part3 - Part4 - Part5 - Single Page
[ Usenet FAQs | Web FAQs | Documents | RFC Index ]
Send corrections/additions to the FAQ Maintainer:
satfaq@pobox.com
Last Update October 22 2009 @ 05:34 AM