Abstract:
A circuit which transforms image data between bit-plane data representations and multi-bit pixel representations includes a plurality of sequential logic elements arranged as a matrix having columns and rows. Data values representing bit-plane data are stored into the columns of the matrix according to a first scheme and data values representing multi-bit pixel data are stored into the columns of the matrix according to a second scheme. Data applied to the columns of the matrix is shifted along the rows until the matrix is filled. The converted data is then read out along the rows of the matrix.

Description:
BACKGROUND OF THE INVENTION 
     The present invention concerns video image processing apparatus and in particular apparatus for converting image data between bit-plane and multi-bit pixel image representations. 
     Video data can be organized in a computer memory in a variety of formats. For each picture element (pixel) on the screen, there are usually several bits which together describe the properties of the pixel. These properties may be the color of the pixel, its brightness, or any of a number of other properties. The two most common formats for representing an image by digital values are bit-plane and multi-bit pixel. Each of these formats has advantages and disadvantages. 
     In the bit-plane format, a group of pixels is represented as a series of planes. Each plane contains one bit per pixel. Thus for an N-bit representation of image data, N planes of data are employed. The total memory storage needed to represent the image is the number of pixels in the image times the number of planes of data. 
     Bit-plane representation of the images is advantageous since it only uses the amount of data needed by the bit-planes which represent the image. For example, a monochrome image having no gray scale variations, such as may be used by a word processing program, can be represented by a single bit-plane. In addition, an image stored in bit-plane format may be modified by changing only a single plane or some set of planes without affecting the other planes. If, for example, the image includes foreground components on one set of bit-planes and background components on another set of bit-planes, the background bit-planes could be manipulated without affecting the foreground bit-planes. 
     Bit-plane image representation has its disadvantages as well. For example, to set a specific pixel to a specific color, all of the bits used to represent the pixel may need to be modified. This usually requires N different memory accesses for an image represented by N planes of data. 
     In the multi-bit pixel format each image pixel is typically represented by an eight bit byte. All bits in the byte are addressed by a single unique address value. Thus, for eight-bit pixel values, the amount of memory needed for any image is always eight-bits times the number of pixels in the image. 
     The multi-bit pixel format for representing images has many advantages. To set a specific pixel to a specific color, only a single memory location would need to be modified. Furthermore, in image processing it is often desirable to perform mathematical operations on the image pixels. These operations may be performed for such functions as spatial filtering, edge detection or pattern matching. The multi-bit pixel representation is a good format for these operations because each of the image pixels is represented by a number which may be conveniently manipulated by the computer. 
     The multi-bit pixel format has disadvantages as well. This format may require more memory than the bit-plane format to represent a given image. In addition, for certain types of image operations, such as the management of overlays, this format may require more data to be transferred and processed than if the equivalent operation were performed on a bit-plane representation of the image. 
     SUMMARY OF THE INVENTION 
     The present invention is embodied in circuitry which transforms image data between bit-plane data representations and multi-bit pixel representations. The circuitry includes a plurality of sequential local elements arranged as a matrix having columns and rows. Data may be input to the matrix along its columns. Data applied to the columns of the matrix is shifted along the rows until the matrix is filled. This data is then read out along the rows of the matrix. 
    
    
     BRIEF DESCRIPTION OF THE DRAWING 
     FIG. 1 is a block diagram of a video display system which includes an embodiment of the present invention. 
     FIG. 1a is a diagram of data structures which illustrate bit-plane image representation. 
     FIG. 1b is a diagram of a data structure which illustrates multi-bit pixel data representation. 
     FIG. 2 is a block diagram of a bit-plane to pixel/pixel to bit-plane converter suitable for use in the display system shown in FIG. 1. 
     FIG. 3 is a block diagram of an eight-by-eight switch suitable for use in the converter shown in FIG. 2. 
     FIG. 4 is a block diagram of a sequential logic element suitable for use in the converter shown in FIGS. 1, 2 and 3. 
    
    
     DETAILED DESCRIPTION 
     FIG. 1 is a block diagram of an image processing system which includes a bit-plane to pixel/pixel to bit-plane converter in accordance with the present invention. The converter 110 is coupled to a system bus 120 which is also coupled to a display driver 116, a memory 114, and a microprocessor 112. The display driver 116 generates electrical signals which cause a display device 118 to reproduce an image represented by data values held in memory 114. The microprocessor 112 controls the operation of the image processing circuitry shown in FIG. 1. 
     In the exemplary embodiment of the invention, the memory 114 holds both bit-plane and multi-bit pixel data structures (e.g. frame buffers) which represent images that may be displayed on the display device 118. The display driver 116 used in this embodiment of the invention, however, only displays images in bit-plane format. 
     As described above, certain operations which are performed on the image data such as spatial filtering and pattern matching are more efficiently performed when the image is represented by multi-bit pixel data than by bit-plane data. Accordingly, it is desirable to be able to convert between bit-plane and multi-bit pixel representations of a given image to process the image data and then to convert from multi-bit pixel format to bit-plane format to display the image. It is also desirable that this conversion occur with as little involvement of the microprocessor 112 as possible. The bit-plane to pixel/pixel to bit-plane converter 110 was designed to meet these goals. 
     In the exemplary embodiment of the invention, the input and output ports of the converter 110 are memory mapped. That is to say, the microprocessor sends data to the converter 110 by writing to specific memory locations and it receives data which has been processed by the converter 110 by reading from specific memory locations. The actual data conversion operation as seen by the microprocessor 112 involves memory to memory moves of data values in the memory 114 to the memory mapped input locations in the converter 110 and then from memory mapped locations in the converter 110 to other locations in the memory 114. 
     FIGS. 1a and 1b represent images in bit-plane and multi-bit pixel format respectively. In FIG. 1a, four different data structures in four respectively different memory locations are used to represent a single image. Pixel P1 is represented by one bit from each of these data structures: P1 0  from area 130, P1 1  from area 132, P1 2  from area 134, and P1 3  from area 136. Assigning a specific color to pixel P1 would typically require that each of these bits be accessed, an operation which would require four memory read operations (to ensure that the adjoining pixels in the memory word are not affected) followed by four memory write operations. FIG. 1a shows seven pixels in the bit-plane format of which three, P1, P2, and P7, are identified. 
     FIG. 1b shows how the seven image pixels may be represented in multi-bit pixel format. In FIG. 1b the bits which represent pixel P1 are contiguous and addressed by a single address value. Thus the operation of changing pixel P1 to a specific color would require only one memory write operation if individual image pixels may be accessed directly in the memory or a read operation followed by a write operation if each memory word may hold several pixel values. 
     In order to convert from a bit-plane representation to a multi-bit pixel representation, memory words containing the individual bits which describe a given pixel are stored in a matrix of memory locations in one direction and then retrieved the matrix of memory location in an orthogonal direction. 
     As shown in FIGS. 1a and 1b, the bit-plane format may use fewer bits than the multi-bit pixel format. Where, for example, an image is represented in five bit-planes and that same image is to be translated into multi-bit pixel format having eight-bit pixels, three padding bits, for example logic zeros, may be added to each pixel to complete the conversion process. This padding effectively adds three zero-valued bit-planes to the image prior to translation. 
     FIG. 2 is a block diagram of a bit-plane to pixel/pixel to bit-plane converter suitable for use as the converter 110 shown in FIG. 1. As shown in FIG. 2, the converter includes four eight-bit by eight-bit switches 210, 220, 230 and 240. Each of these switches is connected to receive eight-bits of input data from the input bus, DIN, on its left-hand side and to receive 32-bits of data on its right-hand side. In the case of switch 240 these 32-bits are the 32-bits of data from the input bus DIN. For the switches 210, 220 and 230, however, the data received at the right-hand port is from the respective next previous switch 220, 230 and 240 proceeding from right to left. Each of these switches provides an eight-bit Output value to the output bus DOUT. In the exemplary embodiment of the invention the bus DOUT is also connected as an input bus to the switches 210, 220, 230 and 240. 
     The final input to the switches 210, 220, 230 and 240 is a four bit clock and control signal provided by address decoder 250. As shown in FIG. 2, the address decoder is coupled to the system bus 120 shown in FIG. 1. One bit of the four bit output signal provided by address decoder 250 is coupled to a three state buffer 252 which is used to selectively gate the output values of the four eight-by-eight switches 210, 220, 230 and 240 onto the system bus 120. 
     Although switch 240 is shown in FIG. 3, the illustrated switch is suitable for use as any one of the eight-by-eight switches 210, 220, 230 and 240 shown in FIG. 2. The exemplary switch includes eight rows of eight sequential logic elements. For the sake of brevity only three rows 310, 312, and 314 are shown in FIG. 3. 
     All of the individual logic elements 310a through 310h, 312a through 312h, and 314a through 314h are identical. Each logic element has four input terminals and one output terminal. An exemplary logic element is described below with reference to FIG. 4. 
     The R input terminal of each logic element is coupled to the Q output terminal of the device immediately above it in the matrix. When converted values are read out of the matrix via the Q output terminals of the bottom row of elements 314, data values representing the next word to be read from the converter are transferred down one level by enabling the R input terminals of the respective logic elements. As shown in FIG. 3, the output bus DOUT is coupled to the R input terminals of the top row of logic elements 310. Thus as a 32 bit output word is being read from the converter via the bus DOUT the same word is being written into the matrix of ray elements via the R input terminals of the logic elements 310a through 310h in the top row of the matrix of switch elements 240. 
     When the data values being converted are bit-plane representations of pixel images, they are stored into the matrix via the P input terminals of the left-most elements in each row. As shown in FIG. 3, the least significant bit, P31, of each 32 bit word is written into the P input terminal of element 310a. When operating in bit-plane to multi-bit pixel conversion mode, each of the elements 310a through 310h is coupled to store the value applied to the P input terminal and to simultaneously pass the previous output value, via the Q output terminal, to the P input terminal of the next element to the right. Thus, when the second 32 bit word from a bit-plane representation is applied to the converter, the least significant bit of the first word, which had been in element 310a, is shifted to element 310b while the least significant bit of the second word is written into element 310a. 
     This continues for each of the eight 32 bit words. If an image is represented by fewer than eight bit-planes, zero valued 32-bit words are provided to the converter 110 either by a literal store operation executed by the microprocessor 112 or by transferring the contents of a zero-valued 32-bit register (not shown) to the input port of the converter 110. Thus, at the end of the eight word cycle the row of elements 310a through 310h holds eight bits each representing a corresponding bit in the eight 32 bit words which represents the bit-plane image. As described above, each row of these bits in each eight-by-eight switch represents a single image pixel. 
     With reference to FIG. 2, as the least significant bit of the 32 bit input word is being applied input terminal D31 of switch 240, the other 31 bits of each word are being applied to other input terminals of each of the eight-by-eight switches 210, 220, 230 and 240. Each row of each switch corresponding to one of these input terminals holds a pixel of the converted image. As described above, these rows are read from the switches 210, 220, 230 and 240 one row at a time responsive to signals provided by the address decoder 250. 
     Referring to FIG. 3, the pixel values held in row 314 of the switch 240 and the pixel values held in the corresponding rows of the switches 210, 220 and 230 are read first followed by the pixel values in the next higher rows. The last two rows of pixel values to be read are in rows 312 and 310 of switch 240 and the corresponding rows of the switches 210, 220 and 230. 
     Referring to FIG. 3, when image data in multi-bit pixel format is to be converted to bit plane format, the 32 bits from the input bus DIN are applied to respectively different ones of the input terminals B0 through B31 shown on the right-hand side of FIG. 3. As described above, each eight consecutive bits of the 32 bit values applied in this mode represents a respectively different pixel. The object of the conversion process in this mode is to separate the bits of each of the 32 eight-bit pixels such that each bit occurs in a corresponding location in each of the eight 32-bit output words. 
     As shown in FIG. 3, bits 7, 15, 23 and 31 are applied to respective elements 310h, 310g, 310f and 310e of switch 240. During the next input cycle, when a new word is applied to the converter 110, bits 7, 15, 23 and 31 of the first word are shifted from logic elements 310e, 310f, 310g and 310h to logic elements 310a, 310b, 310c and 310d. 
     The shift occurs because, in this mode, the Q output terminal of each one of the elements 310a through 310h is connected to the C input terminal of a corresponding element which is to the left of the one element and separated from it by three intervening elements. This shifting operation continues as each of the eight 32-bit words, each containing four eight-bit pixel values, is written into the converter 110. 
     At the end of the input phase of the pixel-to-bit-plane conversion process, the bits representing individual pixels of the eight multi-bit pixel values are arranged in vertical columns. For example, assuming that the 32-bit input word is arranged with bit 31 being the most significant bit and bit 0 being the least significant bit, in the switch 240 shown in FIG. 3, column which includes logic elements 310a, 312a and 314a  would contain the bits 31 through 24. The next image pixel would be contained in the column which includes the elements 310b, 312b and 314b. This bit would correspond to bits 23 through 16 of the multi-bit pixel input word. 
     In this orientation when the image matrix is read out a row at a time via the bus DOUT, the separate bits of each pixel have corresponding locations in each of the eight words that are read from the converter 110. 
     FIG. 4 is a block diagram of circuitry suitable for use as one of the sequential logic elements of one of the switches 210, 220, 230 and 240. The element includes a four input multiplexer 410 and a D type flip-flop 412. The multiplexer 410 receives two bits of the four bit control signal at its control input terminal to select one of the four data input terminals P C R and H to provide to the input terminal D of the flip-flop 412. The input terminal H of the multiplexer 410 is coupled to the output terminal Q of the flip-flop 412. A third line of the control signal provided by the address decoder 250 is a system clock signal which is applied to the clock input terminal of the flip-flop 412. 
     When no conversion operation is taking place, the control value applied to the multiplexer 410 couples the output terminal Q of the flip-flop 412 to the input terminal D of the flip-flop 412 through the terminal H of the multiplexer 410. In this mode, each storage element continually recirculates its stored value. 
     When the address value being written into by the microprocessor 412 indicates a bit-plane to multi-bit pixel conversion format, the two bit signal applied to the multiplexer 410 by the address decoder 250 gates the signal on the input terminal P as the signal which is applied to the input terminal D of the flip-flop 412. Similarly, when the address being written into by the microprocessor 112 indicates a multi-bit pixel to bit-plane conversion, the multiplexer 410 is conditioned to gate the input signal applied to its input terminal C to the input terminal D of the flip-flop 412. 
     Finally, when the address value that is being read by the microprocessor 112 indicates a read operation from the converter 110, the input signal R is gated through the multiplexer 410 to the flip-flop 412. This same combination of bits is coupled to the enable input of the three state gate 252, shown in FIG. 2. As described above, this gate allows the output signal of the converter 110 to be placed on the system bus 120. 
     In the exemplary embodiment of the invention, only two memory-mapped locations are used by the converter 110. When a write operation is executed to the first location, the address decoder 250, shown in FIG. 2, interprets the write operation as a request to convert bit-plane data to multi-bit pixel data. A write operation to the second location causes the address decoder 250 to condition the controller to receive multi-bit pixel data which is to be converted into bit-plane data. A read operation from the first memory location provides the converted data to the system bus 120 (shown in FIG. 1) for either conversion process. 
     While the invention has been described in terms of an exemplary embodiment, it is contemplated that it may be practiced as outlined above within the spirit and scope of the appended claims.