US5347600A - Method and apparatus for compression and decompression of digital image data - Google Patents

Method and apparatus for compression and decompression of digital image data Download PDF

Info

Publication number
US5347600A
US5347600A US07/781,586 US78158691A US5347600A US 5347600 A US5347600 A US 5347600A US 78158691 A US78158691 A US 78158691A US 5347600 A US5347600 A US 5347600A
Authority
US
United States
Prior art keywords
blocks
block
image
domain
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US07/781,586
Inventor
Michael F. Barnsley
Alan D. Sloan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mediabin Inc
Original Assignee
Iterated Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Iterated Systems Inc filed Critical Iterated Systems Inc
Priority to US07/781,586 priority Critical patent/US5347600A/en
Assigned to ITERATED SYSTEMS, INC. reassignment ITERATED SYSTEMS, INC. ASSIGNMENT OF ASSIGNORS INTEREST. Assignors: BARNSLEY, MICHAEL F., SLOAN, ALAN D.
Application granted granted Critical
Publication of US5347600A publication Critical patent/US5347600A/en
Assigned to MEDIABIN, INC. reassignment MEDIABIN, INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: ITERATED SYSTEMS, INC.
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/99Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals involving fractal coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/27Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the analysis technique
    • G10L25/36Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 characterised by the analysis technique using chaos theory

