Image processing system

Abstract: This invention relates to a data processing system comprising: a normalizing unit for receiving a part of a plurality of dots in a one-dot column of image data in parallel and for magnifying or contracting the data in the vertical direction in the one dot-column; and a transposing unit for transposing image data magnified or contracted in one direction obtained from the normalizing means and for reinputting the transposed data to the normalizing means. This invention is applicable to data processing by character recognition devices for reading characters of different sizes.

Description: Technical Field of the Invention This invention pertains to a data processing system for an image processing device, and more particularly, to a data processing system for converting image data to a target area size, for obtaining histograms as judging factors for calculating the character coordinates using a two-port RAM, for expediting the pre-treatment of image data in a character recognition operation by a character recognition device, for creating a conversion table for normalizing an extracted character pattern in a systolic array structure for a character recognition device, and for normalizing the input pattern size in a systolic array structure in a pattern recognition device. Background of the Invention One of many normalizing methods is to obtain histograms of an extracted character vertically and horizontally. Characters are magnified or contracted to be normalized from the obtained histograms. However, this normalizing method has the disadvantage that it consumes much time to obtain the histograms, because the CPU performs processing for magnification or contraction in one-dot units. Feature data of stored characters are read from a dictionary in character units and are then compared with the feature data of an inputted character to obtain a recognition. This has the disadvantage that the comparison takes much time. Present character recognition devices need to be operated faster and to have a better recognition rate. However to improve the recognition rate, a greater volume of data must be handled. This causes the problem that the operation speed is slowed. Conversely, for faster operation, the data volume must be reduced. This causes the problem that the recognition accuracy is reduced. That is, higher accuracy and higher speed are incompatibel in for optical character recognition. In particular, since the pre-treatment mentioned earlier is required to handle image data, it takes much time to process them. This becomes the bottleneck in the entire processings. This invention aims at realizing a data processing system which enables a simple circuit to magnify or contract dot rows in parallel, expedites histogram calculation by using a two-port DRAM, enables a character recognition device to speed up pre-treatment of high-speed character recognition for a large volume of data, rushes pattern recognition by parallelly processing histogram information for normalizing extracted character data in a pipeline, and has a systolic array speed up pattern recognition by parallelly processing inputted data in a pipeline. Description of the Prior Art With advances in computer technology, reading devices for receiving image data, extracting characters from received image data and recognizing respective characters in sentences of the read documents are realized. These reading devices divide dot data read, e.g. by an image scanner, into predetermined areas and compare the character within a divided area with characters registered in the dictionary, and outputs the most similar character as the result. Registered character data are generally stored in a dictionary memory which memorizes e.g. featuring data of the respectively defined characters. When a character to be recognized is inputted, the inputted character is similarly featured, so that the distance from the characters, i.e. the difference between it and the characters, stored in the dictionary memory is obtained. The stored character with the least distance is then outputted as the recognition result. In such a system described earlier, all the processings are performed in one-dot units. For instance, processings for dividing data read e.g. by an image scanner in predetermined area units are performed in one-dot units. These divisions are for dividing areas in individual character units. However, it is generally difficult to make divisions in fixed areas, because different documents have different character areas and positions. Therefore, conventionally, histograms in the vertical and horizontal directions are obtained. The differences between the maximums and the minimums of the histograms determines the frame area for each character unit. However, when such histograms are obtained, sequential processings are conventionally performed such that the extracted area is read in one-dot units and information for the next dot is obtained from the flags indicating whether surrounding dots read before are black or white. Since conventional systems process in one-dot units to obtain histograms, there is a disadvantage that the processings take too much time. Besides, when an extracted character to be recognized in such a system is of a predetermined size, the recognition rate improves. Accordingly, extracted characters are conventionally normalized to a predetermined height and width vertically and horizontally in one-character units through magnification or contraction. Abstract of JP-A-1 245 361 discloses an image analysis, wherein a rapid image processing is executed by using binary image data or histogram data. A vertical histogram and a horizontal histogram is formed by binary image data, and an image analysis is executed by using the binary data or the histogram data. There is disclosed a multi-port image memory, a multi-port binary memory and a multi-port histogram memory unit provided with two ports. Summary of the Invention It is the object of the present invention to provide a recognition device, which has to expedite a histogram calculation, thus enabling a fast and accurate character extraction. This object is solved by the data processing system of claim 1. Further developments of the data processing system are shown in the dependent claims 2 to 5. A first principle of this invention is to have a simple transposing circuit normalize character data parallelly, instead of in one-dot units, in two normalizing processes with a card, thus simpifying the circuit and expediting the entire processings. A second principle of this invention is to have a recognition device expedite a histogram calculation, thus enabling a fast and accurate character extraction. Brief Description of the Drawings Figure 1A is a block diagram illustrating the first principle of this invention. Figure 1B is a block diagram illustrating the second principle of this invention. Figure 2A shows a system configuration of a character-recognizing device using an image data normalization circuit of this invention; Figure 2B shows a configuration of an association dictionary; Figure 3 shows in detail the circuit configurations of a row-histogram module and a column-histogram module using the first principle of this invention; Figure 4 explains the operations and the circuit configurations of the row-histogram module and the column-histogram module using the first principle of this invention, described in Figure 3 further in detail; Figure 5 shows the detailed circuit configurations of the row-histogram module and the column-histogram module using the first principle of this invention; Figure 6 shows schematically the configurations of the row-histogram module and the column-histogram module using the first principle of this invention; Figure 7 explains the operations of the row-histogram module and the column-histogram module using the first principle of this invention; Figure 8 shows the operations of the horizontal histogram calculation of the row-histogram module and the column-histogram module using the first principle of this invention; Figure 9 shows the operations of the vertical histogram calculation of the row-histogram module and the column-histogram module using the first principle of this invention. Description of the Preferred Embodiments Figure lA is a block diagram illustrating the first principle of this invention. A normalizing means 1-1 parallelly receives a part of plural dots in a particular line of image data and magnifies or contracts the received data in a direction horizontal to said line. The normalizing means 1-1 comprises the parallelly inputted dot number of latch circuits and "OR" gates, and stores the result of "OR" adding inputted dots and data outputted from said latch circuits in said latch circuits. The transposing means 1-2 transposes image data magnified or contracted along one side and obtained from said normalizing means 1-1 and re-inputs the transposed image data in said normalizing means 1-1. After the normalizing means 1-1 magnifies or contracts an inputted character in a first input, since the transposing means 1-2 supplies magnified or contracted dots in dot column units to the normalizing means 1-1 and re-magnifies or re-contracts the supplied dots, image data are magnified or contracted in both vertical and horizontal directions in two magnifying or contracting actions. Figure 1B is a block diagram illustrating the second principle of this invention. A two-port DRAM 2-1 memorizes image data supplied in dot units and sequentially outputs dots in a direction vertical to the inputted dot data. This is done, for instance, by providing a parallel-in/serial-out shift register in the two-port DRAM 2-1, memorizing dot data along one side by a first address and simultaneously reading out dot data along the other side by a second address for storing dot data in the shift register. Upon a receipt of a shift clock pulse, dots in a direction vertical to the inputted dot data are sequentially obtained. A counter 2-2 counts the number of 1 or 0 among the dot outputs. A selecting means 2-3 is a selecting circuit for selectively outputting input to or output from the two-port DRAM 2-1. This circuit is obtained, e.g. by selectively activating one of tri-state buffers provided at input and output terminals of the two-port DRAM 2-1. The two-port DRAM 2-1 dot-serially receives image data dots in scanning units, changes one address to an address in one scanning to be memorized in dot units. When one screen terminates, the other address specifies the direction vertical to the inputted scanning direction. Thus, dot data in the vertical direction in the two-port DRAM 2-1 are supplied to the shift register. By supplying a shift clock pulse to the shift register, dot data in the direction vertical to the scanning are serially outputted. Since the two-port DRAM 2-1 serially supplies dots in the scanning direction, the selecting means 2-3 selects the input and the counter 2-2 selects 1 or 0 for the dot. When the selecting means 2-3 selects a shift output from the two-port DRAM 2-1, the counter 2-2 counts the number of 1 or 0 of the dots in the direction vertical to the scanning direction. This counter 2-2 receives dot data at its enable terminal and clock pulses at its clock terminal and counts the number of 0 or 1. The above circuit operations count the number of dots, e.g. in the horizontal direction at an input time and in the vertical direction at an output time, histograms in the horizontal and vertical directions are obtained at high speeds. Figure 2A shows a system configuration of a character-recognizing device using an image data normalization circuit of this invention. Information read by e.g. an image scanner is stored in an image memory 10 as image data. The image memory 10 has memory capacity for a page read by the image scanner. Each dot of the read information is stored as two-value data of either white or black, i.e. 0 or 1. Image data stored in the image memory 10 are supplied to a noise reduction module 11, where noise generated during reading time is eliminated. The eliminated noise is irrelevant to the character information. E.g. the noise reduction module 11 treats as white a black dot in a center of a three-by-three mask pattern in which only the dot in the center is black and the eight surrounding dots are white. Although the configuration of this invention provides the noise reduction module 11 to operate in a character recognition pre-treatment part 12, it could be set to operate at some other time, e.g., when the read image data are stored in character units in a normalization module 16 to be described later. Alternatively, it could be at a time of line-narrowing or stroking. The image data which have undergone a noise elimination through the noise reduction module 11 are supplied to a row-histogram module 13, a column-histogram module 14 and a read control module 15. The row-histogram module 13 projects the read information, e.g. the content of the form read by the image scanner described earlier, in the row direction and finds the number of dots in each dot row. That is, it finds the number of black dots in each dot row (in the horizontal direction). As in the row-histogram module 13 described earlier, the column-histogram module 14, projects the read information in the column direction and finds the number of dots in each dot unit column. The row-histogram module 13 sequentially counts the number of black dots (for each dot row) in data sequentially read in one dot unit in the row direction from the image memory 10 (similarly to a dot reading by a raster scan) and supplied through the noise reduction module 11. That is, the row-histogram module 13 sequentially finds the number of black dots in each row. The numbers of black dots in respective rows form a row histogram. The column-histogram module 14 has counters each corresponding to a black dot position in a dot row, and increments the counter corresponding to the black dot position when a dot in a row is sequentially supplied. By performing these operations for one page, the row-histogram module 13 and the column-histogram module 14 respectively obtain a row histogram and a column histogram each representing the numbers of dots in row positions and column positions. The result is supplied to the read control module 15. The read control module 15 sequentially obtains the row position and the column position from the row histogram and the column histogram, respectively. These positions can be found, for instance, by a cycle of the row histogram or the column histogram. The read control module 15 finds the row and column positions and performs the following additional processings. Image data, e.g. information read by an image scanner, can have an obliqueness due to a paper position. To cope with this, the read control module 15 sequentially changes the angle wherewith a histogram is obtained, so that an adjusted angle is obtained. Then, the image data supplied from the noise reduction module 11 are reinputted to obtain the final histogram, so that row data for one cycle period corresponding to the obliqueness are read from the point whence the row histogram (having a maximum value) obtained from the adjusted obliqueness changes from zero to a positive number (or from a positive number to zero) and stored in a row buffer provided in the read control module 15. Further, the read control module 15 again obtains a column histogram in a row from the row data stored in the row buffer and cuts out data of one character area to be outputted to a normalization module 16 and a conversion table creation module 17 from the point whence the column histogram changes from zero to a positive number. The conversion table creation module 17 is for obtaining conversion data for enabling the normalization module 16 to normalize a character. The conversion table creation module 17 projects the data of one character area extracted by the read control module 15 in the column and row directions, thereby incrementing the respective counters in the column and row directions by the dot row unit and by the dot column unit from the column and row with a black dot, to obtain the final counter value in one character area. The normalization module 16 magnifies the size of one character area from the size when the character in the character area is originally extracted, per the final counter values in the row and column directions of the dots in the extracted character, to the full sized character e.g. comprising sixty-four (64) by sixty-four (64) dots. For example, if the conversion table creation module 17 has forty-eight (48) dots in both the column and row directions, the normalization module 16 converts a forty-eight (48) by forty-eight (48) dot character to a sixty-four (64) by sixty-four (64) dot character, where row and column dot data of particular positions are repeatedly used as the same data in magnifying the character. In case of a contraction, row and column dot data of particular positions are repeatedly read which are contracted as the same row and column dot data by "OR" additions. After the normalization module 16 magnifies a character to a full sized character, e.g. of sixty-four (64) by sixty-four (64) dots, a line-narrowing module 18 narrows the width of the character by using a mask of eleven (11) dots comprising a center dot and the eight (8) other dots in the surrounding three (3) by three (3) area as well as the second left dot and the second up dots from the center dot. Alternatively a mask used in narrowing could be of nine (9) dots in the three (3) by three (3) dot area around the center dot. The width of a line around a dot of a character can be narrowed by a control of the earlier described mask whereby a center dot of a predetermined pattern is set to zero. By repeating the narrowing procedures with masks, lines of a character are set to a width of one dot. The narrowed line character, e.g. of sixty-four (64) by sixty-four (64) dots, obtained by the line-narrowing module 18 is supplied to a stroking module 19 for stroking. The stroking module 19 expresses a dot by a total of four kinds of strokes wherein there is a black dot above or below; right or left; right above or left below; and left above or right below an objective dot, i.e. a center dot. If the objective dot belongs to plural kinds of strokes among the four (4) kinds described above, a prioritization, e.g. the vertical direction first, the horizontal direction second, etc., for deciding the kind of stroke the objective dot belongs to. When the objective dot is white or the center dot value is zero (0), the stroke is not considered to exist. Since the stroking module 19 has five (5) cases wherein a stroke exists in any of four (4) directions, i.e. vertical, horizontal, slash, and back-slash directions, or does not exist, the state of each dot is expressed as a three (3) bit value. The resultant three (3) by sixty-four (64) by sixty-four (64) bits of information are supplied to a feature vector module 20. The feature vector module 20 divides the stroking information obtained at the earlier described stroking module 19 both horizontally and vertically in eight (8) dot units. A vector module area of a total of two hundred fifty-six (256) [sixteen (16) by sixteen (16)] dots comprises one of the divided areas, the area below it, the area to its right, and the area to its lower right, each having 64 dots. The feature vector module 20 counts whether or not any of the four kinds of strokes in the vertical, horizontal, slash and back-slash directions exists. Although a feature vector is obtained in a vector module area comprising sixteen (16) by sixteen (16) dots, since a vector module area is vertically or horizontally shifted by eight (8) dots, there are seven (7) feature vector areas in both the row and column directions. Therefore, each character has a total of forty-nine (49) [seven (7) by seven (7)] vector module areas for feature vectors. When the feature vector module 20 counts the number of strokes in each of the four directions for the respective vector module areas described earlier, the feature vector module 20 weights each dot representing a directional stroke, such that a center part of a vector module area comprising sixteen (16) by sixteen (16) dots has a higher weight in obtaining a feature vector. The weight reduces with distance from the center. For instance, a dot representing a directional stroke in the center area comprising four (4) by four (4) dots has a weight of four (4); a dot representing a directional stroke in the surrounding harrow area comprising eight (8) by eight (8) dots, excluding the four (4) by four (4) dot area at the center, has a weight of three (3); a dot representing a directional stroke in the outer surrounding harrow area comprising twelve (12) by twelve (12) dots, excluding the eight (8) by eight (8) dot area at the center, has a weight of two (2); and a dot representing a directional stroke in the outermost harrow area comprising sixteen (16) by sixteen (16) dots, excluding the twelve (12) by twelve (12) dot area at the center, has a weight of one (1). Since the feature vectors set characters to be recognized to the same size, the same characters (of different writings) have approximately the same feature vector. That is, each character has its specific feature vector. However, since there are very similar characters, an embodiment of this invention uses standard patterns of feature vectors for classification in each vector module area for a feature vector, such that a distance is found between a supplied unknown input and twenty (20) classes of standard patterns in each vector module area, in order to improve operation processing speed and recognition rate. That is, the distance is found between the feature vector of the character to be read in each vector module area obtained from the feature vector module 20 and the feature vector of a standard pattern in the vector module area. Each vector module area is classified into classes 1 through 20, and the order of the classes having class distances in respective vector modules is found from the smallest to the fifth-smallest. A distance computing module 21 calculates the distances by using a class dictionary 23-1 (memorizing standard patterns in class units) in a vector dictionary 26. A candidate dictionary 23-2 is used to calculate the distances for respective candidate characters. (At this time a switch SW selects the candidate dictionary 23-2.) An upper rank selection and score assignment module 22 determines the five (5) top-ranked classes described earlier and the scores of the corresponding classes in the respective vector module areas. That is, the upper rank selection and score assignment module 22 determines the scores given to the respective classes of the first to fifth ranks from the distances obtained by the distance computing module 21, i.e. the scores of the respective candidate characters. For instance, five (5) points are given to the candidate character having the smallest distance, and decremental points of four (4) through one (1) are given to respective classes having the second smallest to the fifth smallest distances. These procedures are performed for all forty-nine (49) vector module areas. The processing result of the upper rank selection and score assignment module 22 is supplied to a comprehensive rating module 24. The comprehensive rating module 24 is for calculating the degree of conformance between an input objective, i.e. an inputted character, and its candidate character, and operates in three modes comprising an association conformance mode rated by a score, and a one hundred percent conformance mode and an individual conformance mode each rated by a distance. The association conformance mode is for calculating the score of a candidate character from the vector module area corresponding to the candidate character stored in an association dictionary 23-3 and a class belonging to the vector module area. Figure 2B shows the configuration of an association dictionary. As shown in Figure 2B, the association dictionary 23-3 stores the identifications for the classes to which the candidate characters belong in the respective vector module areas by using the identifications for the candidate characters in the respective vector module areas as the addresses. The association dictionary 23-3 stores only these data obtained by clustering sets of feature vectors corresponding to the identifications for the vector module areas of the respective candidate characters by their (weighted) distances. The class dictionary 23-1 of the same structure corresponding to the association dictionary 23-3 is created concurrently in the distance computing module 21. When at least two kinds of dictionaries are stored in one memory, the one to be used is designated at a dictionary reference starting point. (By comprehensively rating each of the dictionaries divided by identifications for the candidate characters in parallel, they can be referenced at higher speeds.) The association dictionary 23-3 is a table describing the identifications "K" for the classes wherein a candidate character "a" belongs to a vector module area "m". By expressing this relation by, C(m,a)=K for a candidate character "a"(=1 through c_cand), the association dictionary 23-3 is obtained as V(a)=SIGMA(m=1 through c_mask) P(m,C(m,a)) where P(m,K) represents a score, and V(a) represents a comprehensive rating value for the candidate character "a". The one hundred percent conformance mode and the individual conformance mode in the comprehensive rating module 24 are for calculating comprehensive rating value V(a) for each candidate character "a". The one hundred percent conformance mode sets a=1 through c_cand; the individual conformance mode sets J=1 through c_kind and a=b(j); and a distance is expressed as d(m,a), in obtaining V(a) which is a (weighted) distance of the feature vector between the candidate character "a" and the input object. V(a)=SIGMA(m=1 through c_mask) d(m,a) The upper-rank candidate selection module 25 selects and outputs a plurality of characters, e.g. five (5) top-ranked characters that become the recognition results of the read image data. The operations described earlier are performed in a pipeline processing. For instance, one page of the image memory 10 for memorizing image data are read in a pipeline processing, divided into rows by the read control module 15 and outputted to the normalization module 16 in a unit of one character, so that the line-narrowing, stroking, feature vector making and recognition processing described earlier are performed. As described above, the upper-rank candidate selection module 25 is for selecting the five (5) top-ranked characters by ranking the candidate characters per the comprehensive rating value V(a). Its inputs are [a', V(a) 1 2 a', a=1 through c_cand revised] for an association one hundred percent conformance mode; and [j, V(a) 1 2 j=1 through c_kind, a=b(j)] The descending/ascending order of the comprehensive rating value V(a) of the individual conformance mode is sequentially from the biggest for character association; and sequentially from the smallest for others. Its outputs are identifications for the candidate characters arrayed in a sorting result of the inputs (or the inputting order) and their comprehensive rating values V(a). Figure 3 shows in detail the circuit configuration of the row-histogram module 13 and the column-histogram module 14 using the first principle of this invention. The embodiment of this invention shown in Figure 3 provides a two-port DRAM 30 and a DRAM controller 31. The DRAM controller 31 specifies the addresses supplied to the two-port DRAM 30 at input and output times. When image data are supplied to an input terminal (RD) of the two-port DRAM 30 through a FIFO 35, the DRAM controller 31 supplies line data of a direction of the image data to the same column addresses as those specified earlier by sequentially changing row addresses of the two-port DRAM 30. The DRAM controller 31 is connected to an address bus and a data bus of a CPU 32. The CPU 32 controls the DRAM controller 31 for accessing the two-port DRAM 30, immediately before the read image data are supplied to the two-port DRAM 30 through the FIFO 35. The control by the CPU 32 makes the DRAM controller 31 sequentially access row addresses. After accessing the row addresses of one line, the DRAM controller 31 changes the column addresses. The outputs from the FIFO 35, i.e. data supplied to the input terminal of the two-port DRAM 30, are supplied to a tri-state buffer 33. The outputs from the two-port DRAM 30 are supplied to a tri-state buffer 34. The outputs from the tri-state buffer 33 and the tri-state buffer 34 are supplied commonly to a histogram counter 36. Either the tri-state buffer 33 or the tri-state buffer 34 is activated when the histogram counter 36 starts counting prompted by an instruction signal (not shown in the drawing) from the CPU 32. The histogram counter 36 is for counting a dot number in one direction along a line, e.g. one scanning direction or its vertical direction. A histogram memory 37 stores a result for each direction. The outputs from the histogram counter 36 are supplied not only to the histogram memory 37 but also to the data bus. If the DRAM controller 31 controls the histogram counter 36, e.g. when the histogram counter 36 outputs a counting result, the outputs from histogram counter 36 open the buses and have the histogram memory 37 memorize the addresses through the buses. Figure 4 explains in more detail the operations and the circuit configurations of a row-histogram module 13 and a column-histogram module 14 using the first principle of this invention described in Figure 3. The two-port DRAM 30 comprises a random memory 30-1 for storing the row addresses and the column addresses and a serial memory (line memory) 30-2. Vertical line data of the read image data (of n by m dots) are supplied dot-serially to the two-port DRAM 30. At this time, the two-port DRAM 30 stores the row addresses sequentially changed by the DRAM controller 31 while keeping the column addresses constant in a vertical line, so that the vertical line data are sequentially stored in the same column addresses. By having the vertical line data (or the line numbers) sequentially changed and transmitting them to lines 1 through n, the DRAM controller 31 under the control of the CPU 32 has the random memory 30-1 store the transmitted image data (of n by m dots). While these data are being stored, the vertical line data are sequentially supplied to the histogram counter 36 in one-dot units by activating the tri-state buffer 33. The outputs from the tri-state buffer 33 are supplied to an enable terminal of the histogram counter 36 corresponding to a clock pulse supplied in one-dot units. When the inputted dot data are "1" (black), the histogram counter 36 performs a counting. When the inputted dot data are "0" (white), the histogram counter 36 does not perform it. That is, the histogram counter 36 counts the number of black dots whose value is "1". Since the results in vertical-line units are stored in the histogram memory 37 shown in Figure 3, a histogram in vertical-line units is stored in the histogram memory 37. Meanwhile, after the transmitted image data (of n by m dots) are stored in the random memory 30-1, a signal (not shown in the drawing) specifies row addresses. Dot data specified by the row addresses are transmitted to the serial memory 30-2. After the transmission controlled by the CPU 32, by applying a shift clock pulse SAS to the two-port DRAM 30, an output terminal SD of the two-port DRAM 30 outputs data (1 through n) corresponding to a row address in horizontal-line units. At this time, the tri-state buffer 34 is activated and supplies the dot data outputted from the output terminal SD of the two-port DRAM 30 are sequentially supplied to the histogram counter 36. Since outputs from the tri-state buffer 34 are supplied to the enable terminal of the histogram counter 36, dot data are counted in the horizontal direction, similarly to those in the vertical direction described earlier. The counted value is supplied to the histogram memory 37 in horizontal-line units, and the histogram memory 37 obtains the vertical and horizontal histogram results. Whereas image data are transmitted in one-dot units in the first embodiment shown in Figure 3, when a histogram of one direction is inputted, a histogram of the other direction is already stored in the two-port DRAM 30. Since a hard circuit performs the accesses to the two-port DRAM 30 at high speed, it cuts the processing time. Figure 5 shows in detail the circuit configurations of the row-histogram module 13 and the column-histogram module 14 using the first principle of this invention. Figure 6 shows schematically the configurations of the row-histogram module 13 and the column-histogram module 14 using the first principle of this invention. Whereas the first embodiment shown in Figure 3 uses only one two-port DRAM 30, the second embodiment shown in Figure 5 uses a two-port DRAM 40 comprising n by m pieces of the two-port DRAMs 30 for processing in n bit units. That is, n pieces of dot data are supplied to the two-port DRAM 40 in a batch. A DRAM controller 41 is similar to the DRAM controller 31 shown in Figure 3 and is for controlling the two-port DRAM 40 each comprising n by m pieces of the two-port DRAMs 30 by supplying respective addresses and control signals. When dot data are stored, n pieces of these addresses for storing dot data are supplied in a batch to n pieces of the two-port DRAMs 30 in the two-port DRAM 40. By outputting the n pieces of these addresses m times, n by m bits of dot data are stored in the two-port DRAM 40 comprising n by m pieces of the two-port DRAMs 30. More specifically, image data of n dots, i.e. n bits of dot data, are stored in a FIFO 45 before they are supplied to the two-port DRAM 40, and a CPU 42 controls the DRAM controller 41. n bits of dot data are stored in a batch in n pieces of the two-port DRAMs 30 grouped in the two-port DRAM 40. By repeating the procedure m times, n by m bits of dot data are stored in the two-port DRAM 40. The outputs from the FIFO 45 are supplied to a tri-state buffer 43 as well as to the two-port DRAM 40. Per an instruction from the CPU 42, when the tri-state buffer 43 is active, the n inputted bits of data are supplied to a histogram counter 46. The histogram counter 46 then counts the number of black dots included in these n bits of dot data received. That is, the histogram counter 46 comprises m pieces of counters, where m is no less than n. In order to be counted, the outputs from the tri-state buffer 43 are supplied respectively to n pieces of counters among the above m pieces of counters. When the two-port DRAM 40 stores a page of image data, n by m pieces of the two-port DRAMs 30 in the two-port DRAM 40 parallelly output data in the direction vertical to their respective stored data. That is, n pieces of data comprising n by m bits (which is the number of the two-port DRAMs 30 in the two-port DRAM 40) are outputted. Since the two-port DRAM 40 outputs n bits of dot data in the direction vertical to the stored direction, a parallel-to-serial conversion circuit 48 serially outputs the n bits by a further parallel-to-serial conversion of the n bits. Because a clock shifted by a frequency divider 49 is supplied to the respective input terminals for receiving the shift clock pulse SAS in the two-port DRAM 40, the two-port DRAM 40 simultaneously outputs n bits in synchronization with the shift clock pulse SAS. Accordingly, each time n bits are received, the parallel-to-serial conversion circuit 48 supplies the n bits to the histogram counter 46 through a tri-state buffer 44, by converting n bits from parallel data to serial data. Since the outputs from the parallel-to-serial conversion circuit 48 comprise n bits, the histogram counter 46 counts the respective n bits of dot data and supplies the result to the histogram memory 47. As shown in Figure 6, the two-port DRAM 40 as an image memory determines a bit width of one bank based on the transmitted image bit width, and the bank number is set equal to the the histogram counter number (i.e. limited by the histogram counter number), where m is never less than n. Figure 7 explains the operations of the row-histogram module 13 and the column-histogram module 14 using the first principle of this invention. The image data transmitted to the two-port DRAM 40 are stored, as shown in Figure 7. After "i"-th horizontal line data are stored in an "i"-th bank, "i+1"-th horizontal line data are stored in an "i+1"-th bank. After the bank of the maximum number stores the corresponding line data, the line data storage operations are repeated from bank 1. At this time, horizontal line data in their respective banks are stored in the same column addresses so that the horizontal histogram can be easily calculated. Figure 7 illustrates the case where n=m=4. Data are supplied to the two-port DRAM 40 in four (4) bits. Banks 1 through 4 receive dot data of the lines 4a+1 through 4a+4, respectively. For example, when dots of Nos. 9, 10, 11 and 12 in line 4a+1, dots of Nos. 9, 10, 11 and 12 in line 4a+2, dots of Nos. 9, 10, 11 and 12 in line 4a+3, and dots of Nos. 9, 10, 11 and 12 in line 4a+4 are respectively supplied, the respective two-port DRAMs 40 of the same row and column addresses store them. By sequentially repeating the procedure, dots in the direction vertical to the inputted direction are read, parallel data of n by m bits (four (4) by four (4) in Figure 7) are respectively supplied to a plurality of the parallel-to-serial conversion circuits (P/S) 48 provided externally at the shift clock pulse SAS. The parallel-to-serial conversion circuits (P/S) 48 which in turn output data in m bit units. By counting the number m, where m=4 in this case, the histogram counter 46 obtains a histograms of dot data in the direction vertical to the inputted direction. The operations of the horizontal histogram calculation is explained, next. Figure 8 shows the operations of the horizontal histogram calculation of the row-histogram module 13 and the column-histogram module 14 using the first principle of this invention. Horizontal histogram calculation patterns are expressed by histogram calculation starting/ending horizontal lines and histogram calculation starting/ending vertical lines. As shown in Figure 8, the operating procedures are as follows. First, a target bank and a target address are obtained from the histogram calculation starting horizontal line and the histogram calculation ending horizontal line. Second, the number of a histogram calculation starting vertical line is set as a serial memory address for determining data outputted first from a serial memory after the shift clock pulse SAS is inputted, horizontal line image data are transmitted to the serial memory in the two-port DRAM 40 by inputting a computable address to the target bank, and the serial memory is set to a designated state by inputting the serial memory address. If the histogram calculation ending vertical line and the histogram calculation starting horizontal line are inputted in this state, target image data are outputted from the serial output terminal of the two; port DRAM 40 and the histogram counter 46 counts the number of black dots (or white dots). When the difference between the number of the histogram calculation ending horizontal lines and the number of the histogram calculation starting horizontal lines is greater than the number of banks, the above procedures are repeated. The operations of the vertical histogram calculation is explained, next. Figure 9 shows the operations of the vertical histogram calculation of the row-histogram module 13 and the column-histogram module 14 using the first principle of this invention. Vertical histogram calculation patterns are expressed by histogram calculation starting/ending horizontal lines and histogram calculation starting/ending vertical lines. As shown in Figure 9, the operating procedures are as follows. First, a target bank and a target address are obtained from the histogram calculation starting horizontal line and the histogram calculation ending horizontal line. Second, by setting the histogram calculation starting horizontal line and the histogram calculation ending horizontal line as addresses common to all banks, a calculation starting row address is inputted to the target bank. Third, upon receiving a common column address, a random board of the two-port DRAM 40 outputs a dot of a horizontal line image, and the histogram counter 46 counts the number of black dots (or white dots). When the difference between the number of the histogram calculation ending horizontal lines and the number of the histogram calculation starting horizontal lines is greater than the number of address storage bits, the above procedures are repeated. Since the above operations enable hardware to parallelly obtain vertical or horizontal histograms in one-dot units or in units of a predetermined number of bits, high speed histogram calculations are realized.

