System and method for extracting image data
First Claim
1. A data extraction system comprising:
- at least one data storage memory for storing data formatted into a plurality of data samples, each of said plurality of data samples having multiple bits;
a data extraction processor, for receiving said data from said data storage memory one processor word at a time, wherein a processor word includes at least two of said data samples, for simultaneously processing said at least two of said data samples in each said processor word, and for generating at least one result record containing information extracted from said data samples in at least one said processor word, said data extraction processor comprising a segmentation processor including;
a label computation engine, coupled to said data flow controller, for simultaneously receiving said data samples in each said processor word, for identifying transitions between said data samples and generating transition bit signals for each potential transition, and for computing a label code for each said potential transition using said transition bit signals;
a label row FIFO shifter, coupled to said label computation engine, for receiving and storing said label code for each said potential transition;
a neighborhood computation unit, coupled to said label computation engine and to said label row FIFO shifter, for receiving current row labels from said label computation engine and previous row labels from said label row FIFO shifter, and for computing connecting relationships to segments in a previous row;
a segment processor controller, coupled to said data flow controller, for providing a current segment length; and
a segment record generator, coupled to said label computation engine, said segment processor controller and said neighborhood computation unit, for receiving said current row labels, said current segment length, and information about said connecting relationships, and for generating at least one segment record for each transition event; and
a data flow controller, coupled between said at least one data storage memory and said data extraction processor, for controlling the flow of processor words into said data extraction processor and the flow of said result records out of said data extraction processor.
9 Assignments
0 Petitions
Accused Products
Abstract
A data extraction processor receives data, such as image data, at a high rate of speed and generates processed results, generally at a much lower overall data rate. This sort of processing is particularly useful for machine vision image data, because it can reduce a large image data set to a much smaller data set that is more immediately useful for the currently running application. The data extraction processor may include a segmentation processor, a gradient processor, or other similar types of data extraction processors. The disclosed data extraction processor includes a data flow controller which provides image data to the processors and receives the results from the processors. The data flow controller includes at least one FIFO (first-in, first-out) memory, which allows for the provision of data to the data extraction processor and the receipt of result data therefrom to occur at different rates. Since data extraction algorithms usually generate much less data that they receive, the data flow controller stalls the flow of output data while the analysis proceeds through the data. In some image-dependent situations, however, the analysis may generate more data than it receives. In these situations, the data flow controller stalls the incoming data while the additional results are generated.
15 Citations
13 Claims
-
1. A data extraction system comprising:
-
at least one data storage memory for storing data formatted into a plurality of data samples, each of said plurality of data samples having multiple bits; a data extraction processor, for receiving said data from said data storage memory one processor word at a time, wherein a processor word includes at least two of said data samples, for simultaneously processing said at least two of said data samples in each said processor word, and for generating at least one result record containing information extracted from said data samples in at least one said processor word, said data extraction processor comprising a segmentation processor including; a label computation engine, coupled to said data flow controller, for simultaneously receiving said data samples in each said processor word, for identifying transitions between said data samples and generating transition bit signals for each potential transition, and for computing a label code for each said potential transition using said transition bit signals; a label row FIFO shifter, coupled to said label computation engine, for receiving and storing said label code for each said potential transition; a neighborhood computation unit, coupled to said label computation engine and to said label row FIFO shifter, for receiving current row labels from said label computation engine and previous row labels from said label row FIFO shifter, and for computing connecting relationships to segments in a previous row; a segment processor controller, coupled to said data flow controller, for providing a current segment length; and a segment record generator, coupled to said label computation engine, said segment processor controller and said neighborhood computation unit, for receiving said current row labels, said current segment length, and information about said connecting relationships, and for generating at least one segment record for each transition event; and a data flow controller, coupled between said at least one data storage memory and said data extraction processor, for controlling the flow of processor words into said data extraction processor and the flow of said result records out of said data extraction processor. - View Dependent Claims (2, 3, 4)
-
-
5. A method of extracting segment data from image data and generating records reporting said segment data, said method comprising the steps of:
-
zeroing a current label at the beginning of a current row of image data; receiving image pixel data samples from image memory, one processor word at a time, said processor word including at least two said image pixel data samples; and processing each said processor word according to the following steps; simultaneously determining if each said image pixel data sample in said processor word is in the foreground or background; simultaneously identifying any foreground/background transitions between each of said image pixel data samples and neighboring image pixel data samples and generating a transition bit signal for each possible transition; adding each said transition bit signal to said current label to compute a correct label code for each possible transition; receiving label codes for a row previous to said current row; computing connection relationships to segments in said row previous to said current row; if a transition is identified, reporting at least one record containing information about said identified transition within said processor word; and updating said current label by adding the total number of identified transitions. - View Dependent Claims (6, 7)
-
-
8. A method of extracting gradient data from image data and generating records reporting said gradient data comprising the steps of:
-
receiving a plurality of pixel data samples packed into a single processor word of data simultaneously; computing gradient values between each of said pixel data samples using convolution weights; comparing said gradient values with neighbor gradient values to identify a local maximum gradient value greater than said neighbor gradient values; reporting a winning gradient data point by generating a first gradient data word comprising at least one of the maximum gradient value, the gray value of the central pixel, bits to indicate first point in a row, positive, negative and column coordinate; and generating a second gradient data word comprising a numerator and a denominator which may be used to compute the fractional position of the gradient data point. - View Dependent Claims (9, 10, 11, 12)
-
-
13. An image data extraction system comprising:
-
at least one data storage memory for storing image data formatted into a plurality of data samples, each of said plurality of image data samples corresponding to an image pixel having multiple bits; a data flow controller, coupled between said at least one data storage memory and a data extraction processor, for controlling the flow of processor words into said data extraction processor and the flow of result records out of said data extraction processor; and a data extraction processor, for receiving said image data from said data storage memory one processor word at a time, wherein a processor word includes at least two of said image data samples, for simultaneously processing said at least two of said image data samples in each said processor word, and for generating at least one result record containing information extracted from said at least two image data samples in at least one said processor word, said data extraction processor comprising a segmentation processor including; a label computation engine, coupled to a data flow controller, for simultaneously receiving said at least two image data samples in each said processor word, for identifying transitions between said at least two image data samples and generating transition bit signals for each potential transition, and for computing a label code for each said potential transition using said transition bit signals; a label row FIFO shifter, coupled to said label computation engine, for receiving and storing said label code for each said potential transition; a neighborhood computation unit, coupled to said label computation engine and to said label row FIFO shifter, for receiving current row labels from said label computation engine and previous row labels from said label row FIFO shifter, and for computing connecting relationships to segments in a previous row; a segment processor controller, coupled to said data flow controller, for providing a current segment length; and a segment record generator, coupled to said label computation engine, said segment processor controller, and said neighborhood computation unit, for receiving said current row labels, said current segment length, and information about said connecting relationships, and for generating at least one segment record for each transition event.
-
Specification