DATA REPRESENTATION AND ACCESS METHOD

Abstract: A method of representing and accessing an array of data is disclosed. Preferably, the array of data is an image. This involves determining a series of subsamples (21 to 28) of the array in which the subsamples (21 to 28) are of increasing granularity. The collection of the series of subsamples (21 to 28) substantially covers the whole of the data array. The series of subsamples (21 to 28) are then stored in order of granularity from coarsest to finest granularity. Thus, in reading out the stored data, only the corresponding subsamples (21 to 28) need be read out.

Description: DATA REPRESENTATION AND ACCESS METHOD Field of the Invention The present invention relates to the representation and access of data and, in particular, to the representation and access of graphical image data. Background Art Conventional techniques of storing image data, and other data which can be perceived as having an array format, fall into two basic categories known as sequential format and tiled format. Data, such as images, which is stored in a sequential format is normally divided into horizontal "scan lines". Each scan line can contain a row of data, which in the case of images will consist of pixels that are traditionally stored from left to right. It will be apparent to a person skilled in the art that the scan lines could also consist of columns of data, generally from top to bottom of the image. Other forms of scan line storage are possible, such as grouping a number of rows or scan lines of data together into "strips". As an example, photographic scanning devices traditionally scan an image in a sequential format. Fig. 1 illustrates this conventional format where an image that has 4,096 x 4,096 pixels, for example, is stored in a sequential format from pixel number 0 to pixel number 16,777,215. Referring now to Fig. 2, a second conventional storage format for an image is the "tiled" format. In this format, the image or data 2, which is made up of a large array of pixels, is "tiled" by a series of equally sized rectangles or square tiles 3. Each tile 3 is considered to be a "sub-image", with the pixels of each tile stored in a sequential manner as shown in Fig. 1. Often the size of a tile is chosen to be a power of 2 (for example, 128 x 128 pixels or 256 x 256 pixels). This generally allows calculations, such as division calculations which are required to split up the image or data into its corresponding tiles, to be computed more efficiently. If the image size is not an exact multiple of the tile size, some of the tiles allocated, for example tile 4, will then store only part of an image, with that portion of the tile lying outside the bounds of the image being wasted storage. A tiled image format is particularly advantageous when it is desired to only access a small portion of the image or data. If the image 2 is stored on secondary storage media and has to be loaded into a computer system, to access a small portion of the image (e.g. , portion 5), only the tile 6 need be loaded from secondary storage. Modern virtual memory operating systems, for example UNIX, Windows NT, Windows 95 (Registered Trade Marks), divide up their various storage media, such as hard disks, into blocks called "pages". Such operating systems are known as paged memory architectures. For a thorough discussion of such architectures, reference is made to a standard text such as Computer Architecture: A Quantitative Approach. written by Hennessy and Patterson, and published in 1990 by Morgan Kaufmann Publishers Inc. and, in particular, to chapters 8 and 9 thereof. In a paged memory architecture, when an application program attempts to access a portion of memory that is stored on a hard disk or external storage device, the operating system will determine on which "page" the byte resides and load the whole page from disk into memory. Typically, the size of pages is a variable operating system parameter, with a common size being 4 kilobytes (4,096 bytes). Hard-disk devices typically take of the order of a few tens of milliseconds to access any part of their stored data. This is to be compared with a memory cycle time of modern computers which is typically in the low tens of nanoseconds. Therefore, there is a large disparity between the time taken in accessing data from hard disk in comparison with accessing data from memory. This disparity is approximately three orders of magnitude. Although it may take tens of milliseconds for a disk drive to access its first byte of requested data, subsequent bytes, which are stored sequentially after a first byte, can often be accessed substantially more rapidly. Therefore, operating systems conventionally load a whole "block" or page of data from the hard disk at a time in the hope that, on the principle of locality, bytes surrounding a predetermined byte will also be required by an application program. This principle is normally quite effective in practice. However, the use of the paged memory model in image or data processing programs that use sequential or tiled data can cause significant problems. In a first example of one of these problems, it will be assumed that each image or data element or pixel requires one byte of storage. This would be a common scenario for example in grey scale images, with each pixel being able to take one of 256 levels. Turning now to Fig. 3, if it is desired, by an application program, to load a small rectangular portion of 100 pixels by 100 pixels, for example, of a very large image which has been stored in the sequential format, the application program can do this by reading 100 pixels from each of the 100 relevant scan lines required. Hence, the total number of bytes read by the application program will be 100 x 100 = 10,000 bytes. However, because the operating system only reads data from a disk storage device by means of page-sized portions, comprising 4,096 bytes, for example, the operating system begins by reading a first page 8 having 4,096 bytes and from the first page it extracts those 100 bytes 9 which form part of the first scan line that is required. Subsequently, the second page 11 is read in and 100 bytes from the second line is extracted. This process is continued for each of the 100 lines. From Fig. 3, it can be seen that to read and extract the 10,000 bytes comprising 100 pixels from 100 relevant scan lines, the operating system is required to read in a total of 409,600 bytes which is over 40 times more data than is actually required. This makes the above operation very time consuming. In a second example of the problems associated with the paged memory model, it is desired by an application program to reduce the size of a very large tiled image to one sixteenth of its original size. This is a common operation utilised by image processing programs that work by means of proxy images which are displayed and manipulated on screen. The image processing program reduces the image size by means of sub sampling. For example, in the present case, sub sampling can be achieved by reading every fourth pixel in a horizontal and vertical direction and displaying the pixels forming the new images on a display. The new image will be a quarter of the size in both the horizontal and vertical directions or one sixteenth the total area of the original very large image. Referring now to Fig. 4, there is shown a tile 13 containing 256 x 256 pixels numbered 0 to 65,535, with the pixels being stored in scan line, row or numerical order. In desiring to form a sub-sampled image, every fourth pixel (e.g., 15 to 18) in the vertical and horizontal directions is sampled to form the new image. As each sampled pixel in the vertical direction is 4 x 256 = 1,024 bytes apart, no pages within a tile can be skipped and, in order to form the sub-sampled image, the operating system must load every page in the tile, for each tile of the image. Hence, the operating system will load sixteen times more data than is required which again is a time consuming operation. Brief Description of the Drawings Embodiments of the invention will now be described with reference to the following drawings, in which: Fig. 1 illustrates a conventional "scan line" form of representation of data; Fig. 2 illustrates the conventional process of "tiling" an image; Fig. 3 illustrates a conventional arrangement of pixels when a tile form of arrangement is stored; Fig. 4 illustrates the layout of a tile as used with the prior art; Fig. 5 is a diagram illustrating a method of providing a tile layout according to a preferred embodiment of the invention; Fig. 6 is a flow diagram of the method according to the preferred embodiment; Fig. 7 is a flow diagram illustrating step 602 of Fig. 6 in greater detail; and Fig. 8 is a flow diagram illustrating step 604 of Fig. 6 in greater detail. Summary of the Invention It is an object of the present invention to provide an alternative data format which is more efficient for at least one class of data retrieval operations. In accordance with a first aspect of the present invention there is provided a method of representing an array of data, said method comprising the steps of: determining a series of sub samples of said array, said sub samples being of increasingly fine granularity, the collection of said series of sub samples substantially covering the whole of said array, and storing said series of sub samples in order of granularity from the coarsest granularity to the finest granularity such that, in reading out said stored data, only the corresponding sub samples need be read out. Preferably, each element of said array of data is present in only one of said series of sub samples. Preferably, the array of data forms a tile which is an element of a larger array of tiles. Detailed Description The preferred embodiment of the present invention will now be described with reference to accompanying Figs. 5 to 8 which illustrate the process of providing a tile layout according to the preferred embodiment which seeks to overcome disadvantages of the prior art. In the preferred embodiment, the image or data is again stored in a tiled format which has the advantage of allowing access to small portions of an image without requiring the loading of the whole image data. Referring now to Fig. 5, in the preferred embodiment, the pixels or data within a single tile 20 are arranged in a non-monotonic manner. Each tile has, for example, 256 x 256 = 65,536 pixels and each pixel can be denoted by the position (xpos, ypos), with xpos and ypos having ranges from 0 to 255. The pixels of each tile are stored sequentially in the following manner: 1. The first four entries 21 are those pixels having address indices xpos, ypos which are both multiples of 128. This corresponds to pixels: (0,0), (128,0), (0, 128) and (128, 128). 2. The next twelve entries 22 are those pixels having address indices which are both multiples of 64, but are not both multiples of 128. This corresponds to pixels: (64,0), (192, 0), (0,64), (64,64), (128,64), (192,64), (64, 128), (192, 128), (0, 192), (64, 192), (128, 192), (192, 192). 3. The next 48 entries 23 are those pixels having address indices which are both multiples of 32, but are not both multiples of 64. 4. The next 192 entries 24 are those pixels having address indices which are both multiples of 16, but are not both multiples of 32. 5. The next 768 entries 25 are those pixels having address indices which are both multiples of 8, but are not both multiples of 16. 6. The next 3,072 entries 26 are those pixels having address indices which are both multiples of 4, but are not both multiples of 8. 7. The next 12,288 entries 27 are those pixels having address indices which are both multiples of 2, but are not both multiples of 4. 5 8. The final 49, 152 entries 28 are those pixels having address indices which are both multiples of 1 , but are not both multiples of 2. Although the pixels are shown in Fig. 5 in a two dimensional format, the pixels are actually stored in a one dimensional format in row order. Additionally, it should be noted that the pixels which have address indices which are both common o multiples of 64 and 128, for example, appear only once in the area of the greater common divisor (in this case, the greater common divisor is 128). If the size of a single page is considered to be 4 kilobytes (4,096 bytes), each page will store 16 rows of the tile 20. Therefore, by reading in the first page 30, all those pixels 21 to 26 spaced four pixels apart in the horizontal and vertical directions s will be read from disk storage. This can lead to substantial increases in efficiency of utilisation of a standard computer system. Similarly, the first four pages, will include pixels 21 to 27, which contain all those pixels having locations that are multiples of 2 in the horizontal and vertical directions. The present application also includes two appendices. The first appendix A o contains a print out of one form of the reordering of the pixel positions of Fig. 4 for the tile of Fig. 5. Appendix B contains a C+ + code listing utilised in generating the print out of Appendix A. Appendices A and B are provided to assist an operating systems programmer in implementing the access method of the preferred embodiment. For example, the principles outlined in the preferred embodiment can be 5 readily extended to other forms of data representation, wherein the data is represented in a form of an array format and it is desired to obtain a sub sampled portion of that array. For example, in full coloured, 32 bit, 4 channel, CMYK colour data, which is often used in the art of computer graphics, the present invention could be readily applied by treating each separate colour channel as a separate image. Alternatively, 0 each colour channel can be 4-way interleaved, further reducing the number of pages which must be read in when it is desired to display a sub-sampled portion of each tile. Additionally, those skilled in the art would readily recognise that the present invention has application beyond merely byte-oriented data and can extend to other forms of array data such as array record structures. 5 Additionally, those skilled in the art would readily recognise that the present invention is not restricted to a paged memory architecture and can readily be used in operating systems which access a form of secondary storage media which is slower than the primary storage media utilised by the operating system and is particularly applicable when the secondary storage media is traditionally accessed via block access techniques. Fig. 6 is a flow diagram illustrating the process of storing an array of data (e.g. , image) in tiled format according to the preferred embodiment. A data array is provided which consists of the input data to be processed. In step 602, a series of sub¬ samples of the array are determined in which the sub-samples have increasingly fine granularity. The collection of the series of sub-samples substantially covers the whole of the data array. In step 604, the series of sub-samples are stored in order of granularity from the coarsest granularity to the finest granularity such that, in reading out the stored data, only the corresponding sub-samples need be read out. Each element of the data array is present in only one of the series of sub¬ samples. The array of data forms a tile which is an element of a larger array of tiles. Preferably, step 604 further comprises storing the series of sub-samples on a secondary storage device. The secondary storage device can be a disc storage device which is accessed by means of block transfers. Preferably, the array of data is stored on a virtual memory computer system. Still further, the array of data can be stored on a paged memory computer system. Fig. 7 is a flow diagram illustrating step 602 of Fig. 6 in greater detail. In step 702, a first series of sub-samples is determined in which each sub-sample has both indices of an index pair being multiples of 2*^-1. where M is a positive integer. Each array of data preferably consists of a number of tiles in which each tile consists of 2^ X 2^ data values. This is the series of sub-samples having the coarsest granularity. In step 704, the variable N is set equal to 1. In decision block 706, a check is made to determine if N is less than M. When decision block 706 returns false (NO), processing terminates. Otherwise, when decision block 706 returns true (YES), the processing continues at step 708. In step 708, a further series of sub-samples is determined in which each sub-sample has both indices of an index pair being multiples of 2^-N-l but not both being multiples of 2M-N ι n ste p 7io, the value of N is incremented. Processing continues at decision block 706. In this manner, a collection of series of subsamples are obtained of increasingly finer granularity until all data values of the array of data have been processed. Fig. 8 is a flow diagram illustrating step 604 of Fig. 6 in greater detail. In step 802, die collection of series of sub-samples are provided sequentially as a plurality of rows. In decision block 804, a check is made to determine if all rows have been stored. When decision block 804 returns true (YES), processing terminates. Otherwise, if decision block 804 returns false (NO), processing continues at step 806. In step 806, up to P rows are stored in a page, where P is dependent on the size of each page. The foregoing describes only one embodiment of the present invention, modifications, obvious to those skilled in the art can be made thereto without departing from the scope of the invention. 8 254 255 64 61648 61680 2176 63712 63728 136 61672 61688 2184 63720 63736 1088 15600 15608 17472 31984 31992 33856 48368 48376 50240 64752 64760 68 14580 14588 16452 30964 30972 32836 47348 47356 49220 63732 63740 ≥ 1092 15604 15612 17476 31988 31996 33860 48372 48380 oo 50244 64756 64764 544 3832 3836 > 4640 7928 7932 8736 12024 12028 12832 16120 16124 16928 20216 20220 21024 24312 24316 25120 28408 28412 29216 32504 32508 33312 36600 36604 37408 40696 40700 41504 44792 44796 45600 48888 48892 49696 52984 52988 53792 57080 57084 57888 61176 61180 61984 65272 65276 34 3322 3326 4130 7418 7422 8226 11514 11518 12322 15610 15614 36: 16386 16390 16394 16398 16402 16406 16410 16414 16418 19706 19710 37: 20482 20486 20490 20494 20498 20502 20506 20510 20514 23802 23806 38: 24578 24582 24586 24590 24594 24598 24602 24606 24610 27898 27902 39: 28674 28678 28682 28686 28690 28694 28698 28702 28706 31994 31998 40: 32770 32774 32778 32782 32786 32790 32794 32798 32802 36090 36094 41: 36866 36870 36874 36878 36882 36886 36890 36894 36898 40186 40190 42: 40962 40966 40970 40974 40978 40982 40986 40990 40994 44282 44286 43: 45058 45062 45066 45070 45074 45078 45082 45086 45090 48378 48382 44: 49154 49158 49162 49166 49170 49174 49178 49182 49186 52474 52478 45: 53250 53254 53258 53262 53266 53270 53274 53278 53282 56570 56574 46: 57346 57350 57354 57358 57362 57366 57370 57374 57378 60666 60670 • 47: 61442 61446 61450 61454 61458 61462 61466 61470 61474 64762 64766 ■ is 48: 514 518 522 526 530 534 538 542 546 3834 3838 * $ 49: 4610 4614 4618 4622 4626 4630 4634 4638 4642 7930 7934 ° 50: 8706 8710 8714 8718 8722 8726 8730 8734 8738 12026 12030 51: 12802 12806 12810 12814 12818 12822 12826 12830 12834 16122 16126 52: 16898 16902 16906 16910 16914 16918 16922 16926 16930 20218 20222 53: 20994 20998 21002 21006 21010 21014 21018 21022 21026 24314 24318 54: 25090 25094 25098 25102 25106 25110 25114 25118 25122 28410 28414 55: 29186 29190 29194 29198 29202 29206 29210 29214 29218 32506 32510 56: 33282 33286 33290 33294 33298 33302 33306 33310 33314 36602 36606 57: 37378 37382 37386 37390 37394 37398 37402 37406 37410 40698 40702 58: 41474 41478 41482 41486 41490 41494 41498 41502 41506 44794 44798 59: 45570 45574 45578 45582 45586 45590 45594 45598 45602 48890 48894 60: 49666 49670 49674 49678 49682 49686 49690 49694 49698 52986 52990 61: 53762 53766 53770 53774 53778 53782 53786 53790 53794 57082 57086 62: 57858 57862 57866 57870 57874 57878 57882 57886 57890 61178 61182 63: 61954 61958 61962 61966 61970 61974 61978 61982 61986 65274 65278 64: 256 258 260 262 264 266 268 270 272 1020 1022 1280 1282 1284 1286 1288 1290 1292 1294 1296 2044 2046 2304 2306 2308 2310 2312 2314 2316 2318 2320 3068 3070 3328 3330 3332 3334 3336 3338 3340 3342 3344 4092 4094 4352 4354 4356 4358 4360 4362 4364 4366 4368 5116 5118 5376 5378 5380 5382 5384 5386 5388 5390 5392 6140 6142 6400 6402 6404 6406 6408 6410 6412 6414 6416 7164 7166 7424 7426 7428 7430 7432 7434 7436 7438 7440 8188 8190 8448 8450 8452 8454 8456 8458 8460 8462 8464 9212 9214 9472 9474 9476 9478 9480 9482 9484 9486 9488 10236 10238 10496 10498 10500 10502 10504 10506 10508 10510 10512 11260 11262 11520 11522 11524 11526 11528 11530 11532 11534 11536 12284 12286 12544 12546 12548 12550 12552 12554 12556 12558 12560 13308 13310 13568 13570 13572 13574 13576 13578 13580 13582 13584 14332 14334 14592 14594 14596 14598 14600 14602 14604 14606 14608 15356 15358 15616 15618 15620 15622 15624 15626 15628 15630 15632 16380 16382 16640 16642 16644 16646 16648 16650 16652 16654 16656 17404 17406 17664 17666 17668 17670 17672 17674 17676 17678 17680 18428 18430 5o3 18688 18690 18692 18694 18696 18698 18700 18702 18704 19452 19454 19712 19714 19716 19718 19720 19722 19724 19726 19728 20476 20478 O 20736 20738 20740 20742 20744 20746 20748 20750 20752 21500 21502 21760 21762 21764 21766 21768 21770 21772 21774 21776 22524 22526 22784 22786 22788 22790 22792 22794 22796 22798 22800 23548 23550 23808 23810 23812 23814 23816 23818 23820 23822 23824 24572 24574 24832 24834 24836 24838 24840 24842 24844 24846 24848 25596 25598 25856 25858 25860 25862 25864 25866 25868 25870 25872 26620 26622 26880 26882 26884 26886 26888 26890 26892 26894 26896 27644 27646 27904 27906 27908 27910 27912 27914 27916 27918 27920 28668 28670 28928 28930 28932 28934 28936 28938 28940 28942 28944 29692 29694 29952 29954 29956 29958 29960 29962 29964 29966 29968 30716 30718 30976 30978 30980 30982 30984 30986 30988 30990 30992 31740 31742 32000 32002 32004 32006 32008 32010 32012 32014 32016 32764 32766 33024 33026 33028 33030 33032 33034 33036 33038 33040 33788 33790 34048 34050 34052 34054 34056 34058 34060 34062 34064 34812 34814 35072 35074 35076 35078 35080 35082 35084 35086 35088 35836 35838 36112 36860 36862 37136 37884 37886 38160 38908 38910 39184 39932 39934 40208 40956 40958 41232 41980 41982 42256 43004 43006 43280 44028 44030 44304 45052 45054 45328 46076 46078 46352 47100 47102 47376 48124 48126 48400 49148 49150 49424 50172 50174 50448 51196 51198 51472 52220 52222 52496 53244 53246 53520 54268 54270 54544 55292 55294 55568 56316 56318 56592 57340 57342 57616 58364 58366 58640 59388 59390 59664 60412 60414 60688 61436 61438 61712 62460 62462 62736 63484 63486 63760 64508 64510 64784 65532 65534 17 765 767 1041 1789 1791 2065 2813 2815 3089 3837 3839 4113 4861 4863 5137 5885 5887 6161 6909 6911 7185 7933 7935 8209 8957 8959 9233 9981 9983 10257 11005 11007 11281 12029 12031 12305 13053 13055 13329 14077 14079 14353 15101 15103 15377 16125 16127 16401 17149 17151 17425 18173 18175 18449 19197 19199 19473 20221 20223 20497 21245 21247 21521 22269 22271 53o 22545 23293 23295 κ> m- 23569 24317 24319 o 24593 25341 25343 25617 26365 26367 26641 27389 27391 27665 28413 28415 28689 29437 29439 29713 30461 30463 30737 31485 31487 31761 32509 32511 32785 33533 33535 33809 34557 34559 34833 35581 35583 35857 36605 36607 36881 37629 37631 37905 38653 38655 38929 39677 39679 39953 40701 40703 40977 41725 41727 42001 42749 42751 43025 43773 43775 44049 44797 44799 45073 45821 45823 46097 46845 46847 47121 47869 47871 48145 48893 48895 49169 49917 49919 50193 50941 50943 51217 51965 51967 52241 52989 52991 53265 54013 54015 54289 55037 55039 55313 56061 56063 56337 57085 57087 57361 58109 58111 i 58385 59133 59135 59409 60157 60159 60433 61181 61183 61457 62205 62207 62481 63229 63231 63505 64253 64255 64529 65277 65279 273 1021 1023 1297 2045 2047 2321 3069 3071 3345 4093 4095 4369 5117 5119 5393 6141 6143 6417 7165 7167 7441 8189 8191 8465 9213 9215 9489 10237 10239 10513 11261 11263 11537 12285 12287 12561 13309 13311 13585 14333 14335 14609 15357 15359 15633 16381 16383 16657 17405 17407 17681 18429 18431 18705 19453 19455 19729 20477 20479 20753 21501 21503 21777 22525 22527 22801 23549 23551 23825 24573 24575 24849 25597 25599 25873 26621 26623 26897 27645 27647 27921 28669 28671 28945 29693 29695 29969 30717 30719 30993 31741 31743 32017 32765 32767 33041 33789 33791 34065 34813 34815 35089 35837 35839 36113 36861 36863 37137 37885 37887 38161 38909 38911 39185 39933 39935 40209 40957 40959 41233 41981 41983 42257 43005 43007 43281 44029 44031 44305 45053 45055 45329 46077 46079 46353 47101 47103 47377 48125 48127 48401 49149 49151 49425 50173 50175 50449 51197 51199 51473 52221 52223 52497 53245 53247 5o3 53521 54269 54271 54545 55293 55295 t-Λ 3 55569 56317 56319 56593 57341 57343 57617 58365 58367 58641 59389 59391 59665 60413 60415 60689 61437 61439 61713 62461 62463 62737 63485 63487 63761 64509 64511 64785 65533 65535 APPENDIX B #include "core.hpp" #pragma hdrstop #include "tile.hpp" tpragma message("\nCompiling " FILE "\n") UINT *Tile: :pTable = NULL; Tile: :Tile(INT bpp) //****★*****★****** { pTable = new UINT[TILE_AREA] ; memset( Table, Oxff, TILE_AREA) ; UINT *t = pTable; UINT n = 1; UINT x, y, uLevel; pTable[0]-=0; for (uLevel=TILE_SIZE_Y/2; uLevel; uLevel/=2) { UINT uThisMask = uLevel-1; UINT uPrevMask = (uLevel*2)-l; for (y=0; y<TILE_SIZE_Y; y+=uLevel) { for (x=0; x<TILE_SIZE_X; x+=uLevel) { if (1 (x&uPrevMask) ) if ( (x&uPrevMask) | | (yiuPrevMask) ) { if (1) { if ( (n&Oxff)==0) debug("\n%3d: ", n»8); if ((n&Oxff)<=8 || (n&Oxff)>=254) debug("%5d ", (y«TILE_SHIFT_X)+x) ; if ( (n&Oxff)«9) debug(" ") ; } pTable[ (y«TILE_SHIFT_X)+x] = n*bpp; n++; } } } } //debugn( M \nzoom: X: %d: %d (%.2fk)\n", uLevel, n, (n*bpp) /1024.0) ; for (y=0; y<TILE_SIZE_Y; y+=uLevel) { for (x=0; x<TILE_SIZE_X; x+=uLevel) { if (1 (y&uPrevMask) ) if ( (x&uPrevMask) | | (y&uPrevMask) if (1) { if ( (n&Oxff)==0) debug("\n%3d: ", n»8); if ( (n&Oxff)<=8 || (n&Oxff)>=254) debug("%5d ", (y«TILE_SHIFT_X)+x) ; if ( (n&Oxff)==9) debug( " ") ; > pTable[ (y«TILE_SHIFT_X)+x] = n*bpp; n++; } } > } //debugn("\nzoom: Y: %d: %d (%.2fk)\n", uLevel, n, (n*bpp) /1024.0) ; for (y=0; y<TILE_SIZE_Y; y+=uLevel) { for (x=0; x<TILE_SIZE_X; x+=uLevel) { if ( (x&uPrevMask)&&(y&uPrevMask) ) { if (1) { if ( (n&Oxff)==0) debug("\n%3d: ", n»8); if ( (n&Oxff)<=8 || (n&Oxff)>=254) debug("%5d ", (y«TILE_SHIFT_X)+x) ; if ((n&Oxff)==9) debug(" ") ; } pTable[ (y«TILE_SHIFT_X)+x] = n*bpp; n++; } } } //debugn("\nzoom: %d: %d (%.2fk)\n", uLevel, n, (n*bpp) /1024.0) ; } //debugn("Tile::Tile: n:0x%x", n) ; };