Definitions

  • the present invention relates generally to image processing and, more particularly, to methods and apparatus which employ contractive transformations for representing images and compressing image data.
  • the present invention is applicable to all four of these areas. However, the issues involved in each area are extensive and complex. Therefore, only two of the areas, image compression and image recognition, will be discussed, to provide a background of the advantages of the present invention.
  • an image such as a photograph of a person or a natural scene, represented as an array of 1024 ⁇ 1024 picture elements, or pixels.
  • the pixels may be black and white or various shades of gray. If there are two hundred fifty six possible shades of gray, then the image can be completely described in digital terms by a binary string of 1024 ⁇ 1024 ⁇ 8 binary digits (bits) each having a value of one or zero.
  • bits binary digits
  • Such a representation of an original scene is known as a "digitized" image, since it consists of binary digits and is suitable for processing by a digital computer.
  • the bits are commonly formed together into eight-bit: groups know as "bytes" and stored together as a "data file” for use by digital devices such as computers.
  • Image compression involves decreasing the number of bits required to represent an image in such a way that either an exact replica of the image (termed “lossless compression”) or an approximate replica (termed “lossy compression”) of the image can be retrieved.
  • the speed of transmission of a data file is essentially proportional to its size. The larger the file, the longer it takes to transmit.
  • the storage space required is proportional to the file size. To store files representing sixty uncompressed images of the type mentioned above requires sixty megabytes of storage space. If the representation of the image can be compressed fifty percent, twice as many images can be kept in the same storage space.
  • compressed images cost less to transmit, process, archive, and retrieve than uncompressed images.
  • compressed images can be processed faster than uncompressed images. For example, suppose a sample image is compared against a library of stored images to determine whether a wren appears in the sample image.
  • HDTV High definition television
  • ATV advanced television
  • DVI Digital Video Interaction
  • Image compression can be used to speed up the access to data by decreasing the amount of memory which must be searched to retrieve it.
  • look-up tables as part of the compression procedure. Procedures using look-up tables can be useful in certain applications, such as where the class of images being compressed is small. However, use of look-up tables can limit the ability to provide adaptive capabilities useful in applications such as general purpose video processing including large numbers of diverse images and other applications where the image class cannot be narrowed down in advance. When the class of images to be compressed is large, the look-up tables also have to be very large, requiring the use of extremely large amounts of system memory. Moreover, compression ratios are decreased as the size of the look-up table is increased.
  • Computers have this ability to only the most rudimentary degree. It is currently possible, for example, to define only simple images, such as a line, in a computer such that the image retains a high level of detail at any magnification. This is done by storing in the computer a definition of, for example, a line, which specifies the very essence of the line without specifying its qualities at any particular level of magnification.
  • the line is defined in the computer as the concept of a geometric entity extending between two specified points. When desired, this definition is used to produce an image at any required degree of magnification.
  • the screen on which an image of the stored definition of the line is to be displayed has a resolution capability of, for example, three hundred dots per inch and the line image is desired to be displayed as an image two inches long, an image is displayed consisting of a display pattern six hundred dots long and, for example, three dots wide. If a larger image is desired to be displayed from the same stored definition of a line, the screen may show an image three dots wide and twelve hundred dots long. It would be desirable to provide a method for representing complex images, such as a black cat, in a computer with the same type of scale-independent resolution.
  • Image analyzers mounted on earth-orbiting satellites for spotting forest fires and monitoring deforestation activities.
  • image compression methods and apparatus whose input is a set of data, corresponding to a two-dimensional array of numerical attributes of a digitized picture, and whose output is a smaller data set from which the original can be regenerated exactly or approximately. It is further desirable to provide improved image compression methods and apparatus which can be employed for exact or non-exact image representation, and which are capable of improving compression ratios by up to several orders of magnitude. Such methods and apparatus should produce digital data which correspond to a given image, and should employ the digital data for image compression, communication, analysis or storage, and subsequent regeneration. Moreover, such methods and apparatus should be capable of representing color and intensity information as an additional dimension of the image, and allow compression and decompression of this color information.
  • the present invention provides improved methods and apparatus for representing image data in a compressed form in a self-referential manner.
  • the compressed data set is formed in a digital computer by a process of repeated comparisons between image data representing different small pieces of the image, known as domain blocks and shrunken range blocks, and recording the addresses of optimal matches.
  • the image is decoded by an inverse process.
  • the preferred embodiment of the present invention employs mathematical operations known as local affine transformations. These transformations are employed in the process of encoding digital data representing an image.
  • the encoded output constitutes a "fractal transform" of an image and consists of coefficients of the affine transformations. Different fractal transforms correspond to different images.
  • the fractal transforms are iteratively processed in the decoding operation. Contrary to intuitive expectation, it has been discovered that if the encoding and decoding procedures of the invention are followed, the original image, or an image that looks like the original image, is produced after a finite number of iterations.
  • a method for automatically processing digital image data consisting of image information comprises the steps, performed by a data processor, of storing the image data in the data processor; generating a plurality of uniquely addressable domain blocks from the stored image data, each of the domain blocks representing a different portion of the image information such that all of the stored image information is contained in at least one of the domain blocks, and at least two of the domain blocks being unequal in shape; and creating, from the stored image data, a plurality of uniquely addressable mapped range blocks corresponding to different subsets of the image data with each of the subsets having a unique address.
  • the creating step included the substep of executing, for each of the mapped range blocks, a corresponding procedure upon the one of the subsets of the image data which corresponds to the mapped range block.
  • the method further includes the steps of assigning unique identifiers to corresponding ones of the mapped range blocks, each of the identifiers specifying for the corresponding mapped range block an address of the corresponding subset of image data; selecting, for each of the domain blocks, the one of the mapped range blocks which most closely corresponds according to predetermined criteria; and representing the image information as a set of the identifiers of the selected mapped range blocks.
  • FIGS, 1(a)-1(d) show a digitized black and white image in the process of dividing the image into domain blocks
  • FIGS. 2(a)-2(c) show the process of dividing the image of FIG. 1(a) into range blocks
  • FIGS. 3(a)-3(b) show the process of a shifted decomposition of the image of FIGS. 1(a)-1(d) for the purpose of forming additional range blocks;
  • FIGS. 4(a)-4(b) show the process of producing shrunken range blocks from the range blocks of FIGS. 2(a)-2(c) and 3(a)-3(b);
  • FIG. 5 is a logic flow chart of method for automatically processing digital image data which constitutes a preferred embodiment of the invention.
  • FIG. 6 is a block diagram of a data processor for performing the method shown in FIG. 5;
  • FIGS. 7 and 8 illustrate the process of generating shrunken range blocks
  • FIG. 9 shows the process of selecting the shrunken range blocks which most closely resembles a domain block
  • FIG. 10 shows the process of producing a Hausdorff distance
  • FIG. 11 shows a fractal transform of the image of FIG. 1
  • FIG. 12 is a logic flow chart showing a method for automatically creating a fractal transform representative of black and white image data
  • FIG. 13 is a logic flow diagram of a method for automatically generating an image by a data processor from a set of identifiers consisting of the fractal transform produced by the method of FIG. 12;
  • FIG. 14 is a block diagram of a preferred embodiment of apparatus for decoding a fractal transform
  • FIG. 15 shows a decompression system which is used to decode the fractal transform of FIG. 11;
  • FIG. 16 shows the process of applying the fractal transform of FIG. 11 to an image in buffer A of FIG. 15 to obtain an image in a buffer B;
  • FIG. 17 shows a further stage in the process of FIG. 16
  • FIG. 18 shows the production of an output image from the decompression system of FIG. 15;
  • FIG. 19 is a logic flow diagram of a preferred embodiment of the method of FIG. 13;
  • FIG. 20 is a logic flow chart of an alternative to the method shown in FIG. 19, in which only a single image buffer is used;
  • FIGS. 21(a)-21(b), 22(a)-22(b) and 23-24 illustrate the production of a fractal transform representing a grayscale image
  • FIG. 25 illustrates a method for representing a grayscale image, having four possible levels of gray, in binary form
  • FIG. 26 shows a fractal transform of the grayscale image of FIG. 21
  • FIG. 27 is a logic flow diagram showing a method for automatically creating a fractal transform representative of grayscale image data
  • FIG. 28 shows a decompression system for decoding the fractal transform shown in FIG. 26 to obtain the original grayscale image of FIG. 21;
  • FIG. 29 is a logic flow chart of a method for decoding the grayscale fractal transform of FIG. 26;
  • FIG. 30 is a logic flow chart of a method for compressing and decompressing color images
  • FIG. 31 is a block diagram of apparatus which constitutes a preferred embodiment for performing the method of FIG. 20;
  • FIG. 32 is a logic flow diagram of a method for generating compressed digital data representing image information in a motion picture, by a data processor, for storage or transmission;
  • FIG. 33 is a logic flow diagram of a method for automatically generating digital data representing the frames of a motion picture
  • FIG. 34 is a block diagram of apparatus for providing a videophone
  • FIG. 35 illustrates an alternate method of generating a fractal transform
  • FIG. 36 illustrates a method for producing a shrunken range block
  • FIG. 37 is a diagram illustrating overlapping range blocks
  • FIG. 38 is a diagram illustrating an alternate method for retrieving and decoding an image represented by a fractal transform
  • FIG. 39 is a block diagram of apparatus for implementing the method illustrated in FIG. 38.
  • an image of a natural scene may contain a meadow, trees, and sky. Once one knows what a particular blade of grass looks like, one has useful information about other blades. Thus, there are enormous amounts of redundant information in a meadow scene.
  • the pine needles on a pine tree are by no means randomly placed in the image; they are organized by the underlying structure of the tree.
  • the structures of the clouds are governed to a good approximation by briefly expressed equations of physics, such as the Navier-Stokes equations.
  • redundancy is an important factor in image compression and image representation of images such as natural scenes, portraits, computer graphics images which can be expressed in terms of repetition, after processes of affine transformation and contraction.
  • one pine needle in an image of a forest is more or less like any other pine needle in that image.
  • a compressed image does not require description of each pine needle in that image; rather, a single pine needle is described and then its basic information is utilized via mathematical algorithms to reproduce other pine needles in the image in a natural manner. This might be likened to describing one letter in a page of text and then describing the other occurrences of that letter in terms of the first occurrence.
  • FIG. 1 shows a digitized black and white image 30 formed of a plurality of pixels 32.
  • the image is stored as image data in a data processor, with one bit representing the image value (black or white) of each pixel.
  • the preferred embodiment of the invention employs a plurality of uniquely addressable blocks 34, called domain blocks, which are generated from the stored image data. Each of the domain blocks represent a different portion of the image information such that all domain blocks together contain all of the stored image information.
  • the stored image data are also used, in the preferred embodiment, to create a plurality of uniquely addressable mapped range blocks.
  • Each mapped range block corresponds to a different subset of the image data, with each of the subsets having a unique address with respect to the image data.
  • the range blocks have a greater number of pixels than the domain blocks, and are created by executing, for each of the mapped range blocks, a corresponding procedure upon the subset of the image data which corresponds to that mapped range block.
  • the procedure can include such processes as shrinking, rotating, cropping, and inverting.
  • the image 30 is broken up into range blocks 36, as shown in FIG. 2, and rotated and inverted to produce additional range blocks 38.
  • Further range blocks 40 may be produced by selecting other subsets of the input digitized image 30, as shown in FIG. 3.
  • a shrinking process is preferably applied to the range blocks 36, 38, and 40 to produce shrunken range blocks 42.
  • the shrinking process ensures that the shrunken range blocks 42 contain the same number of pixels as the domain blocks 34.
  • Step 42 image data is stored in a data processor.
  • Step 44 of FIG. 5 comprises generating a plurality of uniquely addressable domain blocks from the stored image data, each of the domain blocks representing a different portion of the image information such that all of the stored image information is contained in at least one of the domain blocks; that is, all of the domain blocks together contain all of the stored image information.
  • Step 46 comprises creating, from the stored image data, a plurality of uniquely addressable mapped range blocks corresponding to different subsets of the image data with each of the subsets having a unique address, the creating step preferably including the substep of executing, for each of the mapped range blocks, a corresponding procedure upon the one of the subsets of the image data which corresponds to the mapped range block.
  • Step 48 comprises assigning unique identifiers to corresponding ones of the mapped range blocks, each of the identifiers specifying for the corresponding range block a procedure and an address of the corresponding subset of image data.
  • step 50 comprises selecting, for each of the domain blocks, the one of the mapped range blocks which most closely corresponds according to predetermined criteria.
  • step 52 comprises representing the image information as a set of the selected identifiers.
  • Data processor 60 includes an input device 62, such as an image scanner. Input device 62 is connected to a central processor unit 64.
  • Central processor unit (CPU) 64 includes a block comparator 66, control logic 68, and a mapping processor 70.
  • CPU 64 is connected to an output device 72, such as a data transmitter or disk drive, and to a memory device 74.
  • the image data is stored in memory device 74.
  • Memory device 74 includes a pair of buffers 76, 78. Buffer 76 is used to store a plurality of domain blocks 34, and buffer 78 is used to store range blocks 36,38,40 and shrunken range blocks 42.
  • Control logic 68 of CPU 64 executes programs stored in memory 74 to initiate block comparison and mapping functions in block comparator 66 and mapping processor 70, respectively.
  • the image data received from input device 62 is formed by control logic 68 into an array of digital data of a predetermined size, such as, for example, 256 ⁇ 256 pixels and, corresponding to step 42 of FIG. 5, is stored into memory 74.
  • the array is then formed into an array of domain blocks 34 each including, for example, sixteen pixels arranged into four rows and four columns.
  • domain blocks 34 may be formed with various sizes and shapes, as shown in FIG. 1(d). For example, each domain block may differ from all other domain blocks as shown in FIG. 1(d).
  • the stored image data is formed into range blocks 36 containing a larger number of pixels than the number of pixels in domain blocks 34.
  • These range blocks are then given unique addresses with respect to the stored image data, corresponding to step 48.
  • such addresses consist of the x,y coordinates of the lower left pixel of the range block with respect to the array of the entire stored image data. For example, if the image data is stored as an array of pixels two hundred fifty-six pixels wide and two hundred fifty-six pixels high and is formed into four range blocks, the range block in the lower left of the array is assigned an address of 0,0. Similarly, the range block in the upper left of the array is assigned an address of 0,128, the lower right range block is assigned an address of 128,0, and the upper right range block is assigned an address of 128,128.
  • Additional range blocks 38 are also created in the preferred embodiment by processing the range blocks with local affine transforms such as rotation by 90°, 180°, and 278°, and inversion.
  • an escape block 95 (FIG. 9) is provided which is the same size as the shrunken range blocks, but which has no content (i.e., there is no picture drawn on it).
  • FIG. 7 illustrates a first embodiment of a method for producing a shrunken range block.
  • a range block 34 includes a plurality of black and white pixels 32.
  • shrunken range block 42 is the output of the method and range block 34 is the input.
  • Shrunken range block 42 is obtained from range block 34 by the following mathematical operation:
  • i and j respectively represent x and y positions of pixels, shown in FIG. 7.
  • FIG. 8 illustrates a shrinking by averaging method, in which shrunken range block 42' is obtained as output from the method when range block 34' is supplied as input.
  • the shrinking by averaging method may be expressed mathematically as:
  • Unique identifiers are then assigned to the mapped range blocks.
  • Each of the identifiers specify both the address of the subset of image data from which the corresponding range block was created and the procedure which was applied to the mapped range block.
  • each of shrunken range blocks 42 and the escape block 95 are assigned an identifier.
  • the escape block has a unique identifier.
  • Shrunken range block identifiers include an address and an indication of affine transformations which have been applied to the range block from which the shrunken range block was derived.
  • each range block 36 consists of a quadrant of the 256 ⁇ 256 array which constitutes the stored image data.
  • the address of the identifier is the x,y coordinate in the stored image array of the pixel in the lower left corner of range block from which the corresponding shrunken range block was derived.
  • the identifier in the preferred embodiment, also includes a first code indicating a 0°, 90°, 180°, or 278° rotation, and a second code indicating whether inversion has been performed to produce a range block prior to shrinking. It can be seen that the procedure specification includes the case where no rotation or inversion is applied prior to shrinking.
  • the mapped range blocks are compared to the domain blocks. For each domain block, one of the mapped range blocks is selected which most closely corresponds, according to predetermined criteria, to that domain block.
  • each domain block 34 is associated with either a single shrunken range block, or the escape block. This is achieved by means of block comparator 66 (FIG. 9), which selects, from the shrunken range blocks 42 and the escape block 95, the one which is "closest" to the domain block, i.e. most similar to the domain block.
  • range block addresses in the preferred embodiment are x,y pixel coordinates, for purposes of explanation the range block addresses will be expressed as quadrant numbers 1-4, as shown in FIG. 9. Similarly, rotation in FIG. 9 will be expressed as degrees, rather than as a code.
  • shrunken range block #2 is the closest shrunken range block to input domain block 34.
  • each domain block of image 30 is processed by block comparator 66 to select the closest shrunken range block 42 (or escape block 95).
  • domain blocks may be created in different shapes.
  • sets of range blocks are created, with the shape of the blocks of a set being the same, and the shape of the blocks of each set corresponding to the shape of a domain block.
  • Block comparator 66 of FIG. 9 will now be described in greater detail.
  • the purpose of block comparator 66 is to determine, for each domain block, which of the shrunken range blocks is most similar in appearance to the specified domain block. That is, which of the shrunken range blocks is "closest” to the domain block.
  • This alternative statement implies an analogy which is useful in understanding the concept of comparisons between blocks of image data. That concept is referred to as "distance.”
  • distance In order to evaluate "distance" between blocks, consider the concept of distance between points in space. If two points A and B are present in a two-dimensional coordinate system, their positions within the coordinate system may be represented by x A ,y A and x B ,y B , respectively.
  • the distance between the points is thus the square root of the sum (x A -x B ) 2 +(y A -y B ) 2 .
  • This procedure yields the distance between points A and B "as the crow flies", and is referred to as the Euclidean distance.
  • the distance between a point and a set may be thought of as the sum of the distances from the point to each individual point within the set.
  • the distance between two sets of points may be considered.
  • a very general description of the distance between two sets is a "sum of a sum.” That is, a first point of the first set is selected. The distance between this point and each point in the second set is calculated. Next, a second point is selected from the first set. The distance between this second point and each point of the second set is then calculated and added to the first set. In a similar manner, distances between each succeeding point of the first set and all of the points of the second set are calculated and summed to yield the distance between the two sets of points.
  • the concept of distances between two sets is employed in calculating a distance between two groups of image data, for the purpose of selecting, from a group of shrunken range blocks, the shrunken range block which is most similar to a domain block.
  • the preferred embodiment makes use of a mathematical concept known as the Hausdorff distance. This concept is well known in the art and is discussed, for example, in Fractals Everywhere by Michael F. Barnsley.
  • the Hausdorff distance H between two blocks of image data f and g can be expressed as H (block f, block g).
  • block comparator 66 calculates the quantity H between a domain block and each of the shrunken range blocks.
  • the shrunken range block which yields the lowest value of H is selected as the "closest" shrunken range block to the specified domain block.
  • Block f consists of a cross of black pixels plus an additional black pixel in the upper right hand corner.
  • Block g consists of a square formed of a block of sixteen black pixels.
  • FIGS. 10a and 10b Directly below the image blocks f and g in FIGS. 10a and 10b are binary representations of the image data contained in blocks f and g. Specifically, the binary representation of blocks f and g consists of a matrix of zeros (0's) and ones (1's), with 0's representing a white pixel and 1's representing a black pixel.
  • each binary block f and g is a distance table for the respective binary block.
  • the distance table consists of a matrix of numbers each corresponding to one of the pixels in the blocks f and g.
  • the number in each position of the distance tables for image blocks f and g represent the number of pixels between the pixel corresponding to that position and the closest position corresponding to a black pixel (or in the binary block, a 1).
  • the upper left hand entry of distance table f in FIG. 10a is a 4. This represents the fact that moving only in horizontal and vertical directions, not diagonal, (the Manhattan distance concept), there are four pixels between the upper left hand pixel of image block f and the closest black pixel. This can be seen by beginning at the upper left hand pixel, counting over three pixels to the right and down one pixel.
  • the entry immediately to the right of the left hand entry of the distance table for block f is the number 3. This indicates the fact that starting from the pixel just to the right of the upper left hand pixel of block f, there are three pixels between the specified pixel and the closest black pixel. This can be seen by counting over two pixels to the right and down one pixel.
  • each entry of the distance table for image block f is determined. Also, a distance table is computed in the same way for image block g.
  • the lowest blocks of FIG. 10 represent the distance table f intersected by binary block g, and the distance table g intersected by binary block f.
  • a value D is computed equal to the sum of the numbers of the two intersection figures. As can be determined from FIG. 10, the sum of the numbers of the distance table f intersected by binary block g is 25 and the sum of the numbers of distance table g intersected by binary block f is 4, yielding a value D equal to 29.
  • the term "1-block f" is the inverse of image block f, and thus is an image block in which each pixel is the opposite of a corresponding pixel of block f.
  • Block comparator 66 calculates quantity H between a selected domain block and each shrunken range block, and chooses as the selected shrunken range block, that shrunken range block which yields the lowest value of H.
  • a modified Hausdorff distance between blocks could be calculated, using the concept of Euclidean distance rather than Manhattan distance.
  • block comparator 66 could employ distance measuring concepts other than the Hausdorff distance to select a shrunken range block which is most similar to each domain block.
  • the image information is then represented as a set of the unique identifiers corresponding to the selected mapped range blocks, corresponding to step 52 of FIG. 5.
  • the list of identifiers of the selected range shrunken range blocks 42 (including both addresses and local affine transform procedures, such as rotation, reflection, or inversion, to be performed on the data specified by the address) constitutes the "fractal transform" 98 of image 30, as shown in FIG. 11.
  • Each domain block 34 of image 30 is represented by an address 99 of a shrunken range block. For example, the domain block in the upper left corner of image 30 may be closest to shrunken range block #3.
  • the domain block immediately to the right of the upper left domain block may be closest to shrunken range block #5 rotated 90°.
  • the next domain block to the immediate right may be closest to the Escape block 95.
  • the first three addresses of fractal transform 98 would be 3, 5(90), E, as shown in FIG. 11.
  • the set of identifiers can thus be stored, transmitted, or analyzed.
  • FIG. 12 shows in detail a preferred embodiment of a method of automatically creating a fractal transform representative of black and white image data according to this invention.
  • digital image data is stored in buffer A of a data processor.
  • image data consists of binary information representing a black and white image.
  • a range block size should be preselected so that when the input image is stored in buffer A, range blocks are automatically assigned to the different digital image data in buffer A.
  • range block pointers for buffer A and shrunken range block pointers for buffer B are initialized.
  • the size of the input image data array and the sizes of both the range blocks and the shrunken range blocks are predetermined values. Therefore, these pointers, consisting of x,y coordinates in buffers A and B, can be determined.
  • a shrinking process is applied to the range block in buffer A specified by the range block pointer.
  • local affine transforms such as rotation, reflection, or inversion, may be applied to the range block prior to shrinking to obtain a greater number of shrunken range blocks for a given input image.
  • the shrunken range blocks are then read into the locations in buffer B identified by the shrunken range block pointers.
  • the range block pointers for buffer A and the shrunken range block pointers for buffer B are then incremented at step 106.
  • a domain block pointer in buffer A is initialized (step 112) and the shrunken range block pointer in buffer B is initialized (step 114).
  • the Hausdorff distance between the domain block specified by the domain block pointer and the current shrunken range block specified by the shrunken range block pointer is determined.
  • the Hausdorff distance just computed is less than the currently stored distance value (which is initialized to the largest possible Hausdorff distance) (which is initialized to the largest possible Hausdorff distance), then at step 118 the currently stored distance value is replaced by the distance value most recently computed.
  • the current shrunken range block pointer value is also stored. If the most recently computed Hausdorff distance is not less than the currently stored distance value, the most recently computed distance value is discarded.
  • the shrunken range block pointer is incremented and a determination is made whether all of the shrunken range blocks have been checked. If not, steps 116 and 118 are repeated until all shrunken range blocks have been checked. If so, the currently stored shrunken range block pointer, consisting of x,y coordinates, and the associated procedure information (reflection and inversion), is then appended to the list of identifiers representing the domain blocks of the input image data stored in buffer A (step 124).
  • the domain block pointer is incremented at step and a determination made whether all domain blocks have been processed. If not, steps 116-126 are repeatedly executed until all domain blocks have been processed.
  • the list of identifiers, each corresponding to one of the domain blocks of the original input data, is then output at step 130 as the fractal transform of image data representing the black and white image supplied as input to the data processor.
  • the identifiers of the shrunken range blocks are expressed as follows.
  • X is an eight bit value representing the x-coordinate of the lower left corner of the range block in the original image array
  • Y is an eight bit value representing the y-coordinate of the lower left corner of the range block in the original image array
  • rr is a two-bit value representing rotation as follows:
  • i is a one-bit value representing inversion as follows:
  • the present invention provides a method for generating an image by a data processor from a compressed data set consisting of a set of identifiers.
  • the data processor includes a memory having a plurality of buffers each having a plurality of addressable areas specified by a buffer address.
  • Each of the identifiers corresponds to an addressable area in the buffers and includes a buffer address and a procedure specification.
  • the method includes a first step 140 comprising inputting the set of identifiers.
  • Step 142 comprises storing a predetermined pattern of digital data in one of the buffers designated as a source buffer.
  • Step 144 comprises determining, for each of the identifiers, a pattern of data corresponding to each identifier by applying the procedure specified in that identifier to the portion of the source buffer indicated by the buffer address in that identifier.
  • a step 146 comprises storing the pattern of data into the addressable area of another one of the buffers, designated as a destination buffer, indicated in the corresponding identifier.
  • a step 148 comprises repeating the determining and destination buffer storing steps, with the destination buffer being considered as the source buffer, until predetermined criteria are met.
  • a step 149 comprises providing the contents of the destination buffer as data representative of an image when the predetermined criteria are met.
  • FIG. 14 shows a data processor 150 for executing the method of FIG. 13.
  • Data processor 150 includes an input device 152 such as a data receiver or a disk drive.
  • Input device 152 is connected to a CPU 154 which includes control logic 156, a counter 158, and a pattern generator 160.
  • a memory device 162 is connected to CPU 154 and includes a pair of buffers 164 and 166.
  • An output device 168 is also connected to CPU 154 and may comprise a CRT display device.
  • FIG. 15 illustrates a system for carrying out a preferred method of the invention for recovering the image from fractal transform 98.
  • a predetermined pattern of digital data is stored in one of the buffers designated as a source buffer.
  • digital data representative of an initial image 202 and fractal transform 198 are input to a decompression system 204, which preferably comprises data processor 150.
  • Initial image 202 is loaded into a buffer A, designated the source buffer.
  • Decompression system 204 determines, for each of the identifiers, a corresponding pattern of data.
  • the corresponding pattern is determined by applying the procedure specified by that identifier to the portion of the source buffer indicated by the identifier's buffer address.
  • Decompression system 204 then stores the resulting pattern into a corresponding addressable area of another one of the buffers, buffer B, designated as a destination buffer.
  • a buffer A acts as a source buffer and is filled with data representative of initial image 202.
  • a buffer B acts as a destination buffer and is partitioned into decode domain blocks 206.
  • Each of the decode domain blocks 206 corresponds to one identifier of input fractal transform 198.
  • the corresponding identifier of the domain block is used.
  • each identifier in fractal transform 198 consists of an address and a procedure specification. The address represents a range block derived from a specified portion (for example, the lower left quadrant) of a set of data representative of an input image.
  • the address of the identifier corresponding to a decode domain block 206 is used to specify the same portion, e.g. the lower left quadrant, of the data set stored in the source buffer, buffer A of FIG. 16, which represents initial image 202.
  • This portion of the data stored in buffer A is then processed by the procedure specified by the identifier corresponding to the domain block and the processed data further processed by shrinking.
  • the processed and shrunken data is then stored into a corresponding decode domain block in buffer B.
  • an identifier corresponding to a specified decode domain block 206 of buffer B consists of "1(90)"
  • this represents an address and a procedure.
  • the address indicates that range block #1 is involved, consisting of the lower left quadrant of an image.
  • the procedure specifies rotation by 90°.
  • the data representing the lower left quadrant of the image in buffer A is operated on by a procedure to rotate the corresponding image by 90° and the data is then processed by a shrinking algorithm to obtain a shrunken range block in the manner discussed above with respect to the process of forming the fractal transform.
  • the resultant data representing the shrunken range block is then stored into the specified decode domain block of buffer B.
  • each of the decode domain blocks 206 is filled with data specified by the corresponding identifier of fractal transform 98. If the address of the corresponding identifier specifies the escape block, i.e., a block containing image data representing a blank image, an escape block is stored in the corresponding decode domain block.
  • the preceding two steps of (1) filling buffer A with image data and (2) filling all decode domain blocks of buffer B with digital data representing shrunken range blocks of buffer A specified by the identifiers of the fractal transform are repeated until predetermined criteria are met, as shown in FIG. 18.
  • the image data in buffer B (FIG. 16) is read back into buffer A. This can be observed by noting that the content of buffer B of FIG. 16 is stored in buffer A of FIG. 17.
  • the method concludes with providing the contents of the destination buffer as data representative of an image when the predetermined criteria are met.
  • the steps of FIGS. 16 and 17 are repeated a certain number of times, until "convergence" is achieved.
  • the number of iterations, as monitored by counter 158 (FIG. 14), depends on the dimensions (measured in pixels) of the domain blocks and range blocks and may consist of a fixed number of iterations. Alternatively, the iterations may be determined by measuring the difference between the image data in buffers A and B and terminating the iteration process when the difference is less than a predetermined value.
  • FIG. 19 shows a detailed description of a preferred method for automatically generating an image by a data processor according to the present invention from a set of identifiers consisting of the fractal transform of an original image.
  • the fractal transform could be generated from the method in FIG. 12 or any other method which can generate a set of identifiers such as produced by the method of FIG. 12.
  • a buffer A comprising an image buffer in the data processor, is initialized with initial image data representing a solid black image (i.e., all 1's). Any initial image could be used. However, all-black is a convenient and easily stored set of image data.
  • a main loop counter (the functions of which may be provided by counter 158) is initialized to zero.
  • the main loop counter indicates the numbers of times the image generation steps of FIGS. 16 and 17 have been repeated. This number may be compared to a predetermined value selected for the specific application, to end the iteration process.
  • a domain block pointer is initialized for a second buffer, buffer B, which has been previously divided into domain blocks. Also at step 254, a fractal transform pointer is initialized to point to the first identifier of the fractal transform representing the input compressed image data.
  • the identifier specified by the fractal transform pointer is applied to image data in buffer A.
  • the address in that identifier specifies a range block in buffer A, and the process of that identifier is then applied to the specified range block.
  • the identifier could also specify the escape block.
  • a shrunken range block is constructed from the processed, specified range block from buffer A and the shrunken range block (or the escape block) is read into a domain block in buffer B pointed to by the current value of the domain block pointer.
  • the technique of obtaining a shrunken range block can use any of the shrinking techniques described above, or may use a different technique altogether.
  • step 258 the domain block and fractal transform pointers are incremented. A determination is then made at step 260 whether the last identifier of the input fractal transform has been processed. If not, the method loops back to step 256.
  • step 262 the method advances to step 262 in which the main loop counter is incremented.
  • a determination is made at block 264 whether the main loop counter has reached a maximum value. If not, the contents of buffer B are transferred to buffer A, as shown at step 266, and the method loops back to step 254. After a predetermined number of iterations of steps 254-266, the contents of buffer B are supplied as output data representing the original uncompressed image.
  • the method shown in FIG. 19 provides an iterative process in which the number of iterations are specified by a predetermined value. Alternatively, the iterations of the method shown in FIG. 19 could continue until the contents of buffer B only differ from the contents of buffer A by less than a predetermined amount.
  • This method known as the convergence method, may be further described as follows. After the step in which the contents of buffer B have been computed, the following steps are carried out:
  • a and b respectively consisting of a pointer to a domain block in buffer A and a pointer to a domain block in buffer B which has the same relative position in buffer B as the domain block in buffer A pointed to by a.
  • iii) use a block comparator, such as comparator 66, to compute a distance between the domain block pointed to by a and the domain block pointed to by b.
  • FIG. 20 identifies the steps in an alternative embodiment of the invention for a method of generating an image by a data processor from a set of identifiers.
  • the data processor includes a memory having an image buffer with a plurality of addressable areas specified by a buffer address.
  • Each of the identifiers corresponds to an addressable area in the buffer and includes both a buffer address and a procedure to be applied to the data in the area identifier by the corresponding address.
  • First a predetermined pattern of digital data for an arbitrary image is stored in the image buffer.
  • step 300 image data representing an arbitrary input image is stored in an image buffer.
  • the set of identifiers comprising a fractal transform, is provided as input to a data processor as shown in block 304.
  • a pattern of data corresponding to that identifier is determined by applying the procedure in that identifier to the portion of the image buffer indicated by the buffer address of that identifier. That data pattern is then stored back into the same area of the image buffer indicated by the buffer address for the corresponding identifier.
  • these steps are performed by setting a pointer to a first domain block in the image buffer (at step 306).
  • step 308 the address of a range block corresponding to the image block specified by the pointer is read.
  • a shrunken range block is then constructed from the image data in the image buffer, as indicated in block 310.
  • the data present in the domain block of the identifier is then replaced by the data from the shrunken range block, as indicated at step 312.
  • step 314 the domain block pointer is incremented and a determination made at step 316 whether all domain blocks have been processed. If not, steps 308, 310, and 312 are repeated until all domain blocks are processed.
  • step 318 A determination is then made at step 318 whether the contents of the image buffer are stable, that is, differ by less than a predetermined amount from the previous contents. This determination may be made by performing steps (i)-(vii) of the convergence method described above. When the predetermined threshold value of the final register value is reached, the contents of the image buffer are then provided as output representative of the original compressed image, as indicated at step 320.
  • a grayscale image is an image formed of pixels which may have any one of a plurality of graduated light intensities, ranging from completely black to completely white.
  • FIGS. 21-24 illustrate a preferred process by which a fractal transform of an input digitized grayscale image 360 is found.
  • Image 360 is divided into domain blocks 362, and range blocks 364 as shown in FIGS. 21 and 22, respectively. Additional range blocks may also be created by procedures such as rotation and reflection, as described previously with respect to black and white range blocks.
  • a shrinking process is then applied to the range blocks to produce shrunken range blocks 366, as shown in FIG. 23.
  • the shrinking process is such that the shrunken range blocks contain the same number of pixels as the domain blocks and can employ shrinking techniques as described above with respect to black and white images. However, unlike the procedure for processing black and white images, there is no escape block included among the shrunken range blocks.
  • Each pixel of the domain blocks and shrunken range blocks has a number associated with it which represents its grayscale value, i.e. the brightness of the pixel. For example each pixel in image 360 (FIGS. 21 and 22) has a grayscale value of 0-255.
  • each domain block 362 is compared to shrunken range blocks 366 and is associated with a single shrunken range block 369 which most closely corresponds to the domain block.
  • This association will be described below in greater detail with respect to FIG. 30 and is performed by a block comparator 368 which compares the grayscale values of the pixels of each block to grayscale values of pixels in each shrunken range block 366.
  • FIG. 25 provides further explanation of the processing of grayscale images.
  • a grayscale image 400 formed of pixels 401 having four possible levels of gray can be represented in binary form as shown at 402.
  • each pixel in binary representation 402 has its intensity level represented by a value of 0-3.
  • Shrunken range blocks 366 can be constructed from the binary representation 402. First, four binary representation of range blocks 364 can be constructed as the lower left (1), lower right (2), upper left (3), and upper right (4) quadrants of binary image representation 402. These range block binary representations are then processed by shrinking techniques as described above to form shrunken range blocks 404.
  • Binary representation 402 is also divided into binary domain blocks 406.
  • the binary domain blocks are numbered 1-16 in order from left to right and from bottom to top of binary representation 402.
  • Each of binary domain blocks 406 is a 2 ⁇ 2 pixel array of non-overlapping subsets of binary image representation 402.
  • the domain block size is chosen to be the same as the shrunken range block size.
  • the corresponding fractal transform 410 for grayscale input image 60 is thus a list of identifiers consisting of the "addresses" of the shrunken range blocks and associated vertical scaling parameters, one address and set of vertical scaling parameters being associated with each domain block, as shown in FIG. 26.
  • no procedures, such as rotation and inversion, have been discussed in the explanation of FIG. 25 in order to avoid unnecessary complication of explanation, the preferred embodiment employs such procedures, and the codes specifying the procedures are included in each identifier of the fractal transform.
  • FIG. 27 shows in detail a preferred method for automatically creating a fractal transform representative of grayscale image data in accordance with the present invention.
  • digital image data representing a grayscale image is stored in buffer A of a data processor.
  • a range block pointer for buffer A and a shrunken range block pointer for buffer B are initialized.
  • predetermined procedures are applied to the range block of buffer A specified by the range block pointer. Such procedures include local affine transforms, such as rotation, reflection, or inversion prior to shrinking to obtain a greater number of shrunken range blocks for a given input image.
  • the processed range blocks are then stored into buffer B at the locations indicated by the shrunken range block pointers.
  • the range block pointer for buffer A and shrunken range block pointer for buffer B are then appropriately incremented at step 506, and the range is examined at step 508 to see whether all range blocks have been accessed. If not, steps 504 and 506 are repeatedly executed until all range blocks have been accessed.
  • a domain block pointer for buffer A is initialized at step 512 and the shrunken range block pointer for buffer B is initialized in step 514.
  • vertical scaling parameters P and Q are determined to minimize the L distance between the domain block addressed by the domain block pointer and the shrunken range block addressed by the range block pointer.
  • L distances are used to measure the distances between graphs of functions rather than between sets of points.
  • a digitized grayscale image can be thought of as a function formed from a two dimensional array of indices representing pixel locations in an image indicating the intensity value associated with the pixels. That is, the function f(i,j) represents the intensity at pixel i,j where i,j specify the location of the pixel in the image array.
  • An L distance compares two functions by appropriately summing and in some way averaging the differences between the intensities at each pixels.
  • L 2 distance if the differences are squared before they are summed, in which case the "averaging" is achieved by taking the square root of the sum. It is an L 1 distance if the absolute values of the differences are utilized. If the L distance between two images is small then the two images look alike. L distances have the advantage that they generally can be calculated faster and easier than Hausdorff distances.
  • a weighted L 2 distance D L is used in the preferred embodiment to select vertical scaling parameters P and Q and is expressed as;
  • x i ,y i are indexed intensity values in respective images
  • w i are non-negative numbers
  • N is the number of pixels in each image.
  • the distance between digital grayscale images A and B can be measured using both Hausdorff distances and using L distances.
  • the images are treated as a sets of points in a three dimensional array and in the second case they are treated as functions.
  • L 2 distances are used in selecting P and Q values.
  • the Hausdorff distance between the domain block specified by the domain block pointer and the shrunken range block specified by the shrunken range block pointer and scaled by P and Q is determined.
  • the Hausdorff distance is computed in the same manner as described with respect to FIGS. 10a and 10b.
  • a determination is then made at step 520 if the value computed at step 518 is less than the currently stored value. If so, the currently stored value is replaced by the value just computed at step 518, along with the identifier of the shrunken range block which was used to generate the value just computed. If the value computed at step 518 is not less than the currently stored value, the value just computed is discarded.
  • the range block pointer is incremented and a determination made as to whether all range blocks have been checked. If not, the method of FIG. 22 loops back to steps 516-522 until all shrunken range blocks have been checked.
  • the identifier stored by the loop consisting of steps 516-522 is then appended at step 526 to a list of identifiers each representing one of the domain blocks of the input image data stored in buffer A.
  • the domain block pointer is incremented at step 528 and a determination made whether all domain blocks have been processed. If not, steps 516-528 are repeatedly executed until all domain blocks have been processed.
  • the list of identifiers, each corresponding to one of the domain blocks of the original input data, is then output at step 532 as the fractal transform according to this method of image data representing the input grayscale image.
  • FIG. 28 illustrates how a grayscale image is recovered from a fractal transform 410 (which includes scaling parameters).
  • An arbitrary initial image 534 and a fractal transform 478 are input to a decompression system 536, preferably embodied in a data processor.
  • Initial image 476 is loaded into a buffer A.
  • a buffer B is partitioned into domain blocks; and into each domain block is read a shrunken range block which is specified by the corresponding address of fractal transform 410, scaled as specified by the vertical scaling parameters.
  • the shrunken range block is constructed from initial image 534 in buffer A.
  • Image 534 in buffer A is treated, addressed, and processed into shrunken range blocks, in exactly the same manner as the original image.
  • Each of the identifiers forming the grayscale fractal transform corresponds to one of the domain blocks in buffer B of FIG. 28 and is used to select a shrunken range block from buffer A to read into the corresponding domain block, thus forming an interim image in buffer B.
  • the interim image in buffer B is now read back into buffer A, and buffer B is cleared.
  • the steps of reading into each domain block of buffer B a shrunken range block of buffer A specified by a corresponding address of the fractal transform to form an interim image, and reading the interim image of buffer B into buffer A are repeated either a prescribed number of times or until "convergence" is achieved.
  • the number of iterations of the steps of placing shrunken range blocks in buffer B and replacing contents of buffer A with contents of buffer B depends on the dimensions (measured in pixels) of the domain blocks and range blocks.
  • the number of iterations may also be determined experimentally, by detecting convergence, defined as when the successive images in buffer B do not change by more than a predetermined amount.
  • the decoded image is the one which is finally obtained after the iterative process is complete.
  • FIG. 29 shows a logic flow diagram which constitutes a preferred embodiment for decoding a grayscale fractal transform such as the one generated by the method of FIG. 27.
  • an initial image is supplied to buffer B, as indicated at step 550.
  • a main loop counter, a domain block pointer for buffer B, and a fractal transform pointer are initialized, as indicated in step 552.
  • the next entry of the fractal transform as specified by the fractal transform pointer, is obtained at step 554 and a corresponding shrunken range block is created from buffer A.
  • the range block is then scaled with vertical scaling parameters P and Q and read into a domain block of a corresponding position in buffer B.
  • step 556 domain block pointer for buffer B and the fractal transform pointer are incremented.
  • the main loop counter is incremented at step 560. If the prescribed number of iterations, has not been reached (Step 562), the method loops back to step 552 and creates a domain block in buffer B from each fractal transform entry. The process continues until the prescribed number of iterations has been reached. At that time, the contents of buffer B are provided as data representative of the grayscale image previously compressed into the input fractal transform.
  • the present invention also provides a method for enhancing images.
  • Image data representing a grayscale image at a first resolution is stored in the data processor. For example, data from an image comprising an array of 256 ⁇ 256 pixels is supplied as input to the method of FIG. 27.
  • a fractal transform is obtained using the method.
  • the fractal transform is then decoded at a second resolution higher than the first resolution to produce output image data by decoding the fractal transform using the method of FIG. 29 including a pair of larger buffers to produce an output image array larger than 256 ⁇ 256.
  • use of buffers in the method of FIG. 29 to provide a 512 ⁇ 512 output array yields an image having a resolution of twice that of the original input image.
  • this technique can be used to provide a scalable font. That is, fractal transforms representing the symbols of the typeface can be decoded to any desired resolution to provide multiple fonts of the type face symbols at any desired size.
  • the invention may also be used to compress and decompress color images, as shown in FIG. 30.
  • Digital data representing a color image is input and a trio of grayscale fractal transforms are produced, one for each of primary colors red, green, and blue.
  • the three fractal transforms are concatenated to form a color fractal transform.
  • the color fractal transform is separated into individual fractal transforms representing grayscale fractal transforms of red, green, and blue images.
  • the individual fractal transforms are then decoded using, for example, the method shown in FIG. 29, to produce red, green, and blue intensity images. These intensity images are combined in a manner well known in the art and are output as a decompressed color image.
  • the apparatus of FIG. 31 includes a host interface 600, memory 602, 604, 605, and 606, a memory interface circuit 610, a digital signal processor 612, and display output interface 613 on a printed circuit board which is compatible with PC/AT type computers based on the Intel 80286 central processing unit.
  • the digital signal processor 612 and the memory interface 610 are connected to a PC expansion bus for receiving commands and data.
  • the preferred digital signal processor 612 is a TMS320C30 manufactured by Texas Instruments Incorporated. Details concerning the operation of the preferred digital signal processor 612 are available in the literature supplied by the manufacturer.
  • the digital signal processor 612 employed in the disclosed embodiment is capable of performing a wide variety of floating point operations, the purpose for which it is used in the present invention is to provide high speed implementation of the arithmetic portions of a fractal transform decoding method, such as shown in FIG. 29. Accordingly, it will be understood that the other functions which could be carried out by the digital signal processor 612 are not employed in the disclosed embodiment.
  • the digital signal processor 612 generally operates on thirty-two bit data, in the disclosed embodiment, it adds and multiplies signed eight bit data provided by the memory interface 610 in response to a sequence of instructions contained in the program code ROM 602.
  • These primary components operate to decode a set of range block addresses and transfer the results of the decoding process to the screen buffer, 604 and 605 forming display memory banks A and B, which in the disclosed embodiment consists of a single 262,144 by 4 bit multiport video RAM TMS44C251 manufactured by Texas Instruments Incorporated. Details concerning the operation of the preferred display memory banks A and B are available in the literature supplied by the manufacturer.
  • the data set representing an image is an array of 256 pixels by 256 pixels, although it will be appreciated that the size of this array is arbitrary and that a larger array gives rise to greater resolution. Moreover, it should be understood that the data set representing the image is the same for the display resolution, the screen buffer resolution, and for all arithmetic calculations.
  • each pixel intensity value is represented by an eight bit value so that images having 256 gray or pseudo-color intensity levels can be decoded, although it will be appreciated that the size of this array is arbitrary and that more than eight bits per pixel gives rise to more than 256 intensity levels, while less than eight bits per pixels gives rise to less than 256 intensity levels. In particular, twenty four bits per pixel would give rise to sufficient intensity levels to describe 256 intensity levels each of red, green and blue primary components.
  • the preferred display memory banks A and B although physically one device, are conceptually treated as two banks of memory.
  • One bank is thought of a containing the "current image” and is used as the source of image data.
  • the other is thought of as containing the "new image” and is used as the destination of image data.
  • the banks are distinguished by a memory start address offset which in the case of bank A is 0 and in the case of bank B is 131,076 (measured in four bit memory locations).
  • Each bank is of sufficient size to contain an entire 256 ⁇ 256 ⁇ 8 bit image.
  • the memory interface 610 contains address generators to generate arrays of data corresponding to square subimages.
  • the subimages are determined by a row and column address of the upper left hand corner of the subimage and a size.
  • the subimage with upper left hand corner row equal to R and column equal to C and dimension S is denoted by sub(R,C,S).
  • Sub(R,C,S) contains S times S pixel locations and contains all the pixel locations from row R to row R+S-1 and from column C+S-1.
  • the host interface 600 receives and transmits signals and data from the expansion bus 611 of an IBM PC/AT on PC address, data and bus control lines 615. Data and addresses are sent to the memory interface 610 on the lines 617.
  • the memory interface 610 consists of memory address generators and address sequencers. Two types of data are transmitted to the memory interface 610. Image codes are placed into and retrieved from program data RAM 606 which is 4096 by 8 bits. The image code is preceded by a byte of data, the format byte. The low four bits, bits 0,1,2,3, of the format byte determine the domain block size and therefore the range block size, since the range block size is always twice the domain block size in the disclosed embodiment. Valid values of the domain block size are 4-16. Both the domain blocks and range blocks are square in the disclosed embodiment. Thus, one dimension completely specifies the domain block size.
  • the format byte is stored in a static RAM format register in the memory interface 610.
  • the format byte is used by the digital signal processor 612 to compute the actual dimensions of the displayed image in pixels.
  • the dimension of the displayed image may be somewhat less than 256 by 256. It is determined as the largest number of pixels which is a multiple of the domain block size and which is simultaneously no larger than 256. For example, if the domain block size is 5, then the image width and height in pixels is 255 and not 256. This is because 51 times 5 is 255, which number is not larger than 256, while 52 times 5 is 260, which exceeds 256. The number is computed by integer dividing 256 by 5 and then integer multiplying by 5.
  • a list of image size values as a function of format value is now provided in the format i,f; where i is image size and f is format value:
  • the result is stored in an eight bit image size static RAM register in the memory interface 610.
  • An address sequencer in the memory interface 610 uses the format register value, generates addresses in the program data RAM 606 to store the image codes which are transmitted from the host interface 600 into the memory interface 610.
  • the program data RAM 606 consists of 4096 memory locations, each one byte wide.
  • An image code may consist of up to 2048 codes, each of which occupies two bytes of the program data RAM.
  • CODELENGTH the number of two-byte program data RAM words which contain valid data, is the square of (the value in image size divided by the value in format).
  • CODELENGTH varies between 256 and 2048 as the value in format varies between 4 and 16.
  • the sixteen bits of the first CODELENGTH words in the program data RAM contain both address and transform information. The partitioning of each such word between address and transform information depends on the value in the format register according to the following formula:
  • the address bits are divided in equal parts to form a row address and a column address according to the following table:
  • pixel row and column addresses are computed by multiplying the row address and column address values by the domain block size stored as the value in format.
  • the address generator of memory 610 then determines physical memory address in the display memory banks 604 and 605.
  • the transform bits are used, together with the values in NUMSCALE and DENOMSCALE registers in the memory interface 610, to carry out the grayscale fractal transform decoding operation.
  • the digital signal processor 612 receives both of the signed eight bit NUMSCALE and DENOMSCALE values over the lines 619. In the disclosed embodiment, these values are selected by an operator and are fixed for an entire image computation. It will be understood that providing a larger program data RAM would permit distinct NUMSCALE and DENOMSCALE values to be used for each code word.
  • the NUMSCALE and DENOMSCALE values are loaded from the PC/AT host to the host interface on lines 615 and from the host interface to the NUMSCALE and DENOMSCALE registers in the memory interface 610 on lines 617.
  • the decoding steps of the grayscale fractal transform are carried out in an initialization step and repeated decoding iteration steps.
  • the instructions required to carry out the decoding procedure are loaded from the program ROM 602 which is connected to the digital signal processor 612.
  • An initialization signal is sent from the PC/AT host on the lines 615 to initialize the memory interface 610.
  • the memory interface 610 now receives twenty-six bits, the first eight of which are stored in the format register, the next nine of which are stored in the NUMSCALE register and the final nine of which are stored in the DENOMSCALE register.
  • a code counter is now initialized to the value of 16 times CODELENGTH. Bits are now loaded from the PC/AT host over the data lines 615 to the host interface and from there over the data lines 617 to the memory interface 610.
  • An address sequencer in the memory interface 610 having been initialized by the initialization signal above, provides successive addresses in the program data RAM 606 and transfers the data bits it receives to the byte memory areas so addressed.
  • the code counter is decremented with each bit and the data transfer process halts when it reaches zero.
  • a signal is then sent to the digital signal processor 612 to load the program from the program code ROM 602.
  • the values in the NUMSCALE and DENOMSCALE registers are transferred to memory locations in the RAM of the digital signal processor 612.
  • the value of format is also transferred to a memory location in the RAM of the digital signal processor 612, which computes and stores the value of CODELENGTH as described above.
  • Another digital signal processor RAM address location, display bank, is cleared.
  • a memory location configured as a block counter in the RAM of the digital signal processor 612 is set at the starting address of the program data RAM 606, which is contained in the program code ROM 602.
  • Each Decoding Iteration Step consists of CODELENGTH iterations of Block Decoding Steps.
  • the value of display bank is sent to the memory interface 610 and stored in a bank register on the memory interface 610.
  • the value of BLOCK COUNTER in the digital signal processor 612 is passed on the data lines 619 to the memory interface 610.
  • the eight bits of data at that address in the program data RAM and the next eight bits of data are passed back to the memory interface 610 on data lines 619.
  • the transform bits of the code word are sent on data lines 13 to the digital signal processor 612 and stored in a memory location, Q, in the digital signal processor 612.
  • the row and column address bits of the code word are used by the display address generator on the memory interface 610 to generate the addresses of a square block, with horizontal and vertical dimension equal to two times format, of pixel data in the display memory bank. If the value of display bank is 0 then the addresses are generated in display memory bank B 605.
  • the upper left hand corner of the square block is generated as that pixel on the format times row address row and format times column address column.
  • the image data in this square block is SUB(ROW ADDRESS times FORMAT,COLUMN ADDRESS times FORMAT,2 times FORMAT).
  • the address generator initializes counters with values i and j at 0 and then increments j until j reaches FORMAT when it is reset to 0. When j is reset, then i is incremented until i reaches FORMAT when it is reset to 0.
  • a register in the digital signal processor 612, PIXEL is cleared. For each value of i and j between 0 and FORMAT-1 inclusive, the byte values at the byte of pixel data stored at the address locations of the four pixels in SUB(SUBROW, SUBCOL,2) is sent over the address lines of 619 to the memory interface 610 and then over the data lines of 619 to the digital signal processor 612 and accumulated in the PIXEL register.
  • a second address generator in the memory interface 610 determines destination addresses in the display memory.
  • the pixel coordinates of the upper left hand coordinates are computed by the second address generator.
  • the pixel row of this location is
  • the pixel column address of this location is
  • DESTCOL (BLOCKCOUNT/(IMAGESIZE/FORMAT)) times FORMAT where X/Y denotes the remainder of integer division of X by Y.
  • counters i and j are cleared and BLOCKCOUNT is incremented.
  • Block Decoding Step is repeated CODELENGTH many times with the incremented blockcount values.
  • the value of display bank is replaced by 1 --the value of display bank and consequently alternates between 0 and 1.
  • the Decoding Iteration Step is then completed.
  • the display of the image is carried out essentially asynchronously with the computational decoding. Pixel values are indeed read out of the display memory asynchronously, but the memory bank which is used as the source of the display pixels is specified by the value of display bank.
  • the display output interface 613 provides the R-G-B output.
  • the video output logic timing device 617 drives the preferred color pallet, a Brooktree Bt453RAMDAC, not shown in FIG. 31.
  • the ratio of the image code to the decoded image size is called the compression ratio of the device.
  • the compression ratio of the device may be computed by dividing twice CODELENGTH by the square of image size.
  • the disclosed embodiment yields compression ratios varying from 1:16 when format contains the domain block size value of 4 to a compression ratio of 1:128 when the value of format is 16.
  • the restriction of format values to vary between 4 and 16 is arbitrary. Larger values of FORMAT lead to larger compression ratios.
  • An intended purpose of the disclosed decoding device is to provide an economical means of decoding images which have been encoded by the grayscale fractal transform.
  • the usefulness of the device can also be measured in the compression ratio which it achieves.
  • the compression ratio can be effectively increased by compressing the fractal transform codes by traditional compression of a grayscale fractal transform.
  • publicly available Huffman encoding schemes could be used to encode the fractal transform codes.
  • the Huffman encoded fractal transform codes are then Huffman decoded before transmission to the disclosed apparatus for decoding the fractal transform.
  • fractal transform techniques described herein has a significant advantage over prior art techniques such as vector quantization and Huffman coding in that no look-up tables are used.
  • the compression ratio can be easily changed, the system can be used in an adaptive mode, useful in applications such as DVI and preparation of old movies for transmission along telephone lines.
  • FIG. 32 is a logic flow chart of a method for generating compressed digital data representing image information in a motion picture, by a data processor, for storage or transmission.
  • first and second processing buffers are initialized with predetermined image data.
  • the processing buffers are initialized to values of 0.
  • the processing buffers are formed to store grayscale pixel values of a square image array.
  • the processing buffers provide storage of a 256 ⁇ 256 array of 8-bit pixels.
  • the value of a counter in the data processor is also initialized at step 702.
  • image information contained in the first frame of the motion picture to be processed is digitized to produce digitized image data.
  • the image information may be digitized at the same resolution as the processing buffers.
  • the image information from the first frame of the movie is digitized into a 256 ⁇ 256 array of pixels having an 8-bit grayscale value.
  • the digitized image data from the first frame of the movie is stored in a frame buffer.
  • the counter value is then checked to determine if the value is greater than a predetermined limit value.
  • the counter is used for the purpose of repeating the processing of the first frame for a fixed number of times, for example, 8. That is, the limit value referred to in step 708 is set to 8. If the counter value is greater than the limit value, image information from the next sequential frame of the movie is digitized to produce digitized next frame image data and the digitized next frame image data is stored in a frame buffer. If the counter value is not greater than the limit value, as determined in step 708, step 710 is bypassed, with the result that image data from the first frame remains in the frame buffer.
  • image data from the frame buffer is stored into the first processing buffer. This image data is then processed in the same manner as set forth in FIG. 5. Specifically, domain blocks are created in step 714. Next, at step 716, shrunken range blocks are created in the second processing buffer. For each domain block, the closest shrunken range block is selected at step 718 and the selected shrunken range block is used to replace the corresponding domain block in the first processing buffer at step 720.
  • the set of identifiers of the selected shrunken range blocks is then used at step 722 to form a fractal transform such as fractal transform 410, shown in FIG. 26.
  • This fractal transform is referred to as a current transform.
  • the current transform which comprises compressed digital data representative of the image information in the first frame of the movie, is then provided as output at step 724, and the contents of the first processing buffer are copied into the second processing buffer at step 726.
  • step 728 the counter value is incremented and a determination is made at block 730 if all frames of the movie have been processed. If not, processing returns to step 708. If all frames have been processed, the method ends at 732.
  • the data is generated by a data processor from a sequence of current transforms, each having a set of identifiers.
  • the data processor includes a memory having a plurality of buffers, each having a plurality of addressable areas specified by a buffer address.
  • Each of the identifiers corresponds to an addressable area in the buffers and includes a buffer address and a procedures specification.
  • a pair of buffers A and B are provided, corresponding in size to the processing buffers discussed with respect to FIG. 32.
  • buffers A and B in the preferred embodiment each have a size sufficient to store an array of 256 ⁇ 256 by 8 bits.
  • an initialization step is performed in which a predetermined pattern of digital data is stored into at least one of the buffers, buffer B, designated as a source buffer.
  • buffers A and B are initialized to all 0's.
  • a current transform preferably generated by a process such as shown in FIG. 32, is input at step 802 from the sequence of current transforms which constitute compressed digital data representing a motion picture.
  • the digital data in buffer A is formed into domain blocks, each corresponding to an identifier in the input current transform.
  • the digital data in buffer B is formed into shrunken range blocks, in the same manner as is discussed above with respect to FIG. 13.
  • each domain block in buffer A is replaced by a shrunken range block.
  • a pattern of data is determined which corresponds to each of the identifiers. This pattern of data is determined by applying the procedures specified in that identifier to the portion of the source buffer, buffer B, indicated by the buffer address in the identifier.
  • the patterns of data are stored into the addressable areas of buffer A, designated as a destination buffer, as indicated by the addresses of the corresponding identifiers.
  • each domain block of buffer A is replaced by a shrunken range block of buffer B. This process is identical to that described above with respect to FIG. 13.
  • step 810 the contents of the destination buffer are provided as data representative of an image in the frame. That is, image data from buffer A is output as digital data representative of an image in the frame. This image corresponds to the frame represented by the current transform input in step 802.
  • step 812 a determination is made as to whether all current transforms have been processed; that is, have images corresponding to all desired frames been processed. If so, the process ends at step 814. Otherwise, the contents of the destination buffer are copied into the source buffer. That is, as shown at step 816, the contents of buffer A are copied into buffer B and processing returns to step 802 to decompress the next current transform of the sequence.
  • the sequence of sets of image data output at step 810 constitutes decompressed image data representing each frame of a motion picture.
  • FIG. 34 is a block diagram of apparatus 1000 for providing a videophone.
  • Apparatus 1000 includes two latch-and-hold inputs units 1011 and 1012, a control logic unit 1013, two data processors 1014 and 1015 (respectively functioning as a videophone encoder and a videophone decoder), and two output units 1016 and 1017.
  • Apparatus 1000 has two functional modes: encoding and decoding.
  • Control logic unit 1013 selects either the encoding mode or the decoding mode as determined by input data.
  • a video source 1002 such as a video camera, provides an analog signal to a frame grabber circuit 1006 which converts each frame of video from source 1002 into digital data and stores the digital data in frame grabber unit 1006.
  • Control logic unit 1013 causes video input unit 1011 to read digital data stored in frame grabber 1006 and pass the data to videophone encoder 1014.
  • Videophone encoder 1014 is a fractal encoder of the type described previously with respect to FIG. 6.
  • Videophone encoder 1014 processes the digital video data which it receives from control logic unit 1013. This processing produces fractal transforms for the frames, which are then output through data output unit 1016
  • Data output unit 1016 may be a standard telephone modem circuit.
  • fractal transforms are supplied by a data source 1004, which may also be a standard telephone modem circuit.
  • Control logic unit 1013 causes data input unit 1012 to read and accumulate the data supplied by data source 1004 and pass it to videophone decoder 1015.
  • Videophone decoder 1015 is a fractal decoder of the type described with respect to FIG. 14.
  • Videophone decoder 1015 processes the fractal transforms which are received from control logic unit 1013. The processing results in digital video data which is sent from decoder 1015 to video output unit 1017. This output unit transforms the digital data into analog data for display on the video display unit 1020.
  • FIG. 35 An alternative method of generating a fractal transform is disclosed in FIG. 35.
  • an image is stored as image data in a data processor in a 64,000 location buffer arranged as a 200 ⁇ 320 array 1100. Each location represents the image value (0-255) of a pixel of an image.
  • Pixels of array 1100 are arranged into domain blocks, such as 1102, each consisting of an array of 8 ⁇ 8 pixels. The domain blocks thus form a 25 ⁇ 40 block array in the buffer.
  • Image data of the buffer is then used to form range data.
  • the image data of the buffer may be shrunken in a 4:1 ratio to form a range data array 1104, as shown in FIG. 35.
  • Range data array 1104 may be so formed by selecting every other pixel of array 1100. This is illustrated in FIG. 36, wherein every other pixel of a segment of array 1100 is selected to form a corresponding segment of array 1104.
  • Array 1104 is then used to form a series of shrunken range blocks, used for comparison with domain blocks 1102 to form a fractal transform, similar to the methods described above.
  • shrunken range blocks are formed as series of overlapping blocks from range data array 1104.
  • Each shrunken range block is an 8 ⁇ 8 array of pixels, with the address of the shrunken range block specified by the row and column coordinate of the upper left pixel of each 8 ⁇ 8 block.
  • overlapping shrunken range blocks may be formed with a specified separation, or "gap," between the upper left pixel of each overlapping block. As shown in FIG.
  • a first shrunken range block 1108 is formed as an 8 ⁇ 8 array of pixels, having an upper left pixel located at row and column coordinate 0,0.
  • a second shrunken range block 1110 is formed by a 8 ⁇ 8 pixel array whose upper left pixel has a row and column coordinate of 0,2.
  • a third shrunken range block 1112 is formed of an 8 ⁇ 8 pixel array whose upper left pixel is located at row and column coordinates 2,4.
  • the series of shrunken range blocks can be formed by 8 ⁇ 8 pixel arrays whose upper left pixel has a row coordinate of 0,2,4, . . . 91 and a column coordinate of 0,2,4, . . . 151.
  • Each shrunken range block formed from range data array 1104 is then subjected to transform processes consisting of rotation by 0°, 90°, 180°, and 270°, each of which is also subjected to inversion.
  • transform processes consisting of rotation by 0°, 90°, 180°, and 270°, each of which is also subjected to inversion.
  • a total of eight comparison shrunken range blocks is generated.
  • the fractal transform for the image corresponding to data stored in array 1100 is then formed in a manner similar to that described in previous embodiments, by selecting, for each domain block contained in array 1100, the shrunken range block which is "closest," according to any of the distance criteria set forth previously. That is, each domain block is compared with the overlapping shrunken range blocks formed from range data array 1104, various rotations of each domain block are compared with the overlapping shrunken range blocks, and the inversions of each of the domain blocks and their rotations are compared with the shrunken range blocks. Alternatively, and in a manner which is a mathematical equivalent, inversion and rotation may be performed on shrunken range blocks.
  • the identifier consists of the row and column coordinate of the upper left pixel of the domain block, a two-bit code designating the rotation (0°, 180°, 270° or 360°) of the domain block, and a one-bit code specifying whether the rotated domain block is inverted or not.
  • each identifier is a vertical scaling parameter q which is unique for each identifier.
  • An additional vertical scaling parameter p is selected, which is common to all identifiers of a fractal transform.
  • the p value may be 0.75.
  • the q value is selected as follows. First, the average pixel value of the domain block is determined, by calculating the average pixel value of each of the 64 pixels forming the domain block. Next, the average pixel value of the pixels of the selected shrunken range block is then calculated. (The domain block average is the same for each of the rotated and inverted domain blocks.) The product of the average pixel value of the selected shrunken range block and the p value of 0.75 is calculated, and the product is subtracted from the average pixel value of the domain block to form the q value. Since pixel values for each pixel range from 0-255, the value of q generally ranges from -127 to +128.
  • an identifier including a row and column coordinate, a two-bit rotation code, a one-bit inversion code, and a q value is formed for each of the 1,000 domain blocks of image array 1100.
  • the set of 1,000 identifiers thus constitutes the fractal transform of the image represented by array 1100.
  • FIG. 38 shows a buffer 1150 capable of storing image data for an image consisting of an array of pixels which is 320 pixels wide and 200 pixels high.
  • Buffer 1150 is formed from memory locations in a data processor, each of which contains a numeric value and each of which is specified by a memory location address.
  • the image represented by data stored in buffer 1150 is formed of pixels, each of which has a pixel value and each of which is specified by a row and column coordinate.
  • Each pixel has a gray scale value of 0-255.
  • the pixels of buffer 1150 may be represented by row and column coordinates having values of 0-199 and 0-319.
  • the array of pixels in buffer 1150 is in turn divided into one thousand domain blocks each consisting of an 8 ⁇ 8 array of pixels.
  • domain blocks of buffer 1150 correspond to domain blocks of an original uncompressed image, now represented by a fractal transform.
  • An abridged form of a fractal transform is shown at the top of FIG. 38.
  • Data representing an arbitrary image is initially stored in buffer 1150.
  • an arbitrary image consisting of a uniform gray tone of value 128 may be stored in buffer 1150.
  • pixel chaining The alternative method of decoding compressed digital data represented in FIG. 38 is termed "pixel chaining." Unlike the process referred to previously with respect to FIGS. 16-18, decompression using the method illustrated in FIG. 36 need not occur throughout the entire image.
  • a first step is to select an arbitrary pixel, out of the 64,000 pixels represented by the 200 ⁇ 320 array of buffer 1150. This arbitrary pixel is designated as "pixel #1" and constitutes the first entry in a table of numbered pixels to be created, as shown in Table I.
  • the first arbitrarily selected pixel may be the pixel designated by the row, column coordinate 1,26 in buffer 1150.
  • the next step is to determine the domain block with which pixel #1 is associated.
  • pixel 1,26 comprises a pixel of the fourth domain block of the image stored in buffer 1150.
  • each identifier of the fractal transform consist of data specifying a range block address and a scaling factor q.
  • the p value for each identifier of the fractal transform is the same; thus for individual identifiers, only the q value is individually specified.
  • transform processes such as rotation, inversion, etc. will not be further mentioned in this example. However, it is to be understood that such processes may be specified in each identifier.
  • the identifiers may consist of the row and column coordinates of the upper left hand corner of a range block consisting of a 16 ⁇ 16 array of pixels.
  • range blocks can overlap.
  • a range block may be specified by the coordinates 0,0. This specifies a range block consisting of a 16 ⁇ 16 array of pixels, the upper left hand pixel of which is located at coordinate 0,0 and the lower righthand coordinate of which is located at coordinate 15,15.
  • a second range block may consist of an array of 16 ⁇ 16 pixels whose upper left hand coordinate is 2,0 and whose lower righthand coordinate is 17,15.
  • the range block specified by the fourth identifier of the fractal transform (corresponding to domain block #4, in which pixel 1,26 is located) is a 16 ⁇ 16 pixel array whose upper left hand corner is situated at the coordinate 30,154.
  • a shrinking process is applied to the range block to provide a shrunken range block.
  • One method of producing a shrunken range block from the range blocks illustrated in FIG. 38 is to generate an 8 ⁇ 8 pixel array consisting of every other pixel of the corresponding unshrunken range block.
  • a pixel is selected from the shrunken range block which corresponds to the position of the arbitrarily selected pixel #1 in the domain block of buffer 150.
  • pixel #1 (buffer coordinate 1,26) is the pixel located in row 1, column 2 of the fourth domain block of buffer 1150.
  • the corresponding pixel in the shrunken range block is then identified. Recalling that a shrunken range block of buffer 1150 includes only every other pixel of the array, the corresponding pixel is the seventh pixel in the first row of the corresponding shrunken range block character 1070 in FIG. 38.
  • the address of this pixel is known as a "target address", and has an address of 32,158.
  • the target address 32,158 is entered in Table I as pixel #2, and it is determined in which domain block pixel #2 is located. As can be seen in FIG. 38, pixel #2 having an address of 32,158 is contained in domain block 180. The identifier of the fractal transform for domain block 180 is then determined. In the example of FIG. 38, the corresponding one hundred eightieth identifier of the fractal transform includes a range block address of 74,98. The 16 ⁇ 16 range block located at 74,98 is then determined and shrunk in the same manner as described immediately above. Next, the target address of the pixel of the shrunken range block which corresponds to the position of pixel #2 in domain block 180 is determined. This target address is 74,110, and is added to Table I as pixel #3.
  • a target address is obtained which is the same as a pixel address already contained in Table I and whose pixel value is not known
  • b) a target address is obtained which is the same as a pixel address already contained in the list and whose pixel value is known
  • c) the number of pixels in the list exceeds a predetermined value.
  • pixel values are assigned in buffer 1104 for pixels whose addresses are contained in the Table I.
  • the pixel values for pixels of Table I are denoted as z1, z2, z3, and z4. These pixel values can be assigned through an iteration process or by simultaneously solving a set of linear equations.
  • pixel values z2, z3, and z4 are defined as follows:
  • a trial pixel value of, for example, 128 is assigned to each of z2, z3, and z4, and each of the equations repeatedly solved until values for z2, z3, and z4 converge.
  • the three equations can be solved simultaneously to obtain values for z2, z3, and z4.
  • a second arbitrary pixel whose decompressed value has not been determined, is selected and the process is repeated, beginning with the second selected pixel, to develop a list, similar to Table I, until either of the three criteria noted above are achieved.
  • a pixel in the desired area can be selected as the first pixel of the list.
  • a new arbitrary pixel of coordinates 1, 27 may be selected, which is adjacent to pixel #1, above.
  • a new table, Table II similar in format to Table I, can be formed.
  • This process of assigning pixel values is continued until all pixel values in the image area of interest have been updated.
  • Apparatus 1200 includes an input device 1202, which may be, for example, a modem, where identifiers are received over a telephone line or other communications channel. In situations where an image is to be decoded from a fractal transform stored on magnetic media, input device 1202 may be a disk drive. Input device 1202 is coupled to a processor 1204 which is in turn coupled to an output device 1206 and a memory 1208. Processor 1204 and memory 1208 may comprise, for example, a personal computer. Alternatively, processor 1204 and memory 1208 may comprise special purpose high speed image decompression hardware.
  • Output device 1206 may comprise a video output board, for use in situations where a decoded image is to be immediately displayed.
  • output device 1206 may comprise a disk drive, for applications in which the decoded image data is to be stored on magnetic or other storage media.
  • Input device 1202 thus comprises input means for receiving data representative of identifiers.
  • Memory 1208 includes a plurality of domain blocks each corresponding to a portion of an encoded image and to one of the identifiers. Each of the domain blocks comprises locations specified by a memory address.
  • Processor 1204 constitutes processor means for: (a) storing a predetermined pattern of digital data in the memory; (b) choosing a location as a selected location; (c) storing the memory address of the selected location in a table; (d) finding a next identifier corresponding to a determined domain block containing the selected location; (e) determining, from the next identifier, a specified area of memory constituting a shrunken range block; (f) finding a target location in the shrunken range block having a position in the shrunken range block which corresponds to the position of the selected location in the determined domain block; (g) storing the memory address of the target location in the table and designating the memory address of the target location as the selected location; (h) repeating steps (c) through (g) until predetermined criteria are met; (i) determining decoded pixel values for locations of the table; and (j) repeating steps (b) through (i) until a desired portion of the encoded image is decoded.
  • the present invention provides data compression methods and apparatus which exhibit higher performance than prior art methods and apparatus. Moreover, the present invention avoids the necessity for hours of manual operation of a computer to achieve compressed data. Since look-up tables are not required, the present invention can provide adaptive capabilities, while minimizing the amount of memory required.
  • the invention provides the ability to represent and store images in a digital computer with scale-independent resolution using a two-dimensional array of numerical attributes of a digitized picture as input and providing an output which is a smaller data set from the original.
  • the present invention can provide both exact and non-exact image representation by choice of appropriate block sizes and screen resolution.
  • the invention further provides the ability to subject image data to multiple passes of an encoding and decoding process such that the image data emerges the same as if it had been encoded and decoded only once.

