WO2017037547A1 - Method and system for simplifying a curve - Google Patents

Method and system for simplifying a curve Download PDF

Info

Publication number
WO2017037547A1
WO2017037547A1 PCT/IB2016/050566 IB2016050566W WO2017037547A1 WO 2017037547 A1 WO2017037547 A1 WO 2017037547A1 IB 2016050566 W IB2016050566 W IB 2016050566W WO 2017037547 A1 WO2017037547 A1 WO 2017037547A1
Authority
WO
WIPO (PCT)
Prior art keywords
curve
simplification
simplified
algorithm
homogeneous
Prior art date
Application number
PCT/IB2016/050566
Other languages
French (fr)
Inventor
Sergey Sergeevich KONSTANTINOV
Anton Vasilyevich KORZUNOV
Original Assignee
Yandex Europe Ag
Yandex Llc
Yandex Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yandex Europe Ag, Yandex Llc, Yandex Inc. filed Critical Yandex Europe Ag
Publication of WO2017037547A1 publication Critical patent/WO2017037547A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20112Image segmentation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components

Definitions

  • the present technology relates to a method and system for simplifying a curve.
  • Curve simplification involves the selective elimination of vertices along a curve to remove unwanted information.
  • Curve simplification algorithms also referred to as line simplification algorithms
  • Line simplification algorithms typically aim to retain the appearance or shape of a curve even though the number of points on the curve is reduced, while minimizing positional error.
  • curve simplification is an important function in cartography and in geographic information systems (GIS), and is widely used in commercial GIS software packages.
  • GIS geographic information systems
  • Many mobile devices such as smartphones have a map application that allows a user to view different geographical areas for certain purposes, such as to navigate roads in a certain area, to find out traffic conditions on certain roads, or to find locations of certain stores.
  • a user navigates within the map application to see different areas, and to zoom out or zoom in to see the map at different resolutions.
  • map generalization systems to simplify the maps in order to render high-resolution geographic features at an appropriate output resolution.
  • one- and two-dimensional objects are typically represented as polylines or polygons.
  • a polyline is a connected sequence of straight line segments.
  • a polygon is a special case of a polyline that starts and ends at the same point. That is, if an object is actually curved in the real world, it is approximated by a sequence of points and the straight line segments connecting them.
  • a one-dimensional object, or the one-dimensional boundary of a two-dimensional object is typically represented by a list of its points.
  • the producer or user of the data finds that the data is much more precise, and the number of points is much greater, than is needed for the intended use.
  • Line simplification algorithms are an important component of such map generalization systems.
  • Line simplification is also used in a wide array of graphics-related areas, such as video games (e.g., to show an object such as a castle to a user), photo editors, video editors, to reduce picture size for download, upload or for storage, and the like.
  • Graphs having dense data are frequently found in engineering fields including stereographic 3D and computer animation, where unnecessarily dense data makes interactive control difficult.
  • Line simplification can also be used, for example, to transform source data to reduce data volume, for more compact data storage, and to merge databases with different scales.
  • Balboa and Lopez describe an automated line segmentation methodology based on a sinuosity pattern recognition.
  • the sinuosity pattern is measured by means of the effective-area as derived from the Visvalingam-Whyatt algorithm. Sections are determined by applying the Douglas-Peucker algorithm to the shape signature of a line.
  • the described segmentation method has three main steps: a) calculation, by means of the Visvalingam-Whyatt algorithm, of the effective-area of each point in a curve; b) obtaining a shape signature for the curve as integration of effective-areas along the line; and c) selection of critical points by means of the Douglas-Peucker algorithm applied to the shape signature.
  • Park and Yu describe segmentation and simplification of linear features based on a quantitative analysis of the shape characteristics of a given line section, using a plurality of simplification algorithms to determine which provides high performance for the given line section.
  • Their methodology has two main parts: 1) analysis of the parametric descriptions of the line sections that show exclusively high performance for each simplification algorithm tested; and 2) segmentation of the line data into homogeneous sections using geometrical analysis methods and simplification of the sections using the algorithm allocated in the segmentation process, i.e., the algorithm determined to show exclusively high performance.
  • implementations of the present technology provide a method for simplifying a curve.
  • the method is executable at a computing device such as a server or a client device.
  • the method comprises the steps of receiving instruction to simplify a curve; executing a first simplification algorithm, the first simplification algorithm being predefined, wherein executing the first simplification algorithm simplifies the curve, thereby generating both a first simplified curve and shape parameters of the first simplified curve; defining a plurality of homogeneous segments of the first simplified curve based on the shape parameters; and simplifying each homogeneous segment using a respective second simplification algorithm, the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms, the respective second simplification algorithm being selected independently for each homogeneous segment based on the shape parameters of the respective homogeneous segment; thereby generating a final simplified curve.
  • the first simplification algorithm is selected from Ramer-Douglas- Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), ⁇ ⁇ point, radial distance, and perpendicular distance algorithm.
  • the plurality of predefined second simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), N th point, radial distance, and perpendicular distance algorithm.
  • RDP Ramer-Douglas-Peucker
  • Visvalingham-Whyatt Zhao-Saalfeld, Lang
  • Reumann-Witkam Opheim
  • Rangayyan Variant RDP
  • SF sleeve-fitting
  • TF turning function
  • the method further comprises the steps of: for each simplified homogeneous segment in the final simplified curve, defining a second plurality of second homogeneous segments of the simplified homogeneous segment based on the shape parameters of the simplified homogeneous segment, the shape parameters of the simplified homogenous segment having been generated by the respective second simplification algorithm; and, simplifying each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; thereby generating a second final simplified curve.
  • the plurality of predefined third simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), ⁇ ⁇ point, radial distance, and perpendicular distance algorithm.
  • RDP Ramer-Douglas-Peucker
  • SF sleeve-fitting
  • TF turning function
  • Shape parameters vary depending on the simplification algorithms used.
  • shape parameters comprise one or more of length and declination angle, sinuosity, edge distance, height drop, effective area for a point, effective area of a triangle, complexity, monotonicity, length between points, average segment length, and point density.
  • the plurality of homogeneous segments also varies depending on the simplification algorithms used and the shape parameters.
  • homogeneous segments are defined using one or more of a point removal method, a measure -based method, a critical point method, a geometrical analysis method, a frequency-based method, and a knowledge -based method.
  • the method further comprises a step of sending, to a client device, an instruction to display the final simplified curve (or the second final simplified curve) on a display screen of the client device.
  • Instruction to display the final simplified curve on the display screen of the client device may comprise, for example, an instruction to zoom a visual presentation of the curve.
  • the method further comprises a step of rendering the final simplified curve on a display screen of the client device.
  • Rendering the final simplified curve on the display screen of the client device may comprise zooming a visual presentation of the curve.
  • a curve, a final simplified curve, and/or a second final simplified curve is part of a map, a photo, a picture, a video, or a video game.
  • the curve, the final simplified curve, and/or the second final simplified curve may be part of a 2D graphical object or a 3D graphical object.
  • Curves and simplified curves may be rendered by a browser rendering engine or a general rendering engine.
  • steps of the method are repeated until one or more endpoint is reached, such as a desired zoom threshold, a desired resolution, use of allotted memory, or use of allotted time.
  • implementations of the present technology provide a server.
  • the server comprises an information storage medium; a processor operationally connected to the information storage medium, the processor configured to store objects on the information storage medium.
  • the processor is further configured to receive instruction to simplify a curve; execute a first simplification algorithm, the first simplification algorithm being predefined, execution of the first simplification algorithm simplifying the curve and thereby generating both a first simplified curve and shape parameters of the first simplified curve; define a plurality of homogeneous segments of the first simplified curve based on the shape parameters; and simplify each homogeneous segment using a respective second simplification algorithm, the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms, the respective second simplification algorithm being selected independently for each homogeneous segment based on the shape parameters of the respective homogeneous segment; and thereby generate a final simplified curve.
  • the processor is further configured to: for each simplified homogeneous segment in the final simplified curve, define a second plurality of second homogeneous segments of the simplified homogeneous segment based on the shape parameters of the simplified homogeneous segment, the shape parameters of the simplified homogenous segment having been generated by the respective second simplification algorithm; and, simplify each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; and thereby generate a second final simplified curve.
  • the processor is further configured to send, to a client device, an instruction to display the final simplified curve or the second final simplified curve on a display screen of the client device.
  • the processor is further configured to render the final simplified curve or the second final simplified curve on a display screen of the client device.
  • a "server” is a computer program that is running on appropriate hardware and is capable of receiving requests (e.g., from client devices) over a network, and carrying out those requests, or causing those requests to be carried out.
  • the hardware may be one physical computer or one physical computer system, but neither is required to be the case with respect to the present technology.
  • a "server” is not intended to mean that every task (e.g., received instructions or requests) or any particular task will have been received, carried out, or caused to be carried out, by the same server (i.e., the same software and/or hardware); it is intended to mean that any number of software elements or hardware devices may be involved in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request; and all of this software and hardware may be one server or multiple servers, both of which are included within the expression "at least one server”.
  • a “client device” is an electronic device associated with a user and includes any computer hardware that is capable of running software appropriate to the relevant task at hand.
  • client devices include personal computers (desktops, laptops, netbooks, etc.), smartphones, and tablets, as well as network equipment such as routers, switches, and gateways.
  • a computing device acting as a client device in the present context is not precluded from acting as a server to other client devices.
  • the use of the expression "a client device” does not preclude multiple client devices being used in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request, or steps of any method described herein.
  • a “computing device” is any electronic device capable of running software appropriate to the relevant task at hand.
  • a computing device may be a server, a client device, etc.
  • a “database” is any structured collection of data, irrespective of its particular structure, the database management software, or the computer hardware on which the data is stored, implemented or otherwise rendered available for use.
  • a database may reside on the same hardware as the process that stores or makes use of the information stored in the database or it may reside on separate hardware, such as a dedicated server or plurality of servers.
  • the expression "information” includes information of any nature or kind whatsoever, comprising information capable of being stored in a database.
  • information includes, but is not limited to audiovisual works (photos, movies, sound records, presentations etc.), data (map data, location data, numerical data, etc.), text (opinions, comments, questions, messages, etc.), documents, spreadsheets, etc.
  • component is meant to include software (appropriate to a particular hardware context) that is both necessary and sufficient to achieve the specific function(s) being referenced.
  • Coordinates serves to define the position of points, and/or lines, or the like, by references.
  • References can be, for example, numbers and/or any other symbols that are used to determine the position of a point, line (including a curve), or plane in a space of a given dimension with respect to a system of lines (axes) or other fixed references.
  • information storage medium is intended to include media of any nature and kind whatsoever, including RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc.
  • two-dimensional object is intended to mean a plane figure, displayed on a computer screen, the plane figure that is bounded by a finite chain of lines closing in a loop to form a closed circuit.
  • graphical object is intended to mean any graphical figure which can be displayed on a computer screen.
  • Graphical objects can be linear objects, two-dimensional objects, and three- dimensional objects. Graphical objects can be of any shape.
  • border of a graphical object is intended to mean a perimeter or a portion of the perimeter of a graphical object, wherein the word “perimeter” means a path that surrounds a graphical object.
  • a border of a graphical object can comprise border portions, which border portions can be stored as lines, connecting two extreme points of a respective perimeter portion. Borders of graphical objects can be straight or curved lines or straight or curved surfaces, depending on the graphical object.
  • a "curve” is a line that is not straight, i.e., a curved line.
  • curve simplification and “line simplification” are used interchangeably herein to refer to simplification of a curved line.
  • a curve may be represented as a polyline, which is a connected sequence of straight line segments.
  • a polygon is a special case of a polyline that starts and ends at the same point.
  • polygonal object is intended to mean a two-dimensional object, displayed on a computer screen, the polygonal object that is bounded by a finite chain of straight lines closing in a loop to form a closed circuit.
  • a "shape parameter" is a characteristic of the appearance or visible form of a curve.
  • shape parameters include length and declination angle, sinuosity, edge distance, height drop, effective area for a point (for example, as determined by the Visvalingham-Whyatt algorithm, where the effective area of each point on a line is determined by the effective area of its associated triangle), effective area of a triangle, complexity, monotonicity, length between points, and point density.
  • simplification is a method whereby vertices are selectively removed from a line feature to eliminate detail while preserving the line's basic shape.
  • generalization is the method whereby information is selected and represented on a map in a way that adapts to the scale or resolution of the display medium of the map, not necessarily preserving all intricate geographical or other cartographic details. Generalization is typically required to maintain clarity, with appropriate content, at a given scale, for a chosen map purpose and intended audience.
  • a "simplification algorithm” is an algorithm for simplifying curves, including polylines, polygons, and the like. Many such algorithms are known.
  • line simplification algorithms include Ramer-Douglas-Peucker (RDP) (also referred to as Douglas-Peucker), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), N point, radial distance, and perpendicular distance algorithm.
  • RDP Ramer-Douglas-Peucker
  • Visvalingham-Whyatt Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan
  • Variant RDP sleeve-fitting
  • TF turning function
  • a “segment” is a straight line portion of a curve connecting points in the curve.
  • a “homogeneous segment” is a portion of a curve having uniform or at least highly similar shape parameters across its span.
  • a homogeneous segment may comprise a plurality of segments of the curve, wherein each of the plurality of segments has the same or at least highly similar shape parameters, or the shape parameters across the plurality of segments as a whole are uniform.
  • two segments are considered homogeneous if one or more of their shape parameters are the same or at least highly similar.
  • the shape parameters used to determine homogeneity in the present technology will vary depending on the simplification algorithm used to define and generate the shape parameters for a given curve.
  • first, second, third, etc. have been used as adjectives only for the purpose of allowing for distinction between the nouns that they modify from one another, and not for the purpose of describing any particular relationship between those nouns.
  • first server and third server is not intended to imply any particular order, type, chronology, hierarchy or ranking (for example) of/between the server, nor is their use (by itself) intended imply that any “second server” must necessarily exist in any given situation.
  • references to a "first" element and a “second” element does not preclude the two elements from being the same actual real-world element.
  • a "first" server and a “second” server may be the same software and/or hardware, in other cases they may be different software and/or hardware.
  • Implementations of the present technology each have at least one of the above-mentioned object and/or aspects, but do not necessarily have all of them. It should be understood that some aspects of the present technology that have resulted from attempting to attain the above-mentioned object may not satisfy this object and/or may satisfy other objects not specifically recited herein. [0043] Additional and/or alternative features, aspects and advantages of implementations of the present technology will become apparent from the following description, the accompanying drawings and the appended claims.
  • Figure 1 is a schematic diagram of a system implemented in accordance with a non- limiting embodiment of the present technology.
  • Figure 2 depicts a non-limiting example of a curve, before and after simplification, with the first simplified curve having been divided into three homogeneous segments.
  • Figure 3 depicts a block-diagram of a method executable within the system of Figure 1 and implemented in accordance with non-limiting embodiments of the present technology.
  • Figure 4 depicts a block-diagram of a method executable within the system of Figure 1 and implemented in accordance with non-limiting embodiments of the present technology.
  • Figure 5 depicts a non-limiting example of a curve, before and after simplification, with the first simplified curve having been divided into five homogeneous segments.
  • FIG. 1 there is shown a diagram of a system 100, the system 100 being suitable for implementing non-limiting embodiments of the present technology.
  • the system 100 is depicted as merely as an illustrative implementation of the present technology.
  • the description thereof that follows is intended to be only a description of illustrative examples of the present technology. This description is not intended to define the scope or set forth the bounds of the present technology.
  • what are believed to be helpful examples of modifications to the system 100 may also be set forth below. This is done merely as an aid to understanding, and, again, not to define the scope or set forth the bounds of the present technology.
  • System 100 includes a computing device 102 being a server 102.
  • the server 102 may be implemented as a conventional computer server.
  • the server 102 may be implemented as a DellTM PowerEdgeTM Server running the MicrosoftTM Windows ServerTM operating system.
  • the server 102 may be implemented in any other suitable hardware and/or software and/or firmware or a combination thereof.
  • the server 102 is a single server.
  • the functionality of the server 102 may be distributed and may be implemented via multiple servers.
  • the server 102 can be under control and/or management of a map service provider, for example Yandex.MapsTM. In alternative implementations the server 102 can access a map service provided by a third-party provider. In yet other implementations, the server 102 can be under control and/or management of, or can access, a provider of such services as computer game services, graphical design services, and other services related to computer graphics. In still further implementations, the server 102 can be under control and/or management of, or can access, a provider of such services as photo editor services, video editor services, picture storage services (such as cloud storage services), and other services related to managing graphical objects such as photos, videos, and the like.
  • a map service provider for example Yandex.MapsTM.
  • the server 102 can access a map service provided by a third-party provider.
  • the server 102 can be under control and/or management of, or can access, a provider of such services as computer game services, graphical design services, and other services related to computer graphics.
  • the server 102 can be under control and/or management of, or can access, a provider of such services as database management services and data storage services.
  • the server 102 includes an information storage medium 104 that may be used by the server 102.
  • the information storage medium 104 may be implemented as a medium of any nature and kind whatsoever, including RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc. and also the combinations thereof.
  • the server 102 comprises inter alia a network communication interface 109 (such as a modem, a network card and the like) for two-way communication over a communication network 110; and a processor 108 coupled to the network communication interface 109 and the information storage medium 104, the processor 108 being configured to execute various routines, including those described herein below.
  • the processor 108 may have access to computer readable instructions stored on the information storage medium 104, which instructions, when executed, cause the processor 108 to execute the various routines described herein.
  • the communication network 110 can be implemented as the Internet. In other embodiments of the present technology, the communication network 110 can be implemented differently, such as any wide-area communication network, local-area communication network, a private communication network and so on.
  • the information storage medium 104 is configured to store data, including computer- readable instructions and other data, including graphical objects data (such as map data, video game data, picture data, images, and the like). In some implementations of the present technology, the information storage medium 104 can store at least part of the data in a database 106. In other implementations of the present technology, the information storage medium 104 can store at least part of the data in any collections of data other than databases.
  • the information storage medium 104 can store computer-readable instructions that manage updates, population and modification of the database 106 and/or other collections of data. More specifically, computer-readable instructions stored on the information storage medium 104 allow the server 102 to receive (e.g., to update) information in respect of graphical objects via the communication network 110 and to store information in respect of the graphical objects, including the information in respect of their simplified curves in the database 106, and/or in other collections of data.
  • Data stored on the information storage medium 104 can comprise inter alia graphical objects of any kind.
  • graphical objects include maps, video games, pictures, photos, videos, and audiovisual works.
  • Computer-readable instructions stored on the information storage medium 104, when executed, can cause the processor 108 to receive instruction to simplify a curve 208, 500.
  • the instruction to simplify a curve 208, 500 can be instructions of a user 121 received by the server 102 from a client device 112, which client device 112 will be described in more detail below.
  • the instruction to simplify a curve 208, 500 can be instructions of the client device 112 received by the server 102 from client device 112.
  • the client device 112 can send to the server 102 a corresponding request to simplify portions of the map comprising curved lines, to display them in new zoom, without small details, taking into account the resolution of a display screen 118 of the client device 112.
  • the client device 112 can send to the server 102 a request to zoom out a map only, and the server 102 can interpret such request as the request to zoom out a map only as the request (at least partially) to simplify curved lines within the map, e.g., as part of the map generalization.
  • Computer-readable instructions stored on the information storage medium 104, when executed, can further cause the processor 108 to execute a first simplification algorithm (not depicted) in order to simplify a curve 208, 500, thereby generating both a first simplified curve 200, 502 and shape parameters of the first simplified curve 200, 502; the first simplified curve is divided into homogeneous segments based on the shape parameters accordingly.
  • a first simplification algorithm not depicted
  • Figure 2 illustrates a non-limiting example of a curve 208, a first simplified curve 200, and a final simplified curve 210.
  • the first simplified curve 200 is divided into three homogeneous segments, a first homogeneous segment 202, a second homogeneous segment 204, and a third homogeneous segment 206.
  • the first simplified curve 200 has been generated by simplification of the curve 208 and divided into three homogeneous segments 202, 204, 206 by the first simplification algorithm (not depicted).
  • the final simplified curve 210 has been generated by simplification of the first simplified curve 200 using the respective second simplification algorithm (not depicted) selected for each homogeneous segment 202, 204, 206.
  • Figure 5 illustrates another non-limiting example of a curve 500, a first simplified curve 502, and a final simplified curve 514.
  • the first simplified curve 502 is divided into five homogeneous segments, a first homogeneous segment 504, a second homogeneous segment 506, a third homogeneous segment 508, a fourth homogeneous segment 510, and a fifth homogeneous segment 512.
  • the first simplified curve 502 has been generated by simplification of the curve 500 and divided into five homogeneous segments 504, 506, 508, 510, 512 by the first simplification algorithm (not depicted).
  • the final simplified curve 514 has been generated by simplification of the first simplified curve 502 using the respective second simplification algorithm (not depicted) selected for each homogeneous segment 504, 506, 508, 510, 512.
  • each homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 is a polyline, i.e., a series of points and straight line segments connecting them. It should be expressly understood that the shape and size of the first simplified curve 200, 502, and the curves 208, 500 from which they are generated, as explained further below, are not particularly limited. Although the first simplified curve 200, 502 is shown being divided into three homogeneous segments 202, 204, 206 and five homogeneous segments 504, 506, 508, 510, 512, respectively, in other implementations the first simplified curve 200, 502 may be divided into any number of homogeneous segments, depending on the shape parameters. In some (unlikely) implementations, if the first simplified curve 200, 502 is homogeneous along its entire length, then only one homogeneous segment (and not a plurality of homogeneous segments) is defined.
  • the first simplification algorithm is predefined and is not meant to be particularly limited. Any suitable algorithm for simplifying curves and generating shape parameters of the simplified curve may be used.
  • the first simplification algorithm is selected from Ramer-Douglas-Peucker (RDP) (also referred to as Douglas-Peucker), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), N th point, radial distance, and perpendicular distance algorithm.
  • RDP Ramer-Douglas-Peucker
  • SF sleeve-fitting
  • TF turning function
  • N th point radial distance
  • perpendicular distance algorithm may be predefined based on several criteria such as the type of graphical object containing the curve to be simplified, the source of the graphical object, the source from which instruction was received, and the like.
  • Computer-readable instructions stored on the information storage medium 104, when executed, can further cause the processor 108 to define a plurality of homogeneous segments 202, 204, 206 of the first simplified curve 200 based on the shape parameters. It should be noted that, although the technology is described here with reference to the implementation shown in Figure 2, Figure 2 is referenced by way of example only and the analogous statements apply with respect to the implementation shown in Figure 5.
  • Homogeneous segments typically (but do not necessarily) comprise a plurality of segments of the first simplified curve 200, wherein either the shape parameters across the plurality of segments (i.e., across the span of the homogeneous segment) are uniform, or wherein each of the plurality of segments has the same or at least highly similar shape parameters.
  • the definition of homogeneous segments 202, 204, 206 will vary depending on the first simplification algorithm used. Further, any number of homogeneous segments 202, 204, 206 may be defined, depending on the shape parameters.
  • Homogeneous segments 202, 204, 206 are generally defined by the first simplification algorithm during the process of simplifying the curve 208 and generating the shape parameters.
  • Computer-readable instructions stored on the information storage medium 104, when executed, can further cause the processor 108 to simplify each homogeneous segment 202, 204, 206 using a respective second simplification algorithm (not depicted), thereby generating a final simplified curve 210.
  • the second simplification algorithm is selected from a plurality of predefined second simplification algorithms, the second simplification algorithm being selected independently for each homogeneous segment 202, 204, 206 based on the shape parameters of the respective homogeneous segment 202, 204, 206.
  • the second simplification algorithm for each homogeneous segment 202, 204, 206 may be the same or different, depending on the shape parameters.
  • the first and the second simplification algorithm may be the same or different, depending on the shape parameters of the homogeneous segments 202, 204, 206.
  • the shape parameters used will vary depending on the first simplification algorithm used to generate the first simplified curve 200.
  • the shape parameters are one or more of length and declination angle, sinuosity, edge distance, height drop, effective area for a point, effective area of a triangle, complexity, monotonicity, length between points, and point density.
  • Computer-readable instructions stored on the information storage medium 104, when executed, can further cause the processor 108 to simplify the final simplified curve 210 further.
  • the processor 108 repeats the steps of defining a plurality of homogeneous segments within the simplified homogeneous segments in the final simplified curve 210 and simplifying the newly- defined homogeneous segments (not depicted) using a third simplification algorithm.
  • the third simplification algorithm is selected independently for each of the newly-defined homogeneous segments within the final simplified curve 210.
  • the third simplification algorithm is selected independently of the second simplification algorithm used previously. A second final simplified curve (not depicted) is thereby generated.
  • Computer-readable instructions stored on the information storage medium 104, when executed, can cause the processor 108 to repeat these steps iteratively, until a desired endpoint (such as a desired zoom threshold, a desired resolution, use of allotted memory, use of allotted time, etc.) is reached. It should be understood that a n th final simplified curve will be generated with each n th iteration.
  • Computer-readable instructions stored on the information storage medium 104, when executed, can further cause the processor 108 to send to a client device 112 an instruction to display a final simplified curve 210 (or a second final simplified curve, or an n th final simplified curve (not depicted), depending on how many iterations were completed) on the display screen 118.
  • the instruction can be sent via communication network 110.
  • the instruction to display a final simplified curve 210 (or an n th final simplified curve) on the display screen 118 can comprise an instruction to zoom a visual presentation of the curve 208, such that the final simplified curve 210 looks larger or smaller.
  • the processor 108 sends instruction to a rendering engine (not depicted) to display the final simplified curve 210 (or the n th final simplified curve (not depicted)) on the display screen 118.
  • a rendering engine is a software component that displays formatted content on a screen, combining content and formatting information for drawing onto the content area of a window which is displayed on a screen.
  • the rendering engine may be a browser rendering engine, i.e., embedded in a web browser or another application that requires the display of graphical content.
  • the rendering engine may be a general rendering engine, i.e., part of the operating system (not depicted) of the server 102 or the client device 112.
  • the system 100 further comprises computing device 112 being a client device 112.
  • the client device 112 is typically associated with a user 121. It should be noted that the fact that the client device 112 is associated with the user 121 does not need to suggest or imply any mode of operation - such as a need to log in, a need to be registered or the like.
  • the implementation of the client device 112 is not particularly limited, but as an example, the client device 112 may be implemented as a personal computer (desktops, laptops, netbooks, etc.) or as a wireless communication device (a smartphone, a tablet and the like).
  • the client device 112 may be implemented as a personal computer (desktops, laptops, netbooks, etc.) or as a wireless communication device (a smartphone, a tablet and the like).
  • the client device 112 comprises a user input device 113. How the user input device 113 is implemented is not particularly limited and may depend on how the client device 112 is implemented.
  • the user input device 113 may include any mechanism for providing user input to the processor 116 of the client device 112.
  • the user input device 113 can be a keyboard, and/or a mouse, and so on.
  • the input device 113 is not limited to any specific input methodology, but could be arranged by a virtual button on a touch-screen display or a physical button on the cover of the electronic device, for instance.
  • user input device 113 can be implemented as an optical interference based user input device.
  • the user input device 113 of one example is a finger/object movement sensing device on which a user performs a gesture and/or presses with a finger.
  • the user input device 113 can identify/track the gesture and/or determines a location of a user's finger on the user input device 113.
  • the user input device 113 can further execute functions of the display screen 118.
  • the user input device 113 is communicatively coupled to a processor 116 and transmits input signals (and output signals where it also operates as the display screen 118) based on various forms of user input for processing and analysis by processor 116.
  • the client device 112 further comprises a computer usable information storage medium 114, also referred to as the local memory 114.
  • Local memory 114 can comprise any type of media, including but not limited to RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc.
  • the purpose of the local memory 114 is to store computer readable instructions as well as any other data.
  • the client device 112 further comprises the display screen 118.
  • Display screen 118 can be liquid crystal display (LCD), light emitting diode (LED), interferometric modulator display (IMOD), or any other suitable display technology.
  • the display screen 118 is generally configured to display a graphical user interface (GUI) that provides an easy to use visual interface between the user 121 of the client device 112 and the operating system or application(s) running on the client device 112. Generally, the GUI presents programs, files and operational options with graphical images.
  • Display screen 118 is also generally configured to display other information like user data and web resources.
  • Display screen 118 can also be implemented as a touch based device such as a touch screen.
  • a touch screen is a display that detects the presence and location of user touch inputs.
  • Display screen 118 can also be a dual touch or multi-touch display that can identify the presence, location and movement of touch inputs.
  • the display screen 118 can execute functions of the user input device 113.
  • the display screen 118 is communicatively coupled to the processor 116 and receives signals from the processor 116.
  • the display screen 118 can also transmit input signals based on various forms of user input for processing and analysis by processor 116.
  • the client device 112 further comprises the above mentioned processor 116.
  • the processor 116 is configured to perform various operations in accordance with a machine-readable program code.
  • the processor 116 is operatively coupled to the user input device 113, to the local memory 114, and to the display screen 118.
  • the processor 116 is configured to have access to computer readable instructions which instructions, when executed, cause the processor 116 to execute various routines.
  • the processor 116 described herein can have access to computer readable instructions, which instructions, when executed, can cause the processor 116 to: display information on the display screen 118; receive from a user 121 of the client device 112 via the user input device 113 a selection of at least some of the displayed information; send, by the client device 112 to a server 102 via a communication network 110, the user-selected information; receive, by the client device 112 from the server 102 web content and other data, including maps, representations of graphical objects (such as videos), and other data for displaying on the display screen 118 of the client device 112; display on the display screen 118 one or more graphical object, including graphical objects including simplified curves.
  • the local memory 114 is configured to store data, including computer-readable instructions and other data, including graphical objects data (such as map data and the like). In some implementations of the present technology, the local memory 114 can store at least part of the data in a database (not depicted). In other implementations of the present technology, the local memory 114 can store at least part of the data in any collections of data (not depicted) other than databases.
  • Data stored on the local memory 114 can comprise graphical objects of any kind.
  • the local memory 114 can store computer-readable instructions that control updates, population and modification of the database (not depicted) and/or other collections of data (not depicted). More specifically, computer-readable instructions stored on the local memory 114 allow the client device 112 to receive (e.g., to update) information in respect of graphical objects via the communication network 110, to store information in respect of the graphical objects, including the information in respect of their simplified curves in the database, and/or in other collections of data.
  • Computer-readable instructions stored on the local memory 114, when executed, can cause the processor 116 to receive instruction to simplify a curve (not depicted).
  • the instruction to simplify a curve can be received following instructions of a user 121 received by the client device 112 via the input device 113.
  • the client device 112 responsive to user 121 requesting to zoom out a map, can send to the server 102 a corresponding request to simplify a curve on the map.
  • instruction to simplify a curve can be executed on the server 102, so that the client device 112 transmits the instructions to the server 102.
  • computer-readable instructions, stored on the local memory 114 when executed, can cause the processor 116 to receive, from the server 102, as a result of processing by the server 102, an instruction to display a final simplified curve on a display screen 118.
  • the instruction to display the final simplified curve on the display screen 118 can be received from the server 102 via communication network 110.
  • the instruction to display the final simplified curve on the display screen 118 of the client device 112 may comprise an instruction to zoom a visual presentation of the final simplified curve.
  • an instruction to simplify a curve can be executed locally, on the client device 112, without contacting the server 102.
  • computer-readable instructions stored on the local memory 114, when executed, can cause the processor 116 to receive instruction to simplify a curve.
  • the instruction to simplify a curve can be instructions of a user 121 entered using the user input device 113.
  • the client device 112 responsive to user 121 requesting to zoom out a map, can receive instruction to simplify a curve on the map.
  • Computer-readable instructions stored on the local memory 114, when executed, can further cause the processor 116 to execute a first simplification algorithm (not depicted) in order to simplify a curve 208, 500, thereby generating both first simplified curve 200, 502 and shape parameters of the first simplified curve 200, 502.
  • the first simplification algorithm is predefined, as discussed above.
  • a respective second simplification algorithm not depicted
  • the respective second simplification algorithm is selected from a plurality of predefined second simplification algorithms, the second simplification algorithm being selected independently for each homogeneous segment 202, 204, 206 based on the shape parameters of the respective homogeneous segment 202, 204, 206.
  • the second simplification algorithm for each homogeneous segment 202, 204, 206 may be the same or different, depending on the shape parameters.
  • the first and the second simplification algorithm may be the same or different, depending on the shape parameters.
  • Computer-readable instructions stored on the local memory 114, when executed, can further cause the processor 116 to simplify the final simplified curve 210 further.
  • the processor 116 repeats the steps of defining a plurality of homogeneous segments within the simplified homogeneous segments in the final simplified curve 210, and simplifying the newly-defined homogeneous segments (not depicted) using a third simplification algorithm.
  • the third simplification algorithm is selected independently for each of the newly-defined homogeneous segments within the final simplified curve 210.
  • This third simplification algorithm is selected independently of the second simplification algorithm used previously.
  • a second final simplified curve (not depicted) is thereby generated.
  • Computer-readable instructions stored on the local memory 114, when executed, can cause the processor 116 to repeat these steps iteratively, further simplifying the second final simplified curve to generate a third final simplified curve (not depicted), etc., until a desired endpoint (such as a desired zoom threshold, a desired resolution, use of allotted memory, use of allotted time, etc.) is reached.
  • a desired endpoint such as a desired zoom threshold, a desired resolution, use of allotted memory, use of allotted time, etc.
  • a ⁇ ⁇ final simplified curve will be generated with each n th iteration.
  • Computer-readable instructions stored on the local memory 114, when executed, can further cause the processor 116 to render the final simplified curve 210 (or the second final simplified curve, or the n final simplified curve, etc., depending on how many iterations were required to reach the desired endpoint) on the display screen 118.
  • rendering the final simplified curve 210 (or the n th final simplified curve (not depicted)) on the display screen 118 is rendering a scaled visual presentation of the final simplified curve 210.
  • the instruction to display the final simplified curve 210 (or the n th final simplified curve) on the display screen 118 can comprise an instruction to zoom a visual presentation of the curve 208, such that the final simplified curve 210 looks larger or smaller.
  • the processor 116 sends instruction to a rendering engine (not depicted) to display the final simplified curve 210 (or the n th final simplified curve) on the display screen 118.
  • the rendering engine may be a browser rendering engine or a general rendering engine, i.e., part of the operating system (not depicted) of the client device 112.
  • the client device 112 is coupled to the communication network 110 via a communication link 124.
  • the communication network 110 can be implemented as the Internet. In other embodiments of the present technology, the communication network 110 can be implemented differently, such as any wide-area communications network, local-area communications network, a private communications network and the like.
  • the client device 112 can establish connections, through the communication network 110, with other devices, such as servers. More particularly, the client device 112 can establish connections and interact with the server 102.
  • the communication link 124 is implemented is not particularly limited and will depend on how the client device 112 is implemented.
  • the communication link 124 can be implemented as a wireless communication link (such as but not limited to, a 3G communications network link, a 4G communications network link, a Wireless Fidelity, or WiFi® for short, Bluetooth® and the like).
  • the communication link 124 can be either wireless (such as the Wireless Fidelity, or WiFi® for short, Bluetooth® or the like) or wired (such as an Ethernet based connection).
  • Figure 3 illustrates a computer-implemented method 300 for simplifying a curve, the method executable on a computing device 102, 112 of the system 100 of Figure 1.
  • Step 302 receiving instruction to simplify a curve
  • the method 300 starts at step 302, where a computing device, being in this implementation of the present technology the server 102, receives instruction to simplify a curve 208, 500.
  • the curve 208, 500 is generally defined by a plurality of vertex coordinates.
  • the curve 208, 500 may be part of a graphical object (not depicted) of any shape, such as (without limitation) a map, a photo, a picture, a video, a video game, a polygonal object, and the like.
  • the curve 208, 500 may be part of a two-dimensional (2D) or a three-dimensional (3D) graphical object.
  • the graphical object may be rendered within a web browser (e.g., within the content area of a window), within an e-mail client, within an e-book reader, or within another application displaying graphical content (such as a Maps application).
  • the graphical object may be rendered by a general rendering engine embedded in the operating system of the computing device (e.g., the server 102, or the client device 112).
  • the curve 208, 500 is part of a boundary line or a border (e.g., a country border, a sea border, a border of a plot of land) drawn on a map (not depicted).
  • a border e.g., a country border, a sea border, a border of a plot of land
  • instruction to simplify a curve 208, 500 may be received.
  • simplifying curves is critical for map generalization, lines being the most abundant features in cartography. Instruction to simplify a curve 208, 500 may therefore be received as part of instruction to zoom a portion of a map.
  • instruction to simplify a curve 208, 500 may be received as part of instruction to display an object (such as a castle, a boat, a dragon, etc.) in a video game or in a story illustration.
  • instruction to simplify a curve 208, 500 may be received as part of instruction to reduce picture size for download, upload, or for storage, or to reduce the data density of graphical objects for computer animation.
  • instruction to simplify a curve 208, 500 may be received as part of instruction to edit a picture or a video, or for 3D editing.
  • instruction to simplify a curve 208, 500 may be received as part of instruction to transform source data to reduce data volume, to reduce data for more compact data storage, or to merge databases with different scales. Many other embodiments are possible. It should be expressly understood that the context in which instructions to simplify a curve 208, 500 are received is not meant to be particularly limited.
  • graphical objects can originate from multiple sources. For example, graphical objects could be scanned images, images downloaded from a remote server, and the like.
  • rendering data representative of the graphical object and/or the curve 208, 500 is stored in the information storage medium 104, e.g., in database 106.
  • rendering data representative of the graphical object and/or the curve 208, 500 is received (e.g., uploaded) by the server 102 from the client device 112 via the communication network 110.
  • rendering data representative of the graphical object and/or the curve 208, 500 is retrieved (e.g., downloaded) from an external resource (not depicted) via the communication network 110.
  • the server 102 acquires the curve 208, 500 from an external resource (not depicted), which can be, for example, a provider of map data.
  • the source of the curve 208, 500 can be any suitable source, for example, any device that optically scans images and converts them to a digital image.
  • the server 102 can convert a graphical object from raster format of representation into a vector format of representation, and vice versa.
  • Step 304 - executing a first simplification algorithm, the first simplification algorithm being predefined, the executing simplifying the curve and thereby generating both a first simplified curve and shape parameters of the first simplified curve
  • step 304 the server 102 executes a first simplification algorithm (not depicted).
  • the first simplification algorithm is predefined. It should be expressly understood that the first simplification algorithm is not particularly limited. Any suitable algorithm for simplifying curves and generating shape parameters of the simplified curve may be used.
  • the first simplification algorithm is selected from Ramer-Douglas-Peucker (RDP) (also referred to as Douglas-Peucker), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), ⁇ ⁇ point, radial distance, and perpendicular distance algorithm.
  • RDP Ramer-Douglas-Peucker
  • Visvalingham-Whyatt Zhao-Saalfeld
  • Lang Lang
  • Reumann-Witkam Reumann-Witkam
  • Opheim Rangayyan
  • Variant RDP sleeve-fitting
  • TF turning function
  • ⁇ ⁇ point radial distance
  • the first simplification algorithm may be chosen based on several criteria such as the type of graphical object containing the curve to be simplified, the source of the graphical object, the source from which instruction was received, the suitability of a particular algorithm for a particular type of curve/shape parameters, and the like.
  • the RDP algorithm often works well for curves found in maps, and may be chosen for applications involving map generalization.
  • the RDP algorithm is selected as the first simplification algorithm, however is should be understood that these examples are shown for illustrative purposes only and are not intended to be limiting.
  • the first simplification algorithm simplifies the curve 208, 500, thereby generating first simplified curve 200, 502, and at the same time generates shape parameters of the first simplified curve 200, 502.
  • the first simplification algorithm is the RDP algorithm, which has been executed to generate the first simplified curve 200, 502 as well as its shape parameters.
  • generation of the shape parameters of the first simplified curve 200, 502 is part of the simplification method performed by the first simplification algorithm.
  • a maximum deviation distance dmax is specified (for example, 5 km). The first and last points of the line are marked as "to be kept”.
  • the direct line segment from the first point P i to the last point P n of the original line is considered, and the points of the original line are inspected to see whether any of them are more than the maximum distance d m ax from the line segment. If any are, then the point Pi farthest from the line segment is marked as "to be kept", and the same operation is applied to the partial lines from the beginning Pi to the farthest point Pi and from the farthest point Pi to the end point P n . This process of checking, marking, and subdividing is applied recursively until the original line has been broken up into pieces such that the line segment from the beginning to the end of each piece is no farther than the maximum deviation distance d m ax from any of the points in between.
  • shape parameters generated will depend on which simplification algorithm is used as the first simplification algorithm.
  • shape parameters that may be generated include, without limitation, length, declination angle, sinuosity, edge distance, height drop, effective area for a point (for example, as determined by the Visvalingham-Whyatt algorithm), effective area of a triangle, complexity, monotonicity, length between points, point density, and combinations thereof.
  • Step 306 - defining a plurality of homogeneous segments of the first simplified curve based on the shape parameters
  • a plurality of homogeneous segments 202, 204, 206 of the first simplified curve 200 are defined (with reference to Figure 5, homogeneous segments 504, 506, 508, 510, 512 of the first simplified curve 502 are defined).
  • the homogeneous segments 202, 204, 206, 504, 506, 508, 510, 512 are defined based on the shape parameters of the first simplified curve 200, 502, the shape parameters being generated during simplification of the curve 208, 500, as discussed above.
  • the homogeneous segments 202, 204, 206, 504, 506, 508, 510, 512 have been defined by analyzing characteristics of the first simplified curve 200/502's vertices (e.g., edge distances, height drops, monotonicity). Based on such characteristics, the first simplified curve 200 is divided into three homogeneous segments 202, 204, 206, each homogeneous segment 202, 204, 206 representing a portion of the first simplified curve 200 in which the vertices' behavior is the same or at least highly similar.
  • first homogeneous segment 202 is the segment where the length of each segment correlates to the height of the line (again, following shape parameters generated by the first simplification algorithm, which is RDP in this example).
  • Second homogeneous segment 204 is another segment of first simplified curve 200 having dense segments of almost the same height.
  • Third homogeneous segment 206 is a non-monotonic segment of the first simplified curve 200.
  • five homogeneous segments 504, 506, 508, 510, 512 have been defined based on shape characteristics.
  • the homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 may comprise a plurality of segments of the first simplified curve 200, 502, each of the plurality of segments having uniform or at least highly similar shape parameters. Two segments are generally considered homogeneous if one or more shape parameters are uniform or at least highly similar. As will be understood by those skilled in the art, the shape parameters used to determine homogeneity will vary depending on the simplification algorithm used to generate shape parameters for a given curve. Accordingly, the plurality of homogeneous segments defined will also vary depending on the simplification algorithm used.
  • the plurality of homogeneous segments is defined by the first simplification algorithm, after generating the shape parameters of the first simplified curve 200, 502.
  • the plurality of homogeneous segments is identified by another algorithm, e.g., by a simplification algorithm other than the first simplification algorithm, based on the shape parameters of the first simplified curve 200, 502, the shape parameters having been generated by the first simplification algorithm.
  • the method by which the plurality of homogeneous segments is defined is not meant to be particularly limited. Many such methods are known and may be used in step 306.
  • the plurality of homogeneous segments may be defined using, without limitation, one or more of a point removal method, a measure -based method, a critical point method, a geometrical analysis method, a frequency-based method, and a knowledge-based method (for a review of these methods, see, e.g, Lopez, FJ.A. and Balboa, J.L.G., Pattern Recognition, vol. 41, pp. 1593-1609, 2008, the entire contents of which are hereby incorporated by reference).
  • a point removal method for a review of these methods, see, e.g, Lopez, FJ.A. and Balboa, J.L.G., Pattern Recognition, vol. 41, pp. 1593-1609, 2008, the entire contents of which are hereby incorporated by reference.
  • Step 308 simplifying each homogeneous segment using a respective second simplification algorithm, the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms, the respective second simplification algorithm being selected independently for each homogeneous segment based on the shape parameters of the respective homogeneous segment; the simplifying generating a final simplified curve
  • the server 102 proceeds with a second step of simplification, in which each simplified homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 in the first simplified curve 200, 502 is simplified again, using a second simplification algorithm (not depicted).
  • the second simplification algorithm is selected independently for each homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 based on the shape parameters of the respective homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512.
  • simplification algorithms are particularly suited for simplifying different types of curves, depending on the shape parameters of a particular curve and the method used by a particular algorithm for line simplification.
  • the second simplification algorithms are predefined according to criteria for selecting a simplification algorithm appropriate for particular shape parameters of a line segment. Such criteria for selecting simplification algorithms appropriate for line segments are known in the art (see, e.g., Park, W. and Yu, K., Pattern Recognition Letters 32 (2011), pp. 1267-73, the entire contents of which are hereby incorporated by reference).
  • the second simplification algorithm is selected from a plurality of predefined second simplification algorithms based on the shape parameters of each respective homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 to be simplified.
  • the second simplification algorithm best-suited for the particular shape parameters of the particular homogeneous segment is selected.
  • the plurality of predetermined second simplification algorithms is not meant to be particularly limited.
  • the plurality of predefined second simplification algorithms comprises RDP, Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann- Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), ⁇ ⁇ point, radial distance, and perpendicular distance algorithm.
  • RDP Visvalingham-Whyatt
  • Zhao-Saalfeld Lang
  • Reumann- Witkam Opheim
  • Rangayyan Variant RDP
  • SF sleeve-fitting
  • TF turning function
  • ⁇ ⁇ point radial distance
  • perpendicular distance algorithm perpendicular distance algorithm
  • the second simplification algorithm may or may not be the same as the first simplification algorithm, depending on the shape parameters of the respective homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512.
  • first homogeneous segment 202 is particularly suited for simplification by the RDP algorithm. Accordingly, in this example, first homogeneous segment 202 is simplified in step 308 by the RDP algorithm.
  • second homogeneous segment 204 is best suited to the Reumann-Witkam algorithm. Accordingly, in this example, second homogeneous segment 204 is simplified in step 308 by the Reumann-Witkam algorithm.
  • Third homogeneous segment 206 is particularly suited for simplification by the Opheim algorithm, and accordingly, in this example, third homogeneous segment 206 is simplified in step 308 by the Opheim algorithm. It should be understood that many other variations of this method are possible, depending on the shape parameters of the homogeneous segments and characteristics of available simplification algorithms.
  • homogeneous segments 504 and 512 are particularly suited for simplification by the RDP algorithm. Accordingly, in this example, homogeneous segments 504 and 512 are simplified in step 308 by the RDP algorithm. In contrast, homogeneous segments 506 and 510 are best suited to the Visvalingham-Whyatt algorithm. Accordingly, in this example, homogeneous segments 506 and 510 are simplified in step 308 by the Visvalingham-Whyatt algorithm. The remaining homogeneous segment 508 is particularly suited for simplification by the Opheim algorithm, and accordingly, in this example, homogeneous segment 508 is simplified in step 308 by the Opheim algorithm.
  • the method 300 may further comprise a step (not depicted) of sending, to client device 112, an instruction to display the final simplified curve 210, 514 on the display screen 118 of the client device 112.
  • the instruction to display the final simplified curve 210, 514 on the display screen 118 of the client device 112 comprises an instruction to zoom a visual presentation of the curve 208, 500.
  • the instruction to display the final simplified curve 210, 514 on client device 112 may be part of an instruction to zoom a portion of a map.
  • the instruction received in step 302 may also be part of an instruction to zoom the portion of the map.
  • the instruction to display the final simplified curve 210, 514 on client device 112 may be part of an instruction to display a photo, the file containing the photo having been reduced in size to reduce storage space occupied by the photo.
  • the instruction received in step 302 may also be part of an instruction to reduce the size of the photo file.
  • the method 300 may further comprise a step (not depicted) of rendering the final simplified curve 210, 514 on the display screen 118 of the client device 112.
  • rendering the final simplified curve 210, 514 on the display screen 118 of the client device 112 comprises zooming a visual presentation of the curve 208, 500.
  • the final simplified curve 210, 514 is rendered on the display screen 118 by a rendering engine (not depicted), e.g., a browser rendering engine, or a general rendering engine that is part of the operating system (not depicted) of the server 102 or the client device 112.
  • the method 300 ends after step 308. For example, if a desired endpoint has been reached, then the method 300 ends after step 308.
  • a desired endpoint may be, without limitation, one or more of a desired zoom threshold, a desired resolution, use of allotted memory, and use of allotted time. For example, where instruction to zoom a portion of a map is received and the curve 208, 500 is a boundary line within the portion of the map, then if the desired zoom threshold has been attained after step 308, the method 300 ends. In some implementations, the method 300 ends in this case after rendering the final simplified curve 210, 514 (as part of the zoomed portion of the map) on the display screen 118 of the client device 112.
  • the desired endpoint may not have been reached after step 308.
  • further simplification of the final simplified curve 210, 514 is required, and the method 300 continues with steps 402, 404 of the method 400, in which each simplified homogeneous segment (not depicted) in the final simplified curve 210, 514 is further simplified.
  • Figure 4 illustrates a computer-implemented method 400, the method executable on a computing device 102, 112 of the system 100 of Figure 1.
  • the method 400 is an optional extension of the method 300 in which steps 306 and 308 are essentially repeated for each simplified homogeneous segment in the final simplified curve 210, 514.
  • the method 400 begins with step 402.
  • a second plurality of second homogeneous segments is defined for each simplified homogeneous segment in the final simplified curve 210, 514, based on its respective shape parameters.
  • the second simplification algorithm has simplified each homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 and, at the same time, generated shape parameters of the simplified homogeneous segments (not depicted).
  • generation of the shape parameters of the simplified homogeneous segments is part of the simplification method performed by the second simplification algorithm in step 308, during generation of the final simplified curve 210, 514.
  • defining the second plurality of second homogeneous segments (not depicted) is also part of the simplification method performed by the second simplification algorithm in step 308, during generation of the final simplified curve 210, 514.
  • step 402 as in step 306 discussed above, a second plurality of second homogeneous segments of each simplified homogeneous segment is defined, based on the shape parameters. Corresponding descriptions made above for step 306 are applicable to step 402 and are not repeated here, to avoid redundancy.
  • step 404 The method 400 then continues with step 404.
  • Step 404 simplifying each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; thereby generating a second final simplified curve
  • each second homogeneous segment in the final simplified curve 210, 514 is simplified using a respective third simplification algorithm, the third simplification algorithm (not depicted) being selected independently for each second homogenous segment (not depicted) based on its respective shape parameters.
  • step 308 and the second simplification algorithm made above are applicable to step 404 and the third simplification algorithm and are not repeated here, to avoid redundancy.
  • the method 400 may repeat as necessary or as desired until a desired endpoint has been reached. For example, if the desired endpoint has been reached, then the method 400 ends after step 404, with generation of the second final simplified curve (not depicted). For example, where instruction to zoom a portion of a map is received and the curve 208, 500 is a boundary line within the portion of the map, then if the desired zoom threshold has been attained after step 404, the method 400 ends. In some implementations, the method 400 ends in this case after rendering the second final simplified curve (as part of the zoomed portion of the map) (not depicted) on the display screen 118 of the client device 112.
  • the method 400 may be repeated until the desired endpoint has been reached.
  • the method is therefore recursive, repeatedly defining and simplifying homogeneous segments of the ⁇ ⁇ final simplified curve until the desired endpoint is reached.
  • the simplification algorithm is independently selected for each respective homogeneous segment based on its shape parameters. It should be understood that in every iteration, the simplification algorithm is also selected independently of the simplification algorithm used in previous iterations. Thus the simplification algorithm used in each successive iteration may or may not be the same simplification algorithm used in previous iterations for a segment, in every case the simplification algorithm being selected based on the shape parameters of the segment, using predefined criteria as discussed above.
  • the method may further comprise a step of displaying the ⁇ ⁇ final simplified curve on the display screen 118 of the client device 112.
  • the signals can be sent/received using optical means (such as a fibre-optic connection), electronic means (such as using wired or wireless connection), and mechanical means (such as pressure -based, temperature based or any other suitable physical parameter based means).
  • optical means such as a fibre-optic connection
  • electronic means such as using wired or wireless connection
  • mechanical means such as pressure -based, temperature based or any other suitable physical parameter based means
  • Some technical effects of non-limiting embodiments of the present technology may include provision of a fast, efficient, and/or recursive simplification method for a curve.
  • the present technology allows selection of the best-suited algorithm for simplifying a line segment following execution of a default simplification algorithm. Segments determined by the first simplification algorithm are analyzed in order to determine which of the predefined plurality of second simplification algorithms is best-suited for a particular segment, followed by simplification of the segment using the selected second simplification algorithm.
  • the method is recursive, so that in every iteration a different simplification algorithm can be used to further simplify a segment, depending on its shape parameters and which algorithm is best suited for those shape parameters.
  • CLAUSE 1 A method for simplifying a curve (208, 500), the method executable at a computing device (102, 112), the method comprising the steps of:
  • [00148] b) executing a first simplification algorithm, the first simplification algorithm being predefined, the executing simplifying the curve (208, 500) and thereby generating both a first simplified curve (200, 502) and shape parameters of the first simplified curve (200, 502);
  • each homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512) using a respective second simplification algorithm the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms, the respective second simplification algorithm being selected independently for each homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512) based on the shape parameters of the respective homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512); the simplifying generating a final simplified curve (210, 514).
  • CLAUSE 2 The method of clause 1, wherein the first simplification algorithm is selected from Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann- Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), ⁇ ⁇ point, radial distance, and perpendicular distance algorithm.
  • RDP Ramer-Douglas-Peucker
  • SF sleeve-fitting
  • TF turning function
  • CLAUSE 3 The method of clause 1 or 2, wherein the plurality of predefined second simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), N th point, radial distance, and perpendicular distance algorithm.
  • RDP Ramer-Douglas-Peucker
  • SF sleeve-fitting
  • TF turning function
  • CLAUSE 4 The method of any one of clauses 1 to 3, further comprising the steps of:
  • each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; thereby generating a second final simplified curve.
  • CLAUSE 5 The method of clause 4, wherein the plurality of predefined third simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), ⁇ ⁇ point, radial distance, and perpendicular distance algorithm.
  • RDP Ramer-Douglas-Peucker
  • SF sleeve-fitting
  • TF turning function
  • CLAUSE 6 The method of any one of clauses 1 to 5, wherein the shape parameters comprise one or more of length and declination angle, sinuosity, edge distance, height drop, effective area for a point, effective area of a triangle, complexity, monotonicity, length between points, and point density.
  • CLAUSE 7 The method of any one of clauses 1 to 6, wherein the plurality of homogeneous segments (202, 204, 206, 504, 506, 508, 510, 512) are defined using one or more of a point removal method, a measure -based method, a critical point method, a geometrical analysis method, a frequency-based method, and a knowledge -based method.
  • CLAUSE 8 The method of any one of clauses 1 to 7, wherein the computing device is a server (102), and the method further comprises a step of sending, to a client device (112), an instruction to display the final simplified curve (210, 514) or the second final simplified curve on a display screen (118) of the client device (112).
  • CLAUSE 9 The method of clause 8, wherein the instruction to display the final simplified curve (210, 514) or the second final simplified curve on the display screen (118) of the client device (112) comprises an instruction to zoom a visual presentation of the curve (208, 500).
  • CLAUSE 10 The method of any one of clauses 1 to 7, wherein the computing device is a client device (112), and the method further comprises a step of rendering the final simplified curve (210, 514) or the second final simplified curve on a display screen (118) of the client device (112).
  • CLAUSE 12 The method of any one of clauses 1 to 11 , wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is part of a map, a photo, a picture, a video, or a video game.
  • CLAUSE 13 The method of clause 12, wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is part of a 2D graphical object or a 3D graphical object.
  • CLAUSE 14 The method of clause 12, wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is rendered by a browser rendering engine or a general rendering engine.
  • CLAUSE 15 The method of any one of clauses 4 to 14, wherein steps e) and f) are repeated until one or more of the following endpoints is reached: a desired zoom threshold is reached, a desired resolution is reached, allotted memory is used, or allotted time is used.
  • a server (102) comprising: [00168] an information storage medium (104);
  • a processor (108) operationally connected to the information storage medium (104), the processor (108) configured to store objects on the information storage medium (104), the processor (108) being further configured to:
  • [00172] c) define a plurality of homogeneous segments (202, 204, 206, 504, 506, 508, 510, 512) of the first simplified curve (200, 502) based on the shape parameters;
  • CLAUSE 17 The server (102) of clause 16, wherein the first simplification algorithm is selected from Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), ⁇ ⁇ point, radial distance, and perpendicular distance algorithm.
  • RDP Ramer-Douglas-Peucker
  • SF sleeve-fitting
  • TF turning function
  • CLAUSE 18 The server (102) of clause 16 or 17, wherein the plurality of predefined second simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), N th point, radial distance, and perpendicular distance algorithm.
  • RDP Ramer-Douglas-Peucker
  • SF sleeve-fitting
  • TF turning function
  • each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; thereby generating a second final simplified curve.
  • CLAUSE 20 The server (102) of clause 19, wherein the plurality of predefined third simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), ⁇ ⁇ point, radial distance, and perpendicular distance algorithm.
  • RDP Ramer-Douglas-Peucker
  • SF sleeve-fitting
  • TF turning function
  • CLAUSE 21 The server (102) of any one of clauses 16 to 20, wherein the shape parameters comprise one or more of length and declination angle, sinuosity, edge distance, height drop, effective area for a point, effective area of a triangle, complexity, monotonicity, length between points, and point density.
  • CLAUSE 22 The server (102) of any one of clauses 16 to 21, wherein the plurality of homogeneous segments (202, 204, 206, 504, 506, 508, 510, 512) are defined using one or more of a point removal method, a measure -based method, a critical point method, a geometrical analysis method, a frequency-based method, and a knowledge -based method.
  • CLAUSE 23 The server (102) of any one of clauses 16 to 22, wherein the computing device is a server (102), and the processor (106) is further configured to send, to a client device (112), an instruction to display the final simplified curve (210, 514) or the second final simplified curve on a display screen (118) of the client device (112).
  • CLAUSE 24 The server (102) of clause 23, wherein the instruction to display the final simplified curve (210, 514) or the second final simplified curve on the display screen (118) of the client device (112) comprises an instruction to zoom a visual presentation of the curve (208, 500).
  • CLAUSE 25 The server (102) of any one of clauses 16 to 22, wherein the computing device is a client device (112), and the processor (116) is further configured to render the final simplified curve (210, 514) or the second final simplified curve on a display screen (118) of the client device (112).
  • CLAUSE 26 The server (102) of clause 25, wherein rendering the final simplified curve (210, 514) or the second final simplified curve on the display screen (118) of the client device (112) comprises zooming a visual presentation of the curve (208, 500).
  • CLAUSE 27 The server (102) of any one of clauses 1 to 26, wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is part of a map, a photo, a picture, a video, or a video game.
  • CLAUSE 28 The server (102) of clause 27, wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is part of a 2D graphical object or a 3D graphical object.
  • CLAUSE 29 The server (102) of clause 27, wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is rendered by a browser rendering engine or a general rendering engine.
  • CLAUSE 30 The server (102) of any one of clauses 19 to 29, wherein the processor (106, 116) is further configured to repeat steps e) and f) until one or more of the following endpoints is reached: a desired zoom threshold is reached, a desired resolution is reached, available memory is used, or allotted time is used.