Claims: CLAJMS 1. A method of representing an array of data, said method comprising the steps of: determining a series of sub samples of said array, said sub samples being of 5 increasingly fine granularity, the collection of said series of sub samples substantially covering the whole of said array, and storing said series of sub samples in order of granularity from the coarsest granularity to the finest granularity such that, in reading out said stored data, only the corresponding sub samples need be read out. o 2. The method according to claim 1 wherein each element of said array of data is present in only one of said series of sub samples. 3. The method according to claims 1 or 2 wherein said array of data forms a tile which is an element of a larger array of tiles. 4. The method as claimed in any one of the claims wherein said storing 5 step comprises storing said series of sub samples on a secondary storage device. 5. The method according to claim 4 wherein said secondary storage device is a disk storage device which is accessed by means of block transfers. 6. The method according to any one of the preceding claims wherein said array of data is stored on a virtual memory computer system. 0 7. The method according to any one of the preceding claims wherein said array of data is stored on a paged memory computer system. 8. A method of recording an array of data in a paged memory system, said array of data arranged as a plurality of tiles, each tile of said plurality of tiles consisting of 2^ x 2^ data values, M being a positive integer, and each data value 5 therein represented by an index pair, said method comprising the steps of: for each tile of said plurality of tiles, sub-sampling said data values of said each tile in increasing granularity comprising the further steps of: determining a first set of data values having index pairs wherein both indices of an index pair of each data value are multiples of 2^-1 • o determining a plurality of sets of data values wherein each set is determined so that the respective set consists of data values having index pairs wherein both indices are multiples of 2^-N-l bin are not both multiples of 2M-N 5 N being a positive integer, wherein said plurality of sets are arranged to have increasing granularity according to N equal to 1 to M-l, respectively; 5 and storing said each tile of said plurality of tiles as one or more pages wherein each page consists of a number of sequential rows of said each tile.

Inventors: MICHIE DAVID CHARLES, MICHIE, DAVID, CHARLES
Applicants: MICHIE DAVID CHARLES, WRIGHT TECHNOLOGIES PTY LTD, MICHIE, DAVID, CHARLES, WRIGHT TECHNOLOGIES PTY. LTD.
Application year: 1995
Main classification: G06F12
IPC codes: G06F17, G06T1, G06T3, G09G5