Rotation and position invariant optical character recognition
First Claim
Patent Images
1. A method for rapid recognition of a sequence of features in an optical recognition system having a camera means, parallel processing means, I/O means, parallel memory means, CPU means and display means, said method comprising the steps of:
- acquiring an image with said camera of a first feature in said sequence;
storing said image in a first buffer;
transferring said image in said first buffer to a second buffer;
segmenting said image in said second buffer and storing said segmented image in a third buffer;
vector correlating said segmented image in said third buffer with feature templates to create a correlation image in a fourth buffer;
said segmentation and correlation steps being done by said parallel processing means simultaneously while said step of acquiring an image acquires new images in said sequence;
transferring said vector correlation from said fourth buffer to a fifth buffer;
analyzing said vector correlation in said fifth buffer using said CPU means after two images are acquired by said camera to recognize said features; and
transferring said recognized feature into an array, wherein said camera, parallel processor and said CPU can process from an input buffer and output it to an output buffer without disturbing the contents of the other components in the system, whereby the operation of said camera means, said parallel processing means, and CPU means overlap to provide greater processing speed.
1 Assignment
0 Petitions
Accused Products
Abstract
A character recognition system wherein the flexibility of the recognition task is expanded for orientation independence, position independence, and orientation and position independence. The system also provides a technique for implementing concurrency in the processing to achieve high speed without sacrificing performance. The system is readily implemented on conventional machine vision computing systems.
74 Citations
8 Claims
-
1. A method for rapid recognition of a sequence of features in an optical recognition system having a camera means, parallel processing means, I/O means, parallel memory means, CPU means and display means, said method comprising the steps of:
-
acquiring an image with said camera of a first feature in said sequence; storing said image in a first buffer; transferring said image in said first buffer to a second buffer; segmenting said image in said second buffer and storing said segmented image in a third buffer; vector correlating said segmented image in said third buffer with feature templates to create a correlation image in a fourth buffer; said segmentation and correlation steps being done by said parallel processing means simultaneously while said step of acquiring an image acquires new images in said sequence; transferring said vector correlation from said fourth buffer to a fifth buffer; analyzing said vector correlation in said fifth buffer using said CPU means after two images are acquired by said camera to recognize said features; and transferring said recognized feature into an array, wherein said camera, parallel processor and said CPU can process from an input buffer and output it to an output buffer without disturbing the contents of the other components in the system, whereby the operation of said camera means, said parallel processing means, and CPU means overlap to provide greater processing speed. - View Dependent Claims (3)
-
-
2. A method for rapid recognition of a sequence of objects by an Optical Character Recognition System having a camera means, parallel processing means, CPU means, display means, and I/O means, said method comprising the steps of:
-
acquiring an image with said camera of a first object in said sequence; storing said image of said first object in a first buffer; transferring said image of said first object in said first buffer to a second buffer; acquiring an image with said camera of a second object in said sequence; storing said image of said second object in said first buffer; segmenting said image of said first object in said second buffer using said parallel processing means to create a segmented image in a third buffer; vector correlating said segmented image of said first object in said third buffer with character templates using said parallel processing means to create a correlation image in a fourth buffer; transferring said image of said second object in said first buffer to said second buffer; transferring said correlated image of said first object in said fourth buffer to a fifth buffer; acquiring an image with said camera of a third object in said sequence; storing said image of said third object in said first buffer; segmenting said image of said second object in said second buffer using said parallel processing means to create a segmented image in said third buffer, vector correlating said segmented image of said second object in said third buffer with character templates using said parallel processing means to create a correlation image in said fourth buffer; analyzing said correlation image of said first object in said fifth buffer using said CPU means to recognize said characters; storing said recognized characters into an array; displaying in said monitor said recognized characters of said first object in said array, said segmented image of said second object in said third buffer, and said image of said first object in said first buffer; transferring said image of said third object in said first buffer to said second buffer; and transferring said correlated image of said second object in said fourth buffer to said fifth buffer. - View Dependent Claims (6)
-
-
4. A method of rotation invariant recognition of a sequence of objects in an Optical Character Recognition system having a camera means, parallel processing means, CPU means, I/O means and display means, said method comprising the steps of:
-
acquiring an image with said camera of a first object in said sequence; storing said image of said first object in a first buffer; and transferring said image of said first object in said first buffer to a second buffer; acquiring an image with said camera of a second object in said sequence; storing said image of said second object in said first buffer; segmenting using said parallel processing means said image of said first object in said second buffer to create a segmented image in a third buffer; extracting blob image for principal axis using said parallel processing means from said segmented image of said first object in said third buffer to create a blob image in a fourth buffer; transferring said segmented image of said first object in said third buffer to a fifth buffer; transferring said blob image of said first object in said fourth buffer to a sixth buffer; transferring said image of said second object in said first buffer to said second buffer; acquiring an image with said camera of a third object in said sequence; storing said image of said third object in said first buffer; segmenting using said parallel processing means said image of said second object in said second buffer to create a segmented image in said third buffer; extracting blob image for principal axis using said parallel processing means from said segmented image of said second object in said third buffer to create a blob image in said fourth buffer; computing principal axis using said CPU means from said blob image of said first object in said sixth buffer to determine the centroid and orientation of said first object in a first array; transferring said centroid and orientation of said first object in said first array to a second array; transferring said image of said third object in said first buffer to said second buffer; transferring said segmented image of said second object in said third buffer to said fifth buffer; transferring said blob image of said second object in said fourth buffer to said sixth buffer; transferring said segmented image of said first object in said fifth buffer to a seventh buffer; acquiring an image with said camera of a fourth object in said sequence; storing said image of said fourth object in said first buffer; segmenting using said parallel processing means said image of said third object in said second buffer to create a segmented image in said third buffer; extracting blob image for principal axis using said parallel processing means from said segmented image of said third object in said third buffer to create a blob image in said fourth buffer; computing principal axis using said CPU means from said blob image of said second object in said sixth buffer to create the centroid and orientation of said second object in said first array; rotating using parallel processing means said image of said first object in said seventh buffer with centroid and orientation in said second array to create a rotated image in an eighth buffer; vector correlating using parallel processing means said rotated image of said first object in said eighth buffer with both erect and inverted character templates to create a correlated image in a ninth buffer; transferring said correlated image of said first object in said ninth buffer to a tenth buffer; transferring said segmented image of said second object in said fifth buffer to said seventh buffer; transferring said centroid and orientation of said second object in said first array to said second array; transferring said segmented image of said third buffer to said fifth buffer; transferring said blob image of said third object in said fourth buffer to said sixth buffer; transferring said image of said fourth object in said first buffer to said second buffer; acquiring an image with said camera of a fifth object in said sequence; storing said image of said fifth object in said first buffer; segmenting using said parallel processing means said image of said fourth object in said second buffer to create a segmented image in said third buffer; extracting blob image for principal axis using said parallel processing means from said segmented image of said fourth object in said third buffer to create a blob image in said fourth buffer; computing principal axis using said CPU means from said blob image of said third object in said sixth buffer to create the centroid and orientation of said third object in said first array; rotating using parallel processing means said image of said second object in said seventh buffer with centroid and orientation in said second array to create a rotated image in eighth buffer; vector correlating using parallel processing means said rotated image of said second object in said eighty buffer with both erect and inverted character templates to create a correlated image in said ninth buffer; analyzing using said CPU means said correlation image of said first object in said tenth buffer to recognize said characters; storing said recognized characters into a third array; display said recognized characters of said first object in said third array, said segmented image of said second object in said seventh buffer, and said image of said fifth object in said first buffer; transferring said correlated image of said second object in said ninth buffer to said tenth buffer; transferring said segmented image of said third object in said fifth buffer to said seventh buffer; transferring said centroid and orientation of said third object in said first array to said second array; transferring said segmented image of said fourth object in said third buffer to said fifth buffer; transferring said blob image of said fourth object in said fourth buffer to said sixth buffer; transferring said image of said fifth object in said first buffer to said second buffer. - View Dependent Claims (8)
-
-
5. A method of position invariant recognition of a sequence of objects in an Optical Character Recognition system having a camera means, parallel processing means, CPU means, I/O means and display means, said method comprising the steps of:
-
acquiring an image with said camera of a first object in said sequence; storing said image of said first object in a first buffer; transferring said image of said first object in said first buffer to a second buffer; acquiring an image with said camera of a second object in said sequence; storing said image of said second object in said first buffer; segmenting using said parallel processing means said image of said first object in said second buffer to create a segmented image in a third buffer; vector correlating fiducial template using said parallel processing means said segmented image of said first object in said third buffer to create a fiducial correlated image in a fourth buffer; transferring said segmented image of said first object in said third buffer to a fifth buffer; transferring said fiducial correlated image of said first object in said fourth buffer to a sixth buffer; transferring said image of said second object in said first buffer to said second buffer; acquiring an image with said camera of a third object in said sequence; storing said image of said third object in said first buffer; segmenting using said parallel processing means said image of said second object in said second buffer to create a segmented image in said third buffer; vector correlating said fiducial template using said parallel processing means said segmented image of said second object in said third buffer to create a fiducial correlated image in said fourth buffer; computing fiducial location using said CPU means from said fiducial correlated image of said first object in said sixth buffer to determine the displacement of said first object in a first array; transferring said segmented image of said first object in said fifth buffer to a seventh buffer; transferring said displacement of said first object in said first array to a second array; transferring said segmented image of said second object in said third buffer to said fifth buffer; transferring said fiducial correlated image of said second object in said fourth buffer to said sixth buffer; transferring said image of said third object in said first buffer to said second buffer; acquiring an image with said camera of a fourth object in said sequence; storing said image of said fourth object in said first buffer; segmenting using said parallel processing means said image of said third object in said second buffer to create a segmented image in said third buffer; vector correlating said fiducial template using said parallel processing means said segmented image of said third object in said third buffer to create a blob image in said fourth buffer; computing fiducial location using said CPU means from said fiducial correlation image of said second object in said sixth buffer to create the displacement of said second object in said first array; shifting using parallel processing means said image of said first object in said seventh buffer with displacement in said second array to create a shifted image in eighth buffer; vector correlating using parallel processing means said shifted image of said first object in said eighth buffer with character templates to create a correlated image in a ninth buffer; transferring said correlated image of said first object in said ninth buffer to a tenth buffer; transferring said segmented image of said second object in said fifth buffer to said seventh buffer; transferring said displacement of said second object in said first array to a second array; transferring said segmented image of said third object in said third buffer to said fifth buffer; transferring said fiducial correlation image of said third object in said fourth buffer to said sixth buffer; transferring said image of said fourth object in said first buffer to said second buffer; acquiring an image with said camera of a fifth object in said sequence; storing said image of said fifth object in said first buffer; segmenting using said parallel processing means said image of said fourth object in said second buffer to create a segmented image in said third buffer; vector correlating with fiducial template using said parallel processing means said segmented image of said fourth object in said third buffer to create a fiducial correlated image in said fourth buffer; computing fiducial location using said CPU means from said fiducial correlated image of said third object in said sixth buffer to create the displacement of said third object in a first array; shifting using parallel processing means said image of said second object in said seventh buffer with displacement in said second array to crate a shifted image in eighth buffer; vector correlating using parallel processing means said rotated image of said second object in said eighth buffer with character templates to create a correlated image in a ninth buffer; analyzing using said CPU means said correlation image of said first object in said tenth buffer to recognize said characters; storing said recognized characters into a third array; display said recognized characters of said first object in said third array, said segmented image of said second object in said seventh buffer, and said image of said fifth object in said first buffer; transferring said correlated image of said second object in said ninth buffer to a tenth buffer; transferring said segmented image of said third object in said fifth buffer to said seventh buffer; transferring said displacement of said third object in said first array to said second array; transferring said segmented image of said fourth object in said third buffer to said fifth buffer; transferring said fiducial correlated image of said fourth object in said fourth buffer to said sixth buffer; and transferring said image of said fifth object in said first buffer to said second buffer.
-
-
7. A method of rotation and position invariant recognition of a sequence of objects in an Optical Character Recognition system having a camera means, parallel processing means, CPU means, I/O means and display means, said method comprising the steps of:
-
acquiring an image with said camera of a first object in said sequence; storing said image of said first object in a first buffer; transferring said image of said first object in said first buffer to a second buffer; acquiring an image with said camera of a second object in said sequence; storing said image of said second object in said first buffer; segmenting using said parallel processing means said image of said first object in said second buffer to create a segmented image in a third buffer; extracting blob image for principal axis using said parallel processing means from said segmented image of said first object in said third buffer to create a blob image in a fourth buffer; transferring said segmented image of said first object in said third buffer to a fifth buffer; transferring said blob image of said first object in said fourth buffer to a sixth buffer; transferring said image of said second object in said first buffer to said second buffer; acquiring an image with said camera of a third object in said sequence; storing said image of said third object in said first buffer; segmenting using said parallel processing means said image of said second object in said second buffer to create a segmented image in said third buffer; extracting blob image for principal axis using said parallel processing means from said segmented image of said second object in said third buffer to create a blob image in said fourth buffer; computing principal axis using said CPU means from said blob image of said first object in said sixth buffer to create the centroid and orientation of said first object in a first array; transferring said segmented image of said first object in said fifth buffer to a seventh buffer; transferring said centroid and orientation of said first object in said first array to a second array; transferring said segmented image of said second object in said third buffer to said fifth buffer; transferring said blob image of said second object in said fourth buffer to said sixth buffer; transferring said image of said third object in said first buffer to said second buffer; acquiring an image with said camera of a fourth object in said sequence; storing said image of said fourth object in said first buffer; segmenting using said parallel processing means said image of said third object in said second buffer to create a segmented image in said third buffer; extracting blob image for principal axis using said parallel processing means from said segmented image of said third object in said third buffer to create a blob image in said fourth buffer; computing principal axis using said CPU means from said blob image of said second object in said sixth buffer to create the centroid and orientation of said second object in said first array; rotating using parallel processing means said image of said first object in said seventh buffer with centroid and orientation in said second array to create a rotated image in eighth buffer; vector correlating fiducial template using said parallel processing means said segmented image of said first object in said eighth buffer to create a fiducial correlated image in a ninth buffer; transferring said rotated image of said first object in said eighth buffer to a tenth buffer; transferring said fiducial correlated image of said first object in said ninth buffer to a eleventh buffer; transferring said segmented image of said second object in said fifth buffer to said seventh buffer; transferring said centroid and orientation of said second object in said first array to said second array; transferring said segmented image of said third object in said third buffer to said fifth buffer; transferring said blob image of said third object in said fourth buffer to said sixth buffer; transferring said image of said fourth object in said first buffer to said second buffer; acquiring an image with said camera of a fifth object in said sequence; storing said image of said fifth object in said first buffer; segmenting using said parallel processing means said image of said fourth object in said second buffer to create a segmented image in said third buffer; extracting blob image for principal axis using said parallel processing means from said segmented image of said fourth object in said third buffer to create a blob image in said fourth buffer; computing principal axis using said CPU means from said blob image of said third object in said sixth buffer to create the centroid and orientation of said third object in said first array; rotating using parallel processing means said image of said second object in said seventh buffer with centroid and orientation in said second array to create a rotated image in eighth buffer; vector correlating fiducial template using said parallel processing means said segmented image of said second object in said eighth buffer to create a fiducial correlated image in a ninth buffer; computing fiducial location using said CPU means from said fiducial correlated image of said first object in said eleventh buffer to create the displacement of said first object in a third array; transferring said rotated image of said first object in said tenth buffer to a twelfth buffer; transferring displacement of said first object in said third array to a fourth array; transferring said rotated image of said second object in said eighth buffer to said tenth buffer; transferring said fiducial correlated image of said second object in said ninth buffer to said eleventh buffer; transferring said segmented image of said third object in said fifth buffer to said seventh buffer; transferring said centroid and orientation of said third object in said first array to said second array; transferring said segmented image of said fourth object in said fourth buffer to said fifth buffer; transferring said blob image of said fourth object in said fourth buffer to said sixth buffer; transferring said image of said fifth object in said first buffer to said second buffer; acquiring an image with said camera of a sixth object in said sequence; storing said image of said sixth object in said first buffer; segmenting using said parallel processing means said image of said fifth object in said second buffer to create a segmented image in said third buffer; extracting blob image for principal axis using said parallel processing means from said segmented image of said fifth object in said third buffer to create a blob image in said fourth buffer; computing principal axis using said CPU means from said blob image of said fourth object in said sixth buffer to create the centroid and orientation of said fourth object in said first array; rotating using parallel processing means said image of said third object in said seventh buffer with centroid and orientation in said second array to create a rotated image in eighth buffer; vector correlating fiducial template using said parallel processing means said segmented image of said third object in said eighth buffer to create a fiducial correlated image in a ninth buffer; computing fiducial location using said CPU means from said fiducial correlated image of said second object in said eleventh buffer to create the displacement of said second object in said third array; shifting using parallel processing means said image of said first object in said twelfth buffer with displacement in said fourth array to create a shifted image in thirteenth buffer; vector correlating using parallel processing means said shifted image of said first object in said thirteenth buffer with character templates to create a correlated image in a fourteenth buffer; transferring said correlated image of said first object in said fourteenth buffer to a fifteenth buffer; transferring said rotated image of said second object in said tenth buffer to said twelfth buffer; transferring said displacement of said second object in said third array to said fourth array; transferring said rotated image of said third object in said eighth buffer to said tenth buffer; transferring said fiducial correlated image of said third object in said ninth buffer to said eleventh buffer; transferring said segmented image of said fourth object in said fifth buffer to said seventh buffer; transferring said centroid and orientation of said fourth object in said first array to said second array; transferring said segmented image of said fifth object in said third buffer to said fifth buffer; transferring said blob image of said fifth object in said fourth buffer to said sixth buffer; transferring said image of said sixth object in said first buffer to said second buffer; acquiring an image with said camera of an seventh object in said sequence; storing said image of said seventh object in said first buffer; segmenting using said parallel processing means said image of said sixth object in said second buffer to create a segmented image in said third buffer; extracting blob image for principal axis using said parallel processing means from said segmented image of said sixth object in said third buffer to create a blob image in said fourth buffer; computing principal axis using said CPU means from said blob image of said fifth object in said sixth buffer to create the centroid and orientation of said fifth object in said first array; rotating using parallel processing means said image of said fourth object in said seventh buffer with centroid and orientation in said second array to create a rotated image in eighth buffer; vector correlating fiducial template using said parallel processing means said segmented image of said fourth object in said eighth buffer to create a fiducial correlated image in a ninth buffer; computing fiducial location using said CPU means from said fiducial correlated image of said third object in aid eleventh buffer to create the displacement of said third object in a third array; shifting using parallel processing means said image of said second object in said twelfth buffer with displacement in said fourth array to create a shifted image in thirteenth buffer; vector correlating using parallel processing means said shifted image of said second object in said thirteenth buffer with character templates to create a correlated image in a fourteenth buffer; analyzing using said CPU means said correlation image of said first object in said fifteenth buffer to recognize said characters; storing said recognized characters into a fifth array; display said recognized characters of said first object in said fifth array, said segmented image of said second object in said twelfth buffer, and said image of said sixth object in said first buffer; transferring said correlated image of said second object in said fourteenth buffer to said fifteenth buffer; transferring said rotated image of said third object in said tenth buffer to said twelfth buffer; transferring said displacement of said third object in said third array to said fourth array; transferring said rotated image of said fourth object in said eighth buffer to said tenth buffer; transferring said fiducial correlated image of said fourth object in said ninth buffer to said eleventh buffer; transferring said segmented image of said fifth object in said fifth buffer to said seventh buffer; transferring said centroid and orientation of said fifth object in said first array to said second array; transferring said segmented image of said sixth object in said third buffer to said fifth buffer; transferring said blob image of said sixth object in said fourth buffer to said sixth buffer; and transferring said image of said seventh object in said first buffer to said second buffer.
-
Specification