Abstract

Digital image data is automatically processed by dividing stored image data into domain blocks and range blocks. The range blocks are subjected to processes such as a shrinking process to obtain mapped range blocks. The range blocks or domain blocks may also be processed by processes such as affine transforms. Then, for each domain block, the mapped range block which is most similar to the domain block is determined, and the address of that range block and the processes the blocks were subjected to are combined as an identifier which is appended to a list of identifiers for other domain blocks. The list of identifiers for all domain blocks is called a fractal transform and constitutes a compressed representation of the input image. To decompress the fractal transform and recover the input image, an arbitrary input image is formed into range blocks and the range blocks processed in a manner specified by the identifiers to form a representation of the original input image.

Description

This application is a continuation-in-part of U.S. patent application Ser. No. 07/375,840 entitled METHOD AND APPARATUS FOR PROCESSING DIGITAL DATA filed Jul. 5, 1989 by Michael F. Barnsley and Alan D. Sloan, now U.S. Pat. No. 5,065,447 issued Nov. 12, 1991. The disclosure of the aforementioned U.S. patent application, now U.S. Pat. No. 5,065,447 is hereby expressly incorporated by reference.
This application is related to U.S. patent application Ser. No. 07/781,587 entitled FRACTAL TRANSFORM COMPRESSION BOARD filed on even date herewith by Michael F. Barnsley, Alan D. Sloan, John H. Elton, Charles S. Moreman, and Guy A. Primiano. The disclosure of the aforementioned U.S. patent application Ser. No. 07/781,587 is hereby expressly incorporated by reference.
BACKGROUND OF THE INVENTION
The present invention relates generally to image processing and, more particularly, to methods and apparatus which employ contractive transformations for representing images and compressing image data.
There is a collection of important problems related to the way in which computers and other digital devices deal with images. Broadly, this subject is referred to as "digital image processing," and covers the analysis, storage, and communication of images by means of digital devices. Four specific areas within the broad subject of digital image processing which are of particular interest are image compression, image representation, image recognition, and image analysis.
The present invention is applicable to all four of these areas. However, the issues involved in each area are extensive and complex. Therefore, only two of the areas, image compression and image recognition, will be discussed, to provide a background of the advantages of the present invention.
Image Compression
To understand the problem of image compression, consider an image, such as a photograph of a person or a natural scene, represented as an array of 1024×1024 picture elements, or pixels. The pixels may be black and white or various shades of gray. If there are two hundred fifty six possible shades of gray, then the image can be completely described in digital terms by a binary string of 1024×1024×8 binary digits (bits) each having a value of one or zero. Such a representation of an original scene is known as a "digitized" image, since it consists of binary digits and is suitable for processing by a digital computer. The bits are commonly formed together into eight-bit: groups know as "bytes" and stored together as a "data file" for use by digital devices such as computers.
If no compression is used, more than one million bytes of memory are required by a computer simply to store a single image as described above. Image compression involves decreasing the number of bits required to represent an image in such a way that either an exact replica of the image (termed "lossless compression") or an approximate replica (termed "lossy compression") of the image can be retrieved.
There are four main reasons for desiring effective compression of a data file representing an image. First, the speed of transmission of a data file is essentially proportional to its size. The larger the file, the longer it takes to transmit. Second, the storage space required is proportional to the file size. To store files representing sixty uncompressed images of the type mentioned above requires sixty megabytes of storage space. If the representation of the image can be compressed fifty percent, twice as many images can be kept in the same storage space. Third, compressed images cost less to transmit, process, archive, and retrieve than uncompressed images. Fourth, compressed images can be processed faster than uncompressed images. For example, suppose a sample image is compared against a library of stored images to determine whether a wren appears in the sample image. Although the only difference between the images may be a tiny bird, to detect this difference using uncompressed data, the files representing the images would need to be compared bit by bit, pixel by pixel. If the images were properly compressed, the comparison may proceed more quickly. For this fourth reason, if no other, data compression is likely to play an important role in knowledge based computing systems.
Examples of current needs for effective compression are as follows:
(1) Transmission of medical images by telephone. This includes high resolution medical X-rays and CAT-scans. Medical advice could be sought from a number of consultants in remote locations, provided that the transmission costs are sufficiently low and the transmission times are sufficiently short.
(2) Sending video data from computer to computer by telephone. In many situations remote computers are linked by telephone lines using a modem. The communication between computers is limited by the "bandwidth" of the line between the computers and the speed of the modem. For standard telephone lines, the highest speeds with which computers can transfer data from one to another is 9600 bits/second. If a single video image resolved into 128×128×8, or 131,072 bits, at 30 frames/second the video information is generated at 3,932,160 bits/second. Accordingly, a compression ratio of 409:1 is needed for this application.
(3) 64 Kilobit/second telephone communication lines for video transmission. The goal is to be able to allow consumers to access movies on demand. The quality of the video demanded is high. Accordingly a good means of compression is required.
(4) High definition television (HDTV), and advanced television (ATV). It is probable that the United States will require that any form of HDTV must be compatible with NTSC signals, the standard broadcast television signals currently transmitted in the U.S. HDTV will provide images having about twice the horizontal and vertical resolution of NTSC television images. To achieve this, it has been proposed that additional bandwidth be used by broadcasting stations. Such additional bandwidth would not be required if effective means for image compression were available and the additional image data required for HDTV could be transmitted via existing communication bands.
(5) Digital Video Interaction (DVI) type applications. The goal is to store as much video image data as possible on a medium such as an optical disk. The higher the compression which can be achieved, the more applications of interactive retrieval at video rates become practical.
(7) More efficient FAX (facsimile) transmission. Current FAX machines transmit a page of text in about 15 seconds. Although some compression of black-and-white imagery is achieved by Type 3 FAX machines, an increase in the compression ratio by a factor of ten would permit text transmission via FAX at the rate of 40 pages a minute. This would result in significant financial savings.
(8) More efficient data retrieval. As the amount of data stored in a computer becomes larger, the access time to retrieve that data increases, because of the greater size of the data files. Image compression can be used to speed up the access to data by decreasing the amount of memory which must be searched to retrieve it.
Prior art methods and apparatus for exact compression achieve ratios of between 0.5 and 0.1. That is, the number of bits required to store and reproduce an exact copy of an original image is between one half and one tenth the original number of bits. Such performance is clearly not sufficient to meet the requirements of some of the current applications listed above.
Moreover, some prior art digital data compression methods, while suitable for certain applications, are computationally complex, and thus may require many hours of manual operation of a computer to achieve compressed data.
Still other prior art data compression methods employ look-up tables as part of the compression procedure. Procedures using look-up tables can be useful in certain applications, such as where the class of images being compressed is small. However, use of look-up tables can limit the ability to provide adaptive capabilities useful in applications such as general purpose video processing including large numbers of diverse images and other applications where the image class cannot be narrowed down in advance. When the class of images to be compressed is large, the look-up tables also have to be very large, requiring the use of extremely large amounts of system memory. Moreover, compression ratios are decreased as the size of the look-up table is increased.
Accordingly, improved methods and apparatus for image data compression are required.
Image Recognition
Another important problem in digital image processing concerns the representation of images in a computer. Real world images that we perceive are not digital, i.e., discrete. Instead, these images have a continuous extended nature. An image in the mind's eye is viewed as being endlessly magnifiable. For example, if we think of a small image such as a tiny black cat, we begin with the concept of "black cat" and perceive in the mind a small black shaped silhouette. If we think of the image as being continuously enlarged, additional details appear in the image in the mind, such as textured fur and whiskers. We are able, in our minds, to continuously enlarge the image to provide whatever level of detail is necessary.
Computers, on the other hand have this ability to only the most rudimentary degree. It is currently possible, for example, to define only simple images, such as a line, in a computer such that the image retains a high level of detail at any magnification. This is done by storing in the computer a definition of, for example, a line, which specifies the very essence of the line without specifying its qualities at any particular level of magnification. The line is defined in the computer as the concept of a geometric entity extending between two specified points. When desired, this definition is used to produce an image at any required degree of magnification.
If the screen on which an image of the stored definition of the line is to be displayed has a resolution capability of, for example, three hundred dots per inch and the line image is desired to be displayed as an image two inches long, an image is displayed consisting of a display pattern six hundred dots long and, for example, three dots wide. If a larger image is desired to be displayed from the same stored definition of a line, the screen may show an image three dots wide and twelve hundred dots long. It would be desirable to provide a method for representing complex images, such as a black cat, in a computer with the same type of scale-independent resolution.
There is thus a need for a way of representing images in a computer which, although they are input and output using digital devices and are stored in digital form, are actually encoded in a manner which allows the image to be handled as though it were continuous. The solution to this problem would mean that computers treat images in a manner more analogous to the way in which the human mind stores and analyzes images. This solution is believed to be central to many important problems involving image recognition and analysis by digital computational devices.
Applications of image representation include:
(1) Recognition of what is in an image.
(2) Pattern recognition applications.
(3) Check reading machines. An image representation system would allow the recognition of signatures, and the blanking out of extraneous background material.
(4) Machines for detecting man-made objects in an image.
(5) Image analyzers mounted on earth-orbiting satellites for spotting forest fires and monitoring deforestation activities.
(6) Passive transponders for use in supermarkets.
(7) Systems for receiving images at one resolution and outputting them at a higher resolution, such as line art, photographs, and image enhancement systems.
(8) Automatic devices for recognizing people's faces. These may be used in security applications.
(9) High Definition Television. Specific applications include image enhancement, use of the vertical blanking interval to provide additional information, and transmission of compressed image representation data for high-definition images.
(10) Analysis of images of roots of plants for the purpose of providing scientific data concerning the root.
It is therefore desirable to provide an efficient means for image representation which allows digital representation which is resolution independent, and which does not inherently describe discrete images, but rather describes analog (continuous) images. The representation method should apply equally well to digital as to analog images.
It is similarly desirable to develop image compression methods and apparatus whose input is a set of data, corresponding to a two-dimensional array of numerical attributes of a digitized picture, and whose output is a smaller data set from which the original can be regenerated exactly or approximately. It is further desirable to provide improved image compression methods and apparatus which can be employed for exact or non-exact image representation, and which are capable of improving compression ratios by up to several orders of magnitude. Such methods and apparatus should produce digital data which correspond to a given image, and should employ the digital data for image compression, communication, analysis or storage, and subsequent regeneration. Moreover, such methods and apparatus should be capable of representing color and intensity information as an additional dimension of the image, and allow compression and decompression of this color information.
It is also desirable to provide methods and apparatus for automatic determination of parameters which constitute a compressed data set representing an original image and which are capable of producing an approximate representation of the original image by applying the compressed data set to a set of data representing an arbitrary starting image.
It is also desirable to provide methods and apparatus for compressing and decompressing digital data representative of motion pictures using the fractal transform.
Finally, it is desirable to provide methods and apparatus to produce images which, after multiple passes through the complete encoding and decoding process, emerge the same as if they had only been through the process once, and which provide a means for expanding images to higher resolution.
SUMMARY OF THE INVENTION
Briefly described, the present invention provides improved methods and apparatus for representing image data in a compressed form in a self-referential manner. The compressed data set is formed in a digital computer by a process of repeated comparisons between image data representing different small pieces of the image, known as domain blocks and shrunken range blocks, and recording the addresses of optimal matches. The image is decoded by an inverse process.
The preferred embodiment of the present invention employs mathematical operations known as local affine transformations. These transformations are employed in the process of encoding digital data representing an image. The encoded output constitutes a "fractal transform" of an image and consists of coefficients of the affine transformations. Different fractal transforms correspond to different images.
The fractal transforms are iteratively processed in the decoding operation. Contrary to intuitive expectation, it has been discovered that if the encoding and decoding procedures of the invention are followed, the original image, or an image that looks like the original image, is produced after a finite number of iterations.
In accordance with the purpose and principles of the invention, there is provided a method for automatically processing digital image data consisting of image information. The method comprises the steps, performed by a data processor, of storing the image data in the data processor; generating a plurality of uniquely addressable domain blocks from the stored image data, each of the domain blocks representing a different portion of the image information such that all of the stored image information is contained in at least one of the domain blocks, and at least two of the domain blocks being unequal in shape; and creating, from the stored image data, a plurality of uniquely addressable mapped range blocks corresponding to different subsets of the image data with each of the subsets having a unique address. The creating step included the substep of executing, for each of the mapped range blocks, a corresponding procedure upon the one of the subsets of the image data which corresponds to the mapped range block. The method further includes the steps of assigning unique identifiers to corresponding ones of the mapped range blocks, each of the identifiers specifying for the corresponding mapped range block an address of the corresponding subset of image data; selecting, for each of the domain blocks, the one of the mapped range blocks which most closely corresponds according to predetermined criteria; and representing the image information as a set of the identifiers of the selected mapped range blocks.
BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the invention, and, together with the description, serve to explain the principles of the present invention.
FIGS, 1(a)-1(d) show a digitized black and white image in the process of dividing the image into domain blocks;
FIGS. 2(a)-2(c) show the process of dividing the image of FIG. 1(a) into range blocks;
FIGS. 3(a)-3(b) show the process of a shifted decomposition of the image of FIGS. 1(a)-1(d) for the purpose of forming additional range blocks;
FIGS. 4(a)-4(b) show the process of producing shrunken range blocks from the range blocks of FIGS. 2(a)-2(c) and 3(a)-3(b);
FIG. 5 is a logic flow chart of method for automatically processing digital image data which constitutes a preferred embodiment of the invention;
FIG. 6 is a block diagram of a data processor for performing the method shown in FIG. 5;
FIGS. 7 and 8 illustrate the process of generating shrunken range blocks;
FIG. 9 shows the process of selecting the shrunken range blocks which most closely resembles a domain block;
FIG. 10 shows the process of producing a Hausdorff distance;
FIG. 11 shows a fractal transform of the image of FIG. 1;
FIG. 12 is a logic flow chart showing a method for automatically creating a fractal transform representative of black and white image data;
FIG. 13 is a logic flow diagram of a method for automatically generating an image by a data processor from a set of identifiers consisting of the fractal transform produced by the method of FIG. 12;
FIG. 14 is a block diagram of a preferred embodiment of apparatus for decoding a fractal transform;
FIG. 15 shows a decompression system which is used to decode the fractal transform of FIG. 11;
FIG. 16 shows the process of applying the fractal transform of FIG. 11 to an image in buffer A of FIG. 15 to obtain an image in a buffer B;
FIG. 17 shows a further stage in the process of FIG. 16;
FIG. 18 shows the production of an output image from the decompression system of FIG. 15;
FIG. 19 is a logic flow diagram of a preferred embodiment of the method of FIG. 13;
FIG. 20 is a logic flow chart of an alternative to the method shown in FIG. 19, in which only a single image buffer is used;
FIGS. 21(a)-21(b), 22(a)-22(b) and 23-24 illustrate the production of a fractal transform representing a grayscale image;
FIG. 25 illustrates a method for representing a grayscale image, having four possible levels of gray, in binary form;
FIG. 26 shows a fractal transform of the grayscale image of FIG. 21;
FIG. 27 is a logic flow diagram showing a method for automatically creating a fractal transform representative of grayscale image data;
FIG. 28 shows a decompression system for decoding the fractal transform shown in FIG. 26 to obtain the original grayscale image of FIG. 21;
FIG. 29 is a logic flow chart of a method for decoding the grayscale fractal transform of FIG. 26;
FIG. 30 is a logic flow chart of a method for compressing and decompressing color images;
FIG. 31 is a block diagram of apparatus which constitutes a preferred embodiment for performing the method of FIG. 20;
FIG. 32 is a logic flow diagram of a method for generating compressed digital data representing image information in a motion picture, by a data processor, for storage or transmission;
FIG. 33 is a logic flow diagram of a method for automatically generating digital data representing the frames of a motion picture;
FIG. 34 is a block diagram of apparatus for providing a videophone;
FIG. 35 illustrates an alternate method of generating a fractal transform;
FIG. 36 illustrates a method for producing a shrunken range block;
FIG. 37 is a diagram illustrating overlapping range blocks;
FIG. 38 is a diagram illustrating an alternate method for retrieving and decoding an image represented by a fractal transform;
FIG. 39 is a block diagram of apparatus for implementing the method illustrated in FIG. 38.
DESCRIPTION OF THE PREFERRED EMBODIMENT
Before describing the preferred embodiment of the invention, background information and discussion will be provided of the nature of the invention in relation to both image compression and image representation.
Many images contain much redundant information. For example, an image of a natural scene may contain a meadow, trees, and sky. Once one knows what a particular blade of grass looks like, one has useful information about other blades. Thus, there are enormous amounts of redundant information in a meadow scene. The pine needles on a pine tree are by no means randomly placed in the image; they are organized by the underlying structure of the tree. The structures of the clouds are governed to a good approximation by briefly expressed equations of physics, such as the Navier-Stokes equations. These examples indicate that significant compression can be achieved of data representing images such as meadows, trees, and sky.
Thus, redundancy is an important factor in image compression and image representation of images such as natural scenes, portraits, computer graphics images which can be expressed in terms of repetition, after processes of affine transformation and contraction. As mentioned earlier, one pine needle in an image of a forest is more or less like any other pine needle in that image. A compressed image does not require description of each pine needle in that image; rather, a single pine needle is described and then its basic information is utilized via mathematical algorithms to reproduce other pine needles in the image in a natural manner. This might be likened to describing one letter in a page of text and then describing the other occurrences of that letter in terms of the first occurrence.
There are essentially two steps in digital image processing. The first involves the transformation of the image into another representation. This often involves data compression, but not necessarily. The second involves recreating the original image, which may involve decompression.
Referring now to the drawings, in which like elements are identified by like reference characters, preferred embodiments of the methods and apparatus of this invention will now be described in detail. First, a data compression method and apparatus in accordance with the invention will be described.
FIG. 1 shows a digitized black and white image 30 formed of a plurality of pixels 32. The image is stored as image data in a data processor, with one bit representing the image value (black or white) of each pixel. The preferred embodiment of the invention employs a plurality of uniquely addressable blocks 34, called domain blocks, which are generated from the stored image data. Each of the domain blocks represent a different portion of the image information such that all domain blocks together contain all of the stored image information.
The stored image data are also used, in the preferred embodiment, to create a plurality of uniquely addressable mapped range blocks. Each mapped range block corresponds to a different subset of the image data, with each of the subsets having a unique address with respect to the image data. Preferably, the range blocks have a greater number of pixels than the domain blocks, and are created by executing, for each of the mapped range blocks, a corresponding procedure upon the subset of the image data which corresponds to that mapped range block. The procedure can include such processes as shrinking, rotating, cropping, and inverting. For example, in the preferred embodiment, the image 30 is broken up into range blocks 36, as shown in FIG. 2, and rotated and inverted to produce additional range blocks 38. Further range blocks 40 may be produced by selecting other subsets of the input digitized image 30, as shown in FIG. 3.
A shrinking process, illustrated in FIG. 4, is preferably applied to the range blocks 36, 38, and 40 to produce shrunken range blocks 42. The shrinking process ensures that the shrunken range blocks 42 contain the same number of pixels as the domain blocks 34.
Formation of Fractal Transform
The concepts of domain blocks and range blocks will be useful in understanding the principles of the present invention which, in one aspect, provides a method, performed in a data processor, for processing digital image data consisting of image information, as shown in FIG. 5. First at step 42, image data is stored in a data processor. Step 44 of FIG. 5 comprises generating a plurality of uniquely addressable domain blocks from the stored image data, each of the domain blocks representing a different portion of the image information such that all of the stored image information is contained in at least one of the domain blocks; that is, all of the domain blocks together contain all of the stored image information. Step 46 comprises creating, from the stored image data, a plurality of uniquely addressable mapped range blocks corresponding to different subsets of the image data with each of the subsets having a unique address, the creating step preferably including the substep of executing, for each of the mapped range blocks, a corresponding procedure upon the one of the subsets of the image data which corresponds to the mapped range block. Step 48 comprises assigning unique identifiers to corresponding ones of the mapped range blocks, each of the identifiers specifying for the corresponding range block a procedure and an address of the corresponding subset of image data. Next, step 50 comprises selecting, for each of the domain blocks, the one of the mapped range blocks which most closely corresponds according to predetermined criteria. Finally, step 52 comprises representing the image information as a set of the selected identifiers.
A block diagram of a suitable data processor 60 is shown in FIG. 6. Data processor 60 includes an input device 62, such as an image scanner. Input device 62 is connected to a central processor unit 64. Central processor unit (CPU) 64 includes a block comparator 66, control logic 68, and a mapping processor 70. CPU 64 is connected to an output device 72, such as a data transmitter or disk drive, and to a memory device 74. The image data is stored in memory device 74. Memory device 74 includes a pair of buffers 76, 78. Buffer 76 is used to store a plurality of domain blocks 34, and buffer 78 is used to store range blocks 36,38,40 and shrunken range blocks 42.
Control logic 68 of CPU 64 executes programs stored in memory 74 to initiate block comparison and mapping functions in block comparator 66 and mapping processor 70, respectively.
In the preferred embodiment, the image data received from input device 62 is formed by control logic 68 into an array of digital data of a predetermined size, such as, for example, 256×256 pixels and, corresponding to step 42 of FIG. 5, is stored into memory 74. According to step 44, the array is then formed into an array of domain blocks 34 each including, for example, sixteen pixels arranged into four rows and four columns. Alternately, domain blocks 34 may be formed with various sizes and shapes, as shown in FIG. 1(d). For example, each domain block may differ from all other domain blocks as shown in FIG. 1(d).
According to step 46, the stored image data is formed into range blocks 36 containing a larger number of pixels than the number of pixels in domain blocks 34. These range blocks are then given unique addresses with respect to the stored image data, corresponding to step 48. In the preferred embodiment, such addresses consist of the x,y coordinates of the lower left pixel of the range block with respect to the array of the entire stored image data. For example, if the image data is stored as an array of pixels two hundred fifty-six pixels wide and two hundred fifty-six pixels high and is formed into four range blocks, the range block in the lower left of the array is assigned an address of 0,0. Similarly, the range block in the upper left of the array is assigned an address of 0,128, the lower right range block is assigned an address of 128,0, and the upper right range block is assigned an address of 128,128.
Additional range blocks 38 are also created in the preferred embodiment by processing the range blocks with local affine transforms such as rotation by 90°, 180°, and 278°, and inversion. In addition to shrunken range blocks 42, an escape block 95 (FIG. 9) is provided which is the same size as the shrunken range blocks, but which has no content (i.e., there is no picture drawn on it).
The method for producing shrunken range blocks will now be described in greater detail, with reference to FIGS. 7 and 8. FIG. 7 illustrates a first embodiment of a method for producing a shrunken range block. As can be seen in FIG. 7, a range block 34 includes a plurality of black and white pixels 32. In the method shown in FIG. 7, known as a direct shrinking method, shrunken range block 42 is the output of the method and range block 34 is the input. Shrunken range block 42 is obtained from range block 34 by the following mathematical operation:
output(i,j)=input(2i, 2j)
where i and j respectively represent x and y positions of pixels, shown in FIG. 7.
Similarly, FIG. 8 illustrates a shrinking by averaging method, in which shrunken range block 42' is obtained as output from the method when range block 34' is supplied as input. Specifically, the shrinking by averaging method may be expressed mathematically as:
output(i,j)=f(input(2i,2j)+input(2i+1,2j)+input(2i,2j+1)+input(2i+1,2j+1))
where: f(0)=0; and f(2)=f(3)=f(4)=1.
Unique identifiers are then assigned to the mapped range blocks. Each of the identifiers specify both the address of the subset of image data from which the corresponding range block was created and the procedure which was applied to the mapped range block. In the preferred embodiment, each of shrunken range blocks 42 and the escape block 95 are assigned an identifier. The escape block has a unique identifier. Shrunken range block identifiers include an address and an indication of affine transformations which have been applied to the range block from which the shrunken range block was derived.
In the preferred embodiment, each range block 36 consists of a quadrant of the 256×256 array which constitutes the stored image data. The address of the identifier, as specified above, is the x,y coordinate in the stored image array of the pixel in the lower left corner of range block from which the corresponding shrunken range block was derived. The identifier, in the preferred embodiment, also includes a first code indicating a 0°, 90°, 180°, or 278° rotation, and a second code indicating whether inversion has been performed to produce a range block prior to shrinking. It can be seen that the procedure specification includes the case where no rotation or inversion is applied prior to shrinking.
Next, corresponding to step 50 of FIG. 5, the mapped range blocks are compared to the domain blocks. For each domain block, one of the mapped range blocks is selected which most closely corresponds, according to predetermined criteria, to that domain block.
In the preferred embodiment, each domain block 34 is associated with either a single shrunken range block, or the escape block. This is achieved by means of block comparator 66 (FIG. 9), which selects, from the shrunken range blocks 42 and the escape block 95, the one which is "closest" to the domain block, i.e. most similar to the domain block.
Although addresses of range blocks in the preferred embodiment are x,y pixel coordinates, for purposes of explanation the range block addresses will be expressed as quadrant numbers 1-4, as shown in FIG. 9. Similarly, rotation in FIG. 9 will be expressed as degrees, rather than as a code. In the example shown in FIG. 9, shrunken range block #2 is the closest shrunken range block to input domain block 34. In a similar manner, each domain block of image 30 is processed by block comparator 66 to select the closest shrunken range block 42 (or escape block 95).
As noted previously, domain blocks may be created in different shapes. In an alternative embodiment, sets of range blocks are created, with the shape of the blocks of a set being the same, and the shape of the blocks of each set corresponding to the shape of a domain block.
Block comparator 66 of FIG. 9 will now be described in greater detail. The purpose of block comparator 66 is to determine, for each domain block, which of the shrunken range blocks is most similar in appearance to the specified domain block. That is, which of the shrunken range blocks is "closest" to the domain block. This alternative statement implies an analogy which is useful in understanding the concept of comparisons between blocks of image data. That concept is referred to as "distance." In order to evaluate "distance" between blocks, consider the concept of distance between points in space. If two points A and B are present in a two-dimensional coordinate system, their positions within the coordinate system may be represented by xA,yA and xB,yB, respectively. The distance between the points is thus the square root of the sum (xA -xB)2 +(yA -yB)2. This procedure yields the distance between points A and B "as the crow flies", and is referred to as the Euclidean distance.
Another way of thinking about the distance between points A and B mentioned above is to consider that such points represent locations in a large city made up of a matrix of perpendicular streets. The distance between points A and B could then be determined "as the taxi drives" rather than "as the crow flies", and is represented as (|xA -xB |)+(|yA -yB |). Such distance has been termed the "Manhattan" distance.
From the concept of distance between two points, consider the concept of distance between a single point and a set of a plurality of other points. Using any convenient concept of distance, such as the Euclidean or Manhattan distance discussed above, the distance between a point and a set may be thought of as the sum of the distances from the point to each individual point within the set.
Using the concept of distance from a point to a set, the distance between two sets of points may be considered. A very general description of the distance between two sets is a "sum of a sum." That is, a first point of the first set is selected. The distance between this point and each point in the second set is calculated. Next, a second point is selected from the first set. The distance between this second point and each point of the second set is then calculated and added to the first set. In a similar manner, distances between each succeeding point of the first set and all of the points of the second set are calculated and summed to yield the distance between the two sets of points.
The concept of distances between two sets is employed in calculating a distance between two groups of image data, for the purpose of selecting, from a group of shrunken range blocks, the shrunken range block which is most similar to a domain block. In particular, the preferred embodiment makes use of a mathematical concept known as the Hausdorff distance. This concept is well known in the art and is discussed, for example, in Fractals Everywhere by Michael F. Barnsley.
The Hausdorff distance H between two blocks of image data f and g can be expressed as H (block f, block g). In the preferred embodiment, block comparator 66 calculates the quantity H between a domain block and each of the shrunken range blocks. The shrunken range block which yields the lowest value of H is selected as the "closest" shrunken range block to the specified domain block.
This concept may be more readily appreciated by reference to FIG. 10, in which (a) and (b) respectively show two blocks of black and white image data, namely, block f and block g. Block f consists of a cross of black pixels plus an additional black pixel in the upper right hand corner. Block g consists of a square formed of a block of sixteen black pixels. Directly below the image blocks f and g in FIGS. 10a and 10b are binary representations of the image data contained in blocks f and g. Specifically, the binary representation of blocks f and g consists of a matrix of zeros (0's) and ones (1's), with 0's representing a white pixel and 1's representing a black pixel.
Directly below each binary block f and g is a distance table for the respective binary block. The distance table consists of a matrix of numbers each corresponding to one of the pixels in the blocks f and g. The number in each position of the distance tables for image blocks f and g represent the number of pixels between the pixel corresponding to that position and the closest position corresponding to a black pixel (or in the binary block, a 1). For example, the upper left hand entry of distance table f in FIG. 10a is a 4. This represents the fact that moving only in horizontal and vertical directions, not diagonal, (the Manhattan distance concept), there are four pixels between the upper left hand pixel of image block f and the closest black pixel. This can be seen by beginning at the upper left hand pixel, counting over three pixels to the right and down one pixel.
The entry immediately to the right of the left hand entry of the distance table for block f is the number 3. This indicates the fact that starting from the pixel just to the right of the upper left hand pixel of block f, there are three pixels between the specified pixel and the closest black pixel. This can be seen by counting over two pixels to the right and down one pixel. In a similar manner, each entry of the distance table for image block f is determined. Also, a distance table is computed in the same way for image block g.
The lowest blocks of FIG. 10 represent the distance table f intersected by binary block g, and the distance table g intersected by binary block f. A value D is computed equal to the sum of the numbers of the two intersection figures. As can be determined from FIG. 10, the sum of the numbers of the distance table f intersected by binary block g is 25 and the sum of the numbers of distance table g intersected by binary block f is 4, yielding a value D equal to 29. A modified Hausdorff distance H for image blocks f and g can be expressed as follows: H (block f, block g)=D (block f, block g)+D (1-block f, 1-block g). The term "1-block f" is the inverse of image block f, and thus is an image block in which each pixel is the opposite of a corresponding pixel of block f.
Block comparator 66 calculates quantity H between a selected domain block and each shrunken range block, and chooses as the selected shrunken range block, that shrunken range block which yields the lowest value of H.
Alternative embodiments are, of course, possible. For example, a modified Hausdorff distance between blocks could be calculated, using the concept of Euclidean distance rather than Manhattan distance. Similarly, block comparator 66 could employ distance measuring concepts other than the Hausdorff distance to select a shrunken range block which is most similar to each domain block.
Once the selection of mapped range blocks is completed, the image information is then represented as a set of the unique identifiers corresponding to the selected mapped range blocks, corresponding to step 52 of FIG. 5. The list of identifiers of the selected range shrunken range blocks 42, (including both addresses and local affine transform procedures, such as rotation, reflection, or inversion, to be performed on the data specified by the address) constitutes the "fractal transform" 98 of image 30, as shown in FIG. 11. Each domain block 34 of image 30 is represented by an address 99 of a shrunken range block. For example, the domain block in the upper left corner of image 30 may be closest to shrunken range block #3. The domain block immediately to the right of the upper left domain block may be closest to shrunken range block #5 rotated 90°. The next domain block to the immediate right may be closest to the Escape block 95. In such example, the first three addresses of fractal transform 98 would be 3, 5(90), E, as shown in FIG. 11. The set of identifiers can thus be stored, transmitted, or analyzed.
FIG. 12 shows in detail a preferred embodiment of a method of automatically creating a fractal transform representative of black and white image data according to this invention. At step 100, digital image data is stored in buffer A of a data processor. Preferably that image data consists of binary information representing a black and white image. A range block size should be preselected so that when the input image is stored in buffer A, range blocks are automatically assigned to the different digital image data in buffer A.
At step 102, range block pointers for buffer A and shrunken range block pointers for buffer B are initialized. The size of the input image data array and the sizes of both the range blocks and the shrunken range blocks are predetermined values. Therefore, these pointers, consisting of x,y coordinates in buffers A and B, can be determined.
At step 104, a shrinking process is applied to the range block in buffer A specified by the range block pointer. In certain applications, local affine transforms, such as rotation, reflection, or inversion, may be applied to the range block prior to shrinking to obtain a greater number of shrunken range blocks for a given input image. The shrunken range blocks are then read into the locations in buffer B identified by the shrunken range block pointers.
The range block pointers for buffer A and the shrunken range block pointers for buffer B are then incremented at step 106. A determination is made at step 108 to see whether all of the range blocks in buffer A have been shrunk. If not, steps 104 and 106 are repeatedly executed until all, range blocks in buffer A have been shrunk.
Next a domain block pointer in buffer A is initialized (step 112) and the shrunken range block pointer in buffer B is initialized (step 114). At step 116, the Hausdorff distance between the domain block specified by the domain block pointer and the current shrunken range block specified by the shrunken range block pointer is determined.
If the Hausdorff distance just computed is less than the currently stored distance value (which is initialized to the largest possible Hausdorff distance), then at step 118 the currently stored distance value is replaced by the distance value most recently computed. The current shrunken range block pointer value is also stored. If the most recently computed Hausdorff distance is not less than the currently stored distance value, the most recently computed distance value is discarded.
At step 120, the shrunken range block pointer is incremented and a determination is made whether all of the shrunken range blocks have been checked. If not, steps 116 and 118 are repeated until all shrunken range blocks have been checked. If so, the currently stored shrunken range block pointer, consisting of x,y coordinates, and the associated procedure information (reflection and inversion), is then appended to the list of identifiers representing the domain blocks of the input image data stored in buffer A (step 124).
Next, the domain block pointer is incremented at step and a determination made whether all domain blocks have been processed. If not, steps 116-126 are repeatedly executed until all domain blocks have been processed. The list of identifiers, each corresponding to one of the domain blocks of the original input data, is then output at step 130 as the fractal transform of image data representing the black and white image supplied as input to the data processor.
In the preferred embodiment, the identifiers of the shrunken range blocks are expressed as follows.
XYrri
where:
X is an eight bit value representing the x-coordinate of the lower left corner of the range block in the original image array;
Y is an eight bit value representing the y-coordinate of the lower left corner of the range block in the original image array;
rr is a two-bit value representing rotation as follows:
00--no rotation
01=90° rotation
10=180° rotation, and
11=270° rotation;
i is a one-bit value representing inversion as follows:
0=no inversion, and
1=inversion.
Although in the preceding examples, transform processes such as rotation and inversion have been performed on shrunken range blocks prior to comparison with domain blocks in the encoding process, rotations and inversions may be performed instead on domain blocks. The result is mathematically equivalent.
REGENERATION OF IMAGES FROM FRACTAL TRANSFORM
In another aspect, the present invention provides a method for generating an image by a data processor from a compressed data set consisting of a set of identifiers. The data processor includes a memory having a plurality of buffers each having a plurality of addressable areas specified by a buffer address. Each of the identifiers corresponds to an addressable area in the buffers and includes a buffer address and a procedure specification. As shown in FIG. 13, the method includes a first step 140 comprising inputting the set of identifiers. Step 142 comprises storing a predetermined pattern of digital data in one of the buffers designated as a source buffer. Step 144 comprises determining, for each of the identifiers, a pattern of data corresponding to each identifier by applying the procedure specified in that identifier to the portion of the source buffer indicated by the buffer address in that identifier. Next, a step 146 comprises storing the pattern of data into the addressable area of another one of the buffers, designated as a destination buffer, indicated in the corresponding identifier. A step 148 comprises repeating the determining and destination buffer storing steps, with the destination buffer being considered as the source buffer, until predetermined criteria are met. Finally, a step 149 comprises providing the contents of the destination buffer as data representative of an image when the predetermined criteria are met.
FIG. 14 shows a data processor 150 for executing the method of FIG. 13. Data processor 150 includes an input device 152 such as a data receiver or a disk drive. Input device 152 is connected to a CPU 154 which includes control logic 156, a counter 158, and a pattern generator 160. A memory device 162 is connected to CPU 154 and includes a pair of buffers 164 and 166. An output device 168 is also connected to CPU 154 and may comprise a CRT display device.
FIG. 15 illustrates a system for carrying out a preferred method of the invention for recovering the image from fractal transform 98. First, a predetermined pattern of digital data is stored in one of the buffers designated as a source buffer. As shown in FIG. 15, digital data representative of an initial image 202 and fractal transform 198 are input to a decompression system 204, which preferably comprises data processor 150. Initial image 202 is loaded into a buffer A, designated the source buffer.
Decompression system 204 then determines, for each of the identifiers, a corresponding pattern of data. The corresponding pattern is determined by applying the procedure specified by that identifier to the portion of the source buffer indicated by the identifier's buffer address. Decompression system 204 then stores the resulting pattern into a corresponding addressable area of another one of the buffers, buffer B, designated as a destination buffer.
This procedure is demonstrated in FIG. 16. In that Figure, a buffer A acts as a source buffer and is filled with data representative of initial image 202. A buffer B acts as a destination buffer and is partitioned into decode domain blocks 206. Each of the decode domain blocks 206 corresponds to one identifier of input fractal transform 198. In determining the pattern of data to be stored into each decode domain block 206, the corresponding identifier of the domain block is used. As described above, each identifier in fractal transform 198 consists of an address and a procedure specification. The address represents a range block derived from a specified portion (for example, the lower left quadrant) of a set of data representative of an input image. In the decompression process, the address of the identifier corresponding to a decode domain block 206 is used to specify the same portion, e.g. the lower left quadrant, of the data set stored in the source buffer, buffer A of FIG. 16, which represents initial image 202. This portion of the data stored in buffer A is then processed by the procedure specified by the identifier corresponding to the domain block and the processed data further processed by shrinking. The processed and shrunken data is then stored into a corresponding decode domain block in buffer B.
For example, if an identifier corresponding to a specified decode domain block 206 of buffer B consists of "1(90)", this represents an address and a procedure. The address indicates that range block #1 is involved, consisting of the lower left quadrant of an image. The procedure specifies rotation by 90°. Thus, to derive the digital data to be stored into the specified decode domain block, the data representing the lower left quadrant of the image in buffer A is operated on by a procedure to rotate the corresponding image by 90° and the data is then processed by a shrinking algorithm to obtain a shrunken range block in the manner discussed above with respect to the process of forming the fractal transform. The resultant data representing the shrunken range block is then stored into the specified decode domain block of buffer B.
In a similar manner, each of the decode domain blocks 206 is filled with data specified by the corresponding identifier of fractal transform 98. If the address of the corresponding identifier specifies the escape block, i.e., a block containing image data representing a blank image, an escape block is stored in the corresponding decode domain block.
In the preferred embodiment of the invention, the preceding two steps of (1) filling buffer A with image data and (2) filling all decode domain blocks of buffer B with digital data representing shrunken range blocks of buffer A specified by the identifiers of the fractal transform, are repeated until predetermined criteria are met, as shown in FIG. 18. During this repetition, instead of filling buffer A with data representing the initial image 202, the image data in buffer B (FIG. 16) is read back into buffer A. This can be observed by noting that the content of buffer B of FIG. 16 is stored in buffer A of FIG. 17.
The method concludes with providing the contents of the destination buffer as data representative of an image when the predetermined criteria are met.
Thus, the steps of FIGS. 16 and 17 are repeated a certain number of times, until "convergence" is achieved. The number of iterations, as monitored by counter 158 (FIG. 14), depends on the dimensions (measured in pixels) of the domain blocks and range blocks and may consist of a fixed number of iterations. Alternatively, the iterations may be determined by measuring the difference between the image data in buffers A and B and terminating the iteration process when the difference is less than a predetermined value.
FIG. 19 shows a detailed description of a preferred method for automatically generating an image by a data processor according to the present invention from a set of identifiers consisting of the fractal transform of an original image. The fractal transform could be generated from the method in FIG. 12 or any other method which can generate a set of identifiers such as produced by the method of FIG. 12.
At step 250, a buffer A, comprising an image buffer in the data processor, is initialized with initial image data representing a solid black image (i.e., all 1's). Any initial image could be used. However, all-black is a convenient and easily stored set of image data.
At step 252, a main loop counter (the functions of which may be provided by counter 158) is initialized to zero. The main loop counter indicates the numbers of times the image generation steps of FIGS. 16 and 17 have been repeated. This number may be compared to a predetermined value selected for the specific application, to end the iteration process.
At step 254 a domain block pointer is initialized for a second buffer, buffer B, which has been previously divided into domain blocks. Also at step 254, a fractal transform pointer is initialized to point to the first identifier of the fractal transform representing the input compressed image data.
At step 256, the identifier specified by the fractal transform pointer is applied to image data in buffer A. The address in that identifier specifies a range block in buffer A, and the process of that identifier is then applied to the specified range block. As noted previously, the identifier could also specify the escape block. Next, a shrunken range block is constructed from the processed, specified range block from buffer A and the shrunken range block (or the escape block) is read into a domain block in buffer B pointed to by the current value of the domain block pointer. The technique of obtaining a shrunken range block can use any of the shrinking techniques described above, or may use a different technique altogether.
At step 258, the domain block and fractal transform pointers are incremented. A determination is then made at step 260 whether the last identifier of the input fractal transform has been processed. If not, the method loops back to step 256.
If the last fractal transform identifier has been processed, the method advances to step 262 in which the main loop counter is incremented. A determination is made at block 264 whether the main loop counter has reached a maximum value. If not, the contents of buffer B are transferred to buffer A, as shown at step 266, and the method loops back to step 254. After a predetermined number of iterations of steps 254-266, the contents of buffer B are supplied as output data representing the original uncompressed image.
The method shown in FIG. 19 provides an iterative process in which the number of iterations are specified by a predetermined value. Alternatively, the iterations of the method shown in FIG. 19 could continue until the contents of buffer B only differ from the contents of buffer A by less than a predetermined amount. This method, known as the convergence method, may be further described as follows. After the step in which the contents of buffer B have been computed, the following steps are carried out:
i) initialize a and b, respectively consisting of a pointer to a domain block in buffer A and a pointer to a domain block in buffer B which has the same relative position in buffer B as the domain block in buffer A pointed to by a.
ii) initialize an integer register to zero.
iii) use a block comparator, such as comparator 66, to compute a distance between the domain block pointed to by a and the domain block pointed to by b.
iv) increment the register value by this distance.
v) increment pointers a and b.
vi) repeat steps (iii) and (iv) until all domain blocks have been processed.
vii) store the register value as a final register value.
viii) repeat steps (i)-(vii) each time the contents of buffer B are recomputed and compare the successive final register values.
ix) cease iterations shown in FIG. 19 when successive final register values differ by less than a predetermined threshold value.
As will be apparent to those of ordinary skill in the art equivalent implementations of the present invention could be provided. For example, the original image can be generated from the compressed fractal transform by use of only a single image buffer, as shown in FIG. 20. FIG. 20 identifies the steps in an alternative embodiment of the invention for a method of generating an image by a data processor from a set of identifiers. The data processor includes a memory having an image buffer with a plurality of addressable areas specified by a buffer address. Each of the identifiers corresponds to an addressable area in the buffer and includes both a buffer address and a procedure to be applied to the data in the area identifier by the corresponding address. First a predetermined pattern of digital data for an arbitrary image is stored in the image buffer. This is indicated at step 300 in which image data representing an arbitrary input image is stored in an image buffer. The set of identifiers, comprising a fractal transform, is provided as input to a data processor as shown in block 304. For each addressable area of the image buffer, a pattern of data corresponding to that identifier is determined by applying the procedure in that identifier to the portion of the image buffer indicated by the buffer address of that identifier. That data pattern is then stored back into the same area of the image buffer indicated by the buffer address for the corresponding identifier.
As shown in FIG. 20, these steps are performed by setting a pointer to a first domain block in the image buffer (at step 306). Next, at step 308, the address of a range block corresponding to the image block specified by the pointer is read. A shrunken range block is then constructed from the image data in the image buffer, as indicated in block 310. Next, the data present in the domain block of the identifier is then replaced by the data from the shrunken range block, as indicated at step 312.
The steps of identifying and storing are then repeated until a predetermined criteria are met, and the contents of the image buffer are provided as data representative of an image. As shown in step 314, the domain block pointer is incremented and a determination made at step 316 whether all domain blocks have been processed. If not, steps 308, 310, and 312 are repeated until all domain blocks are processed. A determination is then made at step 318 whether the contents of the image buffer are stable, that is, differ by less than a predetermined amount from the previous contents. This determination may be made by performing steps (i)-(vii) of the convergence method described above. When the predetermined threshold value of the final register value is reached, the contents of the image buffer are then provided as output representative of the original compressed image, as indicated at step 320.
Grayscale Images
The present invention is suitable for processing grayscale images as well as for processing black and white images. A grayscale image is an image formed of pixels which may have any one of a plurality of graduated light intensities, ranging from completely black to completely white. FIGS. 21-24 illustrate a preferred process by which a fractal transform of an input digitized grayscale image 360 is found. Image 360 is divided into domain blocks 362, and range blocks 364 as shown in FIGS. 21 and 22, respectively. Additional range blocks may also be created by procedures such as rotation and reflection, as described previously with respect to black and white range blocks.
A shrinking process is then applied to the range blocks to produce shrunken range blocks 366, as shown in FIG. 23. The shrinking process is such that the shrunken range blocks contain the same number of pixels as the domain blocks and can employ shrinking techniques as described above with respect to black and white images. However, unlike the procedure for processing black and white images, there is no escape block included among the shrunken range blocks. Each pixel of the domain blocks and shrunken range blocks has a number associated with it which represents its grayscale value, i.e. the brightness of the pixel. For example each pixel in image 360 (FIGS. 21 and 22) has a grayscale value of 0-255.
As shown in FIG. 24, each domain block 362 is compared to shrunken range blocks 366 and is associated with a single shrunken range block 369 which most closely corresponds to the domain block. This association will be described below in greater detail with respect to FIG. 30 and is performed by a block comparator 368 which compares the grayscale values of the pixels of each block to grayscale values of pixels in each shrunken range block 366. To assist in finding a shrunken range block 369 which closely corresponds to a domain block, vertical scaling parameters P and Q may be applied to domain block pixel grayscale values VGS to obtain a new pixel grayscale value V'GS =PVGS +Q.
FIG. 25 provides further explanation of the processing of grayscale images. A grayscale image 400 formed of pixels 401 having four possible levels of gray can be represented in binary form as shown at 402. Thus, each pixel in binary representation 402 has its intensity level represented by a value of 0-3.
Shrunken range blocks 366 can be constructed from the binary representation 402. First, four binary representation of range blocks 364 can be constructed as the lower left (1), lower right (2), upper left (3), and upper right (4) quadrants of binary image representation 402. These range block binary representations are then processed by shrinking techniques as described above to form shrunken range blocks 404.
Binary representation 402 is also divided into binary domain blocks 406. The binary domain blocks are numbered 1-16 in order from left to right and from bottom to top of binary representation 402. Each of binary domain blocks 406 is a 2×2 pixel array of non-overlapping subsets of binary image representation 402. The domain block size is chosen to be the same as the shrunken range block size.
Using a value of P equal to 0.5 and values of Q as indicated in FIG. 25 to compute new pixel grayscale values V'GS =PVGS +Q, the Hausdorff distances between each binary domain block 406 and each binary shrunken range block 404 are calculated, and the most similar binary shrunken range block 404 is selected for each binary domain block 406. The results are shown in table 408 of FIG. 25. Table 408 shows that domain blocks 1-6, 8-10, and 14 are each most similar to shrunken range block 1; domain blocks 7, 11, and 16 are most similar to shrunken range shrunken range block 2; and domain blocks 12, 13, and 15 are most similar to shrunken range block 3. The fractal transform 410 of image 400 then consists of the sequential list of shrunken range block numbers along with vertical scaling parameters P and Q, as shown in table 408 and in FIG. 26.
The corresponding fractal transform 410 for grayscale input image 60 is thus a list of identifiers consisting of the "addresses" of the shrunken range blocks and associated vertical scaling parameters, one address and set of vertical scaling parameters being associated with each domain block, as shown in FIG. 26. Although no procedures, such as rotation and inversion, have been discussed in the explanation of FIG. 25 in order to avoid unnecessary complication of explanation, the preferred embodiment employs such procedures, and the codes specifying the procedures are included in each identifier of the fractal transform.
FIG. 27 shows in detail a preferred method for automatically creating a fractal transform representative of grayscale image data in accordance with the present invention. At step 500, digital image data representing a grayscale image is stored in buffer A of a data processor. At step 502, a range block pointer for buffer A and a shrunken range block pointer for buffer B are initialized. At step 504, predetermined procedures are applied to the range block of buffer A specified by the range block pointer. Such procedures include local affine transforms, such as rotation, reflection, or inversion prior to shrinking to obtain a greater number of shrunken range blocks for a given input image. The processed range blocks are then stored into buffer B at the locations indicated by the shrunken range block pointers.
The range block pointer for buffer A and shrunken range block pointer for buffer B are then appropriately incremented at step 506, and the range is examined at step 508 to see whether all range blocks have been accessed. If not, steps 504 and 506 are repeatedly executed until all range blocks have been accessed. A domain block pointer for buffer A is initialized at step 512 and the shrunken range block pointer for buffer B is initialized in step 514.
At step 516, vertical scaling parameters P and Q are determined to minimize the L distance between the domain block addressed by the domain block pointer and the shrunken range block addressed by the range block pointer. As is well known to those skilled in the art, L distances are used to measure the distances between graphs of functions rather than between sets of points. A digitized grayscale image can be thought of as a function formed from a two dimensional array of indices representing pixel locations in an image indicating the intensity value associated with the pixels. That is, the function f(i,j) represents the intensity at pixel i,j where i,j specify the location of the pixel in the image array. An L distance compares two functions by appropriately summing and in some way averaging the differences between the intensities at each pixels. It is an L2 distance if the differences are squared before they are summed, in which case the "averaging" is achieved by taking the square root of the sum. It is an L1 distance if the absolute values of the differences are utilized. If the L distance between two images is small then the two images look alike. L distances have the advantage that they generally can be calculated faster and easier than Hausdorff distances. In particular, a weighted L2 distance DL is used in the preferred embodiment to select vertical scaling parameters P and Q and is expressed as;
D.sub.L =|x.sub.i -y.sub.i |.sup.2 w.sub.i
where: xi,yi are indexed intensity values in respective images, wi are non-negative numbers, and N is the number of pixels in each image.
The distance between digital grayscale images A and B (or blocks taken therefrom) can be measured using both Hausdorff distances and using L distances. In the first case the images are treated as a sets of points in a three dimensional array and in the second case they are treated as functions. In the embodiment shown in FIG. 27, L2 distances are used in selecting P and Q values.
At step 518, the Hausdorff distance between the domain block specified by the domain block pointer and the shrunken range block specified by the shrunken range block pointer and scaled by P and Q is determined. The Hausdorff distance is computed in the same manner as described with respect to FIGS. 10a and 10b. A determination is then made at step 520 if the value computed at step 518 is less than the currently stored value. If so, the currently stored value is replaced by the value just computed at step 518, along with the identifier of the shrunken range block which was used to generate the value just computed. If the value computed at step 518 is not less than the currently stored value, the value just computed is discarded.
At step 522, the range block pointer is incremented and a determination made as to whether all range blocks have been checked. If not, the method of FIG. 22 loops back to steps 516-522 until all shrunken range blocks have been checked.
The identifier stored by the loop consisting of steps 516-522 is then appended at step 526 to a list of identifiers each representing one of the domain blocks of the input image data stored in buffer A. The domain block pointer is incremented at step 528 and a determination made whether all domain blocks have been processed. If not, steps 516-528 are repeatedly executed until all domain blocks have been processed. The list of identifiers, each corresponding to one of the domain blocks of the original input data, is then output at step 532 as the fractal transform according to this method of image data representing the input grayscale image.
FIG. 28 illustrates how a grayscale image is recovered from a fractal transform 410 (which includes scaling parameters). An arbitrary initial image 534 and a fractal transform 478 are input to a decompression system 536, preferably embodied in a data processor. Initial image 476 is loaded into a buffer A. A buffer B is partitioned into domain blocks; and into each domain block is read a shrunken range block which is specified by the corresponding address of fractal transform 410, scaled as specified by the vertical scaling parameters. The shrunken range block is constructed from initial image 534 in buffer A. Image 534 in buffer A is treated, addressed, and processed into shrunken range blocks, in exactly the same manner as the original image. Each of the identifiers forming the grayscale fractal transform corresponds to one of the domain blocks in buffer B of FIG. 28 and is used to select a shrunken range block from buffer A to read into the corresponding domain block, thus forming an interim image in buffer B. The interim image in buffer B is now read back into buffer A, and buffer B is cleared. The steps of reading into each domain block of buffer B a shrunken range block of buffer A specified by a corresponding address of the fractal transform to form an interim image, and reading the interim image of buffer B into buffer A are repeated either a prescribed number of times or until "convergence" is achieved.
In general, the number of iterations of the steps of placing shrunken range blocks in buffer B and replacing contents of buffer A with contents of buffer B depends on the dimensions (measured in pixels) of the domain blocks and range blocks. The number of iterations may also be determined experimentally, by detecting convergence, defined as when the successive images in buffer B do not change by more than a predetermined amount. The decoded image is the one which is finally obtained after the iterative process is complete.
FIG. 29 shows a logic flow diagram which constitutes a preferred embodiment for decoding a grayscale fractal transform such as the one generated by the method of FIG. 27. First, an initial image is supplied to buffer B, as indicated at step 550. Next, a main loop counter, a domain block pointer for buffer B, and a fractal transform pointer are initialized, as indicated in step 552. The next entry of the fractal transform as specified by the fractal transform pointer, is obtained at step 554 and a corresponding shrunken range block is created from buffer A. The range block is then scaled with vertical scaling parameters P and Q and read into a domain block of a corresponding position in buffer B. At step 556, domain block pointer for buffer B and the fractal transform pointer are incremented. A determination is made at step 558 whether the last domain block and fractal transform have been processed. If not, the method loops back through steps 554 and 556 until each entry of the fractal transform has been processed.
The main loop counter is incremented at step 560. If the prescribed number of iterations, has not been reached (Step 562), the method loops back to step 552 and creates a domain block in buffer B from each fractal transform entry. The process continues until the prescribed number of iterations has been reached. At that time, the contents of buffer B are provided as data representative of the grayscale image previously compressed into the input fractal transform.
A numerical example of the construction of a grayscale fractal transform using vertical scaling parameters will now be described. Using the procedure shown in FIG. 29 with 8×8 domain blocks and 16×16 range blocks, the 256×256 grayscale was converted to digital data. The original image data required 65,536 bytes of memory for storage. After processing using the method of FIG. 22, a fractal transform was produced which required 2,560 bytes of memory for storage.
Other sizes of domain blocks and range blocks, as well as different numbers of range blocks could, of course be used. Decreasing the block size increases the number of blocks and increases the fidelity of the compression/decompression process. That is, the difference between the original and decoded images is reduced. Exact compression results when there is no difference between the original image and the decompressed image when viewed at a specified screen resolution. However, decreasing the block size and increasing the number of possible range blocks also increases the length of search when determining the closest shrunken range block. This in turn increases the processing time for a given type of computer or increases expense if a more powerful computer is used to eliminate the potentially greater processing time.
The present invention also provides a method for enhancing images. Image data representing a grayscale image at a first resolution is stored in the data processor. For example, data from an image comprising an array of 256×256 pixels is supplied as input to the method of FIG. 27. A fractal transform is obtained using the method. The fractal transform is then decoded at a second resolution higher than the first resolution to produce output image data by decoding the fractal transform using the method of FIG. 29 including a pair of larger buffers to produce an output image array larger than 256×256. For example, use of buffers in the method of FIG. 29 to provide a 512×512 output array yields an image having a resolution of twice that of the original input image. If a typeface is used to form a set of input images, this technique can be used to provide a scalable font. That is, fractal transforms representing the symbols of the typeface can be decoded to any desired resolution to provide multiple fonts of the type face symbols at any desired size.
The invention may also be used to compress and decompress color images, as shown in FIG. 30. Digital data representing a color image is input and a trio of grayscale fractal transforms are produced, one for each of primary colors red, green, and blue. The three fractal transforms are concatenated to form a color fractal transform. To reproduce the original color image from the compressed data of the color fractal transform, the color fractal transform is separated into individual fractal transforms representing grayscale fractal transforms of red, green, and blue images. The individual fractal transforms are then decoded using, for example, the method shown in FIG. 29, to produce red, green, and blue intensity images. These intensity images are combined in a manner well known in the art and are output as a decompressed color image.
While the algorithms for decoding of the grayscale fractal transform can be implemented in a wide variety of general purpose computers, it will be appreciated that the small variation in operations required and large numbers of operations can be efficiently embodied in a special purpose computation device. Accordingly, preferred apparatus for processing digital image data using the methods described above is shown in FIG. 31.
The apparatus of FIG. 31 includes a host interface 600, memory 602, 604, 605, and 606, a memory interface circuit 610, a digital signal processor 612, and display output interface 613 on a printed circuit board which is compatible with PC/AT type computers based on the Intel 80286 central processing unit.
The digital signal processor 612 and the memory interface 610 are connected to a PC expansion bus for receiving commands and data. The preferred digital signal processor 612 is a TMS320C30 manufactured by Texas Instruments Incorporated. Details concerning the operation of the preferred digital signal processor 612 are available in the literature supplied by the manufacturer.
It will be understood that while the digital signal processor 612 employed in the disclosed embodiment is capable of performing a wide variety of floating point operations, the purpose for which it is used in the present invention is to provide high speed implementation of the arithmetic portions of a fractal transform decoding method, such as shown in FIG. 29. Accordingly, it will be understood that the other functions which could be carried out by the digital signal processor 612 are not employed in the disclosed embodiment. In particular, although the digital signal processor 612 generally operates on thirty-two bit data, in the disclosed embodiment, it adds and multiplies signed eight bit data provided by the memory interface 610 in response to a sequence of instructions contained in the program code ROM 602.
These primary components operate to decode a set of range block addresses and transfer the results of the decoding process to the screen buffer, 604 and 605 forming display memory banks A and B, which in the disclosed embodiment consists of a single 262,144 by 4 bit multiport video RAM TMS44C251 manufactured by Texas Instruments Incorporated. Details concerning the operation of the preferred display memory banks A and B are available in the literature supplied by the manufacturer.
In the disclosed embodiment, the data set representing an image is an array of 256 pixels by 256 pixels, although it will be appreciated that the size of this array is arbitrary and that a larger array gives rise to greater resolution. Moreover, it should be understood that the data set representing the image is the same for the display resolution, the screen buffer resolution, and for all arithmetic calculations. In the disclosed embodiment, each pixel intensity value is represented by an eight bit value so that images having 256 gray or pseudo-color intensity levels can be decoded, although it will be appreciated that the size of this array is arbitrary and that more than eight bits per pixel gives rise to more than 256 intensity levels, while less than eight bits per pixels gives rise to less than 256 intensity levels. In particular, twenty four bits per pixel would give rise to sufficient intensity levels to describe 256 intensity levels each of red, green and blue primary components.
The preferred display memory banks A and B, although physically one device, are conceptually treated as two banks of memory. One bank is thought of a containing the "current image" and is used as the source of image data. The other is thought of as containing the "new image" and is used as the destination of image data. During the iterative decoding process, the roles of the memory banks are interchanged. The banks are distinguished by a memory start address offset which in the case of bank A is 0 and in the case of bank B is 131,076 (measured in four bit memory locations). Each bank is of sufficient size to contain an entire 256×256×8 bit image. The memory interface 610 contains address generators to generate arrays of data corresponding to square subimages. The subimages are determined by a row and column address of the upper left hand corner of the subimage and a size. The subimage with upper left hand corner row equal to R and column equal to C and dimension S is denoted by sub(R,C,S). Sub(R,C,S) contains S times S pixel locations and contains all the pixel locations from row R to row R+S-1 and from column C+S-1.
The host interface 600 receives and transmits signals and data from the expansion bus 611 of an IBM PC/AT on PC address, data and bus control lines 615. Data and addresses are sent to the memory interface 610 on the lines 617. The memory interface 610 consists of memory address generators and address sequencers. Two types of data are transmitted to the memory interface 610. Image codes are placed into and retrieved from program data RAM 606 which is 4096 by 8 bits. The image code is preceded by a byte of data, the format byte. The low four bits, bits 0,1,2,3, of the format byte determine the domain block size and therefore the range block size, since the range block size is always twice the domain block size in the disclosed embodiment. Valid values of the domain block size are 4-16. Both the domain blocks and range blocks are square in the disclosed embodiment. Thus, one dimension completely specifies the domain block size.
The format byte is stored in a static RAM format register in the memory interface 610. The format byte is used by the digital signal processor 612 to compute the actual dimensions of the displayed image in pixels. The dimension of the displayed image may be somewhat less than 256 by 256. It is determined as the largest number of pixels which is a multiple of the domain block size and which is simultaneously no larger than 256. For example, if the domain block size is 5, then the image width and height in pixels is 255 and not 256. This is because 51 times 5 is 255, which number is not larger than 256, while 52 times 5 is 260, which exceeds 256. The number is computed by integer dividing 256 by 5 and then integer multiplying by 5. A list of image size values as a function of format value is now provided in the format i,f; where i is image size and f is format value:
256,4; 255,5; 252,6; 252,7; 256,8; 252,9; 250,10; 253,11; 252,12; 247,13; 252,14; 255,15; 256,16.
The result is stored in an eight bit image size static RAM register in the memory interface 610.
An address sequencer in the memory interface 610, using the format register value, generates addresses in the program data RAM 606 to store the image codes which are transmitted from the host interface 600 into the memory interface 610. The program data RAM 606 consists of 4096 memory locations, each one byte wide. An image code may consist of up to 2048 codes, each of which occupies two bytes of the program data RAM. CODELENGTH, the number of two-byte program data RAM words which contain valid data, is the square of (the value in image size divided by the value in format). CODELENGTH varies between 256 and 2048 as the value in format varies between 4 and 16. The sixteen bits of the first CODELENGTH words in the program data RAM contain both address and transform information. The partitioning of each such word between address and transform information depends on the value in the format register according to the following formula:
______________________________________                                    
Format Value  Address Bits                                                
                         Transform Bits                                   
______________________________________                                    
4-7            0-11      12-15                                            
 8-15         0-9        10-15                                            
16            0-7         8-15                                            
______________________________________                                    
the address bits are divided in equal parts to form a row address and a column address according to the following table:
______________________________________                                    
Format Value                                                              
           Row Address Bits                                               
                         Column Address Bits                              
______________________________________                                    
4-7        0-5            6-11                                            
 8-15      0-4           5-9                                              
16         0-3           4-7                                              
______________________________________                                    
It will be appreciated that although the numbers of bits allocated to the row address and column address are equal in each code word, the value of those bits may vary from row address to column address and from code word to code word. The row address bits and column address bits are used to address upper left hand locations of range blocks. Valid values for the row and column address vary according to the value in format. These address can range from 0 to a maximum value as expressed in the following list. The list is given as (m,f) where m is the maximum address value for a given format value:
(63,4)(50,5)(41,6)(35,7)(31,8)(27,9)(24,10)(22,11)(20,12)(18,13) (17,14)(16,15)(15,16)
In the disclosed embodiment, pixel row and column addresses are computed by multiplying the row address and column address values by the domain block size stored as the value in format. The address generator of memory 610 then determines physical memory address in the display memory banks 604 and 605.
The transform bits are used, together with the values in NUMSCALE and DENOMSCALE registers in the memory interface 610, to carry out the grayscale fractal transform decoding operation. The digital signal processor 612 receives both of the signed eight bit NUMSCALE and DENOMSCALE values over the lines 619. In the disclosed embodiment, these values are selected by an operator and are fixed for an entire image computation. It will be understood that providing a larger program data RAM would permit distinct NUMSCALE and DENOMSCALE values to be used for each code word. The NUMSCALE and DENOMSCALE values are loaded from the PC/AT host to the host interface on lines 615 and from the host interface to the NUMSCALE and DENOMSCALE registers in the memory interface 610 on lines 617.
The decoding steps of the grayscale fractal transform are carried out in an initialization step and repeated decoding iteration steps. The instructions required to carry out the decoding procedure are loaded from the program ROM 602 which is connected to the digital signal processor 612.
Initialization Step
An initialization signal is sent from the PC/AT host on the lines 615 to initialize the memory interface 610. The memory interface 610 now receives twenty-six bits, the first eight of which are stored in the format register, the next nine of which are stored in the NUMSCALE register and the final nine of which are stored in the DENOMSCALE register. A code counter is now initialized to the value of 16 times CODELENGTH. Bits are now loaded from the PC/AT host over the data lines 615 to the host interface and from there over the data lines 617 to the memory interface 610. An address sequencer in the memory interface 610, having been initialized by the initialization signal above, provides successive addresses in the program data RAM 606 and transfers the data bits it receives to the byte memory areas so addressed. The code counter is decremented with each bit and the data transfer process halts when it reaches zero. A signal is then sent to the digital signal processor 612 to load the program from the program code ROM 602. The values in the NUMSCALE and DENOMSCALE registers are transferred to memory locations in the RAM of the digital signal processor 612. The value of format is also transferred to a memory location in the RAM of the digital signal processor 612, which computes and stores the value of CODELENGTH as described above. Another digital signal processor RAM address location, display bank, is cleared.
Decoding Iteration Step
A memory location configured as a block counter in the RAM of the digital signal processor 612 is set at the starting address of the program data RAM 606, which is contained in the program code ROM 602. Each Decoding Iteration Step consists of CODELENGTH iterations of Block Decoding Steps. The value of display bank is sent to the memory interface 610 and stored in a bank register on the memory interface 610.
Block Decoding Step
At the start of a Block Decoding Step, the value of BLOCK COUNTER in the digital signal processor 612 is passed on the data lines 619 to the memory interface 610. The eight bits of data at that address in the program data RAM and the next eight bits of data are passed back to the memory interface 610 on data lines 619. The transform bits of the code word are sent on data lines 13 to the digital signal processor 612 and stored in a memory location, Q, in the digital signal processor 612. The row and column address bits of the code word are used by the display address generator on the memory interface 610 to generate the addresses of a square block, with horizontal and vertical dimension equal to two times format, of pixel data in the display memory bank. If the value of display bank is 0 then the addresses are generated in display memory bank B 605. The upper left hand corner of the square block is generated as that pixel on the format times row address row and format times column address column. The image data in this square block is SUB(ROW ADDRESS times FORMAT,COLUMN ADDRESS times FORMAT,2 times FORMAT). The addresses are generated as 2 by 2 subblocks of this square block as with row addresses subrow-row address times format+2 times i and column addresses subcol=column address times FORMAT+2 times j.
The address generator initializes counters with values i and j at 0 and then increments j until j reaches FORMAT when it is reset to 0. When j is reset, then i is incremented until i reaches FORMAT when it is reset to 0. A register in the digital signal processor 612, PIXEL, is cleared. For each value of i and j between 0 and FORMAT-1 inclusive, the byte values at the byte of pixel data stored at the address locations of the four pixels in SUB(SUBROW, SUBCOL,2) is sent over the address lines of 619 to the memory interface 610 and then over the data lines of 619 to the digital signal processor 612 and accumulated in the PIXEL register.
After all four values have been received the value is right shifted two places to effect a division by 4. Q is added to the result of (PIXEL times NUMSCALE divided by DENOMSCALE) and the result of this computation is stored in a digital signal processor register 612, NEWPIXEL.
A second address generator in the memory interface 610 determines destination addresses in the display memory. The pixel coordinates of the upper left hand coordinates are computed by the second address generator. The pixel row of this location is
DESTROW=(BLOCKCOUNT/(IMAGE SIZE/FORMAT)) times FORMAT.
The pixel column address of this location is
DESTCOL=(BLOCKCOUNT/(IMAGESIZE/FORMAT)) times FORMAT where X/Y denotes the remainder of integer division of X by Y.
The addresses of the FORMAT times FORMAT pixels in
SUB(DESTROW,DESTCOL,FORMAT)
are computed as the counters i and j vary. NEWPIXEL is sent over the data lines 13 to the memory interface 610 and stored in the destination display memory address of the pixel located at row=DESTROW+i and column=DESTCOL+j. When all FORMAT times FORMAT pixels in SUB(DESTROW,DESTCOL,FORMAT) are replaced with NEWPIXEL values in this manner, counters i and j are cleared and BLOCKCOUNT is incremented.
This completes a Block Decoding Step. The Block Decoding Step is repeated CODELENGTH many times with the incremented blockcount values. The value of display bank is replaced by 1 --the value of display bank and consequently alternates between 0 and 1. The Decoding Iteration Step is then completed.
The display of the image is carried out essentially asynchronously with the computational decoding. Pixel values are indeed read out of the display memory asynchronously, but the memory bank which is used as the source of the display pixels is specified by the value of display bank. The display output interface 613 provides the R-G-B output. The video output logic timing device 617 drives the preferred color pallet, a Brooktree Bt453RAMDAC, not shown in FIG. 31.
The ratio of the image code to the decoded image size is called the compression ratio of the device. The compression ratio of the device may be computed by dividing twice CODELENGTH by the square of image size. The disclosed embodiment yields compression ratios varying from 1:16 when format contains the domain block size value of 4 to a compression ratio of 1:128 when the value of format is 16. The restriction of format values to vary between 4 and 16 is arbitrary. Larger values of FORMAT lead to larger compression ratios.
An intended purpose of the disclosed decoding device is to provide an economical means of decoding images which have been encoded by the grayscale fractal transform. The usefulness of the device can also be measured in the compression ratio which it achieves. The compression ratio can be effectively increased by compressing the fractal transform codes by traditional compression of a grayscale fractal transform. For example, publicly available Huffman encoding schemes could be used to encode the fractal transform codes. The Huffman encoded fractal transform codes are then Huffman decoded before transmission to the disclosed apparatus for decoding the fractal transform.
Use of the fractal transform techniques described herein has a significant advantage over prior art techniques such as vector quantization and Huffman coding in that no look-up tables are used. Thus, the compression ratio can be easily changed, the system can be used in an adaptive mode, useful in applications such as DVI and preparation of old movies for transmission along telephone lines.
The disclosed methods and apparatus are particularly suitable for application to the problem of transmitting movies over standard telephone lines. FIG. 32 is a logic flow chart of a method for generating compressed digital data representing image information in a motion picture, by a data processor, for storage or transmission. At step 702, first and second processing buffers are initialized with predetermined image data. In the preferred embodiment, the processing buffers are initialized to values of 0. Preferably, the processing buffers are formed to store grayscale pixel values of a square image array. In the preferred embodiment, the processing buffers provide storage of a 256×256 array of 8-bit pixels. The value of a counter in the data processor is also initialized at step 702.
Next, at step 704, image information contained in the first frame of the motion picture to be processed is digitized to produce digitized image data. The image information may be digitized at the same resolution as the processing buffers. In the preferred embodiment, the image information from the first frame of the movie is digitized into a 256×256 array of pixels having an 8-bit grayscale value.
At step 706, the digitized image data from the first frame of the movie is stored in a frame buffer. The counter value is then checked to determine if the value is greater than a predetermined limit value. The counter is used for the purpose of repeating the processing of the first frame for a fixed number of times, for example, 8. That is, the limit value referred to in step 708 is set to 8. If the counter value is greater than the limit value, image information from the next sequential frame of the movie is digitized to produce digitized next frame image data and the digitized next frame image data is stored in a frame buffer. If the counter value is not greater than the limit value, as determined in step 708, step 710 is bypassed, with the result that image data from the first frame remains in the frame buffer.
At step 712, image data from the frame buffer is stored into the first processing buffer. This image data is then processed in the same manner as set forth in FIG. 5. Specifically, domain blocks are created in step 714. Next, at step 716, shrunken range blocks are created in the second processing buffer. For each domain block, the closest shrunken range block is selected at step 718 and the selected shrunken range block is used to replace the corresponding domain block in the first processing buffer at step 720.
The set of identifiers of the selected shrunken range blocks is then used at step 722 to form a fractal transform such as fractal transform 410, shown in FIG. 26. This fractal transform is referred to as a current transform. The current transform, which comprises compressed digital data representative of the image information in the first frame of the movie, is then provided as output at step 724, and the contents of the first processing buffer are copied into the second processing buffer at step 726.
At step 728, the counter value is incremented and a determination is made at block 730 if all frames of the movie have been processed. If not, processing returns to step 708. If all frames have been processed, the method ends at 732.
Referring now to FIG. 33, there is shown a logic flow chart of a method for automatically generating digital data representing the frames of a motion picture. The data is generated by a data processor from a sequence of current transforms, each having a set of identifiers. The data processor includes a memory having a plurality of buffers, each having a plurality of addressable areas specified by a buffer address. Each of the identifiers corresponds to an addressable area in the buffers and includes a buffer address and a procedures specification. In the preferred embodiment, a pair of buffers A and B are provided, corresponding in size to the processing buffers discussed with respect to FIG. 32. Specifically, buffers A and B in the preferred embodiment each have a size sufficient to store an array of 256×256 by 8 bits.
At step 800, an initialization step is performed in which a predetermined pattern of digital data is stored into at least one of the buffers, buffer B, designated as a source buffer. Preferably, both buffers A and B are initialized to all 0's. A current transform, preferably generated by a process such as shown in FIG. 32, is input at step 802 from the sequence of current transforms which constitute compressed digital data representing a motion picture. At step 804, the digital data in buffer A is formed into domain blocks, each corresponding to an identifier in the input current transform. At step 806, the digital data in buffer B is formed into shrunken range blocks, in the same manner as is discussed above with respect to FIG. 13. At step 808, each domain block in buffer A is replaced by a shrunken range block. Specifically, for each of the identifiers in the current transform input at block 802, a pattern of data is determined which corresponds to each of the identifiers. This pattern of data is determined by applying the procedures specified in that identifier to the portion of the source buffer, buffer B, indicated by the buffer address in the identifier. Next at step 808, the patterns of data are stored into the addressable areas of buffer A, designated as a destination buffer, as indicated by the addresses of the corresponding identifiers. In the preferred embodiment, each domain block of buffer A is replaced by a shrunken range block of buffer B. This process is identical to that described above with respect to FIG. 13.
Next, at step 810, the contents of the destination buffer are provided as data representative of an image in the frame. That is, image data from buffer A is output as digital data representative of an image in the frame. This image corresponds to the frame represented by the current transform input in step 802.
At step 812, a determination is made as to whether all current transforms have been processed; that is, have images corresponding to all desired frames been processed. If so, the process ends at step 814. Otherwise, the contents of the destination buffer are copied into the source buffer. That is, as shown at step 816, the contents of buffer A are copied into buffer B and processing returns to step 802 to decompress the next current transform of the sequence. The sequence of sets of image data output at step 810 constitutes decompressed image data representing each frame of a motion picture.
The principles of the present invention are also particularly suitable for application to a videophone. FIG. 34 is a block diagram of apparatus 1000 for providing a videophone. Apparatus 1000 includes two latch-and- hold inputs units 1011 and 1012, a control logic unit 1013, two data processors 1014 and 1015 (respectively functioning as a videophone encoder and a videophone decoder), and two output units 1016 and 1017. Apparatus 1000 has two functional modes: encoding and decoding. Control logic unit 1013 selects either the encoding mode or the decoding mode as determined by input data.
In the encoding mode, a video source 1002, such as a video camera, provides an analog signal to a frame grabber circuit 1006 which converts each frame of video from source 1002 into digital data and stores the digital data in frame grabber unit 1006. Control logic unit 1013 causes video input unit 1011 to read digital data stored in frame grabber 1006 and pass the data to videophone encoder 1014. Videophone encoder 1014 is a fractal encoder of the type described previously with respect to FIG. 6. Videophone encoder 1014 processes the digital video data which it receives from control logic unit 1013. This processing produces fractal transforms for the frames, which are then output through data output unit 1016 Data output unit 1016 may be a standard telephone modem circuit.
In the decoding mode, fractal transforms are supplied by a data source 1004, which may also be a standard telephone modem circuit. Control logic unit 1013 causes data input unit 1012 to read and accumulate the data supplied by data source 1004 and pass it to videophone decoder 1015. Videophone decoder 1015 is a fractal decoder of the type described with respect to FIG. 14. Videophone decoder 1015 processes the fractal transforms which are received from control logic unit 1013. The processing results in digital video data which is sent from decoder 1015 to video output unit 1017. This output unit transforms the digital data into analog data for display on the video display unit 1020.
An alternative method of generating a fractal transform is disclosed in FIG. 35. As shown therein, an image is stored as image data in a data processor in a 64,000 location buffer arranged as a 200×320 array 1100. Each location represents the image value (0-255) of a pixel of an image. Pixels of array 1100 are arranged into domain blocks, such as 1102, each consisting of an array of 8×8 pixels. The domain blocks thus form a 25×40 block array in the buffer.
Image data of the buffer is then used to form range data. For example, the image data of the buffer may be shrunken in a 4:1 ratio to form a range data array 1104, as shown in FIG. 35. Range data array 1104 may be so formed by selecting every other pixel of array 1100. This is illustrated in FIG. 36, wherein every other pixel of a segment of array 1100 is selected to form a corresponding segment of array 1104.
Array 1104 is then used to form a series of shrunken range blocks, used for comparison with domain blocks 1102 to form a fractal transform, similar to the methods described above. However, in this alternative embodiment, shrunken range blocks are formed as series of overlapping blocks from range data array 1104. Each shrunken range block is an 8×8 array of pixels, with the address of the shrunken range block specified by the row and column coordinate of the upper left pixel of each 8×8 block. As shown in FIG. 37, overlapping shrunken range blocks may be formed with a specified separation, or "gap," between the upper left pixel of each overlapping block. As shown in FIG. 37, a first shrunken range block 1108 is formed as an 8×8 array of pixels, having an upper left pixel located at row and column coordinate 0,0. A second shrunken range block 1110 is formed by a 8×8 pixel array whose upper left pixel has a row and column coordinate of 0,2. A third shrunken range block 1112 is formed of an 8×8 pixel array whose upper left pixel is located at row and column coordinates 2,4. In a similar manner, it can be seen that the series of shrunken range blocks can be formed by 8×8 pixel arrays whose upper left pixel has a row coordinate of 0,2,4, . . . 91 and a column coordinate of 0,2,4, . . . 151.
Each shrunken range block formed from range data array 1104 is then subjected to transform processes consisting of rotation by 0°, 90°, 180°, and 270°, each of which is also subjected to inversion. Thus, for each shrunken range block formed from range data array 1104, a total of eight comparison shrunken range blocks is generated.
The fractal transform for the image corresponding to data stored in array 1100 is then formed in a manner similar to that described in previous embodiments, by selecting, for each domain block contained in array 1100, the shrunken range block which is "closest," according to any of the distance criteria set forth previously. That is, each domain block is compared with the overlapping shrunken range blocks formed from range data array 1104, various rotations of each domain block are compared with the overlapping shrunken range blocks, and the inversions of each of the domain blocks and their rotations are compared with the shrunken range blocks. Alternatively, and in a manner which is a mathematical equivalent, inversion and rotation may be performed on shrunken range blocks.
When the closest comparison shrunken range block is formed, its identity is used to form an identifier for the corresponding domain block. The identifier consists of the row and column coordinate of the upper left pixel of the domain block, a two-bit code designating the rotation (0°, 180°, 270° or 360°) of the domain block, and a one-bit code specifying whether the rotated domain block is inverted or not.
The final component of each identifier is a vertical scaling parameter q which is unique for each identifier. An additional vertical scaling parameter p is selected, which is common to all identifiers of a fractal transform. For example, the p value may be 0.75.
The q value is selected as follows. First, the average pixel value of the domain block is determined, by calculating the average pixel value of each of the 64 pixels forming the domain block. Next, the average pixel value of the pixels of the selected shrunken range block is then calculated. (The domain block average is the same for each of the rotated and inverted domain blocks.) The product of the average pixel value of the selected shrunken range block and the p value of 0.75 is calculated, and the product is subtracted from the average pixel value of the domain block to form the q value. Since pixel values for each pixel range from 0-255, the value of q generally ranges from -127 to +128.
In a similar manner, an identifier including a row and column coordinate, a two-bit rotation code, a one-bit inversion code, and a q value is formed for each of the 1,000 domain blocks of image array 1100. The set of 1,000 identifiers thus constitutes the fractal transform of the image represented by array 1100.
An alternative method for retrieving and decoding an image represented by a fractal transform is shown in FIG. 38. FIG. 38 shows a buffer 1150 capable of storing image data for an image consisting of an array of pixels which is 320 pixels wide and 200 pixels high. Buffer 1150 is formed from memory locations in a data processor, each of which contains a numeric value and each of which is specified by a memory location address. The image represented by data stored in buffer 1150 is formed of pixels, each of which has a pixel value and each of which is specified by a row and column coordinate. There is thus a one-to-one correspondence between numeric values stored in addressed locations of buffer 1150 and pixel values located at row and column coordinates of the image. Pixels and memory locations will therefore be referred to interchangeably in the discussion of the alternative method set forth below.
Each pixel has a gray scale value of 0-255. As shown in FIG. 38, the pixels of buffer 1150 may be represented by row and column coordinates having values of 0-199 and 0-319. The array of pixels in buffer 1150 is in turn divided into one thousand domain blocks each consisting of an 8×8 array of pixels. As noted previously, domain blocks of buffer 1150 correspond to domain blocks of an original uncompressed image, now represented by a fractal transform. An abridged form of a fractal transform is shown at the top of FIG. 38.
Data representing an arbitrary image is initially stored in buffer 1150. For example, an arbitrary image consisting of a uniform gray tone of value 128 may be stored in buffer 1150.
The alternative method of decoding compressed digital data represented in FIG. 38 is termed "pixel chaining." Unlike the process referred to previously with respect to FIGS. 16-18, decompression using the method illustrated in FIG. 36 need not occur throughout the entire image. In the pixel chaining process, a first step is to select an arbitrary pixel, out of the 64,000 pixels represented by the 200×320 array of buffer 1150. This arbitrary pixel is designated as "pixel #1" and constitutes the first entry in a table of numbered pixels to be created, as shown in Table I. For example, the first arbitrarily selected pixel may be the pixel designated by the row, column coordinate 1,26 in buffer 1150.
              TABLE I                                                     
