Machine vision systems (also termed herein, simply “vision systems”) are used for a variety of tasks in manufacturing, logistics, and industry. Such tasks can include surface and part inspection, alignment of objects during assembly, reading of patterns and ID codes, and any other operation in which visual data is acquired and interpreted for use in further processes. Vision systems typically employ one or more cameras that acquire images of a scene containing an object or subject of interest. The object/subject can be stationary or in relative motion. Motion can also be controlled by information derived by the vision system, as in the case of manipulation of parts by a robot.
A common task for a vision system is finding and characterizing line features in an image. A variety of tools are used to identify and analyze such line features. Typically, these tools rely upon a sharp contrast difference that occurs in a portion of the image. This contrast difference is analyzed using e.g. a caliper tool to determine if the individual points in the image with contrast difference can be assembled into a line-like feature. If so, then a line is identified in the image. Notably, the tools that find edge points and those that attempt to fit a line to the points act independently of each other. This increases processing overhead and decreases reliability. Where an image contains multiple lines, such tools may be limited in ability to accurately identify them. Furthermore, traditional, line-finding tools that are designed to find a single line in an image can be problematic to use when the image contains multiple closely spaced lines with similar orientation and polarity.
Another challenge is that lines of an object may sometimes be occluded or unclear in an acquired image. The user may be unsure as to the identity of found lines, and mechanisms that allow discrete identification of such, can involve the writing of sophisticated rules and scripts, which adds time and cost to a vision system setup and training task.