Patent US5796868A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5796868A Expired / Lapsed US ⏱️ 0.0 years remaining

Object edge point filtering system for machine vision

Assignee: Cognex Corp
•
Filing: 1995-12-28
•
Granted: 1998-08-18
•
Expires: 2015-12-28
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A system and method for filtering edge points in an edge image represented by an array of edge image coordinates each having an edge point magnitude. An edge map array is formed of edge map coordinates each assigned one of three edge indicator values indicative of the relationship between the corresponding edge image coordinate edge point magnitude and two preselected edge magnitude thresholds. An output edge point array is formed of output edge point coordinates to indicate those edge image coordinates and corresponding object image pixels that are validated by the system as being associated with likely object edge points. This is accomplished by constructing a first address stack to track memory addresses at which edge map coordinate values are stored and constructing a second address stack to track memory addresses at which output edge point coordinate values are stored as the output edge point array is constructed. Selected output edge point coordinates are assigned with a preselected edge point value by first scanning the edge map array for edge coordinates assigned the first preselected edge indicator value and, using the stacks to keep track of the addresses of these coordinates, neighboring edge map coordinates are examined for any edge map coordinates assigned with either the first or second preselected edge indicator values. The address of edge map coordinates found to be assigned with either the first or second preselected edge indicator values are then tracked by the stacks.

Inventors

  • 👤 Paul Dutta-Choudhury

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-09 10:50
CPC Classifications
G; G06; G06T; G06T7/00; G06T7/10; G06T7/12; G06T2207/00; G06T2207/10; G06T2207/10016; G06T2207/20; G06T2207/20048; G06T2207/20061; G06T2207/20081

Claims Analysis