______________________________________                                    
                      Rela-                                               
                      tive   Top                                          
                      Coordi-                                             
                             Left         Image                           
Pixel                 nate   Range        Coor-                           
Coordi-                                                                   
       Pixel   Do-    in the Coor-  q     dinate                          
nate   Value   main   Domain dinate value in Range                        
______________________________________                                    
1,26   z1       4     1,2    30,154 q1    32,158                          
32,158 z2      180    0,6    74,98  q2    74,110                          
74,110 z3      374    2,6    30,154 q3    34,166                          
34,166 z4      181    2,6    28,146 q4    32,158                          
1,26 → 32,158 → 74,110 → 34,166 → 32,158      
______________________________________                                    
The next step is to determine the domain block with which pixel #1 is associated. As can be seen in FIG. 38, pixel 1,26 comprises a pixel of the fourth domain block of the image stored in buffer 1150.
Next, the identifier of the fractal transform corresponding to the domain block determined in the previous step is selected. As was set forth previously, and as shown in the abridged fractal transform noted in FIG. 38, each identifier of the fractal transform consist of data specifying a range block address and a scaling factor q. In the preferred embodiment, the p value for each identifier of the fractal transform is the same; thus for individual identifiers, only the q value is individually specified. Moreover, for simplicity in explanation, transform processes, such as rotation, inversion, etc. will not be further mentioned in this example. However, it is to be understood that such processes may be specified in each identifier.
As noted above, various methods of identifying range blocks within the identifiers of the fractal transform may be employed. For example, the identifiers may consist of the row and column coordinates of the upper left hand corner of a range block consisting of a 16×16 array of pixels. Using this system, range blocks can overlap. For example, a range block may be specified by the coordinates 0,0. This specifies a range block consisting of a 16×16 array of pixels, the upper left hand pixel of which is located at coordinate 0,0 and the lower righthand coordinate of which is located at coordinate 15,15. A second range block may consist of an array of 16×16 pixels whose upper left hand coordinate is 2,0 and whose lower righthand coordinate is 17,15.
In example illustrated in FIG. 38, the range block specified by the fourth identifier of the fractal transform (corresponding to domain block #4, in which pixel 1,26 is located) is a 16×16 pixel array whose upper left hand corner is situated at the coordinate 30,154. Next, a shrinking process is applied to the range block to provide a shrunken range block. One method of producing a shrunken range block from the range blocks illustrated in FIG. 38 is to generate an 8×8 pixel array consisting of every other pixel of the corresponding unshrunken range block.
After shrinking, a pixel is selected from the shrunken range block which corresponds to the position of the arbitrarily selected pixel #1 in the domain block of buffer 150. In the example shown in FIG. 38, pixel #1 (buffer coordinate 1,26) is the pixel located in row 1, column 2 of the fourth domain block of buffer 1150. The corresponding pixel in the shrunken range block is then identified. Recalling that a shrunken range block of buffer 1150 includes only every other pixel of the array, the corresponding pixel is the seventh pixel in the first row of the corresponding shrunken range block character 1070 in FIG. 38. The address of this pixel is known as a "target address", and has an address of 32,158.
Next, the target address 32,158 is entered in Table I as pixel #2, and it is determined in which domain block pixel #2 is located. As can be seen in FIG. 38, pixel #2 having an address of 32,158 is contained in domain block 180. The identifier of the fractal transform for domain block 180 is then determined. In the example of FIG. 38, the corresponding one hundred eightieth identifier of the fractal transform includes a range block address of 74,98. The 16×16 range block located at 74,98 is then determined and shrunk in the same manner as described immediately above. Next, the target address of the pixel of the shrunken range block which corresponds to the position of pixel #2 in domain block 180 is determined. This target address is 74,110, and is added to Table I as pixel #3.
The process continues until one of three conditions occurs: a) a target address is obtained which is the same as a pixel address already contained in Table I and whose pixel value is not known, b) a target address is obtained which is the same as a pixel address already contained in the list and whose pixel value is known, or c) the number of pixels in the list exceeds a predetermined value.
In the present example, it can be seen from FIG. 38 and Table I that iterations continue until a pixel having coordinates of 32,158 is reached. This is the same as pixel #2.
At this point, pixel values are assigned in buffer 1104 for pixels whose addresses are contained in the Table I. Note that the pixel values for pixels of Table I are denoted as z1, z2, z3, and z4. These pixel values can be assigned through an iteration process or by simultaneously solving a set of linear equations. In particular, pixel values z2, z3, and z4 are defined as follows:
z2=p*z3+q2
z3=p*z4+q3
z4=p*z2+q4
A trial pixel value of, for example, 128 is assigned to each of z2, z3, and z4, and each of the equations repeatedly solved until values for z2, z3, and z4 converge.
Alternatively, the three equations can be solved simultaneously to obtain values for z2, z3, and z4. A value for z1 can then be found from z1=p*z2+q1.
At this point, two options are available. If decompression of the entire image is desired, a second arbitrary pixel, whose decompressed value has not been determined, is selected and the process is repeated, beginning with the second selected pixel, to develop a list, similar to Table I, until either of the three criteria noted above are achieved. Alternatively, if a specified portion of the image is desired to be decompressed, a pixel in the desired area can be selected as the first pixel of the list.
For example, a new arbitrary pixel of coordinates 1, 27 may be selected, which is adjacent to pixel #1, above. Using the procedure set forth immediately above, a new table, Table II, similar in format to Table I, can be formed.
              TABLE II                                                    