Claims: A data processing system comprising: a two-port DRAM (30), supplied with image data in one-pixel units in a sequence corresponding to a first scanning direction of said image data, the two-port DRAM (30) comprising a serial memory for sequentially outputting image data in one-pixel units in a sequence corresponding to a second scanning direction, perpendicular to the first direction, of said image by a shift clock pulse; a selecting means (33, 34) for selecting a direction of image data supplied to said two-port DRAM (30) or pixel data output from said two-port DRAM (30); a counter (36) for counting the number of one of 1 and 0 in said direction of the image data selected by said selecting means (33, 34). A data processing system according to claim 1, wherein said two-port DRAM (30) has a shift clock input terminal for outputting said pixels in a direction perpendicular to said image data after said image data and pixels have been shifted; and said shift clock input terminal supplies shift clock pulses corresponding to a number of picture elements to be obtained to obtain a histogram in said perpendicular direction. A data processing system according to claim 1 or 2, wherein said two-port DRAM (30) has a column address and a row address, and assigns a pixel coordinate on one direction of said image data to a column address and a pixel coordinate on the other direction of said image data is assigned to a row address. A data processing system according to any of the claims 1 to 3, wherein: said selecting means (33, 34) selects either image data supplied to said two-port DRAM (30) or pixel data output from said two-port DRAM (30) and obtains a histogram for said first direction when the supplied image data are selected and a histogram for said second direction when the output pixel data are selected. A data processing system according to any of the preceding claims, wherein said two-port DRAM means (40) comprises a plurality of two-port DRAM's; said system further comprises a parallel-to-serial conversion circuit (48) for shifting the outputs supplied from outputs from said plurality of two-port DRAM's (40); and said counter (46) counts the number of one of 0 and 1 of the outputs from said parallel-to-serial conversion circuit (48).

Inventors: ASO HIROTOMO, HAYASAKA HISAYOSHI, KATSUYAMA YUTAKA, KIMURA MASAYUKI, OHMACHI SHIN ICHIRO, SAKURAI YOSHIYUKI, SUZUKI KENJI, ASO, HIROTOMO, HAYASAKA, HISAYOSHI, KATSUYAMA, YUTAKA, KIMURA, MASAYUKI, OHMACHI, SHIN'ICHIRO, SAKURAI, YOSHIYUKI, SUZUKI, KENJI
Applicants: FUJITSU LTD, FUJITSU LIMITED
Application year: 1991
Main classification: G06K9
IPC codes: G06K9