Abstract:
A data processing system comprises a magnetic or optical disc 1, a disc controller 2, and a main data processing unit 5 communicating with the controller by means on an interface 6. The controller 2 comprises an internal processing unit which receives requests from the main data processing unit 5 for data to be read from the disc 1, and controls retrieval of the data from the disc 1 and transmission of data to the main data processing unit 5 via the interface 6. The controller 2 further comprises a buffer 3 for data read from the disc 1 prior to transmission to the main data processing unit 5. The controller 2 also comprises a look-up table 4 for modifying the data read from the disc 1 in accordance with predetermined. modification criteria prior to transmission to the main data processing unit 5. The system may be used in colour processing of image data, with the disc controller providing primary colour correction. There is also disclosed a method of handling image data in which a data structure in the form of a colour cube is preloaded by a colour processor with the cardinal vertices for interpolation to take place. The colour cube may be loaded with data corresponding to a relatively small range of colours. Colours which are within the range are processed through the cube, and colours which are outside of the range are not processed through the cube.

Description:
BACKGROUND OF THE INVENTION 
     In a large number of cases, it is required to read an image from a disc and modify it in a &#34;one dimensional&#34; manner, that is for example, to create a new &#34;red&#34; content purely as a function of the existing red image. Thus, data is read from a bulk storage device, such as a magnetic hard disc or an optical disc, and under the control of a Central Processing Unit (CPU) is routed through a data table stored in RAM (Random Access Memory) which is in the CPU&#39;s memory map. This results in modified data which, in itself, may probably undergo further modifications. A conventional system uses a disc controller which includes a data buffer and communicates with the remainder of the system via a SCSI or other interface. 
     SUMMARY OF THE INVENTION 
     According to an invention disclosed herein, there is provided a controller for a bulk storage device for digital data, comprising internal processing means and memory means as integral parts of the controller, the processing means receiving requests from external data processing means for data to be read from the storage device and controlling retrieval of the data and transmission of data to the external data processing means, and the memory means being configured as a buffer for data read from the storage device prior to transmission to the external data processing means, wherein the memory means is further configured to modify the data read from the storage device in accordance with predetermined criteria and the modified data is transmitted to the external data processing means. 
     Generally, the external data processing means will comprises a central processing unit including a microprocessor, random access memory, and other components necessary for the operation of a microcomputer or a custom device, such as a digital color processor of the type disclosed in U.S. Pat. No. 5,450,500. While the external data processing means is distinct from the controller, they may be incorporated in the same unit as part of an integral system. 
     Preferably, the memory means of the bulk storage device has a first area configured as the buffer and a second area configured as a lookup table containing information for modifying data in the buffer in accordance with the predetermined criteria. Preferably, the predetermined criteria are user programmable. In a preferred arrangement the controller comprises part of a system for modifying image data, for example, a digital color processor, the controller providing primary color correction of the data read from the storage device. 
     This system has many advantages, the principal one being that it allows two modifications to take place in parallel. The first of these modifications could take place through the lookup tables in the disc controller, under the control of the microprocessor in the disc controller that controls the disc activity, and the second being under control of the main CPU, and either involving the mathematical calculation power of the CPU, of further lookup table processing using lookup tables on the CPU&#39;s RAM map. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     A more complete appreciation of the present invention and many of the attendant advantages thereof will be readily obtained as the invention becomes better understood by reference to the following detailed description when considered in connection with the accompanying drawings. 
     Reference is made to the accompanying FIG. 1, which illustrates one possible embodiment of the system. This shows diagrammatically a disc 1, a controller 2 having a buffer 3 and a lookup table (&#34;LUT&#34;) 4, and a main processing unit 5 including a central processing unit and random access memory. The main processing unit 5 communicates with the disc controller 2 by means of an interface 6. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     One important feature is that the incremental work to get this function incorporated into a disc controller is very small. Disc controllers already have a microprocessor to control activity of the disc, and already have RAM, as it is usually necessary to &#34;buffer&#34; data that is being written to or rad from the controller. All that is lacking is the necessary control software in the microprocessor code for the disc controller. 
     Currently, disc controllers are complete microprocessor control systems. They incorporate the following elements: 
     1. A microprocessor. Disc manufacturers use standard microprocessors, such as the ones used in desktop computers, as these give &#34;economy of scale.&#34; 
     2. PROM (Programmable Read Only Memory). This contains the program information that makes the microprocessor control the disc. 
     3. RAM (Random Access Memory) This is the memory that the program is executed in. 
     4. External control input. This is an input to the Disc Controller Microprocessor, usually along the minicomputer&#39;s &#34;bus,&#34; through which it receives data. 
     The typical flow of information is as follows: The main CPU will request that the Disc controller read, for example, logical blocks 3453 to 3457 from the disc. This will activate the software running in the Disc controller CPU. This will be typically running a &#34;wait&#34; loop, until it is requested to do something. The Disc Controller Microprocessor will then check that the requested disc blocks are valid (i.e. that they exist) and probably then check that the disc is running. It will then probably decode the requested logical blocks into physical blocks (i.e. that the requested blocks 3453 to 3457 are actually on platter 3, track 25, records 26-30. It will then wait until the existing transfer is complete, then move the heads to the required track, and actually cause the &#34;read&#34; to the place, into a buffer in the RAM of the Disc Controller&#39;s Microprocessor. 
     It will probably check the disc control register, to see if the transfer is complete, then check the &#34;checksum&#34; to verify that the transfer has (most probably) read valid data. At this point, the Disc Controller&#39;s Microprocessor will signal to the system microprocessor that the transfer is complete and that the data is present and correct in the Disc controller&#39;s RAM. 
     In accordance with an embodiment of the invention, there would be a change to the control or program code in the PROM of the Disc controller. A further logic stage would take place after the checksum verification. The extra code would command the Disc Controller Microprocessor to read the data from the buffer RAM, and use each point of this data to &#34;index&#34; into another buffer of data in RAM, which contains the lookup table that we are using. The data found at this address is then written back into the original buffer. When this has been done for each point in the buffer, the disc controller than signals to the system controller that the transfer is complete. 
     A second important feature considered in the context of the image data is the utilization of three dimensional data structures, which can be thought of as &#34;color cubes.&#34; 
     A one dimensional lookup table is one that contains the only input parameter, and one (or one set) output parameter. An example of this may be a convention from imperial measures to metric. The input parameter may be length in feet, and the output parameter length n meters. Correspondingly, a two dimensional lookup table will take in two input parameters, and give one output parameter. An example of this may be the derivation of area from length and width. The two input parameters in this case are obviously length and width, and the derived parameter is the area. 
     Such lookup table principles can be extended into three or more dimensions. Color measurement or reproduction requires three parameters. Conversion from one &#34;color space&#34; to another is a &#34;three-in&#34; and &#34;three-out&#34; transformation, and therefore, well suited to a three dimensional lookup table. 
     One problem with such data tables is the amount of memory required. A sixteen input value one dimensional table takes sixteen memory locations. Correspondingly, a sixteen value, two dimensional table takes two hundred and fifty six memory locations, and a sixteen value, three dimensional table takes four thousand and ninety six memory locations. 
     Many techniques are known to avoid having to use too much memory. One such technique is disclosed in GB-A-1369702, which uses a three dimensional interpolation technique. In summary, this technique is to subdivide a 256×256×256 color cube into a 16×16×16 &#34;cubelets&#34;. Real data points exist to define the &#34;cubelets,&#34; but interpolation takes place to get intermediate points within a &#34;cubelet.&#34; This technique is a three dimensional interpolation technique. In the same way as in a one dimensional case we may measure or calibrate an output value for series (usually at regular values) if input values, this can be extended to a two or even three dimensional function. In the case of color, it is usual to measure color values as an 8 or 10 bit value. This means a range of 0-255 or 0-1023. Let us consider the simpler 8-bit example. Because to measure a color signal, we need to quantify its red, green, and blue values, all of which are independent from each other (meaning that just because we have measured the red and green, we cannot &#34;calculate&#34; or guess the blue value). 
     Thus, for each of the 256 red values, there are 256 values that the green value could have, with 256 blue values for each red and green value. Thus, there are 256×256×256 possible different colors that we can describe with this system. Each of these input colors can have a different output color, itself described by a red, green, and blue set of values. 
     We could envisage this transform table as a &#34;linear&#34; system, with a table of each value of red from 0 to 255, combined with each value of green from 0 to 255, combined with each value of blue from 0 to 255. 
     An easier way of envisaging this data is as &#34;three dimensional cube,&#34; as shown in FIG. 2. We can imagine the red, green, and blue input axes as three mutually orthogonal (i.e. at right angles) axes R, G, and B. For a given combination of input red, green, and blue, (R 1 , G 1 , B 1 ), we describe a unique point a &#34;pigeon hole&#34; that contains an output color, specified in output red, green, and blue. 
     If we can either measure or calibrate output colors for a regular grid of input colors, we can &#34;build&#34; a grid of regular points within which we can calculate other points. Typically, we can measure or calculate, say, input axes in multiples of 16. Thus, we could &#34;load&#34; the cube with values as below: 
     
         ______________________________________R = 0           G = 0       B = 0R = 0           G = 0       B = 15R = 0           G = 0       B = 31R = 0           G = 0       B = 239R = 0           G = 15      B = 0R = 0           G = 15      B = 15R = 0           G = 15      B = 239R = 0           G = 31      B = 239R = 0           G = 31      B = 239R = 0           G = 47      B = 0R = 0           G = 47      B = 239R = 0           G = 239     B = 239R = 15          G = 0       B = 0R = 15          G = 0       B = 15R = 15          G = 0       B = 239R = 15          G = 15      B = 0R = 15          G = 15      B = 15R = 15          G = 239     B = 239R = 31          G = 0       B = 0R = 31          G = 239     B = 239R = 47          G = 0       B = 0R = 239         G = 239     B = 239______________________________________ 
    
     Note: In the above example, we have only 16 points, dividing the range up into 15 intervals, and covering the range from 0-239. We could, alternatively, have 17 points, dividing the range up into 16 intervals and covering the complete range. In practice, the very highest colors are not used in some color &#34;scaling&#34; systems and, thus, we will continue to example with range being specified by 15 intervals. It will be seen later that this move simplifies the necessary mathematics considerably. 
     Thus, there is &#34;preloaded&#34; the cardinal grid of points with &#34;output&#34; values contained at these cardinal input points. 
     For any generalized input point, we can &#34;look&#34; at the most significant four bits of the incoming R, G, and B values, and could used the input point R=18, G=55, B=81. 
     Thus, the 8 bit &#34;Bit Pattern&#34; is as follows: 
     R=000100010 G=00110111 B=01010001 
     Thus, the &#34;most significant four&#34; bits for these values are: 
     R=0001 G=0011 B=0101 
     Or, in Decimal 
     R=1 G=3 B=5 
     Thus, remembering that computer numbering starts at zero, we have derived the lower bounding &#34;cardinal point&#34; as the first value of red, third value of green, and fifth value of red (which themselves correspond to the values for R=16, G=48, and B=80). 
     the upper bounding &#34;cardinal point&#34; corresponds to R=32, G=64, and B=96. These two values, in three dimensional space, form a small cube, and are body centered diagonals of this cube. 
     All eight of these cube &#34;corners&#34; or vertices, are as follows: 
     
         ______________________________________R = 16          G = 48      B = 80R = 16          G = 48      B = 96R = 16          G = 64      B = 80R = 16          G = 64      B = 96R = 32          G = 48      B = 80R = 32          G = 48      B = 96R = 32          G = 64      B = 80R = 32          G = 64      B = 96______________________________________ 
    
     By the mathematical process of &#34;trilinear interpolation&#34; we can use the lower four bits of the general input point as &#34;weighing factors&#34; in the interpolation. In the above example, these are 0010, 1110, 0111, and 0001 (or 2, 7, and 1). Thus, on the red scale, we are 2/16ths of the way from the point G=48 and the point at G=64, and 1/16ths of the way from the point at B=80 and the point at B=96. The output values can thus be accordingly &#34;weighted&#34; to find the output value that corresponds to this input point. 
     The already known techniques use a &#34;preloading&#34; phase, where the cardinal points of the cube can be calculated using a mathematical algorithm implemented in software using a general purpose microcomputer. 
     GB-A-2053619 teaches that each &#34;cubelet&#34; (defined by eight vertices) can be further broken down into six component tetrahedra sharing a common cube body diagonal axis. 
     The first step is to decide which cube is relevant. The second step is to decide which of six &#34;tetrahedra&#34; within that cube one is bounded by. The improvement here is that say we have a point with the same upper four bits, but the lower four bits of the red, green, and blue signals are all very small, say 1, 2, and 2. The &#34;upper&#34; bounding corner is thus a &#34;long way&#34; away from the &#34;lower&#34; bounding corner. Thus, the bounding tetrahedron has the values of: 
     
         ______________________________________R = 16          G = 48      B = 80R = 32          G = 48      B = 80R = 16          G = 64      B = 80R = 16          G = 48      B = 96______________________________________ 
    
     3-D tetrahedronal interpolation can then be performed to find out an input value for the generalized input point. 
     It will be noticed that this tetrahedron is defined by four of the cube vertices. The six possible ways of choosing four of the eight points defines six possible tetrahedra. 
     There are mathmatical advantages of interpolating in this technique, and a &#34;better&#34; output control can be obtained from this technique. One reason for this is that all of the tetrahedra share a common &#34;body diagonal&#34; since the &#34;body diagonal&#34; represents the transition from black through grey to white. The human eye is particularly sensitive to small variations of color in the near grey colors. Having such an axis common between the tetrahedra means no mathematical discontinuities in the &#34;gradient&#34; of colors near grey. In the previous &#34;cubic&#34; techniques, the undue influence of other neighboring cube vertices could cause a discontinuity. 
     The cube systems described in the above referenced patents have a general purpose computer to pre-load the three dimensional data structure with algorithmically calculated values. 
     Viewed from another inventive aspect there is provided a method of handling image data in which a color cube of the type described above is preloaded by color processing means, such as a digital color processor (DCP) described in U.S. Pat. No. 5,450,500, with the necessary cardinal vertices for interpolation to take place. 
     This would enable a much slower (and cheaper) DCP to be built. The Present Standard TV Definition DCP handles data at a rate of 13.5 million bytes per second. A High Definition TV implementation would require a data rate of approximately five times this rate. By utilizing the DCP engine to load the necessary number of cardinal points into a three dimensional data structure, and by using a &#34;double buffered&#34; arrangement, where one &#34;cube&#34; is being loaded while the other is being used for color transform, there would be one twenty-fifth of a second (i.e. 40 ms) to calculate of 4096 values. Thus, the DCP compute engine only need run several orders of magnitude slower than at present. 
     In a significant number of real examples, there is a requirement to subtly alter a small range of colors, leaving all other colors alone. Conventional &#34;color cube&#34; transforms are not at all good for this sort of work, as being interpolative they can &#34;smooth out&#34; desired changes. 
     The solution of this is to load such a cubic data structure with a fine range of specific colors. Thus, colors that are not within the selected range of colors will not get processed through the cube, while the finely selected range of red colors will get processed, but the interpolation will only be over a small range. It may even get to the stage where the data structure is loaded with adjacent color (i.e. incremental R, G, B values) in which no interpolation will be required. 
     Viewed from another inventive aspect, there is provided a method of handling image data in which a color cube is loaded with data corresponding to a relatively small range of colors; colors which are within the range are processed through the cube, and colors which are outside of the range are not processed through the cube. 
     The importance of this is several fold. Firstly, by the time we get to 1:1 mapping (i.e. no interpolation) then obviously, we have no interpolation errors. Secondly, and less obviously, it allows the color conversion of colors with &#34;key&#34; signals in. This is a technique where one color, or a narrow range of colors are used or &#34;reserved&#34; to indicate &#34;switching&#34; to another color or picture. One such widely known technique using this is the so-called &#34;bluescreen.&#34; In this technique, actors and object are filmed or recorded against a background of a particular blue. In the video domain this blue is then &#34;recognized&#34; and another picture source is substituted for this blue. In this way, actors can appear to &#34;fly&#34; across backgrounds. These techniques, although generically referred to as &#34;blue screen&#34; quite often use colors other than blue. Greens and oranges are sometimes used. The important criteria is to ensure that the &#34;screen&#34; color does not occur in the subject. Thus, it is important to keep the &#34;special&#34; colors to the value that they start at, without changing them. A conventional &#34;cube&#34; type color correction may well interpolate these colors to a different value, causing the &#34;blue screen&#34; process not to work. However, with the non-interpolative cube techniques, we can have a lookup table which manipulates a wide range of blues as the operator requires, without having the &#34;special&#34; blue or limited range of &#34;special&#34; blues change color. 
     The use of interpolation &#34;cubes&#34; in this case has many advantages over calculation techniques. We have to remember that the data the we wish to &#34;color correct&#34; is usually a motion picture sequence, usually arising from film or video sources. 
     U.S. Pat. No. 4,096,523 teaches the concept of scene by scene programming. By this is meant that with combine with the use of a &#34;controller&#34; (such as Pandora POGLE), a Color Corrector (such as the Pandora DCP of U.S. Pat. No. 5,450,500) and a &#34;picture source&#34; (such as a Telecine) one can associate, or &#34;program&#34; a color correction sequence where a given set of optimal or user specified color relating to a scene in the original. 
     As example of this is where there is a sequence of three consecutive scenes in a work. The first is shot outside, in bright sunshine. The second scene is shot indoors, and is too dark and &#34;yellow&#34; due to the color temperature of the lighting, and the third scene has the same requirements as the first. We wish to &#34;program&#34; a correction for each of these scenes so that in a mode where we want to transfer this material to videotape, we quickly reload the color settings in the vertical blanking interval. 
     The system set out above has a variable range of interpolation within the cube. There are advantages gained by a &#34;cube&#34; system even when loaded with a 1:1 interpolation, over a conventional DCP even though both of these may give identical numerical results. This main advantage is that the &#34;DCP&#34; speed in the 1:1 cube does not need to be anywhere as fast as a conventional DCP. This is because with the cube, we only need to load 4096 points (which is like &#34;color correcting&#34; a tiny image that has only 4096 pixels, as opposed to the million to five million pixels in a SD or HD image). 
     Coupline the &#34;cube loading&#34; (generally with a &#34;full range&#34; cube) with the &#34;scene by scene&#34; programming, a fairly simple computer system with one &#34;cube&#34; could color correct video picture streams in &#34;real time.&#34; This would be accomplished by the following steps: 
     1. Before the first frame of the first scene, the CPU runs the DCP &#34;Software&#34; Implementation, that would load the first &#34;cube&#34; with the color correction lookups that correspond to the adaptor chosen and stored parameters for that scene (only 4096 &#34;correction points&#34; are needed). 
     2. One then transfers the video data (typically 1 million points per frame) through the lookup tables, to provide corrected data. 
     3. After the conversion of the last frame of the first scene, one reloads the cube, during the vertical blanking interval, with the new cube data, corresponding to the operator stored settings for scene two. 
     4. One then continues as in 2. 
     A further variation of the above, for slower computer architecture, is to have two &#34;cubes&#34; (be they data structures within a single CPU computer, or multiple processors on larger computers). This method allows for the creation of a second scenes &#34;cube&#34; during the transferring of the data for the first scene through its cube. This removes the restriction to be able to recalculate the contents of a cube during the vertical blanking interval. 
     There is sometimes the requirement to perform several changes of color within one picture. The already proposed architecture of the Pandora DCP is U.S. Pat. No. 5,450,500 contains a multi-channel system, with a &#34;priority logic&#34; that arbitrates for a color that is within the selected color range of more than one channel. This allows the rapid &#34;switching&#34; of channels to try out different priority setups. 
     This effect would be difficult to emulate with the slower DCP &#34;compute engine&#34; and cube technique, as changing the priority to necessitate reloading the cube. 
     The solution of this is the use of multiple cubes. Each of the &#34;channels&#34; could load a separate cube. Typical computes used within the film and video facilities companies contain multiple processors in order to &#34;render&#34; graphics at a resonable speed. One such computer is the Silicon Graphics &#34;Onyx&#34; computer, which can have up to 20 processors. When such a computer is used for color manipulation work, either a hardware DCP &#34;compute engine&#34;could be added, or a software emulation of the algorithms could be used to load cube like data structures. Each of the processors in the Onyx could emulate one channel of the DCP. This would utilize the processing power of such a platform of the &#34;Onyx,&#34; and also enable the rapid switching of priorities of channels. 
     In U.S. Pat. No. 5,450,500 there are references to other picture attributes, such as the x and y addresses of the picture, and attributes such as &#34;sharpness&#34; or texture related attributes, such as &#34;grassiness,&#34; &#34;graveliness,&#34; or &#34;woolliness.&#34; These can be incorporated in the &#34;cubic&#34; data structures by extending the dimensionality. Three dimensions are required for a three attribute picture, such as red, green, and blue. Four dimensions would be required for pictures with a &#34;sharpness&#34; attribute per pixel. Mathematically, all of the above teaching can be extended into a 4-D space, and even to higher dimensions if required. 
     One practical example of the above is a country scene containing a number of constituents. For example, consider a female model, in a green dress, sitting in a field of grass, with a blue sky. It is required to artistically bring out detail in the green dress, and make it less blue. Assume that the attributes of the picture are derived and stored, in this case, as red, green, blue, sharpness and grassiness. We will need a 5-D low in blue and red, and a low in &#34;grassiness,&#34; we will make higher in &#34;sharpness.&#34; This change will make only the green dress go sharper, and not over-enhance the detail in the grass.