______________________________________                                    
                      Rela-                                               
                      tive   Top                                          
                      Coordi-                                             
                             Left         Image                           
Pixel                 nate   Range        Coor-                           
Coordi-                                                                   
       Pixel   Do-    in the Coor-  q     dinate                          
nate   Value   main   Domain dinate value in Range                        
______________________________________                                    
1,27   z5       4     1,3    30,154 q5 =  32,160                          
                                    q1                                    
32,160 z6      181    0,0    28,146 q6 =  28,146                          
                                    q4                                    
28,146 z7      139    4,2    66,106 q7    74,110                          
______________________________________                                    
Note that the third entry in Table II is a target pixel having a coordinate of 74,110. The value of this pixel, z3, is already known, as set forth in Table I. Thus, pixel values z7, z6 and z5 can be obtained as follows:
z7=p*z3+q7
z6=p*z7+q6
z5=p*z6+q5
This process of assigning pixel values is continued until all pixel values in the image area of interest have been updated.
The pixel chaining method described above may be implemented in the apparatus shown in FIG. 39. Apparatus 1200 includes an input device 1202, which may be, for example, a modem, where identifiers are received over a telephone line or other communications channel. In situations where an image is to be decoded from a fractal transform stored on magnetic media, input device 1202 may be a disk drive. Input device 1202 is coupled to a processor 1204 which is in turn coupled to an output device 1206 and a memory 1208. Processor 1204 and memory 1208 may comprise, for example, a personal computer. Alternatively, processor 1204 and memory 1208 may comprise special purpose high speed image decompression hardware. Output device 1206 may comprise a video output board, for use in situations where a decoded image is to be immediately displayed. Alternatively, output device 1206 may comprise a disk drive, for applications in which the decoded image data is to be stored on magnetic or other storage media.
Input device 1202 thus comprises input means for receiving data representative of identifiers. Memory 1208 includes a plurality of domain blocks each corresponding to a portion of an encoded image and to one of the identifiers. Each of the domain blocks comprises locations specified by a memory address.
Processor 1204 constitutes processor means for: (a) storing a predetermined pattern of digital data in the memory; (b) choosing a location as a selected location; (c) storing the memory address of the selected location in a table; (d) finding a next identifier corresponding to a determined domain block containing the selected location; (e) determining, from the next identifier, a specified area of memory constituting a shrunken range block; (f) finding a target location in the shrunken range block having a position in the shrunken range block which corresponds to the position of the selected location in the determined domain block; (g) storing the memory address of the target location in the table and designating the memory address of the target location as the selected location; (h) repeating steps (c) through (g) until predetermined criteria are met; (i) determining decoded pixel values for locations of the table; and (j) repeating steps (b) through (i) until a desired portion of the encoded image is decoded. Output device 1206 thus comprises output means coupled to the processor means for supplying an output signal representative of the decoded image.
The present invention provides data compression methods and apparatus which exhibit higher performance than prior art methods and apparatus. Moreover, the present invention avoids the necessity for hours of manual operation of a computer to achieve compressed data. Since look-up tables are not required, the present invention can provide adaptive capabilities, while minimizing the amount of memory required.
The invention provides the ability to represent and store images in a digital computer with scale-independent resolution using a two-dimensional array of numerical attributes of a digitized picture as input and providing an output which is a smaller data set from the original. The present invention can provide both exact and non-exact image representation by choice of appropriate block sizes and screen resolution.
The invention further provides the ability to subject image data to multiple passes of an encoding and decoding process such that the image data emerges the same as if it had been encoded and decoded only once.
It will be apparent to those skilled in the art that various modifications and variations can be made in the apparatus and methods of this invention without departing from the spirit or scope of the present invention. The present invention covers such modifications and variations which are within the scope of the appended claims and their equivalents.

Claims (13)

What is claimed is:
1. A method for automatically processing digital image data consisting of image information, the method comprising the steps performed by a data processor of:
storing the image data in the data processor;
generating a plurality of uniquely addressable domain blocks from the stored image data, each of the domain blocks representing a different portion of the image information such that all of the domain blocks together contain all of the stored image information, and at least two of the domain blocks being unequal in shape;
creating, from the stored image data, a plurality of uniquely addressable mapped range blocks corresponding to different subsets of the image data with each of the subsets having a unique address, the creating step including the substep of
executing, for each of the mapped range blocks, a corresponding procedure upon the one of the subsets of the image data which corresponds to the mapped range block;
assigning unique identifiers to corresponding ones of the mapped range blocks, each of the identifiers specifying for the corresponding mapped range block a procedure and an address of the corresponding subset of image data;
selecting, for each of the domain blocks, the one of the mapped range blocks which most closely corresponds to the domain block, according to predetermined criteria; and
representing the image information as a set of the identifiers of the selected mapped range blocks.
2. A method as recited in claim 1, wherein the step of creating a plurality of uniquely addressable mapped range blocks includes the substep of creating range blocks to have sizes different from the domain blocks.
3. A method as recited in claim 1 wherein the step of creating a plurality of uniquely addressable mapped range blocks includes the substep of:
creating sets of uniquely addressable mapped range blocks, all of the mapped range blocks of each set having the same shape as one of the domain blocks.
4. A method as recited in claim 2 wherein the step of selecting the mapped range blocks which most closely corresponds comprises the substep of selecting the range blocks from one of the sets of range blocks having the same shape as the domain blocks.
5. A method for automatically processing digital image data consisting of image information, the method comprising the steps performed by a data processor of:
storing the image data in the data processor;
generating a plurality of uniquely addressable domain blocks from the stored image data, each of the domain blocks representing a different portion of the image information such that all of the domain blocks together contain all of the stored image information;
creating, from the stored image data, a plurality of uniquely addressable mapped range blocks corresponding to different subsets of the image data with each of the subsets having a unique address;
assigning unique identifiers to corresponding ones of the mapped range blocks, each of the identifiers specifying for the corresponding mapped range block a procedure and an address of the corresponding subset of image data;
performing a transform process on each domain block to create, for each domain block, a set of transformed domain blocks;
selecting, for each of the domain blocks, the one of the associated set of transformed domain blocks and the one of the mapped range blocks which most closely correspond, according to predetermined criteria; and
representing the image information as a set of the identifiers of the selected mapped range blocks.
6. A method as recited in claim 5 wherein the step of performing a transform process on each domain block includes the substep of rotating the domain block.
7. A method as recited in claim 5 wherein the step of performing a transform process on each domain block comprises the substep of inverting the domain block.
8. A method for automatically processing digital image data consisting of image information, the method comprising the steps performed by a data processor of:
storing the image data in the data processor;
generating a plurality of uniquely addressable domain blocks from the stored image data, each of the domain blocks representing a different portion of the image information such that all of the domain blocks together contain all of the stored image information;
creating, from the stored image data, a plurality of uniquely addressable overlapping mapped range blocks corresponding to different subsets of the image data with each of the subsets having a unique address, the creating step including the substep of
executing, for each of the mapped range blocks, a corresponding procedure upon the one of the subsets of the image data which corresponds to the mapped range block;
assigning unique identifiers to corresponding ones of the mapped range blocks, each of the identifiers specifying for the corresponding mapped range block a procedure and an address of the corresponding subset of image data;
selecting, for each of the domain blocks, the one of the mapped range blocks which most closely corresponds according to predetermined criteria; and
representing the image information as a set of the identifiers of the selected mapped range blocks.
9. A method for automatically generating a decoded image by a data processor from a set of identifiers, the data processor including a memory, the memory having a plurality of domain blocks each corresponding to a portion of an encoded image and each comprising locations specified by a memory address, each of the identifiers including an identifier address and each of the identifiers corresponding to a portion of the encoded image and to a domain block in the memory, the method comprising the steps, performed by a data processor, of:
a) storing a predetermined pattern of digital data in the memory;
b) choosing a location as a selected location;
c) storing the memory address of the selected location in a table;
d) finding a next identifier corresponding to a determined domain block containing the selected location;
e) determining, from the next identifier, a specified area of memory constituting a shrunken range block;
f) finding a target location in the shrunken range block having a position in the shrunken range block which corresponds to the position of the selected location in the determined domain block;
g) storing the memory address of the target location in the table and designating the memory address of the target location as the selected location;
h) repeating steps (c) through (g) until predetermined criteria are met;
i) determining decoded pixel values for locations of the table; and
j) repeating steps (c) through (i) until a desired portion of the encoded image is decoded.
10. A method as recited in claim 9 wherein step (h) comprises the substep of repeating steps (c) through (g) until the target address is equal to a memory address of a location stored in the table.
11. A method as recited in claim 9 wherein step (h) comprises the substep of repeating steps (c) through (g) a predetermined number of times.
12. A method as recited in claim 9 wherein step (h) comprises the substep of repeating steps (c) through (g) until decoded pixel values have been determined for all locations of all domain blocks have been determined.
13. Apparatus for automatically generating a decoded image from a set of identifiers each including an identifier address and each of the identifiers corresponding to a portion of the encoded image, the apparatus comprising:
input means for receiving data representative of the identifiers;
a memory having a plurality of domain blocks each corresponding to a portion of an encoded image and to one of the identifiers, and each comprising locations specified by a memory address;
processor means for:
a) storing a predetermined pattern of digital data in the memory;
b) choosing a location as a selected location;
c) storing the memory address of the selected location in a table;
d) finding a next identifier corresponding to a determined domain block containing the selected location;
e) determining, from the next identifier, a specified area of memory constituting a shrunken range block;
f) finding a target location in the shrunken range block having a position in the shrunken range block which corresponds to the position of the selected location in the determined domain block;
g) storing the memory address of the target location in the table and designating the memory address of the target location as the selected location;
h) repeating steps (c) through (g) until predetermined criteria are met;
i) determining decoded pixel values for locations of the table; and
j) repeating steps (b) through (i) until a desired portion of the encoded image is decoded; and
output means coupled to the processor means for supplying an output signal representative of the decoded image.
US07/781,586 1989-07-05 1991-10-23 Method and apparatus for compression and decompression of digital image data Expired - Lifetime US5347600A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US07/781,586 US5347600A (en) 1989-07-05 1991-10-23 Method and apparatus for compression and decompression of digital image data

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/375,840 US5065447A (en) 1989-07-05 1989-07-05 Method and apparatus for processing digital data
US07/781,586 US5347600A (en) 1989-07-05 1991-10-23 Method and apparatus for compression and decompression of digital image data

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US07/375,840 Continuation-In-Part US5065447A (en) 1989-07-05 1989-07-05 Method and apparatus for processing digital data