Abstract

There are disclosed methods and systems for simplifying a curve. After instruction is received to simplify a curve, a first, predefined simplification algorithm is executed. Execution of the first simplification algorithm simplifies the curve, generating both a first simplified curve and shape parameters of the first simplified curve. Next, a plurality of homogeneous segments of the first simplified curve is defined, based on the shape parameters. Each homogeneous segment is then simplified using a respective second simplification algorithm to generate a final simplified curve, the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms and being selected independently for each homogeneous segment based on the shape parameters of the respective homogeneous segment. The methods and systems have wide application in simplifying curves such as those found in graphical objects, such as maps, photos, videos, video games, and the like.

Description

METHOD AND SYSTEM FOR SIMPLIFYING A CURVE
CROSS-REFERENCE
[0001] The present application claims priority to Russian Patent Application No 2015137418, filed September 02, 2015, entitled "METHOD AND SYSTEM FOR SIMPLIFYING A CURVE" the entirety of which is incorporated herein.
FIELD
[0002] The present technology relates to a method and system for simplifying a curve. BACKGROUND
[0003] Curve simplification involves the selective elimination of vertices along a curve to remove unwanted information. Curve simplification algorithms (also referred to as line simplification algorithms) typically aim to retain the appearance or shape of a curve even though the number of points on the curve is reduced, while minimizing positional error.
[0004] In computer technologies, there is a growing need for curve simplification methods. For example, curve simplification (also referred to as line simplification) is an important function in cartography and in geographic information systems (GIS), and is widely used in commercial GIS software packages. Many mobile devices (such as smartphones) have a map application that allows a user to view different geographical areas for certain purposes, such as to navigate roads in a certain area, to find out traffic conditions on certain roads, or to find locations of certain stores. A user navigates within the map application to see different areas, and to zoom out or zoom in to see the map at different resolutions. These functions require map generalization systems to simplify the maps in order to render high-resolution geographic features at an appropriate output resolution.
[0005] In digital maps, one- and two-dimensional objects are typically represented as polylines or polygons. A polyline is a connected sequence of straight line segments. A polygon is a special case of a polyline that starts and ends at the same point. That is, if an object is actually curved in the real world, it is approximated by a sequence of points and the straight line segments connecting them. In the internal representation of the map, a one-dimensional object, or the one-dimensional boundary of a two-dimensional object, is typically represented by a list of its points. [0006] Often, in the use of digital map data the producer or user of the data finds that the data is much more precise, and the number of points is much greater, than is needed for the intended use. For example, this can happen when data originally collected for use at large (zoomed-in) scales is to be used instead at small (zoomed-out) scales. If the map is drawn using the more precise data, there are many times more points than necessary, making the data file much larger and the processing time much longer than necessary. In this situation, it is advantageous to generalize the polylines in the map so that they are not more precise than required for the intended use.
[0007] Line simplification algorithms are an important component of such map generalization systems. Line simplification is also used in a wide array of graphics-related areas, such as video games (e.g., to show an object such as a castle to a user), photo editors, video editors, to reduce picture size for download, upload or for storage, and the like. Graphs having dense data are frequently found in engineering fields including stereographic 3D and computer animation, where unnecessarily dense data makes interactive control difficult. Line simplification can also be used, for example, to transform source data to reduce data volume, for more compact data storage, and to merge databases with different scales.
[0008] Many methods for line simplification have been developed. One of the most common algorithms for line simplification is the Douglas-Peucker algorithm (also referred to as the Ramer- Douglas-Peucker, or RDP algorithm) (Douglas, D. H. and Peucker, T. K., Canadian Cartographer, vol. 10, pp. 112-22, 1973). Examples of other well-known algorithms include those from: Lang (Lang, T., Geographical Magazine, vol. 42, pp. 50-51, 1969); Reumann and Witkam (Reumann, K. and Witkam, A.P.M., Proc. Int. Computing Symp., pp. 467-472, North-Holland Publishing Company, Amsterdam, 1974); Visvalingam and Whyatt (Visvahngam, M. and Whyatt, J.D., The Cartographic Journal, vol. 30, pp. 46-51, 1993); Zhao and Saalfeld ("sleeve-fitting" algorithm; Zhao, Z. and Saalfeld, A., Autocarto 13, ACSM/ASPRS'97 Technical Papers, Seattle, Washington, vol. 5, pp. 214-223, 1997)); and Opheim (Opheim, H., GeoProcessing, vol. 2, pp. 33- 40). However, conventional line simplification methods all have significant drawbacks. Present methods and systems for efficiently processing and rendering simplified lines are lacking.
[0009] Balboa and Lopez (Balboa, J. L. G. and Lopez, F. J. A., Pattern Recognition 42 (2009), pp. 2150-59) describe an automated line segmentation methodology based on a sinuosity pattern recognition. The sinuosity pattern is measured by means of the effective-area as derived from the Visvalingam-Whyatt algorithm. Sections are determined by applying the Douglas-Peucker algorithm to the shape signature of a line. The described segmentation method has three main steps: a) calculation, by means of the Visvalingam-Whyatt algorithm, of the effective-area of each point in a curve; b) obtaining a shape signature for the curve as integration of effective-areas along the line; and c) selection of critical points by means of the Douglas-Peucker algorithm applied to the shape signature. An automated solution of road segmentation is provided.
[0010] Park and Yu (Park, W.. and Yu, K., Pattern Recognition Letters 32 (2011), pp. 1267-73) describe segmentation and simplification of linear features based on a quantitative analysis of the shape characteristics of a given line section, using a plurality of simplification algorithms to determine which provides high performance for the given line section. Their methodology has two main parts: 1) analysis of the parametric descriptions of the line sections that show exclusively high performance for each simplification algorithm tested; and 2) segmentation of the line data into homogeneous sections using geometrical analysis methods and simplification of the sections using the algorithm allocated in the segmentation process, i.e., the algorithm determined to show exclusively high performance.
SUMMARY
[0011] It is thus an object of the present technology to ameliorate at least some of the inconveniences present in the prior art.
[0012] In one aspect, implementations of the present technology provide a method for simplifying a curve. The method is executable at a computing device such as a server or a client device. The method comprises the steps of receiving instruction to simplify a curve; executing a first simplification algorithm, the first simplification algorithm being predefined, wherein executing the first simplification algorithm simplifies the curve, thereby generating both a first simplified curve and shape parameters of the first simplified curve; defining a plurality of homogeneous segments of the first simplified curve based on the shape parameters; and simplifying each homogeneous segment using a respective second simplification algorithm, the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms, the respective second simplification algorithm being selected independently for each homogeneous segment based on the shape parameters of the respective homogeneous segment; thereby generating a final simplified curve.
[0013] In some embodiments, the first simplification algorithm is selected from Ramer-Douglas- Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm. Similarly, in some embodiments, the plurality of predefined second simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Nth point, radial distance, and perpendicular distance algorithm.
[0014] In some embodiments, the method further comprises the steps of: for each simplified homogeneous segment in the final simplified curve, defining a second plurality of second homogeneous segments of the simplified homogeneous segment based on the shape parameters of the simplified homogeneous segment, the shape parameters of the simplified homogenous segment having been generated by the respective second simplification algorithm; and, simplifying each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; thereby generating a second final simplified curve.
[0015] In some embodiments, the plurality of predefined third simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm.
[0016] Shape parameters vary depending on the simplification algorithms used. In some embodiments, shape parameters comprise one or more of length and declination angle, sinuosity, edge distance, height drop, effective area for a point, effective area of a triangle, complexity, monotonicity, length between points, average segment length, and point density. The plurality of homogeneous segments also varies depending on the simplification algorithms used and the shape parameters. In some embodiments, homogeneous segments are defined using one or more of a point removal method, a measure -based method, a critical point method, a geometrical analysis method, a frequency-based method, and a knowledge -based method.
[0017] In some embodiments, where the computing device is a server, the method further comprises a step of sending, to a client device, an instruction to display the final simplified curve (or the second final simplified curve) on a display screen of the client device. Instruction to display the final simplified curve on the display screen of the client device may comprise, for example, an instruction to zoom a visual presentation of the curve.
[0018] In alternative embodiments, where the computing device is a client device, the method further comprises a step of rendering the final simplified curve on a display screen of the client device. Rendering the final simplified curve on the display screen of the client device may comprise zooming a visual presentation of the curve.
[0019] In some embodiments, a curve, a final simplified curve, and/or a second final simplified curve is part of a map, a photo, a picture, a video, or a video game. The curve, the final simplified curve, and/or the second final simplified curve may be part of a 2D graphical object or a 3D graphical object. Curves and simplified curves may be rendered by a browser rendering engine or a general rendering engine.
[0020] In some embodiments, steps of the method (steps of defining homogeneous segments and simplifying them) are repeated until one or more endpoint is reached, such as a desired zoom threshold, a desired resolution, use of allotted memory, or use of allotted time.
[0021] In another aspect, implementations of the present technology provide a server. The server comprises an information storage medium; a processor operationally connected to the information storage medium, the processor configured to store objects on the information storage medium. The processor is further configured to receive instruction to simplify a curve; execute a first simplification algorithm, the first simplification algorithm being predefined, execution of the first simplification algorithm simplifying the curve and thereby generating both a first simplified curve and shape parameters of the first simplified curve; define a plurality of homogeneous segments of the first simplified curve based on the shape parameters; and simplify each homogeneous segment using a respective second simplification algorithm, the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms, the respective second simplification algorithm being selected independently for each homogeneous segment based on the shape parameters of the respective homogeneous segment; and thereby generate a final simplified curve.
[0022] In some implementations of the server, the processor is further configured to: for each simplified homogeneous segment in the final simplified curve, define a second plurality of second homogeneous segments of the simplified homogeneous segment based on the shape parameters of the simplified homogeneous segment, the shape parameters of the simplified homogenous segment having been generated by the respective second simplification algorithm; and, simplify each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; and thereby generate a second final simplified curve.
[0023] In some implementations of the server, where the computing device is a server, the processor is further configured to send, to a client device, an instruction to display the final simplified curve or the second final simplified curve on a display screen of the client device. In some alternative implementations of the server, where the computing device is a client device, the processor is further configured to render the final simplified curve or the second final simplified curve on a display screen of the client device.
[0024] In the context of the present specification, unless specifically provided otherwise, a "server" is a computer program that is running on appropriate hardware and is capable of receiving requests (e.g., from client devices) over a network, and carrying out those requests, or causing those requests to be carried out. The hardware may be one physical computer or one physical computer system, but neither is required to be the case with respect to the present technology. In the present context, the use of the expression a "server" is not intended to mean that every task (e.g., received instructions or requests) or any particular task will have been received, carried out, or caused to be carried out, by the same server (i.e., the same software and/or hardware); it is intended to mean that any number of software elements or hardware devices may be involved in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request; and all of this software and hardware may be one server or multiple servers, both of which are included within the expression "at least one server".
[0025] In the context of the present specification, unless specifically provided otherwise, a "client device" is an electronic device associated with a user and includes any computer hardware that is capable of running software appropriate to the relevant task at hand. Thus, some (non-limiting) examples of client devices include personal computers (desktops, laptops, netbooks, etc.), smartphones, and tablets, as well as network equipment such as routers, switches, and gateways. It should be noted that a computing device acting as a client device in the present context is not precluded from acting as a server to other client devices. The use of the expression "a client device" does not preclude multiple client devices being used in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request, or steps of any method described herein.
[0026] In the context of the present specification, unless specifically provided otherwise, a "computing device" is any electronic device capable of running software appropriate to the relevant task at hand. A computing device may be a server, a client device, etc.
[0027] In the context of the present specification, unless specifically provided otherwise, a "database" is any structured collection of data, irrespective of its particular structure, the database management software, or the computer hardware on which the data is stored, implemented or otherwise rendered available for use. A database may reside on the same hardware as the process that stores or makes use of the information stored in the database or it may reside on separate hardware, such as a dedicated server or plurality of servers.
[0028] In the context of the present specification, unless specifically provided otherwise, the expression "information" includes information of any nature or kind whatsoever, comprising information capable of being stored in a database. Thus information includes, but is not limited to audiovisual works (photos, movies, sound records, presentations etc.), data (map data, location data, numerical data, etc.), text (opinions, comments, questions, messages, etc.), documents, spreadsheets, etc. [0029] In the context of the present specification, unless specifically provided otherwise, the expression "component" is meant to include software (appropriate to a particular hardware context) that is both necessary and sufficient to achieve the specific function(s) being referenced.
[0030] In the context of the present specification, unless specifically provided otherwise, the word "coordinates" serves to define the position of points, and/or lines, or the like, by references. References can be, for example, numbers and/or any other symbols that are used to determine the position of a point, line (including a curve), or plane in a space of a given dimension with respect to a system of lines (axes) or other fixed references.
[0031] In the context of the present specification, unless specifically provided otherwise, the expression "information storage medium" is intended to include media of any nature and kind whatsoever, including RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc.
[0032] In the context of the present specification, unless specifically provided otherwise, the expression "two-dimensional object" is intended to mean a plane figure, displayed on a computer screen, the plane figure that is bounded by a finite chain of lines closing in a loop to form a closed circuit.
[0033] In the context of the present specification, unless specifically provided otherwise, the expression "graphical object" is intended to mean any graphical figure which can be displayed on a computer screen. Graphical objects can be linear objects, two-dimensional objects, and three- dimensional objects. Graphical objects can be of any shape.
[0034] In the context of the present specification, unless specifically provided otherwise, the expression "border of a graphical object" is intended to mean a perimeter or a portion of the perimeter of a graphical object, wherein the word "perimeter" means a path that surrounds a graphical object. A border of a graphical object can comprise border portions, which border portions can be stored as lines, connecting two extreme points of a respective perimeter portion. Borders of graphical objects can be straight or curved lines or straight or curved surfaces, depending on the graphical object. [0035] In the context of the present specification, unless specifically provided otherwise, a "curve" is a line that is not straight, i.e., a curved line. The expressions "curve simplification" and "line simplification" are used interchangeably herein to refer to simplification of a curved line. A curve may be represented as a polyline, which is a connected sequence of straight line segments. A polygon is a special case of a polyline that starts and ends at the same point. In the context of the present specification, unless specifically provided otherwise, the expression "polygonal object" is intended to mean a two-dimensional object, displayed on a computer screen, the polygonal object that is bounded by a finite chain of straight lines closing in a loop to form a closed circuit.
[0036] In the context of the present specification, unless specifically provided otherwise, a "shape parameter" is a characteristic of the appearance or visible form of a curve. Non-limiting examples of shape parameters include length and declination angle, sinuosity, edge distance, height drop, effective area for a point (for example, as determined by the Visvalingham-Whyatt algorithm, where the effective area of each point on a line is determined by the effective area of its associated triangle), effective area of a triangle, complexity, monotonicity, length between points, and point density.
[0037] In the context of the present specification, unless specifically provided otherwise, "simplification" is a method whereby vertices are selectively removed from a line feature to eliminate detail while preserving the line's basic shape.
[0038] In the context of the present specification, unless specifically provided otherwise, "generalization" is the method whereby information is selected and represented on a map in a way that adapts to the scale or resolution of the display medium of the map, not necessarily preserving all intricate geographical or other cartographic details. Generalization is typically required to maintain clarity, with appropriate content, at a given scale, for a chosen map purpose and intended audience.
[0039] In the context of the present specification, unless specifically provided otherwise, a "simplification algorithm" is an algorithm for simplifying curves, including polylines, polygons, and the like. Many such algorithms are known. Non-limiting examples of line simplification algorithms include Ramer-Douglas-Peucker (RDP) (also referred to as Douglas-Peucker), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), N point, radial distance, and perpendicular distance algorithm. Other line simplification methods and algorithms are known and may be used in methods and systems provided herein.
[0040] In the context of the present specification, unless specifically provided otherwise, a "segment" is a straight line portion of a curve connecting points in the curve. A "homogeneous segment" is a portion of a curve having uniform or at least highly similar shape parameters across its span. Thus, as used herein, a homogeneous segment may comprise a plurality of segments of the curve, wherein each of the plurality of segments has the same or at least highly similar shape parameters, or the shape parameters across the plurality of segments as a whole are uniform. Generally, two segments are considered homogeneous if one or more of their shape parameters are the same or at least highly similar. As will be understood by those skilled in the art, the shape parameters used to determine homogeneity in the present technology will vary depending on the simplification algorithm used to define and generate the shape parameters for a given curve.
[0041] In the context of the present specification, unless specifically provided otherwise, the words "first", "second", "third", etc. have been used as adjectives only for the purpose of allowing for distinction between the nouns that they modify from one another, and not for the purpose of describing any particular relationship between those nouns. Thus, for example, it should be understood that, the use of the terms "first server" and "third server" is not intended to imply any particular order, type, chronology, hierarchy or ranking (for example) of/between the server, nor is their use (by itself) intended imply that any "second server" must necessarily exist in any given situation. Further, as is discussed herein in other contexts, reference to a "first" element and a "second" element does not preclude the two elements from being the same actual real-world element. Thus, for example, in some instances, a "first" server and a "second" server may be the same software and/or hardware, in other cases they may be different software and/or hardware.
[0042] Implementations of the present technology each have at least one of the above-mentioned object and/or aspects, but do not necessarily have all of them. It should be understood that some aspects of the present technology that have resulted from attempting to attain the above-mentioned object may not satisfy this object and/or may satisfy other objects not specifically recited herein. [0043] Additional and/or alternative features, aspects and advantages of implementations of the present technology will become apparent from the following description, the accompanying drawings and the appended claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0044] For a better understanding of the present technology, as well as other aspects and further features thereof, reference is made to the following description which is to be used in conjunction with the accompanying drawings, where:
[0045] Figure 1 is a schematic diagram of a system implemented in accordance with a non- limiting embodiment of the present technology.
[0046] Figure 2 depicts a non-limiting example of a curve, before and after simplification, with the first simplified curve having been divided into three homogeneous segments.
[0047] Figure 3 depicts a block-diagram of a method executable within the system of Figure 1 and implemented in accordance with non-limiting embodiments of the present technology.
[0048] Figure 4 depicts a block-diagram of a method executable within the system of Figure 1 and implemented in accordance with non-limiting embodiments of the present technology.
[0049] Figure 5 depicts a non-limiting example of a curve, before and after simplification, with the first simplified curve having been divided into five homogeneous segments.
DETAILED DESCRIPTION
[0050] Referring to Figure 1, there is shown a diagram of a system 100, the system 100 being suitable for implementing non-limiting embodiments of the present technology. It is to be expressly understood that the system 100 is depicted as merely as an illustrative implementation of the present technology. Thus, the description thereof that follows is intended to be only a description of illustrative examples of the present technology. This description is not intended to define the scope or set forth the bounds of the present technology. In some cases, what are believed to be helpful examples of modifications to the system 100 may also be set forth below. This is done merely as an aid to understanding, and, again, not to define the scope or set forth the bounds of the present technology. These modifications are not an exhaustive list, and, as a person skilled in the art would understand, other modifications are likely possible. Further, where this has not been done (i.e., where no examples of modifications have been set forth), it should not be interpreted that no modifications are possible and/or that what is described is the sole manner of implementing that element of the present technology. As a person skilled in the art would understand, this is likely not the case. In addition it is to be understood that the system 100 may provide in certain instances simple implementations of the present technology, and that where such is the case they have been presented in this manner as an aid to understanding. As persons skilled in the art would understand, various implementations of the present technology may be of a greater complexity.
[0051] System 100 includes a computing device 102 being a server 102. The server 102 may be implemented as a conventional computer server. In an example of an embodiment of the present technology, the server 102 may be implemented as a Dell™ PowerEdge™ Server running the Microsoft™ Windows Server™ operating system. Needless to say, the server 102 may be implemented in any other suitable hardware and/or software and/or firmware or a combination thereof. In the depicted non-limiting embodiment of the present technology, the server 102 is a single server. In alternative non-limiting embodiments of the present technology, the functionality of the server 102 may be distributed and may be implemented via multiple servers.
[0052] In some implementations of the present technology, the server 102 can be under control and/or management of a map service provider, for example Yandex.Maps™. In alternative implementations the server 102 can access a map service provided by a third-party provider. In yet other implementations, the server 102 can be under control and/or management of, or can access, a provider of such services as computer game services, graphical design services, and other services related to computer graphics. In still further implementations, the server 102 can be under control and/or management of, or can access, a provider of such services as photo editor services, video editor services, picture storage services (such as cloud storage services), and other services related to managing graphical objects such as photos, videos, and the like. In additional implementations, the server 102 can be under control and/or management of, or can access, a provider of such services as database management services and data storage services. [0053] The server 102 includes an information storage medium 104 that may be used by the server 102. Generally, the information storage medium 104 may be implemented as a medium of any nature and kind whatsoever, including RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc. and also the combinations thereof.
[0054] The implementations of the server 102 are well known in the art. So, suffice it to state, that the server 102 comprises inter alia a network communication interface 109 (such as a modem, a network card and the like) for two-way communication over a communication network 110; and a processor 108 coupled to the network communication interface 109 and the information storage medium 104, the processor 108 being configured to execute various routines, including those described herein below. To that end the processor 108 may have access to computer readable instructions stored on the information storage medium 104, which instructions, when executed, cause the processor 108 to execute the various routines described herein.
[0055] In some non-limiting embodiments of the present technology, the communication network 110 can be implemented as the Internet. In other embodiments of the present technology, the communication network 110 can be implemented differently, such as any wide-area communication network, local-area communication network, a private communication network and so on.
[0056] The information storage medium 104 is configured to store data, including computer- readable instructions and other data, including graphical objects data (such as map data, video game data, picture data, images, and the like). In some implementations of the present technology, the information storage medium 104 can store at least part of the data in a database 106. In other implementations of the present technology, the information storage medium 104 can store at least part of the data in any collections of data other than databases.
[0057] The information storage medium 104 can store computer-readable instructions that manage updates, population and modification of the database 106 and/or other collections of data. More specifically, computer-readable instructions stored on the information storage medium 104 allow the server 102 to receive (e.g., to update) information in respect of graphical objects via the communication network 110 and to store information in respect of the graphical objects, including the information in respect of their simplified curves in the database 106, and/or in other collections of data.
[0058] Data stored on the information storage medium 104 (and more particularly, at least in part, in some implementations, in the database 106) can comprise inter alia graphical objects of any kind. Non-limiting examples of graphical objects include maps, video games, pictures, photos, videos, and audiovisual works.
[0059] Computer-readable instructions, stored on the information storage medium 104, when executed, can cause the processor 108 to receive instruction to simplify a curve 208, 500. The instruction to simplify a curve 208, 500 can be instructions of a user 121 received by the server 102 from a client device 112, which client device 112 will be described in more detail below. The instruction to simplify a curve 208, 500 can be instructions of the client device 112 received by the server 102 from client device 112. For example, responsive to user 121 requesting to zoom out a map, the client device 112 can send to the server 102 a corresponding request to simplify portions of the map comprising curved lines, to display them in new zoom, without small details, taking into account the resolution of a display screen 118 of the client device 112. Alternatively, the client device 112 can send to the server 102 a request to zoom out a map only, and the server 102 can interpret such request as the request to zoom out a map only as the request (at least partially) to simplify curved lines within the map, e.g., as part of the map generalization.
[0060] Computer-readable instructions, stored on the information storage medium 104, when executed, can further cause the processor 108 to execute a first simplification algorithm (not depicted) in order to simplify a curve 208, 500, thereby generating both a first simplified curve 200, 502 and shape parameters of the first simplified curve 200, 502; the first simplified curve is divided into homogeneous segments based on the shape parameters accordingly.
[0061] Figure 2 illustrates a non-limiting example of a curve 208, a first simplified curve 200, and a final simplified curve 210. The first simplified curve 200 is divided into three homogeneous segments, a first homogeneous segment 202, a second homogeneous segment 204, and a third homogeneous segment 206. The first simplified curve 200 has been generated by simplification of the curve 208 and divided into three homogeneous segments 202, 204, 206 by the first simplification algorithm (not depicted). The final simplified curve 210 has been generated by simplification of the first simplified curve 200 using the respective second simplification algorithm (not depicted) selected for each homogeneous segment 202, 204, 206.
[0062] Figure 5 illustrates another non-limiting example of a curve 500, a first simplified curve 502, and a final simplified curve 514. The first simplified curve 502 is divided into five homogeneous segments, a first homogeneous segment 504, a second homogeneous segment 506, a third homogeneous segment 508, a fourth homogeneous segment 510, and a fifth homogeneous segment 512. The first simplified curve 502 has been generated by simplification of the curve 500 and divided into five homogeneous segments 504, 506, 508, 510, 512 by the first simplification algorithm (not depicted). The final simplified curve 514 has been generated by simplification of the first simplified curve 502 using the respective second simplification algorithm (not depicted) selected for each homogeneous segment 504, 506, 508, 510, 512.
[0063] In the examples depicted in Figures 2 and 5, each homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 is a polyline, i.e., a series of points and straight line segments connecting them. It should be expressly understood that the shape and size of the first simplified curve 200, 502, and the curves 208, 500 from which they are generated, as explained further below, are not particularly limited. Although the first simplified curve 200, 502 is shown being divided into three homogeneous segments 202, 204, 206 and five homogeneous segments 504, 506, 508, 510, 512, respectively, in other implementations the first simplified curve 200, 502 may be divided into any number of homogeneous segments, depending on the shape parameters. In some (unlikely) implementations, if the first simplified curve 200, 502 is homogeneous along its entire length, then only one homogeneous segment (and not a plurality of homogeneous segments) is defined.
[0064] The first simplification algorithm is predefined and is not meant to be particularly limited. Any suitable algorithm for simplifying curves and generating shape parameters of the simplified curve may be used. In some non-limiting implementations, the first simplification algorithm is selected from Ramer-Douglas-Peucker (RDP) (also referred to as Douglas-Peucker), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Nth point, radial distance, and perpendicular distance algorithm. The first simplification algorithm may be predefined based on several criteria such as the type of graphical object containing the curve to be simplified, the source of the graphical object, the source from which instruction was received, and the like.
[0065] Computer-readable instructions, stored on the information storage medium 104, when executed, can further cause the processor 108 to define a plurality of homogeneous segments 202, 204, 206 of the first simplified curve 200 based on the shape parameters. It should be noted that, although the technology is described here with reference to the implementation shown in Figure 2, Figure 2 is referenced by way of example only and the analogous statements apply with respect to the implementation shown in Figure 5.
[0066] Homogeneous segments typically (but do not necessarily) comprise a plurality of segments of the first simplified curve 200, wherein either the shape parameters across the plurality of segments (i.e., across the span of the homogeneous segment) are uniform, or wherein each of the plurality of segments has the same or at least highly similar shape parameters. As the shape parameters are generated by the first simplification algorithm during generation of the first simplified curve 200, the definition of homogeneous segments 202, 204, 206 will vary depending on the first simplification algorithm used. Further, any number of homogeneous segments 202, 204, 206 may be defined, depending on the shape parameters. Homogeneous segments 202, 204, 206 are generally defined by the first simplification algorithm during the process of simplifying the curve 208 and generating the shape parameters.
[0067] Computer-readable instructions, stored on the information storage medium 104, when executed, can further cause the processor 108 to simplify each homogeneous segment 202, 204, 206 using a respective second simplification algorithm (not depicted), thereby generating a final simplified curve 210. The second simplification algorithm is selected from a plurality of predefined second simplification algorithms, the second simplification algorithm being selected independently for each homogeneous segment 202, 204, 206 based on the shape parameters of the respective homogeneous segment 202, 204, 206. In other words, the second simplification algorithm for each homogeneous segment 202, 204, 206 may be the same or different, depending on the shape parameters. Further, the first and the second simplification algorithm may be the same or different, depending on the shape parameters of the homogeneous segments 202, 204, 206. [0068] As mentioned above, the shape parameters used will vary depending on the first simplification algorithm used to generate the first simplified curve 200. In some implementations the shape parameters are one or more of length and declination angle, sinuosity, edge distance, height drop, effective area for a point, effective area of a triangle, complexity, monotonicity, length between points, and point density.
[0069] Computer-readable instructions, stored on the information storage medium 104, when executed, can further cause the processor 108 to simplify the final simplified curve 210 further. The processor 108 repeats the steps of defining a plurality of homogeneous segments within the simplified homogeneous segments in the final simplified curve 210 and simplifying the newly- defined homogeneous segments (not depicted) using a third simplification algorithm. The third simplification algorithm is selected independently for each of the newly-defined homogeneous segments within the final simplified curve 210. The third simplification algorithm is selected independently of the second simplification algorithm used previously. A second final simplified curve (not depicted) is thereby generated. Computer-readable instructions, stored on the information storage medium 104, when executed, can cause the processor 108 to repeat these steps iteratively, until a desired endpoint (such as a desired zoom threshold, a desired resolution, use of allotted memory, use of allotted time, etc.) is reached. It should be understood that a nth final simplified curve will be generated with each nth iteration.
[0070] Computer-readable instructions, stored on the information storage medium 104, when executed, can further cause the processor 108 to send to a client device 112 an instruction to display a final simplified curve 210 (or a second final simplified curve, or an nth final simplified curve (not depicted), depending on how many iterations were completed) on the display screen 118. The instruction can be sent via communication network 110. In some implementations, the instruction to display a final simplified curve 210 (or an nth final simplified curve) on the display screen 118 can comprise an instruction to zoom a visual presentation of the curve 208, such that the final simplified curve 210 looks larger or smaller.
[0071] In some implementations, the processor 108 sends instruction to a rendering engine (not depicted) to display the final simplified curve 210 (or the nth final simplified curve (not depicted)) on the display screen 118. A rendering engine is a software component that displays formatted content on a screen, combining content and formatting information for drawing onto the content area of a window which is displayed on a screen. The rendering engine may be a browser rendering engine, i.e., embedded in a web browser or another application that requires the display of graphical content. Alternatively, the rendering engine may be a general rendering engine, i.e., part of the operating system (not depicted) of the server 102 or the client device 112.
[0072] The system 100 further comprises computing device 112 being a client device 112. The client device 112 is typically associated with a user 121. It should be noted that the fact that the client device 112 is associated with the user 121 does not need to suggest or imply any mode of operation - such as a need to log in, a need to be registered or the like.
[0073] The implementation of the client device 112 is not particularly limited, but as an example, the client device 112 may be implemented as a personal computer (desktops, laptops, netbooks, etc.) or as a wireless communication device (a smartphone, a tablet and the like).
[0074] The client device 112 comprises a user input device 113. How the user input device 113 is implemented is not particularly limited and may depend on how the client device 112 is implemented. The user input device 113 may include any mechanism for providing user input to the processor 116 of the client device 112. The user input device 113 can be a keyboard, and/or a mouse, and so on. The input device 113 is not limited to any specific input methodology, but could be arranged by a virtual button on a touch-screen display or a physical button on the cover of the electronic device, for instance.
[0075] Merely as an example and not as a limitation, in those embodiments of the present technology where the client device 112 is implemented as a wireless communication device (such as a smartphone), user input device 113 can be implemented as an optical interference based user input device. The user input device 113 of one example is a finger/object movement sensing device on which a user performs a gesture and/or presses with a finger. The user input device 113 can identify/track the gesture and/or determines a location of a user's finger on the user input device 113. In the instances where the user input device 113 is executed as the optical interference based user input device, such as a touch screen or multi-touch display, the user input device 113 can further execute functions of the display screen 118. [0076] The user input device 113 is communicatively coupled to a processor 116 and transmits input signals (and output signals where it also operates as the display screen 118) based on various forms of user input for processing and analysis by processor 116.
[0077] The client device 112 further comprises a computer usable information storage medium 114, also referred to as the local memory 114. Local memory 114 can comprise any type of media, including but not limited to RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc. Generally speaking, the purpose of the local memory 114 is to store computer readable instructions as well as any other data.
[0078] The client device 112 further comprises the display screen 118. Display screen 118 can be liquid crystal display (LCD), light emitting diode (LED), interferometric modulator display (IMOD), or any other suitable display technology. The display screen 118 is generally configured to display a graphical user interface (GUI) that provides an easy to use visual interface between the user 121 of the client device 112 and the operating system or application(s) running on the client device 112. Generally, the GUI presents programs, files and operational options with graphical images. Display screen 118 is also generally configured to display other information like user data and web resources. Display screen 118 can also be implemented as a touch based device such as a touch screen. A touch screen is a display that detects the presence and location of user touch inputs. Display screen 118 can also be a dual touch or multi-touch display that can identify the presence, location and movement of touch inputs. In the instances where the display screen 118 is implemented as a touch-based device such as a touch screen, or a multi-touch display, the display screen 118 can execute functions of the user input device 113.
[0079] The display screen 118 is communicatively coupled to the processor 116 and receives signals from the processor 116. In instances where the display screen 118 is implemented as a touch-based device such as a touch screen, or a multi-touch display, the display screen 118 can also transmit input signals based on various forms of user input for processing and analysis by processor 116.
[0080] The client device 112 further comprises the above mentioned processor 116. The processor 116 is configured to perform various operations in accordance with a machine-readable program code. The processor 116 is operatively coupled to the user input device 113, to the local memory 114, and to the display screen 118. The processor 116 is configured to have access to computer readable instructions which instructions, when executed, cause the processor 116 to execute various routines. As non-limiting examples, the processor 116 described herein can have access to computer readable instructions, which instructions, when executed, can cause the processor 116 to: display information on the display screen 118; receive from a user 121 of the client device 112 via the user input device 113 a selection of at least some of the displayed information; send, by the client device 112 to a server 102 via a communication network 110, the user-selected information; receive, by the client device 112 from the server 102 web content and other data, including maps, representations of graphical objects (such as videos), and other data for displaying on the display screen 118 of the client device 112; display on the display screen 118 one or more graphical object, including graphical objects including simplified curves.
[0081] The local memory 114 is configured to store data, including computer-readable instructions and other data, including graphical objects data (such as map data and the like). In some implementations of the present technology, the local memory 114 can store at least part of the data in a database (not depicted). In other implementations of the present technology, the local memory 114 can store at least part of the data in any collections of data (not depicted) other than databases.
[0082] Data stored on the local memory 114 (and more particularly, at least in part, in some implementations, in the database) can comprise graphical objects of any kind.
[0083] The local memory 114 can store computer-readable instructions that control updates, population and modification of the database (not depicted) and/or other collections of data (not depicted). More specifically, computer-readable instructions stored on the local memory 114 allow the client device 112 to receive (e.g., to update) information in respect of graphical objects via the communication network 110, to store information in respect of the graphical objects, including the information in respect of their simplified curves in the database, and/or in other collections of data.
[0084] Computer-readable instructions, stored on the local memory 114, when executed, can cause the processor 116 to receive instruction to simplify a curve (not depicted). The instruction to simplify a curve can be received following instructions of a user 121 received by the client device 112 via the input device 113. For example, responsive to user 121 requesting to zoom out a map, the client device 112 can send to the server 102 a corresponding request to simplify a curve on the map.
[0085] In some implementations of the present technology, instruction to simplify a curve can be executed on the server 102, so that the client device 112 transmits the instructions to the server 102. Further, computer-readable instructions, stored on the local memory 114, when executed, can cause the processor 116 to receive, from the server 102, as a result of processing by the server 102, an instruction to display a final simplified curve on a display screen 118. The instruction to display the final simplified curve on the display screen 118 can be received from the server 102 via communication network 110. In some implementations, the instruction to display the final simplified curve on the display screen 118 of the client device 112 may comprise an instruction to zoom a visual presentation of the final simplified curve.
[0086] In alternative implementations of the present technology, an instruction to simplify a curve can be executed locally, on the client device 112, without contacting the server 102.
[0087] More particularly, computer-readable instructions, stored on the local memory 114, when executed, can cause the processor 116 to receive instruction to simplify a curve. In some implementations, the instruction to simplify a curve can be instructions of a user 121 entered using the user input device 113. For example, responsive to user 121 requesting to zoom out a map, the client device 112 can receive instruction to simplify a curve on the map.
[0088] Computer-readable instructions, stored on the local memory 114, when executed, can further cause the processor 116 to execute a first simplification algorithm (not depicted) in order to simplify a curve 208, 500, thereby generating both first simplified curve 200, 502 and shape parameters of the first simplified curve 200, 502. The first simplification algorithm is predefined, as discussed above.
[0089] Computer-readable instructions, stored on the local memory 114, when executed, can further cause the processor 116 to define a plurality of homogeneous segments 202, 204, 206 of the first simplified curve 200 (or homogeneous segments 504, 506, 508, 510, 512 of the first simplified curve 502) based on the shape parameters, as discussed above. [0090] Computer-readable instructions, stored on the local memory 114, when executed, can further cause the processor 116 to simplify each homogeneous segment 202, 204, 206 using a respective second simplification algorithm (not depicted) to generate final simplified curve 210. As mentioned above, the technology is described here with reference to Figure 2 for illustrative purposes only. Figure 2 is not meant to be limiting, and the description would apply equally well to other implementations, including the one shown in Figure 5.
[0091] The respective second simplification algorithm is selected from a plurality of predefined second simplification algorithms, the second simplification algorithm being selected independently for each homogeneous segment 202, 204, 206 based on the shape parameters of the respective homogeneous segment 202, 204, 206. In other words, the second simplification algorithm for each homogeneous segment 202, 204, 206 may be the same or different, depending on the shape parameters. Further, the first and the second simplification algorithm may be the same or different, depending on the shape parameters.
[0092] Computer-readable instructions, stored on the local memory 114, when executed, can further cause the processor 116 to simplify the final simplified curve 210 further. The processor 116 repeats the steps of defining a plurality of homogeneous segments within the simplified homogeneous segments in the final simplified curve 210, and simplifying the newly-defined homogeneous segments (not depicted) using a third simplification algorithm. The third simplification algorithm is selected independently for each of the newly-defined homogeneous segments within the final simplified curve 210. This third simplification algorithm is selected independently of the second simplification algorithm used previously. A second final simplified curve (not depicted) is thereby generated. Computer-readable instructions, stored on the local memory 114, when executed, can cause the processor 116 to repeat these steps iteratively, further simplifying the second final simplified curve to generate a third final simplified curve (not depicted), etc., until a desired endpoint (such as a desired zoom threshold, a desired resolution, use of allotted memory, use of allotted time, etc.) is reached. A ηώ final simplified curve will be generated with each nth iteration.
[0093] Computer-readable instructions, stored on the local memory 114, when executed, can further cause the processor 116 to render the final simplified curve 210 (or the second final simplified curve, or the n final simplified curve, etc., depending on how many iterations were required to reach the desired endpoint) on the display screen 118. In some implementations, rendering the final simplified curve 210 (or the nth final simplified curve (not depicted)) on the display screen 118 is rendering a scaled visual presentation of the final simplified curve 210. In some implementations, the instruction to display the final simplified curve 210 (or the nth final simplified curve) on the display screen 118 can comprise an instruction to zoom a visual presentation of the curve 208, such that the final simplified curve 210 looks larger or smaller.
[0094] In some implementations, the processor 116 sends instruction to a rendering engine (not depicted) to display the final simplified curve 210 (or the nth final simplified curve) on the display screen 118. The rendering engine may be a browser rendering engine or a general rendering engine, i.e., part of the operating system (not depicted) of the client device 112.
[0095] It is noted that the client device 112 is coupled to the communication network 110 via a communication link 124. In some non-limiting embodiments of the present technology, the communication network 110 can be implemented as the Internet. In other embodiments of the present technology, the communication network 110 can be implemented differently, such as any wide-area communications network, local-area communications network, a private communications network and the like. The client device 112 can establish connections, through the communication network 110, with other devices, such as servers. More particularly, the client device 112 can establish connections and interact with the server 102.
[0096] How the communication link 124 is implemented is not particularly limited and will depend on how the client device 112 is implemented. Merely as an example and not as a limitation, in those embodiments of the present technology where the client device 112 is implemented as a wireless communication device (such as a smartphone), the communication link 124 can be implemented as a wireless communication link (such as but not limited to, a 3G communications network link, a 4G communications network link, a Wireless Fidelity, or WiFi® for short, Bluetooth® and the like). In those examples, where the client device 112 is implemented as a notebook computer, the communication link 124 can be either wireless (such as the Wireless Fidelity, or WiFi® for short, Bluetooth® or the like) or wired (such as an Ethernet based connection). [0097] It should be expressly understood that implementations for the client device 112, the communication link 124 and the communication network 110 are provided for illustration purposes only. As such, those skilled in the art will easily appreciate other specific implementation details for the client device 112, the communication link 124 and the communication network 110. As such, by no means are examples provided herein above meant to limit the scope of the present technology.
[0098] Figure 3 illustrates a computer-implemented method 300 for simplifying a curve, the method executable on a computing device 102, 112 of the system 100 of Figure 1.
[0099] Step 302 - receiving instruction to simplify a curve
[00100] The method 300 starts at step 302, where a computing device, being in this implementation of the present technology the server 102, receives instruction to simplify a curve 208, 500.
[00101] It should be expressly understood that, although the method 300 is described here with reference to an embodiment where the computing device is a server 102, this description is presented by way of example only, and the method 300 can be implemented mutatis mutandis in other embodiments, such as those where the computing device is a client device 112.
[00102] The curve 208, 500 is generally defined by a plurality of vertex coordinates. The curve 208, 500 may be part of a graphical object (not depicted) of any shape, such as (without limitation) a map, a photo, a picture, a video, a video game, a polygonal object, and the like. The curve 208, 500 may be part of a two-dimensional (2D) or a three-dimensional (3D) graphical object. The graphical object may be rendered within a web browser (e.g., within the content area of a window), within an e-mail client, within an e-book reader, or within another application displaying graphical content (such as a Maps application). Alternatively, the graphical object may be rendered by a general rendering engine embedded in the operating system of the computing device (e.g., the server 102, or the client device 112).
[00103] In some non-limiting implementations of the present technology, the curve 208, 500 is part of a boundary line or a border (e.g., a country border, a sea border, a border of a plot of land) drawn on a map (not depicted). [00104] There are many instances where instruction to simplify a curve 208, 500 may be received. For example, simplifying curves is critical for map generalization, lines being the most abundant features in cartography. Instruction to simplify a curve 208, 500 may therefore be received as part of instruction to zoom a portion of a map. In other embodiments, instruction to simplify a curve 208, 500 may be received as part of instruction to display an object (such as a castle, a boat, a dragon, etc.) in a video game or in a story illustration. In other embodiments, instruction to simplify a curve 208, 500 may be received as part of instruction to reduce picture size for download, upload, or for storage, or to reduce the data density of graphical objects for computer animation. In yet other embodiments, instruction to simplify a curve 208, 500 may be received as part of instruction to edit a picture or a video, or for 3D editing. In further embodiments, instruction to simplify a curve 208, 500 may be received as part of instruction to transform source data to reduce data volume, to reduce data for more compact data storage, or to merge databases with different scales. Many other embodiments are possible. It should be expressly understood that the context in which instructions to simplify a curve 208, 500 are received is not meant to be particularly limited.
[00105] Further, graphical objects can originate from multiple sources. For example, graphical objects could be scanned images, images downloaded from a remote server, and the like. In some non-limiting implementations, rendering data representative of the graphical object and/or the curve 208, 500 is stored in the information storage medium 104, e.g., in database 106. In alternative non-limiting implementations, rendering data representative of the graphical object and/or the curve 208, 500 is received (e.g., uploaded) by the server 102 from the client device 112 via the communication network 110. In yet another non-limiting implementation, rendering data representative of the graphical object and/or the curve 208, 500 is retrieved (e.g., downloaded) from an external resource (not depicted) via the communication network 110.
[00106] In this implementation of the present technology, the server 102 acquires the curve 208, 500 from an external resource (not depicted), which can be, for example, a provider of map data. In other implementations of the present technology, the source of the curve 208, 500 can be any suitable source, for example, any device that optically scans images and converts them to a digital image. Further, the server 102 can convert a graphical object from raster format of representation into a vector format of representation, and vice versa. [00107] Then, the method 300 proceeds to the step 304.
[00108] Step 304 - executing a first simplification algorithm, the first simplification algorithm being predefined, the executing simplifying the curve and thereby generating both a first simplified curve and shape parameters of the first simplified curve
[00109] Next, at step 304, the server 102 executes a first simplification algorithm (not depicted).
[00110] The first simplification algorithm is predefined. It should be expressly understood that the first simplification algorithm is not particularly limited. Any suitable algorithm for simplifying curves and generating shape parameters of the simplified curve may be used. In some non-limiting implementations, the first simplification algorithm is selected from Ramer-Douglas-Peucker (RDP) (also referred to as Douglas-Peucker), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm. Other line simplification algorithms are known and may be used as the first simplification algorithm. The first simplification algorithm may be chosen based on several criteria such as the type of graphical object containing the curve to be simplified, the source of the graphical object, the source from which instruction was received, the suitability of a particular algorithm for a particular type of curve/shape parameters, and the like. For example, the RDP algorithm often works well for curves found in maps, and may be chosen for applications involving map generalization. In the examples shown in Figures 2 and 5, the RDP algorithm is selected as the first simplification algorithm, however is should be understood that these examples are shown for illustrative purposes only and are not intended to be limiting.
[00111] In step 304, the first simplification algorithm simplifies the curve 208, 500, thereby generating first simplified curve 200, 502, and at the same time generates shape parameters of the first simplified curve 200, 502. In the implementations shown in Figures 2 and 5, the first simplification algorithm is the RDP algorithm, which has been executed to generate the first simplified curve 200, 502 as well as its shape parameters. As will be understood by persons skilled in the art, generation of the shape parameters of the first simplified curve 200, 502 is part of the simplification method performed by the first simplification algorithm. [00112] In the RDP algorithm, a maximum deviation distance dmax is specified (for example, 5 km). The first and last points of the line are marked as "to be kept". The direct line segment from the first point P i to the last point Pn of the original line is considered, and the points of the original line are inspected to see whether any of them are more than the maximum distance dmax from the line segment. If any are, then the point Pi farthest from the line segment is marked as "to be kept", and the same operation is applied to the partial lines from the beginning Pi to the farthest point Pi and from the farthest point Pi to the end point Pn. This process of checking, marking, and subdividing is applied recursively until the original line has been broken up into pieces such that the line segment from the beginning to the end of each piece is no farther than the maximum deviation distance dmax from any of the points in between.
[00113] Other algorithms use different methods and may generate different shape parameters. The particular shape parameters generated will depend on which simplification algorithm is used as the first simplification algorithm. Examples of shape parameters that may be generated include, without limitation, length, declination angle, sinuosity, edge distance, height drop, effective area for a point (for example, as determined by the Visvalingham-Whyatt algorithm), effective area of a triangle, complexity, monotonicity, length between points, point density, and combinations thereof.
[00114] Then, the method 300 proceeds to step 306.
[00115] Step 306 - defining a plurality of homogeneous segments of the first simplified curve based on the shape parameters
[00116] Next, at step 306, a plurality of homogeneous segments 202, 204, 206 of the first simplified curve 200 are defined (with reference to Figure 5, homogeneous segments 504, 506, 508, 510, 512 of the first simplified curve 502 are defined). The homogeneous segments 202, 204, 206, 504, 506, 508, 510, 512 are defined based on the shape parameters of the first simplified curve 200, 502, the shape parameters being generated during simplification of the curve 208, 500, as discussed above. In the implementations shown in Figures 2 and 5, the homogeneous segments 202, 204, 206, 504, 506, 508, 510, 512 have been defined by analyzing characteristics of the first simplified curve 200/502's vertices (e.g., edge distances, height drops, monotonicity). Based on such characteristics, the first simplified curve 200 is divided into three homogeneous segments 202, 204, 206, each homogeneous segment 202, 204, 206 representing a portion of the first simplified curve 200 in which the vertices' behavior is the same or at least highly similar. In the example shown in Figure 2, first homogeneous segment 202 is the segment where the length of each segment correlates to the height of the line (again, following shape parameters generated by the first simplification algorithm, which is RDP in this example). Second homogeneous segment 204 is another segment of first simplified curve 200 having dense segments of almost the same height. Third homogeneous segment 206 is a non-monotonic segment of the first simplified curve 200. Similarly, in the example shown in Figure 5, five homogeneous segments 504, 506, 508, 510, 512 have been defined based on shape characteristics.
[00117] As shown in Figures 2 and 5, the homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 may comprise a plurality of segments of the first simplified curve 200, 502, each of the plurality of segments having uniform or at least highly similar shape parameters. Two segments are generally considered homogeneous if one or more shape parameters are uniform or at least highly similar. As will be understood by those skilled in the art, the shape parameters used to determine homogeneity will vary depending on the simplification algorithm used to generate shape parameters for a given curve. Accordingly, the plurality of homogeneous segments defined will also vary depending on the simplification algorithm used.
[00118] In some non-limiting implementations, the plurality of homogeneous segments is defined by the first simplification algorithm, after generating the shape parameters of the first simplified curve 200, 502. In alternative non-limiting implementations, the plurality of homogeneous segments is identified by another algorithm, e.g., by a simplification algorithm other than the first simplification algorithm, based on the shape parameters of the first simplified curve 200, 502, the shape parameters having been generated by the first simplification algorithm. The method by which the plurality of homogeneous segments is defined is not meant to be particularly limited. Many such methods are known and may be used in step 306. For example, the plurality of homogeneous segments may be defined using, without limitation, one or more of a point removal method, a measure -based method, a critical point method, a geometrical analysis method, a frequency-based method, and a knowledge-based method (for a review of these methods, see, e.g, Lopez, FJ.A. and Balboa, J.L.G., Pattern Recognition, vol. 41, pp. 1593-1609, 2008, the entire contents of which are hereby incorporated by reference). [00119] It should be noted that, in the (unlikely) case that the first simplified curve 200, 502 is homogeneous along its entire length, then only one homogeneous segment (and not a plurality of homogeneous segments) is defined. In this case, the method nevertheless proceeds with step 308, just as it would if a plurality of homogeneous segments had been defined.
[00120] Then, the method 300 proceeds to the step 308.
[00121] Step 308 - simplifying each homogeneous segment using a respective second simplification algorithm, the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms, the respective second simplification algorithm being selected independently for each homogeneous segment based on the shape parameters of the respective homogeneous segment; the simplifying generating a final simplified curve
[00122] Next, at step 308, the server 102 proceeds with a second step of simplification, in which each simplified homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 in the first simplified curve 200, 502 is simplified again, using a second simplification algorithm (not depicted). The second simplification algorithm is selected independently for each homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 based on the shape parameters of the respective homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512. As will be understood by those skilled in the art, different simplification algorithms are particularly suited for simplifying different types of curves, depending on the shape parameters of a particular curve and the method used by a particular algorithm for line simplification. The second simplification algorithms are predefined according to criteria for selecting a simplification algorithm appropriate for particular shape parameters of a line segment. Such criteria for selecting simplification algorithms appropriate for line segments are known in the art (see, e.g., Park, W. and Yu, K., Pattern Recognition Letters 32 (2011), pp. 1267-73, the entire contents of which are hereby incorporated by reference). In step 308, the second simplification algorithm is selected from a plurality of predefined second simplification algorithms based on the shape parameters of each respective homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 to be simplified. In each case, the second simplification algorithm best-suited for the particular shape parameters of the particular homogeneous segment is selected. [00123] The plurality of predetermined second simplification algorithms is not meant to be particularly limited. In some non-limiting implementations, the plurality of predefined second simplification algorithms comprises RDP, Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann- Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm. Other algorithms are known and may be used.
[00124] The second simplification algorithm may or may not be the same as the first simplification algorithm, depending on the shape parameters of the respective homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512.
[00125] For example, in the example shown in Figure 2, first homogeneous segment 202 is particularly suited for simplification by the RDP algorithm. Accordingly, in this example, first homogeneous segment 202 is simplified in step 308 by the RDP algorithm. In contrast, second homogeneous segment 204 is best suited to the Reumann-Witkam algorithm. Accordingly, in this example, second homogeneous segment 204 is simplified in step 308 by the Reumann-Witkam algorithm. Third homogeneous segment 206 is particularly suited for simplification by the Opheim algorithm, and accordingly, in this example, third homogeneous segment 206 is simplified in step 308 by the Opheim algorithm. It should be understood that many other variations of this method are possible, depending on the shape parameters of the homogeneous segments and characteristics of available simplification algorithms.
[00126] Similarly, in the example shown in Figure 5, homogeneous segments 504 and 512 are particularly suited for simplification by the RDP algorithm. Accordingly, in this example, homogeneous segments 504 and 512 are simplified in step 308 by the RDP algorithm. In contrast, homogeneous segments 506 and 510 are best suited to the Visvalingham-Whyatt algorithm. Accordingly, in this example, homogeneous segments 506 and 510 are simplified in step 308 by the Visvalingham-Whyatt algorithm. The remaining homogeneous segment 508 is particularly suited for simplification by the Opheim algorithm, and accordingly, in this example, homogeneous segment 508 is simplified in step 308 by the Opheim algorithm. Again, many other variations of this method are possible, depending on the shape parameters of the homogeneous segments and characteristics of available simplification algorithms. [00127] In some implementations, where the computing device is a server 102 (as in the implementation depicted here), the method 300 may further comprise a step (not depicted) of sending, to client device 112, an instruction to display the final simplified curve 210, 514 on the display screen 118 of the client device 112. In some implementations, the instruction to display the final simplified curve 210, 514 on the display screen 118 of the client device 112 comprises an instruction to zoom a visual presentation of the curve 208, 500. For example, the instruction to display the final simplified curve 210, 514 on client device 112 may be part of an instruction to zoom a portion of a map. In such a case, the instruction received in step 302 may also be part of an instruction to zoom the portion of the map. In an alternative implementation, the instruction to display the final simplified curve 210, 514 on client device 112 may be part of an instruction to display a photo, the file containing the photo having been reduced in size to reduce storage space occupied by the photo. In such a case, the instruction received in step 302 may also be part of an instruction to reduce the size of the photo file.
[00128] In alternative implementations, where the computing device is a client device 112, the method 300 may further comprise a step (not depicted) of rendering the final simplified curve 210, 514 on the display screen 118 of the client device 112. In some implementations, rendering the final simplified curve 210, 514 on the display screen 118 of the client device 112 comprises zooming a visual presentation of the curve 208, 500. In some implementations, the final simplified curve 210, 514 is rendered on the display screen 118 by a rendering engine (not depicted), e.g., a browser rendering engine, or a general rendering engine that is part of the operating system (not depicted) of the server 102 or the client device 112.
[00129] In some implementations, the method 300 ends after step 308. For example, if a desired endpoint has been reached, then the method 300 ends after step 308. A desired endpoint may be, without limitation, one or more of a desired zoom threshold, a desired resolution, use of allotted memory, and use of allotted time. For example, where instruction to zoom a portion of a map is received and the curve 208, 500 is a boundary line within the portion of the map, then if the desired zoom threshold has been attained after step 308, the method 300 ends. In some implementations, the method 300 ends in this case after rendering the final simplified curve 210, 514 (as part of the zoomed portion of the map) on the display screen 118 of the client device 112. [00130] However, in alternative implementations, the desired endpoint may not have been reached after step 308. In this case, further simplification of the final simplified curve 210, 514 is required, and the method 300 continues with steps 402, 404 of the method 400, in which each simplified homogeneous segment (not depicted) in the final simplified curve 210, 514 is further simplified.
[00131] Figure 4 illustrates a computer-implemented method 400, the method executable on a computing device 102, 112 of the system 100 of Figure 1. The method 400 is an optional extension of the method 300 in which steps 306 and 308 are essentially repeated for each simplified homogeneous segment in the final simplified curve 210, 514.
[00132] The method 400 begins with step 402.
[00133] Step 402 - for each simplified homogeneous segment in the final simplified curve, defining a second plurality of second homogeneous segments of the simplified homogeneous segment based on the shape parameters of the simplified homogeneous segment, the shape parameters of the simplified homogenous segment having been generated by the respective second simplification algorithm
[00134] In step 402, a second plurality of second homogeneous segments is defined for each simplified homogeneous segment in the final simplified curve 210, 514, based on its respective shape parameters. It should be understood that, as discussed above with reference to the first simplification algorithm and step 304, in step 308 the second simplification algorithm has simplified each homogeneous segment 202, 204, 206, 504, 506, 508, 510, 512 and, at the same time, generated shape parameters of the simplified homogeneous segments (not depicted). As will be understood by persons skilled in the art, generation of the shape parameters of the simplified homogeneous segments is part of the simplification method performed by the second simplification algorithm in step 308, during generation of the final simplified curve 210, 514. In some embodiments, defining the second plurality of second homogeneous segments (not depicted) is also part of the simplification method performed by the second simplification algorithm in step 308, during generation of the final simplified curve 210, 514.
[00135] In step 402, as in step 306 discussed above, a second plurality of second homogeneous segments of each simplified homogeneous segment is defined, based on the shape parameters. Corresponding descriptions made above for step 306 are applicable to step 402 and are not repeated here, to avoid redundancy.
[00136] The method 400 then continues with step 404.
[00137] Step 404 - simplifying each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; thereby generating a second final simplified curve
[00138] In step 404, each second homogeneous segment in the final simplified curve 210, 514 is simplified using a respective third simplification algorithm, the third simplification algorithm (not depicted) being selected independently for each second homogenous segment (not depicted) based on its respective shape parameters. Corresponding descriptions of step 308 and the second simplification algorithm made above are applicable to step 404 and the third simplification algorithm and are not repeated here, to avoid redundancy.
[00139] The method 400 may repeat as necessary or as desired until a desired endpoint has been reached. For example, if the desired endpoint has been reached, then the method 400 ends after step 404, with generation of the second final simplified curve (not depicted). For example, where instruction to zoom a portion of a map is received and the curve 208, 500 is a boundary line within the portion of the map, then if the desired zoom threshold has been attained after step 404, the method 400 ends. In some implementations, the method 400 ends in this case after rendering the second final simplified curve (as part of the zoomed portion of the map) (not depicted) on the display screen 118 of the client device 112.
[00140] However, if the desired endpoint has not been reached, then the method 400 may be repeated until the desired endpoint has been reached. In such implementations the method is therefore recursive, repeatedly defining and simplifying homogeneous segments of the ηώ final simplified curve until the desired endpoint is reached. In every iteration the simplification algorithm is independently selected for each respective homogeneous segment based on its shape parameters. It should be understood that in every iteration, the simplification algorithm is also selected independently of the simplification algorithm used in previous iterations. Thus the simplification algorithm used in each successive iteration may or may not be the same simplification algorithm used in previous iterations for a segment, in every case the simplification algorithm being selected based on the shape parameters of the segment, using predefined criteria as discussed above.
[00141] Further, in each case, when the desired endpoint has been reached, the method may further comprise a step of displaying the ηώ final simplified curve on the display screen 118 of the client device 112.
[00142] Some of the above steps and signal sending-receiving are well known in the art and, as such, have been omitted in certain portions of this description for the sake of simplicity. The signals can be sent/received using optical means (such as a fibre-optic connection), electronic means (such as using wired or wireless connection), and mechanical means (such as pressure -based, temperature based or any other suitable physical parameter based means).
[00143] Some technical effects of non-limiting embodiments of the present technology may include provision of a fast, efficient, and/or recursive simplification method for a curve. In some embodiments, the present technology allows selection of the best-suited algorithm for simplifying a line segment following execution of a default simplification algorithm. Segments determined by the first simplification algorithm are analyzed in order to determine which of the predefined plurality of second simplification algorithms is best-suited for a particular segment, followed by simplification of the segment using the selected second simplification algorithm. In some embodiments, the method is recursive, so that in every iteration a different simplification algorithm can be used to further simplify a segment, depending on its shape parameters and which algorithm is best suited for those shape parameters. In some embodiments, extra segmentation or analytical steps that precede simplification are not required. It should be expressly understood that not all technical effects mentioned herein need to be enjoyed in each and every embodiment of the present technology. For example, embodiments of the present technology may be implemented without the user enjoying some of these technical effects, while other embodiments may be implemented with the user enjoying other technical effects or none at all. [00144] Modifications and improvements to the above-described implementations of the present technology may become apparent to those skilled in the art. The foregoing description is intended to be exemplary rather than limiting. The scope of the present technology is therefore intended to be limited solely by the scope of the appended claims.
[00145] From a certain perspective, embodiments of the present technology can be summarized as follows, structured in numbered clauses:
[00146] CLAUSE 1. A method for simplifying a curve (208, 500), the method executable at a computing device (102, 112), the method comprising the steps of:
[00147] a) receiving instruction to simplify the curve (208, 500);
[00148] b) executing a first simplification algorithm, the first simplification algorithm being predefined, the executing simplifying the curve (208, 500) and thereby generating both a first simplified curve (200, 502) and shape parameters of the first simplified curve (200, 502);
[00149] c) defining a plurality of homogeneous segments (202, 204, 206, 504, 506, 508, 510, 512) of the first simplified curve (200, 502) based on the shape parameters; and
[00150] d) simplifying each homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512) using a respective second simplification algorithm, the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms, the respective second simplification algorithm being selected independently for each homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512) based on the shape parameters of the respective homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512); the simplifying generating a final simplified curve (210, 514).
[00151] CLAUSE 2. The method of clause 1, wherein the first simplification algorithm is selected from Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann- Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm.
[00152] CLAUSE 3. The method of clause 1 or 2, wherein the plurality of predefined second simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Nth point, radial distance, and perpendicular distance algorithm.
[00153] CLAUSE 4. The method of any one of clauses 1 to 3, further comprising the steps of:
[00154] e) for each simplified homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512) in the final simplified curve (210, 514), defining a second plurality of second homogeneous segments of the simplified homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512) based on the shape parameters of the simplified homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512), the shape parameters of the simplified homogenous segment (202, 204, 206, 504, 506, 508, 510, 512) having been generated by the respective second simplification algorithm in step d); and
[00155] f) simplifying each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; thereby generating a second final simplified curve.
[00156] CLAUSE 5. The method of clause 4, wherein the plurality of predefined third simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm.
[00157] CLAUSE 6. The method of any one of clauses 1 to 5, wherein the shape parameters comprise one or more of length and declination angle, sinuosity, edge distance, height drop, effective area for a point, effective area of a triangle, complexity, monotonicity, length between points, and point density.
[00158] CLAUSE 7. The method of any one of clauses 1 to 6, wherein the plurality of homogeneous segments (202, 204, 206, 504, 506, 508, 510, 512) are defined using one or more of a point removal method, a measure -based method, a critical point method, a geometrical analysis method, a frequency-based method, and a knowledge -based method. [00159] CLAUSE 8. The method of any one of clauses 1 to 7, wherein the computing device is a server (102), and the method further comprises a step of sending, to a client device (112), an instruction to display the final simplified curve (210, 514) or the second final simplified curve on a display screen (118) of the client device (112).
[00160] CLAUSE 9. The method of clause 8, wherein the instruction to display the final simplified curve (210, 514) or the second final simplified curve on the display screen (118) of the client device (112) comprises an instruction to zoom a visual presentation of the curve (208, 500).
[00161] CLAUSE 10. The method of any one of clauses 1 to 7, wherein the computing device is a client device (112), and the method further comprises a step of rendering the final simplified curve (210, 514) or the second final simplified curve on a display screen (118) of the client device (112).
[00162] CLAUSE 11. The method of clause 10, wherein rendering the final simplified curve (210, 514) or the second final simplified curve on the display screen (118) of the client device (112) comprises zooming a visual presentation of the curve (208, 500).
[00163] CLAUSE 12. The method of any one of clauses 1 to 11 , wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is part of a map, a photo, a picture, a video, or a video game.
[00164] CLAUSE 13. The method of clause 12, wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is part of a 2D graphical object or a 3D graphical object.
[00165] CLAUSE 14. The method of clause 12, wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is rendered by a browser rendering engine or a general rendering engine.
[00166] CLAUSE 15. The method of any one of clauses 4 to 14, wherein steps e) and f) are repeated until one or more of the following endpoints is reached: a desired zoom threshold is reached, a desired resolution is reached, allotted memory is used, or allotted time is used.
[00167] CLAUSE 16. A server (102) comprising: [00168] an information storage medium (104);
[00169] a processor (108) operationally connected to the information storage medium (104), the processor (108) configured to store objects on the information storage medium (104), the processor (108) being further configured to:
[00170] a) receive instruction to simplify a curve (208, 500);
[00171] b) execute a first simplification algorithm, the first simplification algorithm being predefined, execution of the first simplification algorithm simplifying the curve (208, 500) and thereby generating both a first simplified curve (200, 502) and shape parameters of the first simplified curve (200, 502);
[00172] c) define a plurality of homogeneous segments (202, 204, 206, 504, 506, 508, 510, 512) of the first simplified curve (200, 502) based on the shape parameters; and
[00173] d) simplify each homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512) using a respective second simplification algorithm, the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms, the respective second simplification algorithm being selected independently for each homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512) based on the shape parameters of the respective homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512); thereby generating a final simplified curve (210, 514).
[00174] CLAUSE 17. The server (102) of clause 16, wherein the first simplification algorithm is selected from Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm.
[00175] CLAUSE 18. The server (102) of clause 16 or 17, wherein the plurality of predefined second simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Nth point, radial distance, and perpendicular distance algorithm. [00176] CLAUSE 19. The server (102) of any one of clauses 16 to 18, wherein the processor (108) is further configured to:
[00177] e) for each simplified homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512) in the final simplified curve (210, 514), define a second plurality of second homogeneous segments of the simplified homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512) based on the shape parameters of the simplified homogeneous segment (202, 204, 206, 504, 506, 508, 510, 512), the shape parameters of the simplified homogenous segment (202, 204, 206, 504, 506, 508, 510, 512) having been generated by the respective second simplification algorithm in step d); and
[00178] f) simplify each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; thereby generating a second final simplified curve.
[00179] CLAUSE 20. The server (102) of clause 19, wherein the plurality of predefined third simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm.
[00180] CLAUSE 21. The server (102) of any one of clauses 16 to 20, wherein the shape parameters comprise one or more of length and declination angle, sinuosity, edge distance, height drop, effective area for a point, effective area of a triangle, complexity, monotonicity, length between points, and point density.
[00181] CLAUSE 22. The server (102) of any one of clauses 16 to 21, wherein the plurality of homogeneous segments (202, 204, 206, 504, 506, 508, 510, 512) are defined using one or more of a point removal method, a measure -based method, a critical point method, a geometrical analysis method, a frequency-based method, and a knowledge -based method.
[00182] CLAUSE 23. The server (102) of any one of clauses 16 to 22, wherein the computing device is a server (102), and the processor (106) is further configured to send, to a client device (112), an instruction to display the final simplified curve (210, 514) or the second final simplified curve on a display screen (118) of the client device (112).
[00183] CLAUSE 24. The server (102) of clause 23, wherein the instruction to display the final simplified curve (210, 514) or the second final simplified curve on the display screen (118) of the client device (112) comprises an instruction to zoom a visual presentation of the curve (208, 500).
[00184] CLAUSE 25. The server (102) of any one of clauses 16 to 22, wherein the computing device is a client device (112), and the processor (116) is further configured to render the final simplified curve (210, 514) or the second final simplified curve on a display screen (118) of the client device (112).
[00185] CLAUSE 26. The server (102) of clause 25, wherein rendering the final simplified curve (210, 514) or the second final simplified curve on the display screen (118) of the client device (112) comprises zooming a visual presentation of the curve (208, 500).
[00186] CLAUSE 27. The server (102) of any one of clauses 1 to 26, wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is part of a map, a photo, a picture, a video, or a video game.
[00187] CLAUSE 28. The server (102) of clause 27, wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is part of a 2D graphical object or a 3D graphical object.
[00188] CLAUSE 29. The server (102) of clause 27, wherein the curve (208, 500), the final simplified curve (210, 514), and/or the second final simplified curve is rendered by a browser rendering engine or a general rendering engine.
[00189] CLAUSE 30. The server (102) of any one of clauses 19 to 29, wherein the processor (106, 116) is further configured to repeat steps e) and f) until one or more of the following endpoints is reached: a desired zoom threshold is reached, a desired resolution is reached, available memory is used, or allotted time is used.

Claims

1. A method for simplifying a curve, the method executable at a computing device, the method comprising the steps of: a) receiving instruction to simplify the curve; b) executing a first simplification algorithm, the first simplification algorithm being predefined, said executing simplifying the curve and thereby generating both a first simplified curve and shape parameters of the first simplified curve; c) defining a plurality of homogeneous segments of the first simplified curve based on the shape parameters; and d) simplifying each homogeneous segment using a respective second simplification algorithm, the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms, the respective second simplification algorithm being selected independently for each homogeneous segment based on the shape parameters of the respective homogeneous segment; said simplifying generating a final simplified curve.
2. The method of claim 1, wherein the first simplification algorithm is selected from Ramer- Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm.
3. The method of claim 1, wherein the plurality of predefined second simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm.
4. The method of claim 1, further comprising the steps of: e) for each simplified homogeneous segment in the final simplified curve, defining a second plurality of second homogeneous segments of the simplified homogeneous segment based on the shape parameters of the simplified homogeneous segment, the shape parameters of the simplified homogenous segment having been generated by the respective second simplification algorithm in step d); and f) simplifying each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; thereby generating a second final simplified curve.
5. The method of claim 4, wherein the plurality of predefined third simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm.
6. The method of claim 1 , wherein the shape parameters comprise one or more of length and declination angle, sinuosity, edge distance, height drop, effective area for a point, effective area of a triangle, complexity, monotonicity, length between points, and point density.
7. The method of claim 1, wherein the plurality of homogeneous segments are defined using one or more of a point removal method, a measure-based method, a critical point method, a geometrical analysis method, a frequency-based method, and a knowledge -based method.
8. The method of claim 1, wherein the computing device is a server, and the method further comprises a step of sending, to a client device, an instruction to display the final simplified curve on a display screen of the client device.
9. The method of claim 8, wherein the instruction to display the final simplified curve on the display screen of the client device comprises an instruction to zoom a visual presentation of the curve.
10. The method of claim 1, wherein the computing device is a client device, and the method further comprises a step of rendering the final simplified curve on a display screen of the client device.
11. The method of claim 10, wherein rendering the final simplified curve on the display screen of the client device comprises zooming a visual presentation of the curve.
12. The method of claim 1, wherein the curve is part of a map, a photo, a picture, a video, or a video game.
13. The method of claim 12, wherein the curve is part of a 2D graphical object or a 3D graphical object.
14. The method of claim 12, wherein the curve and/or the final simplified curve is rendered by a browser rendering engine or a general rendering engine.
15. The method of claim 4, wherein steps e) and f) are repeated until one or more of the following endpoints is reached: a desired zoom threshold is reached, a desired resolution is reached, allotted memory is used, or allotted time is used.
16. A server comprising: an information storage medium; a processor operationally connected to the information storage medium, the processor configured to store objects on the information storage medium, the processor being further configured to: a) receive instruction to simplify a curve; b) execute a first simplification algorithm, the first simplification algorithm being predefined, execution of the first simplification algorithm simplifying the curve and thereby generating both a first simplified curve and shape parameters of the first simplified curve; c) define a plurality of homogeneous segments of the first simplified curve based on the shape parameters; and d) simplify each homogeneous segment using a respective second simplification algorithm, the respective second simplification algorithm being selected from a plurality of predefined second simplification algorithms, the respective second simplification algorithm being selected independently for each homogeneous segment based on the shape parameters of the respective homogeneous segment; thereby generating a final simplified curve.
17. The server of claim 16, wherein the first simplification algorithm is selected from Ramer- Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm.
18. The server of claim 16, wherein the plurality of predefined second simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm.
19. The server of claim 16, wherein the processor is further configured to: e) for each simplified homogeneous segment in the final simplified curve, define a second plurality of second homogeneous segments of the simplified homogeneous segment based on the shape parameters of the simplified homogeneous segment, the shape parameters of the simplified homogenous segment having been generated by the respective second simplification algorithm in step d); and f) simplify each second homogeneous segment using a respective third simplification algorithm, the respective third simplification algorithm being selected from a plurality of predefined third simplification algorithms, the respective third simplification algorithm being selected independently for each second homogeneous segment based on the shape parameters of the respective second homogeneous segment; thereby generating a second final simplified curve.
20. The server of claim 19, wherein the plurality of predefined third simplification algorithms comprises one or more of Ramer-Douglas-Peucker (RDP), Visvalingham-Whyatt, Zhao-Saalfeld, Lang, Reumann-Witkam, Opheim, Rangayyan, Variant RDP, sleeve-fitting (SF), turning function (TF), Νώ point, radial distance, and perpendicular distance algorithm.
21. The server of claim 16, wherein the shape parameters comprise one or more of length and declination angle, sinuosity, edge distance, height drop, effective area for a point, effective area of a triangle, complexity, monotonicity, length between points, and point density.
22. The server of claim 16, wherein the plurality of homogeneous segments are defined using one or more of a point removal method, a measure-based method, a critical point method, a geometrical analysis method, a frequency-based method, and a knowledge -based method.
23. The server of claim 16, wherein the computing device is a server, and the processor is further configured to send, to a client device, an instruction to display the final simplified curve on a display screen of the client device.
24. The server of claim 23, wherein the instruction to display the final simplified curve on the display screen of the client device comprises an instruction to zoom a visual presentation of the curve.
25. The server of claim 16, wherein the computing device is a client device, and the processor is further configured to render the final simplified curve on a display screen of the client device.
26. The server of claim 25, wherein rendering the final simplified curve on the display screen of the client device comprises zooming a visual presentation of the curve.
27. The server of claim 1, wherein the curve and/or the final simplified curve is part of a map, a photo, a picture, a video, or a video game.
28. The server of claim 27, wherein the curve and/or the final simplified curve is part of a 2D graphical object or a 3D graphical object.
29. The server of claim 27, wherein the curve and/or the final simplified curve is rendered by a browser rendering engine or a general rendering engine.
30. The server of claim 19, wherein the processor is further configured to repeat steps e) and f) until one or more of the following endpoints is reached: a desired zoom threshold is reached, a desired resolution is reached, available memory is used, or allotted time is used.
PCT/IB2016/050566 2015-09-02 2016-02-04 Method and system for simplifying a curve WO2017037547A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
RU2015137418A RU2643431C2 (en) 2015-09-02 2015-09-02 Method and server of curve simplification
RU2015137418 2015-09-02

Publications (1)

Publication Number Publication Date
WO2017037547A1 true WO2017037547A1 (en) 2017-03-09

Family

ID=58186913

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2016/050566 WO2017037547A1 (en) 2015-09-02 2016-02-04 Method and system for simplifying a curve

Country Status (2)

Country Link
RU (1) RU2643431C2 (en)
WO (1) WO2017037547A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180284806A1 (en) * 2017-03-28 2018-10-04 Honda Research Institute Europe Gmbh Method for generating a representation of a working area of an autonomous lawn mower and autonomous lawn mower system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070229510A1 (en) * 2004-09-02 2007-10-04 Alain Rey Displaying of Vector Graphics, in Particular of Geographical Maps

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694535A (en) * 1995-03-24 1997-12-02 Novell, Inc. Direct interactive, constant-time curve apparatus and method
US20030231190A1 (en) * 2002-03-15 2003-12-18 Bjorn Jawerth Methods and systems for downloading and viewing maps
JP2005110071A (en) * 2003-10-01 2005-04-21 Hitachi Ltd Image encoding device and device and method for preparing digest image
US7586490B2 (en) * 2004-10-20 2009-09-08 Siemens Aktiengesellschaft Systems and methods for three-dimensional sketching
US7912879B2 (en) * 2007-12-04 2011-03-22 TeleAtlas North America Inc Method for applying clothoid curve values to roadways in a geographic data information system
RU2469400C1 (en) * 2011-11-17 2012-12-10 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Method to convert bitmapped image into metafile

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070229510A1 (en) * 2004-09-02 2007-10-04 Alain Rey Displaying of Vector Graphics, in Particular of Geographical Maps

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PARK ET AL.: "Hybrid Line Simplification for Cartographic Generalization.", PATTERN RECOGNITION LETTERS, vol. 32, no. issue 9, 2011, pages 1267 - 1273, XP028349670, ISSN: 0167-8655 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180284806A1 (en) * 2017-03-28 2018-10-04 Honda Research Institute Europe Gmbh Method for generating a representation of a working area of an autonomous lawn mower and autonomous lawn mower system
US10824163B2 (en) * 2017-03-28 2020-11-03 Honda Research Institute Europe Gmbh Method for generating a representation of a working area of an autonomous lawn mower and autonomous lawn mower system

Also Published As

Publication number Publication date
RU2643431C2 (en) 2018-02-01
RU2015137418A (en) 2017-03-09

Similar Documents

Publication Publication Date Title
US11373272B2 (en) Digital gradient signal processing system and method for signals comprising at least three dimensions
US10846821B2 (en) Digital gradient signal processing system and method for video signals
US10775174B2 (en) Map feature extraction system for computer map visualizations
US9484006B2 (en) Manipulation of textual content data for layered presentation
JP6043732B2 (en) System method and system for browsing heterogeneous map data
US11217035B2 (en) Generating height maps from normal maps based on boundary conditions of virtual boundaries
Boutsi et al. An integrated approach to 3D web visualization of cultural heritage heterogeneous datasets
US9646362B2 (en) Algorithm for improved zooming in data visualization components
US9501812B2 (en) Map performance by dynamically reducing map detail
Arroyo Ohori azul: A fast and efficient 3D city model viewer for macOS
US20110161410A1 (en) Massive-scale interactive visualization of data spaces
Boutsi et al. Interactive online visualization of complex 3D geometries
US20140325477A1 (en) Method and system for visualization of large codebases
Campos et al. 3d simplification methods and large scale terrain tiling
Zhang et al. An interactive 4D spatio-temporal visualization system for hydrometeorological data in natural disasters
US9891791B1 (en) Generating an interactive graph from a building information model
US10198837B2 (en) Network graphing selector
WO2017037547A1 (en) Method and system for simplifying a curve
Xu et al. Interactive web application for traffic simulation data management and visualization
CN114020390A (en) BIM model display method and device, computer equipment and storage medium
CN102110166B (en) Browser-based body 3D (3-demensional) visualizing and editing system and method
Barik et al. Investigations into the Efficacy of Open Source GIS Software
US20190156543A1 (en) System and method for embedded real-time automatic updating of an interactive saas based slide presentation application
US11670019B2 (en) GPU accelerated geospatial queries and geometric operations
Joshi Impact of big data on computer graphics

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16840903

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16840903

Country of ref document: EP

Kind code of ref document: A1