Total Claims: 34
Claim 1
Independent Claim 533 words
A method for filtering possible edge points in an edge image represented by an array of edge image coordinates each having an edge point magnitude in a preselected range of edge point magnitudes, the edge image corresponding to an image of an object represented by an array of pixels, comprising the steps of: a. forming an edge map array of edge map coordinates arranged in correspondence with the edge image, each edge map coordinate assigned one of three preselected edge indicator values indicative of a relationship between the corresponding edge image coordinate edge point magnitude and two preselected edge point magnitude thresholds, the assigned edge map coordinate values being stored in an addressable memory; b. forming an output edge point array of output edge point coordinates arranged in correspondence with the edge image, comprising the steps of: c. initializing each output edge point coordinate to a first of two preselected edge point values, the initialized coordinate values being stored in an addressable memory; d. constructing a first address stack to track memory addresses at which edge map coordinate values in the edge map array are stored; e. constructing a second address stack to track memory addresses at which output edge point coordinate values in the output edge point array are stored; f. assigning to selected of the initialized output edge point coordinates the second preselected edge point value, comprising the steps of: g. scanning the edge map array for an edge map coordinate assigned the first preselected edge indicator value; h. pushing on the first stack the edge map array address of a first encountered edge map coordinate assigned the first preselected edge indicator value; i. pushing on the second stack the output edge point array address corresponding to the edge map array address pushed on the first stack in step h; j. popping off of the first and second stacks the edge map coordinate address and corresponding output edge point coordinate address, respectively most recently pushed on the stacks; k. assigning to the edge map coordinate whose address was popped off of the first stack in step j the third edge indicator value; l. assigning to the output edge point coordinate whose address was popped off the second stack in step j the second preselected edge point value; m. examining edge map coordinates in the edge map array that neighbor the edge map coordinate whose address was popped off the first stack in step j for any edge map coordinates assigned either the first or second preselected edge indicator values; n. pushing on the first stack addresses of edge map coordinates found in step m to be assigned either the first or second preselected edge indicator values; o. pushing on the second stack the output edge point coordinate address corresponding to any edge map array address pushed on the first stack in step n; p. repeating steps j-o until all addresses are popped off the first and second stacks; q. repeating steps g-p until the edge map array is entirely scanned, those selected output edge point coordinates in the resulting output edge point array assigned with the second preselected edge point value each representing a likely edge point in the object image.
Claim 2
Independent Claim 533 words
A method for filtering possible edge points in an edge image represented by an array of edge image coordinates each having an edge point magnitude in a preselected range of edge point magnitudes, the edge image corresponding to an image of an object represented by an array of pixels, comprising the steps of: a. forming an edge map array of edge map coordinates arranged in correspondence with the edge image, each edge map coordinate assigned one of three preselected edge indicator values indicative of a relationship between the corresponding edge image coordinate edge point magnitude and two preselected edge point magnitude thresholds, the assigned edge map coordinate values being stored in an addressable memory; b. forming an output edge point array of output edge point coordinates arranged in correspondence with the edge image, comprising the steps of: c. initializing each output edge point coordinate to a first of two preselected edge point values, the initialized coordinate values being stored in an addressable memory; d. constructing a first address stack to track memory addresses at which edge map coordinate values in the edge map array are stored; e. constructing a second address stack to track memory addresses at which output edge point coordinate values in the output edge point array are stored; f. assigning to selected of the initialized output edge point coordinates the second preselected edge point value, comprising the steps of: g. scanning the edge map array for an edge map coordinate assigned the first preselected edge indicator value; h. pushing on the first stack the edge map array address of a first encountered edge map coordinate assigned the first preselected edge indicator value; i. pushing on the second stack the output edge point array address corresponding to the edge map array address pushed on the first stack in step h; j. popping off of the first and second stacks the edge map coordinate address and corresponding output edge point coordinate address, respectively most recently pushed on the stacks; k. assigning to the edge map coordinate whose address was popped off of the first stack in step j the third edge indicator value; l. assigning to the output edge point coordinate whose address was popped off the second stack in step j the second preselected edge point value; m. examining edge map coordinates in the edge map array that neighbor the edge map coordinate whose address was popped off the first stack in step j for any edge map coordinates assigned either the first or second preselected edge indicator values; n. pushing on the first stack addresses of edge map coordinates found in step m to be assigned either the first or second preselected edge indicator values; o. pushing on the second stack the output edge point coordinate address corresponding to any edge map array address pushed on the first stack in step n; p. repeating steps j-o until all addresses are popped off the first and second stacks; q. repeating steps g-p until the edge map array is entirely scanned, those selected output edge point coordinates in the resulting output edge point array assigned with the second preselected edge point value each representing a likely edge point in the object image.
Claim 3
Dependent Claim 29 words
The method of claim 1 wherein the two preselected edge point magnitude thresholds comprise a high magnitude threshold and a low magnitude threshold less than the high magnitude threshold.
Claim 4
Dependent Claim 97 words
The method of claim 2 wherein the three preselected edge indicator values comprise a first edge indicator value for indicating that an edge magnitude in the edge image is greater than the high edge magnitude threshold, a second edge indicator value for indicating that an edge magnitude in the edge image is equal to or less than the high edge magnitude threshold but greater than or equal to the low edge magnitude threshold, and a third edge indicator value for indicating that an edge magnitude in the edge image is less than the low edge magnitude threshold.
Claim 5
Dependent Claim 61 words
The method of claim 3 wherein the two preselected edge point values comprise a first edge point value for indicating that an output edge point coordinate does not likely represent an edge point in the object image, and a second edge point value for indicating that an output edge point coordinate does likely represent an edge point in the object image.
Claim 6
Dependent Claim 72 words
The method of claim 1 wherein the steps of constructing first and second stacks each further comprise the steps of determining the number of edge map coordinates in the edge map array assigned either the first or second preselected edge indicator values, and allocating a number of entries in each stack equal to at least the number of edge map coordinates assigned the either the first or second preselected edge indicator values.
Claim 7
Dependent Claim 53 words
The method of claim 1 wherein the steps of constructing first and second stacks each further comprise the steps of determining the total number of edge map coordinates in the edge map array, and allocating a number of entries in each stack equal to at least the total number of edge map coordinates.
Claim 8
Dependent Claim 60 words
The method of claim 1 wherein the step of examining edge map coordinates in the edge map array that neighbor the edge map coordinate whose address was popped off the first stack in step j comprises examining each of eight edge map coordinates that are closest neighbors to the edge map coordinate whose address was popped off the first stack.
Claim 9
Dependent Claim 52 words
The method of claim 1 wherein the step of forming an edge map array further comprises providing the edge map array with bounding rows and columns of edge map coordinates that together surround the array, each edge map coordinate in the bounding rows and columns assigned the third preselected edge indicator value.
Claim 10
Dependent Claim 64 words
The method of claim 1 wherein the step of scanning the edge map array for an edge map coordinate assigned the first preselected edge indicator value comprises the steps of forming a packet of digital bits representative of consecutive edge map coordinates in a row of the edge map array, and examining the packet of digital bits for the first preselected edge indicator value.
Claim 11
Dependent Claim 33 words
The method of claim 9 wherein each edge map coordinate value comprises a number, n, of bits, and the packet of digital bits includes an integer multiple of the number, n, of bits.
Claim 12
Dependent Claim 344 words
The method of claim 1 wherein the step of assigning to the edge map coordinate whose address was popped off of the first stack in step j the third edge indicator value, the step of assigning to the output edge point coordinate whose address was popped off the second stack in step j the second preselected edge point value, the step of examining edge map coordinates in the edge map array that neighbor the edge map coordinate whose address was popped off the first stack in step j, and the step of pushing on the first stack the address of any neighbor edge map coordinates found to be assigned either the first or second preselected edge indicator values together comprise the steps of: examining edge map coordinates in the same row as the popped edge map coordinate address to locate edge map coordinates in that row assigned either the first or second preselected edge indicator values and located in an unbroken sequence including the edge map coordinate whose address was popped, and assigning to any such located coordinates and the popped edge map coordinate the third preselected edge indicator value, with the corresponding output edge point array coordinates assigned the second edge point value; examining edge map coordinates in the row just above and the row just below the popped edge map coordinate beginning with an edge map coordinate in each of these rows that has an address one less than a leftmost edge map coordinate identified in the unbroken sequence and ending with an edge map coordinate in each of these rows that has an address one greater than a rightmost edge map coordinate identified in the unbroken sequence and based on the examination pushing on the first stack the address of each examined edge map coordinate in above and below rows that is both assigned either the first or second preselected edge indicator values and is either a first edge map coordinate examined in a given row or is located after an edge map coordinate assigned the third preselected edge indicator value.
Claim 13
Dependent Claim 33 words
The method of claim 1 further comprising the step of forming an edge point template representing an image of likely edge points in the object image based on the output edge point array.
Claim 14
Dependent Claim 41 words
The method of claim 1 further comprising the step of forming an edge point address list of the memory addresses corresponding to the output edge point array coordinates in the output edge point array assigned the second preselected edge point value.
Claim 15
Dependent Claim 47 words
The method of claim 1 further comprising the step of forming an edge point angle map array of edge angle values arranged in correspondence with the edge image, the edge angle values representing the angular orientation of corresponding output edge points in the output edge point array.
Claim 16
Dependent Claim 24 words
The method of claim 1 further comprising the step of forming the edge image by performing Sobel edge detection analysis on the object image.
Claim 17
Dependent Claim 49 words
The method of claim 1 further comprising the step of forming a filtered object image by setting to zero all pixels in a copy of the object image that correspond to output edge point coordinates in the output edge point array assigned with the first preselected edge point value.
Claim 18
Independent Claim 486 words
A system for filtering possible edge points in an edge image represented by an array of edge image coordinates each having an edge point magnitude in a preselected range of edge point magnitudes, the edge image corresponding to an image of an object represented by an array of pixels, comprising: means for forming an edge map array of edge map coordinates arranged in correspondence with the edge image array, each edge map coordinate assigned one of three preselected edge indicator values indicative of a relationship between the corresponding edge image coordinate edge point magnitude and two preselected edge threshold values, the assigned edge map coordinate values being stored in an addressable memory; means for forming an output edge point array of output edge point coordinates arranged in correspondence with the edge image, means for initializing each output edge point coordinate to a first of two preselected edge point values, the initialized output edge point coordinate values being stored in an addressable memory; a first address stack for tracking memory addresses at which edge map coordinate values in the edge map array are stored; a second address stack for tracking memory addresses at which output edge point coordinate values in the output edge point array are stored; means for assigning to selected initialized output edge point coordinates the second preselected edge point value, means for scanning the edge map array for an edge map coordinate assigned the first preselected edge indicator value; means for pushing on the first stack the edge map array address of a first encountered edge map coordinate assigned the first preselected edge indicator value; means for pushing on the second stack the output edge point array address corresponding to the edge map array address pushed on the first stack; means for popping off of the first and second stacks the edge map coordinate address and corresponding output edge point coordinate address, respectively most recently pushed on the stacks; means for assigning to the edge map coordinate whose address was popped off of the first stack the third edge indicator value; means for assigning to the output edge point coordinate whose address was popped off the second stack the second preselected edge point value; means for examining edge map coordinates in the edge map array that neighbor the edge map coordinate whose address was popped off the first stack for any edge map coordinates assigned either the first or second preselected edge indicator values; means for pushing on the first stack addresses of edge map coordinates found to be assigned either the first or second preselected edge indicator values; means for pushing on the second stack the output edge point coordinate address corresponding to any edge map array address pushed on the first stack, those selected output edge points in the resulting output edge point array assigned with the second preselected edge point value each representing a likely edge point in the object image.
Claim 19
Independent Claim 486 words
A system for filtering possible edge points in an edge image represented by an array of edge image coordinates each having an edge point magnitude in a preselected range of edge point magnitudes, the edge image corresponding to an image of an object represented by an array of pixels, comprising: means for forming an edge map array of edge map coordinates arranged in correspondence with the edge image array, each edge map coordinate assigned one of three preselected edge indicator values indicative of a relationship between the corresponding edge image coordinate edge point magnitude and two preselected edge threshold values, the assigned edge map coordinate values being stored in an addressable memory; means for forming an output edge point array of output edge point coordinates arranged in correspondence with the edge image, means for initializing each output edge point coordinate to a first of two preselected edge point values, the initialized output edge point coordinate values being stored in an addressable memory; a first address stack for tracking memory addresses at which edge map coordinate values in the edge map array are stored; a second address stack for tracking memory addresses at which output edge point coordinate values in the output edge point array are stored; means for assigning to selected initialized output edge point coordinates the second preselected edge point value, means for scanning the edge map array for an edge map coordinate assigned the first preselected edge indicator value; means for pushing on the first stack the edge map array address of a first encountered edge map coordinate assigned the first preselected edge indicator value; means for pushing on the second stack the output edge point array address corresponding to the edge map array address pushed on the first stack; means for popping off of the first and second stacks the edge map coordinate address and corresponding output edge point coordinate address, respectively most recently pushed on the stacks; means for assigning to the edge map coordinate whose address was popped off of the first stack the third edge indicator value; means for assigning to the output edge point coordinate whose address was popped off the second stack the second preselected edge point value; means for examining edge map coordinates in the edge map array that neighbor the edge map coordinate whose address was popped off the first stack for any edge map coordinates assigned either the first or second preselected edge indicator values; means for pushing on the first stack addresses of edge map coordinates found to be assigned either the first or second preselected edge indicator values; means for pushing on the second stack the output edge point coordinate address corresponding to any edge map array address pushed on the first stack, those selected output edge points in the resulting output edge point array assigned with the second preselected edge point value each representing a likely edge point in the object image.
Claim 20
Dependent Claim 29 words
The system of claim 17 wherein the two preselected edge point magnitude thresholds comprise a high magnitude threshold and a low magnitude threshold less than the high magnitude threshold.
Claim 21
Dependent Claim 104 words
The system of claim 18 wherein the three preselected edge indicator values comprise a first edge indicator value for indicating that an edge point magnitude in the edge image is greater than the high edge point magnitude threshold, a second edge indicator value for indicating that an edge point magnitude in the edge image is equal to or less than the high edge point magnitude threshold but greater than or equal to the low edge point magnitude threshold, and a third edge indicator value for indicating that an edge point magnitude in the edge image is less than the low edge point magnitude threshold.
Claim 22
Dependent Claim 61 words
The system of claim 19 wherein the two preselected edge point values comprise a first edge point value for indicating that an output edge point coordinate does not likely represent an edge point in the object image, and a second edge point value for indicating that an output edge point coordinate does likely represent an edge point in the object image.
Claim 23
Dependent Claim 48 words
The system of claim 17 wherein the first and second stacks are each allocated with a number of stack entries equal to at least the number of edge map coordinates in the edge map array that are each assigned either the first or second preselected edge indicator values.
Claim 24
Dependent Claim 36 words
The system of claim 17 wherein the first and second stacks are each allocated with a number of stack entries equal to at least the total number of edge map coordinates in the edge map array.
Claim 25
Dependent Claim 59 words
The system of claim 17 wherein the means for examining edge map coordinates in the edge map array that neighbor the edge map coordinate whose address was popped off the first stack comprises means for examining each of eight edge map coordinates that are closest neighbors to the edge map coordinate whose address was popped off the first stack.
Claim 26
Dependent Claim 55 words
The system of claim 17 wherein the means for forming an edge map array further comprises means for providing the edge map array with bounding rows and columns of edge map coordinates that together surround the array, each edge map coordinate in the bounding rows and columns being assigned the third preselected edge indicator value.
Claim 27
Dependent Claim 63 words
The system of claim 17 wherein the means for scanning the edge map array for an edge map coordinate assigned the first preselected edge indicator value comprises means for forming a packet of digital bits representative of consecutive edge map coordinates in a row of the edge map array, and examining the packet of digital bits for the first preselected edge indicator value.
Claim 28
Dependent Claim 33 words
The system of claim 25 wherein each edge map coordinate value comprises a number, n, of bits, and the packet of digital bits includes an integer multiple of the number, n, of bits.
Claim 29
Dependent Claim 337 words
The system of claim 17 wherein the means for assigning to the edge map coordinate whose address was popped off of the first stack the third edge indicator value, the means for assigning to the output edge point coordinate whose address was popped off the second stack the second preselected edge point value, the means for examining edge map coordinates in the edge map array that neighbor the edge map coordinate whose address was popped off the first stack, and the means for pushing on the first stack the address of any neighbor edge map coordinates found to be assigned with either the first or second preselected edge indicator values together comprise: means for examining edge map coordinates in the same row as the popped edge map coordinate address to locate edge map coordinates in that row assigned either the first or second preselected edge indicator values and located in an unbroken sequence including the edge map coordinate whose address was popped, assigning to any such located coordinates and the popped edge map coordinate the third preselected edge indicator value, with the corresponding output edge point array coordinates assigned the second edge point value; means for examining edge map coordinates in the row just above and the row just below the popped edge map coordinate address beginning with an edge map coordinate in each of these rows that has an address one less than a leftmost edge coordinate identified in the unbroken sequence and ending with an edge map coordinate in each of these rows that has an address one greater than a rightmost edge map coordinate identified in the unbroken sequence; and means for pushing on the first stack, based on the examination, the address of each examined edge map coordinated in above and below rows that is both assigned either the first or second preselected edge indicator values and is either a first map coordinate examined in a given row or is located after an edge map coordinate assigned the third preselected edge indicator value.
Claim 30
Dependent Claim 32 words
The system of claim 17 further comprising means for forming an edge point template representing an image of likely edge points in the object image based on the output edge point array.
Claim 31
Dependent Claim 39 words
The system of claim 17 further comprising means for forming an edge point address list of the memory addresses corresponding to the output edge point coordinates in the output edge point array assigned the second preselected edge point value.
Claim 32
Dependent Claim 46 words
The system of claim 17 further comprising means for forming an edge point angle map array of edge angle values arranged in correspondence with the edge image, the edge angle values representing the angular orientation of corresponding output edge points in the output edge point array.
Claim 33
Dependent Claim 21 words
The system of claim 17 further comprising a Sobel edge detector for analyzing the object image to produce the edge image.
Claim 34
Dependent Claim 47 words
The system of claim 17 further comprising means for forming a filtered object image in which all pixels in a copy of the object image that correspond to coordinates in the output edge point array assigned with the first preselected edge point value are set to zero.

References Cited (Backward Citations)

US4868752A Cited
US5487115A Cited
US5590220A Cited
US5596655A Cited
US5604822A Cited
US5616905A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-08-17 2002-02-16 2002-08-18 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-08-17 2006-02-16 2006-08-18 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-08-17 2010-02-16 2010-08-18 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag