Data Ordering

Now it's time to extract the data from the image and place that data into our signal. First, we create a high resolution reference grid on the original image. Using the information found in the main header, we construct a partial border around the image area. The border is around the left side and top of our image. The left border has length XOsiz, and the top border has a width YOsiz. The reference grid is thus bounded by the upper left corner at coordinate (0,0) and the lower right corner at coordinate (XOsiz-1, YOsiz-1). The image area is defined by the coordinates (XOsiz, YOsiz) to (XOsiz-1, YOsiz-1). This image should make these dimensions clear to the reader.

Next, we divide our reference grid into tiles. These tiles will form the basis for our image compression. Note that all of the information needed to create the tiles is already provided by the marker header. Thus, we can quickly determine the size our entire tile grid, how much the tile grid is offset from the reference grid, and the size and location of each individual tile. This information is then stored in each tiles tile-part header marker. Again, the image below should clearly show how the tile grid is constructed.

There are several restraints in place to guarantee that the first tile T0 will contain at least one reference grid point from the image area:

0 < XTOsiz < XOsiz

0 < YTOsiz < YOsiz

XTsiz + XTOsiz > XOsiz

YTsiz + YTOsiz > YOsiz

With this information, we can now determine the number of tiles in either the X or Y direction. We can also express any tile as the ordered pair (p, q) where p is the horizontal index of the tile and q is the vertical index of the tile. Thus, in the example above, T0 is at (0,0) and T7 is at (2,1). This then allows us to determine the exact coordinated of each tile with the following equations:

Each tile is then further subdivided into precincts. This decomposition works in much the same way as the original division into tiles. The precincts simply allow for an even greater control over the compression of the image.

Also, we use wavelets for the first time at this point. We use a wavelet transformation to divide the tile into sub-bands. Using high and low-pass filtering, we can decompose the tile into smaller pieces. Each tile can be decomposed to different levels, depending on certain choices made by the user. I'll elaborate more on these wavelet transformations later in the paper.

All of the information that pertains to a single tile (index, position, precincts, etc.) is then put together in a contiguous stream of data called a packet.