Publications (1)

Publication Number Publication Date
US5347600A true US5347600A (en) 1994-09-13

Family

ID=23482588

Family Applications (2)

Application Number Title Priority Date Filing Date
US07/375,840 Expired - Lifetime US5065447A (en) 1989-07-05 1989-07-05 Method and apparatus for processing digital data
US07/781,586 Expired - Lifetime US5347600A (en) 1989-07-05 1991-10-23 Method and apparatus for compression and decompression of digital image data

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US07/375,840 Expired - Lifetime US5065447A (en) 1989-07-05 1989-07-05 Method and apparatus for processing digital data

Country Status (12)

Country Link
US (2) US5065447A (en)
EP (1) EP0480941B1 (en)
JP (1) JP2968582B2 (en)
AT (1) ATE124585T1 (en)
AU (1) AU632333B2 (en)
BR (1) BR9007504A (en)
CA (1) CA2062965C (en)
DE (1) DE69020564T2 (en)
DK (1) DK0480941T3 (en)
ES (1) ES2076368T3 (en)
NO (1) NO301860B1 (en)
WO (1) WO1991000666A2 (en)

Cited By (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5510838A (en) * 1992-01-08 1996-04-23 Igp, Research And Development Ltd. Apparatus and method for picture representation by data compression
US5577183A (en) * 1994-03-18 1996-11-19 Hewlett-Packard Company Printer system that stores compressed font glyphs in data blocks and decompressed glyphs in each data block together using same decompression procedure
US5600572A (en) * 1994-03-25 1997-02-04 Thomson Consumer Electronics S.A. Method for transmission of variable-format images via low data rate transmission systems
US5673120A (en) * 1993-12-24 1997-09-30 Nec Corporation Image output device
US5701369A (en) * 1995-04-19 1997-12-23 Samsung Electronics Co., Ltd. Fractal image compression device and method
US5717788A (en) * 1995-04-18 1998-02-10 Iterated Systems, Inc. Method and system for analyzing data
US5721543A (en) * 1995-06-30 1998-02-24 Iterated Systems, Inc. System and method for modeling discrete data sequences
US5732157A (en) * 1993-12-15 1998-03-24 Canon Kabushiki Kaisha Image processing apparatus and method using lossless encoding of a difference between image blocks
US5740282A (en) * 1995-06-30 1998-04-14 Iterated Systems, Inc. System and method for contractive mapping resynchronization of a data transmission
US5745392A (en) * 1995-10-05 1998-04-28 Chevron U.S.A. Inc. Method for reducing data storage and transmission requirements for seismic data
US5768437A (en) * 1992-02-28 1998-06-16 Bri Tish Technology Group Ltd. Fractal coding of data
US5774357A (en) * 1991-12-23 1998-06-30 Hoffberg; Steven M. Human factored interface incorporating adaptive pattern recognition based controller apparatus
US5784554A (en) * 1993-05-28 1998-07-21 Apple Computer, Inc. Dynamic sampling profiler
US5822721A (en) * 1995-12-22 1998-10-13 Iterated Systems, Inc. Method and apparatus for fractal-excited linear predictive coding of digital signals
US5838832A (en) * 1995-04-03 1998-11-17 Iterated Systems, Inc. Method and system for representing a data set with a data transforming function and data mask
US5857036A (en) * 1996-03-04 1999-01-05 Iterated Systems, Inc. System and method for the fractal encoding of datastreams
US5862263A (en) * 1995-04-13 1999-01-19 Samsung Electronics Co., Ltd. Fractal image compression device and method using perceptual distortion measurement
US5867603A (en) * 1995-07-10 1999-02-02 Iterated Systems, Inc. Method for transmitting fractal transform data to support different compressor/decompressor designs
US5870502A (en) * 1996-04-08 1999-02-09 The Trustees Of Columbia University In The City Of New York System and method for a multiresolution transform of digital image information
US5875108A (en) * 1991-12-23 1999-02-23 Hoffberg; Steven M. Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
EP0910042A2 (en) * 1997-10-17 1999-04-21 Sony Corporation Method and apparatus for encoding or decoding digital video data
US5901246A (en) * 1995-06-06 1999-05-04 Hoffberg; Steven M. Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
US5917962A (en) * 1995-06-06 1999-06-29 Apple Computer, Inc. Method and apparatus for partitioning an image
US5924053A (en) * 1994-07-01 1999-07-13 Commonwealth Scientific And Industrial Research Organisation Fractal representation of data
US5926611A (en) * 1994-05-26 1999-07-20 Hughes Electronics Corporation High resolution digital recorder and method using lossy and lossless compression technique
US6055335A (en) * 1994-09-14 2000-04-25 Kabushiki Kaisha Toshiba Method and apparatus for image representation and/or reorientation
US6081750A (en) * 1991-12-23 2000-06-27 Hoffberg; Steven Mark Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
US6094453A (en) * 1996-10-11 2000-07-25 Digital Accelerator Corporation Digital data compression with quad-tree coding of header file
US6120451A (en) * 1998-12-31 2000-09-19 General Electric Company Ultrasound color flow display optimization by adjustment of threshold
US6126605A (en) * 1998-12-31 2000-10-03 General Electric Company Ultrasound color flow display optimization by adjusting dynamic range
US6198851B1 (en) 1997-09-22 2001-03-06 Sony Corporation Apparatus and method for encoding/decoding
US6201897B1 (en) 1998-11-09 2001-03-13 Earth Resource Mapping Transformation and selective inverse transformation of large digital images
US6272258B1 (en) * 1997-12-20 2001-08-07 Deutsche Thomson-Brandt Gmbh Method for fractal coding of video or audio signals
US20010048446A1 (en) * 2000-05-24 2001-12-06 Akira Ishida Rendering device
US6339659B1 (en) * 1997-10-28 2002-01-15 Sony Corporation Fractal coding/decoding of picture data using memory capacity information
US20020032787A1 (en) * 1998-07-08 2002-03-14 Overton John K. Method and apparatus for managing location information in a network
US6373989B1 (en) * 1997-10-22 2002-04-16 Sony Corporation Iterated image transformation and decoding apparatus and method, and recording medium
US20020048319A1 (en) * 2000-10-20 2002-04-25 Patrice Onno Method and device for processing and decoding a coded digital signal
US6400996B1 (en) 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
US6418424B1 (en) 1991-12-23 2002-07-09 Steven M. Hoffberg Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
US6480541B1 (en) 1996-11-27 2002-11-12 Realnetworks, Inc. Method and apparatus for providing scalable pre-compressed digital video with reduced quantization based artifacts
US6501862B1 (en) * 1998-04-03 2002-12-31 Sony Corporation Picture information processing method and apparatus and entertainment apparatus
KR100363244B1 (en) * 1995-06-30 2003-02-05 삼성전자 주식회사 Fractal decoding method
US6526178B1 (en) 1997-05-30 2003-02-25 Sony Corporation Picture mapping apparatus and picture mapping method, and picture generation apparatus and picture generation method
US6567563B2 (en) * 1997-12-29 2003-05-20 Samsung Electronics Co., Ltd. Video image searching method and apparatus
US20030169940A1 (en) * 2000-06-20 2003-09-11 University Of New Hampshire Method and apparatus for the compression and decompression of image files using a chaotic system
US6633682B1 (en) * 1999-06-21 2003-10-14 New York University Progressive fractal rendering
US6661904B1 (en) 1998-07-15 2003-12-09 Personalogo Method and system for automated electronic conveyance of hidden data
US6714145B1 (en) 2002-09-26 2004-03-30 Richard Marques Method and apparatus for integer-based encoding and decoding of bits
US20040071350A1 (en) * 2000-06-19 2004-04-15 Tinku Acharya Method of compressing an image
US20040084348A1 (en) * 2002-11-04 2004-05-06 Jonathan Nash Tortilla-packaging box and support apparatus
US6735740B2 (en) * 1997-09-08 2004-05-11 Fujitsu Limited Document composite image display method and device utilizing categorized partial images
US20040126033A1 (en) * 2002-11-13 2004-07-01 Fuji Xerox Co., Ltd. Image processing apparatus, image processing method, image processing program, and storage medium
US6775411B2 (en) 2002-10-18 2004-08-10 Alan D. Sloan Apparatus and method for image recognition
US6775415B1 (en) * 1999-05-25 2004-08-10 George Mason University Fractal image compression using reinforcement learning
US20040205055A1 (en) * 1997-01-13 2004-10-14 John Overton System and method for establishing and retrieving data based on global indices
US20050001855A1 (en) * 2003-07-02 2005-01-06 Eun-Sook Kang Method of and apparatus for enlarging image and printing enlarged image and computer-readable recording medium for storing computer program
US20050172154A1 (en) * 2004-01-29 2005-08-04 Chaoticom, Inc. Systems and methods for providing digital content and caller alerts to wireless network-enabled devices
US20050194661A1 (en) * 1996-11-14 2005-09-08 Micron Technology, Inc. Solvent prewet and method to dispense the solvent prewet
US20050226519A1 (en) * 2001-12-28 2005-10-13 Stmicroelectronics S.A. Fractal-coding addressing of reference block memories
US7046728B1 (en) 2000-06-30 2006-05-16 Intel Corporation Method of video coding the movement of a human face from a sequence of images
US7046862B2 (en) 2001-11-07 2006-05-16 Fuji Xerox Co., Ltd. Image processing apparatus and program
US7103640B1 (en) 1999-09-14 2006-09-05 Econnectix, Llc Network distributed tracking wire transfer protocol
US7215772B2 (en) 1999-11-09 2007-05-08 Chaoticom, Inc. Method and apparatus for remote digital key generation
US7215776B1 (en) 1999-11-09 2007-05-08 University Of New Hampshire Method and apparatus for the compression and decompression of audio files using a chaotic system
US7286670B2 (en) 1999-11-09 2007-10-23 Chaoticom, Inc. Method and apparatus for chaotic opportunistic lossless compression of data
US20080005275A1 (en) * 2000-06-02 2008-01-03 Econnectix, Llc Method and apparatus for managing location information in a network separate from the data to which the location information pertains
US20080147592A1 (en) * 2006-02-24 2008-06-19 Srinivasarao Nandiwada System and method for cross-carrier mobile device capability discovery
US20090194694A1 (en) * 2008-02-01 2009-08-06 Fujifilm Corporation Radiation detection apparatus and radiation image capturing system
US7714747B2 (en) 1998-12-11 2010-05-11 Realtime Data Llc Data compression systems and methods
US7777651B2 (en) 2000-10-03 2010-08-17 Realtime Data Llc System and method for data feed acceleration and encryption
US7792876B2 (en) * 2002-07-23 2010-09-07 Syniverse Icx Corporation Imaging system providing dynamic viewport layering
US7860309B1 (en) 2003-09-30 2010-12-28 Verisign, Inc. Media publishing system with methodology for parameterized rendering of image regions of interest
US7974714B2 (en) 1999-10-05 2011-07-05 Steven Mark Hoffberg Intelligent electronic appliance system and method
US20110216981A1 (en) * 2010-03-04 2011-09-08 Masaki Hiraga Partial expansion method of encoded images and image processing apparatus
US8054879B2 (en) 2001-02-13 2011-11-08 Realtime Data Llc Bandwidth sensitive data compression and decompression
US8090936B2 (en) 2000-02-03 2012-01-03 Realtime Data, Llc Systems and methods for accelerated loading of operating systems and application programs
US8145833B1 (en) * 2009-10-30 2012-03-27 CSR Technology Holdings Inc. Compression solution for embedded devices and systems
US8275897B2 (en) 1999-03-11 2012-09-25 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US8369967B2 (en) 1999-02-01 2013-02-05 Hoffberg Steven M Alarm system controller and a method for controlling an alarm system
US8504710B2 (en) 1999-03-11 2013-08-06 Realtime Data Llc System and methods for accelerated data storage and retrieval
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US8779950B2 (en) 2012-03-05 2014-07-15 Dcba, Llc Command encoded data compression
US8892495B2 (en) 1991-12-23 2014-11-18 Blanding Hovenweep, Llc Adaptive pattern recognition based controller apparatus and method and human-interface therefore
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US9286643B2 (en) 2011-03-01 2016-03-15 Applaud, Llc Personalized memory compilation for members of a group and collaborative method to build a memory compilation
US9361562B1 (en) * 2011-10-06 2016-06-07 AI Cure Technologies, Inc. Method and apparatus for fractal multilayered medication identification, authentication and adherence monitoring
US9543980B2 (en) 2014-10-10 2017-01-10 Massachusettes Institute Of Technology Systems and methods for model-free compression and model-based decompression
US20170097981A1 (en) * 2014-06-11 2017-04-06 Gurulogic Microsystems Oy Apparatus and method for data compression
US10361802B1 (en) 1999-02-01 2019-07-23 Blanding Hovenweep, Llc Adaptive pattern recognition based control system and method

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5218530A (en) * 1989-09-11 1993-06-08 Jastrzebski George B Method of displaying and analyzing nonlinear, dynamic brain signals
WO1992020183A2 (en) * 1991-04-25 1992-11-12 Unisys Corporation Method and apparatus for adaptively thresholding grayscale image data
US5262878A (en) * 1991-06-14 1993-11-16 General Instrument Corporation Method and apparatus for compressing digital still picture signals
US5271071A (en) * 1991-06-21 1993-12-14 Inds-Ops, Inc. Digital nonalgorithmic method of compressing data which represents addresses and values
US5384867A (en) * 1991-10-23 1995-01-24 Iterated Systems, Inc. Fractal transform compression board
US7242988B1 (en) * 1991-12-23 2007-07-10 Linda Irene Hoffberg Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
FR2685796A1 (en) * 1991-12-26 1993-07-02 Blanie Paul Coding process aimed at the organisation of information
US5396228A (en) * 1992-01-16 1995-03-07 Mobile Telecommunications Technologies Methods and apparatus for compressing and decompressing paging data
US5862262A (en) * 1992-03-30 1999-01-19 The United States Of America As Represented By The Secretary Of The Navy Method of encoding a digital image using adaptive partitioning in an iterated transformation system
US5416856A (en) * 1992-03-30 1995-05-16 The United States Of America As Represented By The Secretary Of The Navy Method of encoding a digital image using iterated image transformations to form an eventually contractive map
EP0567697A1 (en) * 1992-04-29 1993-11-03 Yiu Keung Chan Method for spatial domain image compression
KR0150955B1 (en) * 1992-05-27 1998-10-15 강진구 Compressive and extensive method of an image for bit-fixing and the apparatus thereof
US5420967A (en) * 1992-11-10 1995-05-30 International Business Machines Corporation Method and apparatus for the efficient generation of high quality images in a computer system utilizing an interconnected image state table
IL104636A (en) * 1993-02-07 1997-06-10 Oli V R Corp Ltd Apparatus and method for encoding and decoding digital signals
US5426594A (en) * 1993-04-02 1995-06-20 Motorola, Inc. Electronic greeting card store and communication system
JPH0778251A (en) * 1993-07-22 1995-03-20 Xerox Corp Verifying method of source
US5610657A (en) * 1993-09-14 1997-03-11 Envistech Inc. Video compression using an iterative error data coding method
US5513128A (en) * 1993-09-14 1996-04-30 Comsat Corporation Multispectral data compression using inter-band prediction
US5848198A (en) * 1993-10-08 1998-12-08 Penn; Alan Irvin Method of and apparatus for analyzing images and deriving binary image representations
AU1727495A (en) * 1994-01-14 1995-08-01 Houston Advanced Research Center Boundary-spline-wavelet compression for video images
US5502439A (en) * 1994-05-16 1996-03-26 The United States Of America As Represented By The United States Department Of Energy Method for compression of binary data
JP3167865B2 (en) * 1994-07-28 2001-05-21 株式会社半導体エネルギー研究所 Information processing device
US6707484B1 (en) 1994-07-28 2004-03-16 Semiconductor Energy Laboratory Co., Ltd. Information processing system
WO1996006494A2 (en) * 1994-08-12 1996-02-29 Neosoft, A.G. Nonlinear digital communications system
US5732158A (en) * 1994-11-23 1998-03-24 Tec-Masters, Inc. Fractal dimension analyzer and forecaster
US5754702A (en) * 1994-12-02 1998-05-19 Allied Signal Inc. Scale oriented interband prediction method for image data compression and reconstruction
US5848177A (en) * 1994-12-29 1998-12-08 Board Of Trustees Operating Michigan State University Method and system for detection of biological materials using fractal dimensions
US5754704A (en) * 1995-03-10 1998-05-19 Interated Systems, Inc. Method and apparatus for compressing and decompressing three-dimensional digital data using fractal transform
US5838833A (en) * 1995-06-30 1998-11-17 Minolta Co., Ltd. Fractal image compression method and device and fractal image restoration method and device
AU722172B2 (en) * 1995-08-24 2000-07-27 Canon Information Systems Research Australia Pty Ltd Method and apparatus for processing digital data
JP3855286B2 (en) * 1995-10-26 2006-12-06 ソニー株式会社 Image encoding device, image encoding method, image decoding device, image decoding method, and recording medium
WO1997027707A1 (en) 1996-01-22 1997-07-31 Matsushita Electric Industrial Co., Ltd. Digital image encoding and decoding method and digital image encoding and decoding device using the same
JPH09252468A (en) * 1996-03-15 1997-09-22 Minolta Co Ltd Image compression device
US7469237B2 (en) * 1996-05-02 2008-12-23 Cooper David L Method and apparatus for fractal computation
US6104834A (en) 1996-08-01 2000-08-15 Ricoh Company Limited Matching CCITT compressed document images
EP0827111A1 (en) 1996-08-30 1998-03-04 Canon Kabushiki Kaisha Methods and devices for processing a set of data
US5838820A (en) * 1997-04-30 1998-11-17 Bergman; Anthony J. Pattern recognition apparatus and method
US6321231B1 (en) 1997-08-11 2001-11-20 Marshall, O'toole, Gerstein, Murray & Borun Data management and order delivery system
FR2767999B1 (en) * 1997-08-29 2000-02-18 Canon Kk METHODS AND DEVICES FOR DATA PROCESSING AND IN PARTICULAR IMAGE COMPRESSION AND DECOMPRESSION
US6498866B2 (en) 1997-08-29 2002-12-24 Canon Kabushiki Kaisha Methods and devices for processing data and notably for compressing and decompressing images
FR2768889B1 (en) * 1997-09-23 1999-12-17 Canon Kk DEVICE AND METHOD FOR PROCESSING A SET OF DATA AND IN PARTICULAR COMPRESSION AND DECOMPRESSION OF IMAGE DATA
US6285794B1 (en) 1998-04-17 2001-09-04 Adobe Systems Incorporated Compression and editing of movies by multi-image morphing
JP3583924B2 (en) * 1998-05-11 2004-11-04 株式会社沖データ Resolution conversion method and conversion device
WO2000070546A1 (en) * 1999-05-19 2000-11-23 Advanced Testing Technologies, Inc. Unified analog/digital waveform software analysis tool with video and audio signal analysis methods
WO2001001579A1 (en) * 1999-06-28 2001-01-04 Micro-Technology Corporation Compressed code generating method and compressed code decompressing method
US9843447B1 (en) 1999-09-09 2017-12-12 Secure Axcess Llc Authenticating electronic content
US7046851B2 (en) * 2000-11-08 2006-05-16 California Institute Of Technology Image and video indexing scheme for content analysis
JP3932379B2 (en) * 2001-10-02 2007-06-20 株式会社日立製作所 Image processing apparatus and image sensor
US20040100641A1 (en) * 2002-02-20 2004-05-27 Glenn Paul Wireless click-and-deliver camera system
JP3882651B2 (en) 2002-03-20 2007-02-21 富士ゼロックス株式会社 Image processing apparatus and program
US20050131660A1 (en) * 2002-09-06 2005-06-16 Joseph Yadegar Method for content driven image compression
US20040202357A1 (en) 2003-04-11 2004-10-14 Perz Cynthia B. Silhouette image acquisition
JP2004357154A (en) * 2003-05-30 2004-12-16 Minolta Co Ltd Data processing unit
US7983446B2 (en) * 2003-07-18 2011-07-19 Lockheed Martin Corporation Method and apparatus for automatic object identification
US20080097991A1 (en) * 2004-08-02 2008-04-24 Hiroshi Ishikawa Method and Apparatus for Automatic Pattern Analysis
US20060129729A1 (en) * 2004-12-10 2006-06-15 Hongjun Yuan Local bus architecture for video codec
JP2007241409A (en) * 2006-03-06 2007-09-20 Fuji Xerox Co Ltd Image processor
JP4760468B2 (en) * 2006-03-23 2011-08-31 カシオ計算機株式会社 Image processing apparatus and image processing method
JP4157568B2 (en) * 2006-04-11 2008-10-01 株式会社東芝 Method and apparatus for increasing image resolution
US7689620B2 (en) * 2006-05-24 2010-03-30 Sizhe Tan Efficiently and systematically searching stock, image, and other non-word-based documents
KR100809699B1 (en) * 2006-08-25 2008-03-07 삼성전자주식회사 Display data driving apparatus, data output apparatus and Display data driving method
US8041136B2 (en) * 2008-04-21 2011-10-18 Brainscope Company, Inc. System and method for signal processing using fractal dimension analysis
US9183601B2 (en) * 2010-03-22 2015-11-10 Ai Cure Technologies Llc Method and apparatus for collection of protocol adherence data
US9256776B2 (en) 2009-11-18 2016-02-09 AI Cure Technologies, Inc. Method and apparatus for identification
US10762172B2 (en) 2010-10-05 2020-09-01 Ai Cure Technologies Llc Apparatus and method for object confirmation and tracking
US8605165B2 (en) 2010-10-06 2013-12-10 Ai Cure Technologies Llc Apparatus and method for assisting monitoring of medication adherence
US8666781B2 (en) 2009-12-23 2014-03-04 Ai Cure Technologies, LLC Method and apparatus for management of clinical trials
US20110153360A1 (en) 2009-12-23 2011-06-23 Al Cure Technologies LLC Method and Apparatus for Verification of Clinical Trial Adherence
US20110119073A1 (en) 2009-11-18 2011-05-19 Al Cure Technologies LLC Method and Apparatus for Verification of Medication Administration Adherence
US9293060B2 (en) 2010-05-06 2016-03-22 Ai Cure Technologies Llc Apparatus and method for recognition of patient activities when obtaining protocol adherence data
US9344735B2 (en) * 2009-12-21 2016-05-17 Tmm, Inc. Progressive shape based encoding of video content within a swarm environment
US9118922B2 (en) 2009-12-30 2015-08-25 TMM Inc. Progressive encoding of video content within a swarm environment
US9883786B2 (en) 2010-05-06 2018-02-06 Aic Innovations Group, Inc. Method and apparatus for recognition of inhaler actuation
US9875666B2 (en) 2010-05-06 2018-01-23 Aic Innovations Group, Inc. Apparatus and method for recognition of patient activities
US10116903B2 (en) 2010-05-06 2018-10-30 Aic Innovations Group, Inc. Apparatus and method for recognition of suspicious activities
US8472737B2 (en) 2010-09-30 2013-06-25 The Charles Stark Draper Laboratory, Inc. Attitude estimation in compressed domain
US8472736B2 (en) 2010-09-30 2013-06-25 The Charles Stark Draper Laboratory, Inc. Attitude estimation by reducing noise with dragback
US8472735B2 (en) 2010-09-30 2013-06-25 The Charles Stark Draper Laboratory, Inc. Attitude estimation with compressive sampling of starfield data
US8639053B2 (en) 2011-01-18 2014-01-28 Dimension, Inc. Methods and systems for up-scaling a standard definition (SD) video to high definition (HD) quality
US9116553B2 (en) 2011-02-28 2015-08-25 AI Cure Technologies, Inc. Method and apparatus for confirmation of object positioning
US9665767B2 (en) 2011-02-28 2017-05-30 Aic Innovations Group, Inc. Method and apparatus for pattern tracking
US8655617B1 (en) 2011-07-18 2014-02-18 Advanced Testing Technologies, Inc. Method and system for validating video waveforms and other electrical signals
US8788228B1 (en) 2011-07-18 2014-07-22 Advanced Testing Technologies, Inc. Method and system for validating video waveforms and other electrical signals
US10558845B2 (en) 2011-08-21 2020-02-11 Aic Innovations Group, Inc. Apparatus and method for determination of medication location
US9290010B2 (en) 2011-10-06 2016-03-22 AI Cure Technologies, Inc. Method and apparatus for fractal identification
US8720790B2 (en) 2011-10-06 2014-05-13 AI Cure Technologies, Inc. Method and apparatus for fractal identification
EP2761536A4 (en) * 2011-10-06 2016-04-13 Ai Cure Technologies Inc Method and apparatus for fractal identification
US8712147B2 (en) 2012-02-03 2014-04-29 Harris Corporation Fractal method for detecting and filling data gaps within LiDAR data
US9399111B1 (en) 2013-03-15 2016-07-26 Aic Innovations Group, Inc. Method and apparatus for emotional behavior therapy
US9317916B1 (en) 2013-04-12 2016-04-19 Aic Innovations Group, Inc. Apparatus and method for recognition of medication administration indicator
US9436851B1 (en) 2013-05-07 2016-09-06 Aic Innovations Group, Inc. Geometric encrypted coded image
US9417357B2 (en) 2013-09-26 2016-08-16 Harris Corporation Method for hydrocarbon recovery with change detection and related apparatus
US10006271B2 (en) 2013-09-26 2018-06-26 Harris Corporation Method for hydrocarbon recovery with a fractal pattern and related apparatus
US9824297B1 (en) 2013-10-02 2017-11-21 Aic Innovations Group, Inc. Method and apparatus for medication identification
US9679113B2 (en) 2014-06-11 2017-06-13 Aic Innovations Group, Inc. Medication adherence monitoring system and method
US9836631B1 (en) * 2015-04-26 2017-12-05 Aic Innovations Group, Inc. Method and apparatus for fractal identification
US10129559B2 (en) * 2016-06-22 2018-11-13 Microsoft Technology Licensing, Llc Image compression
US10200113B2 (en) 2017-01-17 2019-02-05 Harris Corporation System for monitoring marine vessels providing expected passenger determination features and related methods
US10302769B2 (en) 2017-01-17 2019-05-28 Harris Corporation System for monitoring marine vessels using fractal processing of aerial imagery and related methods
US10399650B2 (en) 2017-01-17 2019-09-03 Harris Corporation System for monitoring marine vessels and determining rendezvouses therebetween and related methods
WO2019060367A1 (en) 2017-09-19 2019-03-28 Adam Hanina Apparatus and method for recognition of suspicious activities

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4442454A (en) * 1982-11-15 1984-04-10 Eastman Kodak Company Image processing method using a block overlap transformation procedure
US4694407A (en) * 1985-06-11 1987-09-15 Rca Corporation Fractal generation, as for video graphic displays
US4941193A (en) * 1987-10-02 1990-07-10 Iterated Systems, Inc. Methods and apparatus for image compression by iterated function system
US5093872A (en) * 1987-11-09 1992-03-03 Interand Corporation Electronic image compression method and apparatus using interlocking digitate geometric sub-areas to improve the quality of reconstructed images

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3215773A (en) * 1962-05-14 1965-11-02 Philco Corp Reduced bandwidth data transmission system
JPS5214112B2 (en) * 1973-02-22 1977-04-19
US4281312A (en) * 1975-11-04 1981-07-28 Massachusetts Institute Of Technology System to effect digital encoding of an image
JPH0824341B2 (en) * 1985-10-28 1996-03-06 株式会社日立製作所 Image data encoding method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4442454A (en) * 1982-11-15 1984-04-10 Eastman Kodak Company Image processing method using a block overlap transformation procedure
US4694407A (en) * 1985-06-11 1987-09-15 Rca Corporation Fractal generation, as for video graphic displays
US4941193A (en) * 1987-10-02 1990-07-10 Iterated Systems, Inc. Methods and apparatus for image compression by iterated function system
US5093872A (en) * 1987-11-09 1992-03-03 Interand Corporation Electronic image compression method and apparatus using interlocking digitate geometric sub-areas to improve the quality of reconstructed images

Non-Patent Citations (31)

* Cited by examiner, † Cited by third party
Title
A Better Way to Compress Images, by Barnsley et al., Byte Magazine, Jan. 1988. *
A New Class of Markov Processes for Image Encoding, School of Mathematics, Georgia Inst. of Technology (1988), pp. 14 32. *
A New Class of Markov Processes for Image Encoding, School of Mathematics, Georgia Inst. of Technology (1988), pp. 14-32.
An Ergodic Theorem for Iterated Maps, Ergodic Theory and Dynamical Systems, 7 (1987). *
Barnsley et al. "Harnessing Chaos for Image Synthesis", Computer Graphics vol. 22, No. 4 Aug. 1988.
Barnsley et al. Harnessing Chaos for Image Synthesis , Computer Graphics vol. 22, No. 4 Aug. 1988. *
Chaotic Compression, by Barnsley et al., Computer Graphics World, Nov. 1987. *
Construction of Fractal Objects with Iterated Function Systems, Siggraph 85 Proceedings, vol. 19, No. 3, 271 278 (1985). *
Construction of Fractal Objects with Iterated Function Systems, Siggraph '85 Proceedings, vol. 19, No. 3, 271-278 (1985).
Data Compression: Pntng by Numbrs The Economist, May 21, 1988. *
Fractal Geometry Understanding Chaos, Georgia Tech Alumni Magazine, p. 16 (Spring 1986). *
Fractal Geometry-Understanding Chaos, Georgia Tech Alumni Magazine, p. 16 (Spring 1986).
Fractal Modelling of Biological Structures, Perspectives in Biological Dynamics and Theoretical Medicine, Koslow, Mandell, Shlesinger, eds., Annals of New York Academy of Sciences, vol. 504, 179 194. (date unknown). *
Fractal Modelling of Biological Structures, Perspectives in Biological Dynamics and Theoretical Medicine, Koslow, Mandell, Shlesinger, eds., Annals of New York Academy of Sciences, vol. 504, 179-194. (date unknown).
Fractal Modelling of Biological Structures, School of Mathematics, Georgia Institute of Technology (Date Unknown). *
Fractal Modelling of Real World Images, Lecture Notes for Fractals: Introduction, Basics and Perspectives, Siggraph (1987). *
Fractals A Geometry of Nature, Georgia Institute of Technology Research Horizons, p. 9 (Spring 1986). *
Fractals-A Geometry of Nature, Georgia Institute of Technology Research Horizons, p. 9 (Spring 1986).
Harnessing chaos For Images Systhesis, by Barnsley et al., Computer Graphics, vol. 22, No. 4, Aug. 1988. *
Iterated Function Systems and The Global Construction of Fractals, Proc. R. Soc. Lond., A399, 243 275 (1985). *
Iterated Function Systems and The Global Construction of Fractals, Proc. R. Soc. Lond., A399, 243-275 (1985).
Jacquin, A. E. "A Novel Fractal Block Coding Technique for Digital Images" ICASSP 90. 1990 (Apr.) Int'l Conf. on Acoustics, Speech, and Signal Processing (cat. No. 90CH2847-2).
Jacquin, A. E. A Novel Fractal Block Coding Technique for Digital Images ICASSP 90. 1990 (Apr.) Int l Conf. on Acoustics, Speech, and Signal Processing (cat. No. 90CH2847 2). *
Just the Bare Facts, Please, by William Baldwin, Forbes Magazine, Dec. 12, 1988. *
Making A New Science, pp. 215, 239, by James Gleick (date unknown). *
Packing It In by Ivars Peterson, Science News, vol. 131, No. 18, p. 283, May 2, 1987. *
Packing It In Fractals . . . , Science News, vol. 131, No. 18, pp. 283 285, May 2, 1987. *
Packing It In-Fractals . . . , Science News, vol. 131, No. 18, pp. 283-285, May 2, 1987.
Researchers Use Fractal Geometry . . . , by Skip Derra, Research and Development Magazine, Mar. 1988. *
Solution of an Inverse Problem for Fractals and Other Sets, Proc. Natl. Acad. Sci. USA, vol. 83, 1975 1977 (Apr. 1986). *
Solution of an Inverse Problem for Fractals and Other Sets, Proc. Natl. Acad. Sci. USA, vol. 83, 1975-1977 (Apr. 1986).

Cited By (155)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8046313B2 (en) 1991-12-23 2011-10-25 Hoffberg Steven M Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
US5875108A (en) * 1991-12-23 1999-02-23 Hoffberg; Steven M. Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
US6418424B1 (en) 1991-12-23 2002-07-09 Steven M. Hoffberg Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
US5867386A (en) * 1991-12-23 1999-02-02 Hoffberg; Steven M. Morphological pattern recognition based controller system
US8892495B2 (en) 1991-12-23 2014-11-18 Blanding Hovenweep, Llc Adaptive pattern recognition based controller apparatus and method and human-interface therefore
US6081750A (en) * 1991-12-23 2000-06-27 Hoffberg; Steven Mark Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
US5774357A (en) * 1991-12-23 1998-06-30 Hoffberg; Steven M. Human factored interface incorporating adaptive pattern recognition based controller apparatus
US5510838A (en) * 1992-01-08 1996-04-23 Igp, Research And Development Ltd. Apparatus and method for picture representation by data compression
US5768437A (en) * 1992-02-28 1998-06-16 Bri Tish Technology Group Ltd. Fractal coding of data
US5784554A (en) * 1993-05-28 1998-07-21 Apple Computer, Inc. Dynamic sampling profiler
US5732157A (en) * 1993-12-15 1998-03-24 Canon Kabushiki Kaisha Image processing apparatus and method using lossless encoding of a difference between image blocks
US5673120A (en) * 1993-12-24 1997-09-30 Nec Corporation Image output device
US5577183A (en) * 1994-03-18 1996-11-19 Hewlett-Packard Company Printer system that stores compressed font glyphs in data blocks and decompressed glyphs in each data block together using same decompression procedure
US5600572A (en) * 1994-03-25 1997-02-04 Thomson Consumer Electronics S.A. Method for transmission of variable-format images via low data rate transmission systems
US5926611A (en) * 1994-05-26 1999-07-20 Hughes Electronics Corporation High resolution digital recorder and method using lossy and lossless compression technique
US5924053A (en) * 1994-07-01 1999-07-13 Commonwealth Scientific And Industrial Research Organisation Fractal representation of data
US6055335A (en) * 1994-09-14 2000-04-25 Kabushiki Kaisha Toshiba Method and apparatus for image representation and/or reorientation
US6275615B1 (en) 1994-09-14 2001-08-14 Kabushiki Kaisha Toshiba Method and apparatus for image representation and/or reorientation
US5838832A (en) * 1995-04-03 1998-11-17 Iterated Systems, Inc. Method and system for representing a data set with a data transforming function and data mask
US5862263A (en) * 1995-04-13 1999-01-19 Samsung Electronics Co., Ltd. Fractal image compression device and method using perceptual distortion measurement
US5717788A (en) * 1995-04-18 1998-02-10 Iterated Systems, Inc. Method and system for analyzing data
US5701369A (en) * 1995-04-19 1997-12-23 Samsung Electronics Co., Ltd. Fractal image compression device and method
US5917962A (en) * 1995-06-06 1999-06-29 Apple Computer, Inc. Method and apparatus for partitioning an image
US5901246A (en) * 1995-06-06 1999-05-04 Hoffberg; Steven M. Ergonomic man-machine interface incorporating adaptive pattern recognition based control system
KR100363244B1 (en) * 1995-06-30 2003-02-05 삼성전자 주식회사 Fractal decoding method
US5721543A (en) * 1995-06-30 1998-02-24 Iterated Systems, Inc. System and method for modeling discrete data sequences
US5740282A (en) * 1995-06-30 1998-04-14 Iterated Systems, Inc. System and method for contractive mapping resynchronization of a data transmission
US5867603A (en) * 1995-07-10 1999-02-02 Iterated Systems, Inc. Method for transmitting fractal transform data to support different compressor/decompressor designs
US5745392A (en) * 1995-10-05 1998-04-28 Chevron U.S.A. Inc. Method for reducing data storage and transmission requirements for seismic data
US5822721A (en) * 1995-12-22 1998-10-13 Iterated Systems, Inc. Method and apparatus for fractal-excited linear predictive coding of digital signals
US5857036A (en) * 1996-03-04 1999-01-05 Iterated Systems, Inc. System and method for the fractal encoding of datastreams
US5870502A (en) * 1996-04-08 1999-02-09 The Trustees Of Columbia University In The City Of New York System and method for a multiresolution transform of digital image information
US5946417A (en) * 1996-04-08 1999-08-31 The Trustees Of Columbia University In The City Of New York System and method for a multiresolution transform of digital image information
US6094453A (en) * 1996-10-11 2000-07-25 Digital Accelerator Corporation Digital data compression with quad-tree coding of header file
US20050194661A1 (en) * 1996-11-14 2005-09-08 Micron Technology, Inc. Solvent prewet and method to dispense the solvent prewet
US6480541B1 (en) 1996-11-27 2002-11-12 Realnetworks, Inc. Method and apparatus for providing scalable pre-compressed digital video with reduced quantization based artifacts
US7075986B2 (en) 1996-11-27 2006-07-11 Realnetworks, Inc. Method and apparatus for providing scalable pre-compressed digital video with reduced quantization based artifacts
US20030072370A1 (en) * 1996-11-27 2003-04-17 Realnetworks, Inc. Method and apparatus for providing scalable pre-compressed digital video with reduced quantization based artifacts (continuation)
US20040205055A1 (en) * 1997-01-13 2004-10-14 John Overton System and method for establishing and retrieving data based on global indices
US7814169B2 (en) 1997-01-13 2010-10-12 Econnectix, Llc System and method for establishing and retrieving data based on global indices
US6526178B1 (en) 1997-05-30 2003-02-25 Sony Corporation Picture mapping apparatus and picture mapping method, and picture generation apparatus and picture generation method
US6735740B2 (en) * 1997-09-08 2004-05-11 Fujitsu Limited Document composite image display method and device utilizing categorized partial images
US6198851B1 (en) 1997-09-22 2001-03-06 Sony Corporation Apparatus and method for encoding/decoding
EP0910042A3 (en) * 1997-10-17 2000-03-08 Sony Corporation Method and apparatus for encoding or decoding digital video data
EP0910042A2 (en) * 1997-10-17 1999-04-21 Sony Corporation Method and apparatus for encoding or decoding digital video data
US6356667B1 (en) 1997-10-17 2002-03-12 Sony Corporation Encoding apparatus and method, decoding apparatus and method and recording medium
US6373989B1 (en) * 1997-10-22 2002-04-16 Sony Corporation Iterated image transformation and decoding apparatus and method, and recording medium
US6339659B1 (en) * 1997-10-28 2002-01-15 Sony Corporation Fractal coding/decoding of picture data using memory capacity information
US6272258B1 (en) * 1997-12-20 2001-08-07 Deutsche Thomson-Brandt Gmbh Method for fractal coding of video or audio signals
US6567563B2 (en) * 1997-12-29 2003-05-20 Samsung Electronics Co., Ltd. Video image searching method and apparatus
US6501862B1 (en) * 1998-04-03 2002-12-31 Sony Corporation Picture information processing method and apparatus and entertainment apparatus
US7814170B2 (en) 1998-07-08 2010-10-12 Econnectix Corporation Network distributed tracking wire transfer protocol
US20070011267A1 (en) * 1998-07-08 2007-01-11 Econnectix, Llc Network distributed tracking wire transfer protocol
US7233978B2 (en) 1998-07-08 2007-06-19 Econnectix, Llc Method and apparatus for managing location information in a network separate from the data to which the location information pertains
US20020032787A1 (en) * 1998-07-08 2002-03-14 Overton John K. Method and apparatus for managing location information in a network
US20040123134A1 (en) * 1998-07-15 2004-06-24 Sasich Philip S. Method and system for electronic conveyance of data in a secure manner
US6661904B1 (en) 1998-07-15 2003-12-09 Personalogo Method and system for automated electronic conveyance of hidden data
US6442298B1 (en) 1998-11-09 2002-08-27 Earth Resource Mapping, Limited Transformation and selective inverse transformation of large digital images
US6201897B1 (en) 1998-11-09 2001-03-13 Earth Resource Mapping Transformation and selective inverse transformation of large digital images
US10033405B2 (en) 1998-12-11 2018-07-24 Realtime Data Llc Data compression systems and method
US8643513B2 (en) 1998-12-11 2014-02-04 Realtime Data Llc Data compression systems and methods
US9054728B2 (en) 1998-12-11 2015-06-09 Realtime Data, Llc Data compression systems and methods
US8933825B2 (en) 1998-12-11 2015-01-13 Realtime Data Llc Data compression systems and methods
US8502707B2 (en) 1998-12-11 2013-08-06 Realtime Data, Llc Data compression systems and methods
US7714747B2 (en) 1998-12-11 2010-05-11 Realtime Data Llc Data compression systems and methods
US8717203B2 (en) 1998-12-11 2014-05-06 Realtime Data, Llc Data compression systems and methods
US6126605A (en) * 1998-12-31 2000-10-03 General Electric Company Ultrasound color flow display optimization by adjusting dynamic range
US6120451A (en) * 1998-12-31 2000-09-19 General Electric Company Ultrasound color flow display optimization by adjustment of threshold
US9535563B2 (en) 1999-02-01 2017-01-03 Blanding Hovenweep, Llc Internet appliance system and method
US10361802B1 (en) 1999-02-01 2019-07-23 Blanding Hovenweep, Llc Adaptive pattern recognition based control system and method
US6640145B2 (en) 1999-02-01 2003-10-28 Steven Hoffberg Media recording device with packet data interface
US8369967B2 (en) 1999-02-01 2013-02-05 Hoffberg Steven M Alarm system controller and a method for controlling an alarm system
US8583263B2 (en) 1999-02-01 2013-11-12 Steven M. Hoffberg Internet appliance system and method
US6400996B1 (en) 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
US8275897B2 (en) 1999-03-11 2012-09-25 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US10019458B2 (en) 1999-03-11 2018-07-10 Realtime Data Llc System and methods for accelerated data storage and retrieval
US8504710B2 (en) 1999-03-11 2013-08-06 Realtime Data Llc System and methods for accelerated data storage and retrieval
US8719438B2 (en) 1999-03-11 2014-05-06 Realtime Data Llc System and methods for accelerated data storage and retrieval
US8756332B2 (en) 1999-03-11 2014-06-17 Realtime Data Llc System and methods for accelerated data storage and retrieval
US9116908B2 (en) 1999-03-11 2015-08-25 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6775415B1 (en) * 1999-05-25 2004-08-10 George Mason University Fractal image compression using reinforcement learning
US6633682B1 (en) * 1999-06-21 2003-10-14 New York University Progressive fractal rendering
US7103640B1 (en) 1999-09-14 2006-09-05 Econnectix, Llc Network distributed tracking wire transfer protocol
US7974714B2 (en) 1999-10-05 2011-07-05 Steven Mark Hoffberg Intelligent electronic appliance system and method
US7215772B2 (en) 1999-11-09 2007-05-08 Chaoticom, Inc. Method and apparatus for remote digital key generation
US7286670B2 (en) 1999-11-09 2007-10-23 Chaoticom, Inc. Method and apparatus for chaotic opportunistic lossless compression of data
US20070208791A1 (en) * 1999-11-09 2007-09-06 University Of New Hampshire Method and apparatus for the compression and decompression of audio files using a chaotic system
US7440570B2 (en) 1999-11-09 2008-10-21 Groove Mobile, Inc. Method and apparatus for remote digital key generation
US7215776B1 (en) 1999-11-09 2007-05-08 University Of New Hampshire Method and apparatus for the compression and decompression of audio files using a chaotic system
US20070177730A1 (en) * 1999-11-09 2007-08-02 Short Kevin M Method and apparatus for remote digital key generation
US8880862B2 (en) 2000-02-03 2014-11-04 Realtime Data, Llc Systems and methods for accelerated loading of operating systems and application programs
US9792128B2 (en) 2000-02-03 2017-10-17 Realtime Data, Llc System and method for electrical boot-device-reset signals
US8112619B2 (en) 2000-02-03 2012-02-07 Realtime Data Llc Systems and methods for accelerated loading of operating systems and application programs
US8090936B2 (en) 2000-02-03 2012-01-03 Realtime Data, Llc Systems and methods for accelerated loading of operating systems and application programs
US20010048446A1 (en) * 2000-05-24 2001-12-06 Akira Ishida Rendering device
US20080005275A1 (en) * 2000-06-02 2008-01-03 Econnectix, Llc Method and apparatus for managing location information in a network separate from the data to which the location information pertains
US6738520B1 (en) * 2000-06-19 2004-05-18 Intel Corporation Method of compressing an image
US20040071350A1 (en) * 2000-06-19 2004-04-15 Tinku Acharya Method of compressing an image
US7110547B2 (en) * 2000-06-20 2006-09-19 University Of New Hampshire Method and apparatus for the compression and decompression of image files using a chaotic system
US20070053517A1 (en) * 2000-06-20 2007-03-08 University Of New Hampshire Method and apparatus for the compression and decompression of image files using a chaotic system
US20030169940A1 (en) * 2000-06-20 2003-09-11 University Of New Hampshire Method and apparatus for the compression and decompression of image files using a chaotic system
US7046728B1 (en) 2000-06-30 2006-05-16 Intel Corporation Method of video coding the movement of a human face from a sequence of images
US8723701B2 (en) 2000-10-03 2014-05-13 Realtime Data Llc Methods for encoding and decoding data
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US9967368B2 (en) 2000-10-03 2018-05-08 Realtime Data Llc Systems and methods for data block decompression
US10419021B2 (en) 2000-10-03 2019-09-17 Realtime Data, Llc Systems and methods of data compression
US9859919B2 (en) 2000-10-03 2018-01-02 Realtime Data Llc System and method for data compression
US8742958B2 (en) 2000-10-03 2014-06-03 Realtime Data Llc Methods for encoding and decoding data
US9141992B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc Data feed acceleration
US7777651B2 (en) 2000-10-03 2010-08-17 Realtime Data Llc System and method for data feed acceleration and encryption
US9667751B2 (en) 2000-10-03 2017-05-30 Realtime Data, Llc Data feed acceleration
US8717204B2 (en) 2000-10-03 2014-05-06 Realtime Data Llc Methods for encoding and decoding data
US10284225B2 (en) 2000-10-03 2019-05-07 Realtime Data, Llc Systems and methods for data compression
US7382923B2 (en) * 2000-10-20 2008-06-03 Canon Kabushiki Kaisha Method and device for processing and decoding a coded digital signal
US20020048319A1 (en) * 2000-10-20 2002-04-25 Patrice Onno Method and device for processing and decoding a coded digital signal
US8934535B2 (en) 2001-02-13 2015-01-13 Realtime Data Llc Systems and methods for video and audio data storage and distribution
US8553759B2 (en) 2001-02-13 2013-10-08 Realtime Data, Llc Bandwidth sensitive data compression and decompression
US8073047B2 (en) 2001-02-13 2011-12-06 Realtime Data, Llc Bandwidth sensitive data compression and decompression
US9762907B2 (en) 2001-02-13 2017-09-12 Realtime Adaptive Streaming, LLC System and methods for video and audio data distribution
US9769477B2 (en) 2001-02-13 2017-09-19 Realtime Adaptive Streaming, LLC Video data compression systems
US8054879B2 (en) 2001-02-13 2011-11-08 Realtime Data Llc Bandwidth sensitive data compression and decompression
US10212417B2 (en) 2001-02-13 2019-02-19 Realtime Adaptive Streaming Llc Asymmetric data decompression systems
US8929442B2 (en) 2001-02-13 2015-01-06 Realtime Data, Llc System and methods for video and audio data distribution
US8867610B2 (en) 2001-02-13 2014-10-21 Realtime Data Llc System and methods for video and audio data distribution
US7046862B2 (en) 2001-11-07 2006-05-16 Fuji Xerox Co., Ltd. Image processing apparatus and program
US7480415B2 (en) * 2001-12-28 2009-01-20 Stmicroelectronics S.A. Fractal-coding addressing of reference block memories
US20050226519A1 (en) * 2001-12-28 2005-10-13 Stmicroelectronics S.A. Fractal-coding addressing of reference block memories
US7792876B2 (en) * 2002-07-23 2010-09-07 Syniverse Icx Corporation Imaging system providing dynamic viewport layering
US6714145B1 (en) 2002-09-26 2004-03-30 Richard Marques Method and apparatus for integer-based encoding and decoding of bits
US6775411B2 (en) 2002-10-18 2004-08-10 Alan D. Sloan Apparatus and method for image recognition
US20040084348A1 (en) * 2002-11-04 2004-05-06 Jonathan Nash Tortilla-packaging box and support apparatus
US7526137B2 (en) * 2002-11-13 2009-04-28 Fuji Xerox Co., Ltd. Image processing apparatus, image processing method, image processing program, and storage medium
US20040126033A1 (en) * 2002-11-13 2004-07-01 Fuji Xerox Co., Ltd. Image processing apparatus, image processing method, image processing program, and storage medium
US20050001855A1 (en) * 2003-07-02 2005-01-06 Eun-Sook Kang Method of and apparatus for enlarging image and printing enlarged image and computer-readable recording medium for storing computer program
US7860309B1 (en) 2003-09-30 2010-12-28 Verisign, Inc. Media publishing system with methodology for parameterized rendering of image regions of interest
US20050172154A1 (en) * 2004-01-29 2005-08-04 Chaoticom, Inc. Systems and methods for providing digital content and caller alerts to wireless network-enabled devices
US20080147674A1 (en) * 2006-02-24 2008-06-19 Srinivasarao Nandiwada System and method for managing distribution of multi-formatted content
US7610551B2 (en) 2006-02-24 2009-10-27 Verisign, Inc. System and method for managing distribution of multi-formatted content
US7974988B2 (en) 2006-02-24 2011-07-05 Syniverse Icx Corporation System and method for cross-carrier mobile device capability discovery
US20080147592A1 (en) * 2006-02-24 2008-06-19 Srinivasarao Nandiwada System and method for cross-carrier mobile device capability discovery
US20090194694A1 (en) * 2008-02-01 2009-08-06 Fujifilm Corporation Radiation detection apparatus and radiation image capturing system
US8423711B1 (en) * 2009-10-30 2013-04-16 Cambridge Silicon Radio Limited Compression solution for embedded devices and systems
US8145833B1 (en) * 2009-10-30 2012-03-27 CSR Technology Holdings Inc. Compression solution for embedded devices and systems
US9760251B2 (en) 2010-03-04 2017-09-12 Morpho, Inc. Partial expansion method of encoded images and image processing apparatus
US8532406B2 (en) * 2010-03-04 2013-09-10 Morpho, Inc. Partial expansion method of encoded images and image processing apparatus
US9275474B2 (en) * 2010-03-04 2016-03-01 Morpho, Inc. Partial expansion method of encoded images and image processing apparatus
CN102196260A (en) * 2010-03-04 2011-09-21 株式会社摩如富 Partial expansion method of encoded images and image processing apparatus
US20110216981A1 (en) * 2010-03-04 2011-09-08 Masaki Hiraga Partial expansion method of encoded images and image processing apparatus
US10346512B2 (en) 2011-03-01 2019-07-09 Applaud, Llc Personalized memory compilation for members of a group and collaborative method to build a memory compilation
US9286643B2 (en) 2011-03-01 2016-03-15 Applaud, Llc Personalized memory compilation for members of a group and collaborative method to build a memory compilation
US9361562B1 (en) * 2011-10-06 2016-06-07 AI Cure Technologies, Inc. Method and apparatus for fractal multilayered medication identification, authentication and adherence monitoring
US8779950B2 (en) 2012-03-05 2014-07-15 Dcba, Llc Command encoded data compression
US20170097981A1 (en) * 2014-06-11 2017-04-06 Gurulogic Microsystems Oy Apparatus and method for data compression
US9543980B2 (en) 2014-10-10 2017-01-10 Massachusettes Institute Of Technology Systems and methods for model-free compression and model-based decompression

Also Published As

Publication number Publication date
JP2968582B2 (en) 1999-10-25
US5065447A (en) 1991-11-12
JPH04506437A (en) 1992-11-05
EP0480941A1 (en) 1992-04-22
WO1991000666A3 (en) 1991-02-21
ES2076368T3 (en) 1995-11-01
DE69020564D1 (en) 1995-08-03
CA2062965A1 (en) 1991-01-06
BR9007504A (en) 1992-06-23
NO301860B1 (en) 1997-12-15
CA2062965C (en) 2000-08-08
DK0480941T3 (en) 1995-11-20
EP0480941B1 (en) 1995-06-28
AU632333B2 (en) 1992-12-24
NO920028D0 (en) 1992-01-02
NO920028L (en) 1992-03-05
WO1991000666A2 (en) 1991-01-10
AU5734590A (en) 1991-01-17
ATE124585T1 (en) 1995-07-15
DE69020564T2 (en) 1995-10-26

Similar Documents

Publication Publication Date Title
US5347600A (en) Method and apparatus for compression and decompression of digital image data
AU700265B2 (en) Method and system for representing a data set with a data transforming function and data mask
US5754704A (en) Method and apparatus for compressing and decompressing three-dimensional digital data using fractal transform
US4941193A (en) Methods and apparatus for image compression by iterated function system
US6502097B1 (en) Data structure for efficient access to variable-size data objects
Cramer et al. Low bit-rate video compression with neural networks and temporal subsampling
US5732157A (en) Image processing apparatus and method using lossless encoding of a difference between image blocks
US7412104B2 (en) Optimized lossless data compression methods
US6757441B1 (en) Image data encoding/decoding method and apparatus
KR100573527B1 (en) How to compress and restore graphic images
Sadeeq et al. Image compression using neural networks: a review
US6373989B1 (en) Iterated image transformation and decoding apparatus and method, and recording medium
Alexandrov et al. Recursive pyramids and their use for image coding
JP2882285B2 (en) Color image compression / expansion method
Singh et al. A STUDY OF PATTERN BASED RESIDUAL VECTOR QUANTIZATION ALGORITHM FOR IMAGE COMPRESSION
Bell et al. Progressive technique for human face image archiving and retrieval
US20020094126A1 (en) Fractal image compression
Murphy et al. Managing digital images in a network environment
Wai GIS Data Compression Based on Blockwise coding and Quadtree coding Approach
Ibarria Geometric prediction for compression
KR20020091420A (en) Fractal image compression method

Legal Events

Date Code Title Description
AS Assignment

Owner name: ITERATED SYSTEMS, INC., GEORGIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST.;ASSIGNORS:BARNSLEY, MICHAEL F.;SLOAN, ALAN D.;REEL/FRAME:005896/0920

Effective date: 19910927

STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: PAT HLDR NO LONGER CLAIMS SMALL ENT STAT AS SMALL BUSINESS (ORIGINAL EVENT CODE: LSM2); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

CC Certificate of correction
AS Assignment

Owner name: MEDIABIN, INC., GEORGIA

Free format text: CHANGE OF NAME;ASSIGNOR:ITERATED SYSTEMS, INC.;REEL/FRAME:011658/0395

Effective date: 20010208

FPAY Fee payment

Year of fee payment: 8

FPAY Fee payment

Year of fee payment: 12