![]() |
||
Sketch Processing A sketch is processed essentially in three steps. The first step is concerned about parsing the input stream of points and about associating strokes with objects. The second step focuses on processing and classifying raw objects, and the third step, finally, connects detected objects with each other. |
![]() |
|
Sketch Parsing The objective of this first processing step is to check the quality of the user input and to simplify and refine obtained information. The user input is recorded in form of lists of connected points (strokes). The algorithms used during this process reduce the number of points while retaining the original shape of the stroke. Hence, duplicate or other redundant points are eliminated. This simplification process is immediately followed by a first evaluation of the stroke and an attempt to associate the stroke with a previously drawn object. That is, we check for every newly drawn stroke if it can be associated to a previously drawn object or if it can be considered as the first stroke of a new object. Object Extraction Once an object is complete that is, whenever the most recent stroke has been considered to be the first stroke of a new object, then this raw (previous) object is analyzed and further classified. This consolidating process consists of a number of steps.
![]()
![]()
![]()
![]()
![]()
![]()
The next step is to extract outlines. For this purpose the application tries to find the largest closed area of the object. If there are more than one area then they are all stored in a sorted list, depending their size. If there is no closed area then the convex hull is calculated and stored as a quasi area. The prototype supports multiple areas that can contain each other. The only restriction is that closed regions may not touch, in which case solely one region (the larger one) is stored.
![]()
The type of an object is determined by comparing the sum of areas of all region of the object with the area of the convex hull of the object. If the sum is smaller than a certain percentage, then the object is considered a line object - even if there are regions in the object. Using this approach, we can also have mixed type objects that is, objects that contain more than just one element type. If the system should misinterpret an object, then the user can change the type of an object by the push of a button. If an object has been considered being a line, then the application tries to find parallels within the object. For this purpose we check for every segment if there are neighboring segments that do not belong to the same stroke but that are in reach and parallel to this one. If parallels are found we check if there are other parallels within the same object that are potential meet candidates. The figure below shows an example of a road intersection where such a procedure is useful.
![]()
For region objects we define the kernel as the longer centerline of the tilted minimum bounding rectangle (TMBR) of an object. This is an abstraction for the real centerline of an object that is more complex to calculate. The TMBR is that bounding rectangle that has the smallest possible area of the whole set of bounding rectangles for a specific object. Such a bounding rectangle is obtained - with adequate accuracy - by rotating an object with small increments (e.g. 1.0° grad in our prototype) and recording size and position of all MBR’s. The advantage of a TMBR is that it is only slightly more complex than a regular MBR but has, compared with this one a directional component and an optimal fit for a specific object. Furthermore, most objects in sketches are boxes anyway, and such a TMBR is an ideal approximation for many calculations.
![]()
|
||
[Sketching Survey] [Prototype] [Publications] [People & Organizations] [Related Topics]
|
||
|