WO2018124209A1 - デジタルインクの符号化方法、復号化方法 - Google Patents
デジタルインクの符号化方法、復号化方法 Download PDFInfo
- Publication number
- WO2018124209A1 WO2018124209A1 PCT/JP2017/047025 JP2017047025W WO2018124209A1 WO 2018124209 A1 WO2018124209 A1 WO 2018124209A1 JP 2017047025 W JP2017047025 W JP 2017047025W WO 2018124209 A1 WO2018124209 A1 WO 2018124209A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- digital ink
- width
- binary
- encoding
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/142—Image acquisition using hand-held instruments; Constructional details of the instruments
- G06V30/1423—Image acquisition using hand-held instruments; Constructional details of the instruments the instrument generating sequences of position coordinates corresponding to handwriting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0354—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
- G06F3/03545—Pens or stylus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/0412—Digitisers structurally integrated in a display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/0414—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means using force sensing means to determine a position
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
- G06F3/04883—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/32—Digital ink
- G06V30/333—Preprocessing; Feature extraction
- G06V30/347—Sampling; Contour coding; Stroke extraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2203/00—Indexing scheme relating to G06F3/00 - G06F3/048
- G06F2203/041—Indexing scheme relating to G06F3/041 - G06F3/045
- G06F2203/04101—2.5D-digitiser, i.e. digitiser detecting the X/Y position of the input means, finger or stylus, also when it does not touch, but is proximate to the digitiser's interaction surface and also measures the distance of the input means within a short range in the Z direction, possibly with a separate measurement setup
Definitions
- the present invention relates to a digital ink encoding method, a digital ink decoding method, a digital ink data structure, and a method for generating a file including digital ink.
- Digital ink is usually configured to include vector data for reproducing a handwritten locus and data describing a drawing style of the locus, as disclosed in Patent Document 1.
- Specific formats of the digital ink include SVG (Scalable Vector Graphics) disclosed in Non-Patent Document 1, Windows Ink disclosed in Non-Patent Document 2, and Ink ML (Ink Markup Language) disclosed in Non-Patent Document 3.
- SVG Scalable Vector Graphics
- Windows Ink disclosed in Non-Patent Document 2
- Ink ML Ink Markup Language
- Office Open XML disclosed in Non-Patent Document 4 is known. All of these are standardized data formats that can be used under various environments (such as a drawing application and a document creation application running on various OSs).
- the digital ink can be decoded by the same decoding method regardless of whether the width is fixed or variable, and when at least a part of the stroke is fixed, the entire stroke is variable. Compared to the digital ink encoding, the number of bits of the digital ink can be reduced.
- the position data can be encoded or decoded in units of strokes based on the accuracy data of the position data that can be different for each coordinate detection device and stylus. This makes it possible to place a plurality of position data with different accuracy in one digital ink.
- Metadata can be added to a binary stream generated by encoding a series of position data constituting a stroke by a general-purpose description method such as XML.
- the digital ink encoding method includes N positions each including a set of x-coordinate data and y-coordinate data acquired with the operation of the pointing device within a predetermined period determined by the state of the pointing device.
- a coordinate encoding step for obtaining a first binary indicating a set of a series of x-coordinate data and y-coordinate data by encoding data; and M for determining a width at each position of the N pieces of position data
- the digital ink encoding method further includes an accuracy data encoding step of generating a third binary by encoding accuracy data indicating the accuracy of the N pieces of position data, and the coordinate encoding step includes:
- the N position data are encoded using the precision data, and the serializing step includes the first to second so that the third binary is included before the second binary in decoding order.
- the binary stream including three binaries in different areas may be generated.
- a digital ink decoding method is a digital ink decoding method for reproducing a trajectory of a pointing device from a binary stream including encoded digital ink, and is within a predetermined period determined by the state of the pointing device.
- a position data decoding step for decoding N pieces of position data acquired in accordance with the operation of the pointing device from the first region of the binary stream, and M for determining a width at the position of the N pieces of coordinate data.
- Width data decoding step for decoding width data of M pieces (M is an integer of 1 to N) from a second area different from the first area in the binary stream; If the number of the N position data is less than the number of the M width data, It includes a width complementary step that complements the width of the N-M or the respective position.
- the data structure of the digital ink according to the present invention includes a first binary obtained by encoding N pieces of position data acquired along with the operation of the pointing device within a predetermined period determined by the state of the pointing device; A second binary obtained by encoding M (M is an integer of 1 to N) width data for determining a width at each position of the N position data in a different area, and
- M is an integer of 1 to N
- M width data is converted into the M width data. It is used for the process of associating with N coordinate data.
- a method for generating a file including encoded digital ink is a method for generating a file including encoded digital ink, wherein the operation of the pointing device is performed within a predetermined period determined by the state of the pointing device.
- a set of a series of x coordinate data and y coordinate data (and z coordinate data) forms one binary (first binary).
- the width is variable (1 ⁇ M ⁇ N)
- the digital ink can be decoded by the same decoding method, and at least a part of the stroke has a fixed width (1 ⁇ M ⁇ N).
- position data can be encoded or decoded in units of strokes based on the accuracy data of the position data that can be different for each coordinate detection device. . Therefore, it is possible to arrange a plurality of position data with different accuracy in one digital ink.
- metadata is added to a binary stream generated by encoding a series of position data constituting a stroke by a general-purpose description method such as XML. It becomes possible to grant.
- FIG. 6 is a diagram showing a geometrical relationship between path data PA composed of N pieces of position data P 1 to P N and N ⁇ 1 segments S 1 to S N ⁇ 1 included in the path data PA. is there. It is a figure which shows the example of the width data W contained in the path data PA shown in FIG. It is a figure which shows the other example of the width data W contained in the path data PA shown in FIG. It is a figure explaining the start parameter 104 and the end parameter 105 which were shown in FIG. FIG.
- FIG. 7 is a diagram showing a relationship between each of segments S i and S i + 1 shown in FIG. 6 and a Cat-Mar-Rom curve drawn by a GPU 40. It is a flowchart which shows the encoding process of the digital ink 100 by embodiment of this invention. It is a flowchart of the encoding process of the position data P and the width data W by embodiment of this invention. It is a figure which shows the example of the schema of the path message BinPath obtained by encoding one path data PA. It is a flowchart which shows the decoding process of the digital ink 100 by embodiment of this invention. It is a flowchart which shows the decoding process of the digital ink 100 by embodiment of this invention. It is a flowchart which shows the decoding process of the digital ink 100 by embodiment of this invention.
- FIG. 1 is a diagram showing a system configuration of a coordinate detection apparatus 1 according to an embodiment of the present invention. The figure also shows a stylus 2 (pointing device) that functions as an input device to the coordinate detection device 1.
- stylus 2 pointing device
- the coordinate detection apparatus 1 includes a sensor controller 10 connected to the electrode group 11, an input / output unit 23 connected to the sensor controller 10, a CPU 21, a RAM 22, and a GPU 30. It is. Although not shown, the coordinate detection device 1 is also provided with a display unit such as a liquid crystal display. In a specific example, the coordinate detection device 1 is a tablet terminal or a smartphone.
- the electrode group 11 includes a plurality of electrodes 11x and 11y arranged so as to form a plane parallel to a panel surface (plane) provided in the coordinate detection device 1.
- Each of the plurality of electrodes 11x and 11y is a transparent conductor disposed on the display surface (or the back side) of the display unit. As shown in FIG. 1, each of the plurality of electrodes 11x extends in the y direction (direction in the panel surface) and is arranged at equal intervals in the x direction (direction perpendicular to the y direction in the panel surface).
- the plurality of electrodes 11y extend in the x direction and are arranged at equal intervals in the y direction.
- the sensor controller 10 uses the electrode group 11 to determine whether the stylus 2 as a pointing device is in contact with the panel surface (“DOWN” shown in FIG. 1) or separated (“UP” shown in FIG. 1). It has a function of detecting, a function of deriving position data P indicating the position of the stylus 2 in the panel surface, and a function of receiving the pen pressure value WP from the stylus 2.
- the position data P may be represented by two-dimensional coordinates (that is, a set (x, y) of x-coordinate data and y-coordinate data) indicating a position in the panel surface, or a position in the panel surface.
- the writing pressure value WP is a value indicating the force that the pen tip of the stylus 2 receives from the panel surface, and is detected by a sensor provided in the stylus 2.
- the sensor controller 10 acquires a series of position data in accordance with the operation of the stylus 2 within a predetermined period determined by the state of the stylus 2. Specifically, for example, if the position data P is represented by two-dimensional coordinates, the sensor controller 10 may, for example, perform the stylus from when the stylus 2 is lowered to the panel surface until it is raised from the panel surface. The position data P of 2 may be derived periodically. Further, if the position data P is represented by three-dimensional coordinates, the sensor controller 10 may, for example, once the stylus 2 is lowered to the panel surface and then the stylus 2 button (side or end of the stylus 2) by the user.
- the CPU 21, the RAM 22, and the input / output unit 23 constitute a digital ink processing unit 20 that executes various processes for the digital ink 100. More specifically, the CPU 21 generates the digital ink 100 in the RAM 22 based on the stylus data supplied from the sensor controller 10 to the input / output unit 23, and the generated digital ink 100 is encoded as shown in FIG. A process of encoding by the method is executed. Further, the CPU 21 executes a process of archiving the binary stream BinInk including the encoded digital ink 100 in a predetermined format container file CF by a method shown in FIG.
- the output destination of the container file CF may be another computer or the coordinate detection device 1 itself.
- the binary stream BinInk that is not archived in the container file CF may be directly output to the outside.
- each fragment obtained by fragmenting the binary stream BinInk may be included in the payload of different packets for communication.
- the CPU 21 also receives an input of the container file CF in which the binary stream BinInk including the encoded digital ink 100 is archived (or the binary stream BinInk in a state where the binary stream BinInk is not archived in the container file CF) and is included therein.
- a process of restoring the digital ink 100 in the RAM 22 is executed by decoding the digital ink 100 by a decoding method shown in FIGS.
- the GPU 40 has a function of executing rendering of the digital ink 100 generated or restored in the RAM 22 and supplying the result to the panel surface (display unit). Thereby, drawing of the digital ink 100 is executed.
- the digital ink 100 will be described.
- the digital ink 100 is data that simulates handwriting expressed by ink or pencil powder remaining on a paper medium or the like using a writing instrument such as an ink pen or a pencil.
- the digital ink 100 includes at least one pass data PA.
- the path data PA is data generated by moving a pointing device such as the stylus 2. For example, after the stylus 2 touches the panel surface (DOWN in FIG. 1), after sliding on the panel surface, A geometric shape (feature on two-dimensional graphics) of a trajectory (referred to as a trajectory, path, stroke, etc.) that has moved on the panel surface until it leaves the panel surface (UP in FIG. 1) is represented.
- path data the data representing the handwritten trajectory
- path data the data representing the handwritten trajectory
- terms such as “Stroke” used in Non-Patent Document 2 and “trace” used in Non-Patent Document 3 known as one of the standards of digital ink are used instead of path data. You may use for.
- the path data PA may be associated with metadata such as width data indicating the width of the locus, color data indicating the color / transparency of the locus, and other data (for example, image data).
- the rendering of the pass data PA is performed by the associated rendering method. This rendering method may be to render all of the shapes on a vector basis, or to render using pixel-based processing by partially using pixel data such as a bitmap. Alternatively, rendering may be performed using a method in which these two methods are mixed.
- FIG. 2 is an ER (Entity-Relationship) diagram showing a data model of the digital ink 100.
- rectangles indicate entities, and ellipses indicate entity attributes.
- the digital ink 100 includes two entities, a path class 101 and a segment class 110.
- the path data PA described above is an instance of the path class 101.
- an instance of the segment class 110 is referred to as a segment S.
- Fig. 2 indicate the relationship between entities. Symbols on both sides of the diamond indicate cardinality.
- Segment S is included (one-to-zero or more relationship).
- the pass class 101 is a core entity of the digital ink 100, and describes a trajectory of movement of the stylus 2 on the panel surface from the time when the stylus 2 is lowered to the panel surface (“path stroke” in SVG). Used to do.
- the path data PA which is an instance of the path class 101, includes a plurality of position data P, and is newly generated every time one locus is generated.
- the attributes of the path class 101 include two style attributes such as a stroke color 102 and a stroke width 103, two geometric attributes such as a start parameter 104 and an end parameter 105, and accuracy data 106.
- the segment class 110 is an entity indicating a segment obtained by dividing a trajectory represented by a plurality of position data P constituting the path data PA, and is used in association with a predetermined interpolation curve such as a Catmal-Rom curve. .
- a predetermined interpolation curve such as a Catmal-Rom curve.
- the segment S that is an instance of the segment class 110 includes four positions 111 as attributes.
- Each position 111 represents a control point of the interpolation curve.
- each position 111 corresponds to one of a plurality of position data P constituting the path data PA. This point will be described in detail later with reference to FIGS.
- FIG. 3 shows a geometric relationship between path data PA composed of N pieces of position data P 1 to P N and N ⁇ 1 segments S 1 to S N ⁇ 1 included in the path data PA.
- the segment S k (k is an integer from 1 to N ⁇ 1) is data representing a curve formed between the position data P k and the position data P k + 1 .
- the stroke color 102 is an attribute indicating the color and transparency used when rendering the pass data PA.
- the color and transparency indicated by the stroke color 102 may be one for one pass data PA (one RGB value and one transparency A. fixed color), or M for one pass data PA (M pieces of transparency). RGB values and M transparency A. Variable color).
- One stroke value 102 indicating one RGB value and M transparency A may be associated with one pass data PA.
- M is an integer of 1 or more and N or less.
- the stroke color 102 is not particularly described, but the digital ink processing unit 20 is configured to perform encoding and decoding of the stroke color 102 by a process similar to the process for the stroke width 103 described later. .
- the stroke width 103 is an attribute indicating the width of the locus at each position of the plurality of position data constituting the path data PA.
- the digital ink processing unit 20 determines a specific value (width data W) of the stroke width 103 based on the writing pressure value WP (see FIG. 1) supplied from the sensor controller 10. Similar to the stroke color 102, the width indicated by the stroke width 103 may be one (fixed width) for one path data PA or may be M (variable width) for one path data PA. Note that the specific value of M may be the same or different between the stroke color 102 and the stroke width 103.
- FIG. 4 is a diagram showing an example of the width data W included in the path data PA shown in FIG.
- N pieces of position data P 1 to P N constituting the path data PA are each represented by two-dimensional coordinates.
- FIG. 4B shows the case of M ⁇ N.
- the path data PA in this case includes N pieces of width data W 1 to W N indicating the width of the locus at the respective positions of the N pieces of position data P 1 to P N. included.
- the width of the locus at each position of the N pieces of position data P 1 to P N is determined according to the N pieces of width data W 1 to W N , and the determined width
- the locus is drawn by smoothly enclosing a circle having a diameter of.
- Patent Document 2 listed above describes details of this drawing.
- an ellipse may be used instead of a circle.
- the width data W in this case is data indicating the major axis or minor axis of the ellipse, and the GPU 40 determines the width of the ellipse at each position when determining the width of the trajectory at each position of the N pieces of position data P 1 to P N. It is necessary to determine the direction. This is because the drawing result varies depending on the orientation of the ellipse at each position. On the other hand, when a circle is used, the step of determining this orientation can be omitted because the circle is isotropic.
- the path data PA in this case includes M pieces of width data W 1 to W M indicating the width of the locus at the respective positions of the M pieces of position data P 1 to P M. included.
- M ⁇ N M ⁇ N.
- the width of the trajectory at each position of the M pieces of position data P 1 to P M is determined according to the M pieces of width data W 1 to W M , and then M The locus at each of the remaining NM pieces of position data P M + 1 to P N according to any one of the pieces of width data W 1 to W M (width data W M in the example of FIG. 4B). The width of is determined. Then, a locus is drawn by smoothly enveloping a circle having the diameter determined in this way as a diameter.
- FIG. 5 is a diagram showing another example of the width data W included in the path data PA shown in FIG.
- the width data W is data indicating the diameter (for example, the diameter or the radius) of the sphere SH. Is preferable.
- the diameter of the sphere SH centered on the position of each of the N pieces of position data P 1 to P N is determined from the N pieces of width data W 1 to W N , and further, the progress of the position data P
- a great circle (shaded in FIG. 5) of a sphere SH located in a plane perpendicular to the direction for example, the tangent extending direction at each position of the interpolation curve obtained by interpolating the position data P 1 to P N ) The figure shown) is determined. Then, a trajectory is drawn so that each great circle passes smoothly.
- the width data W when the position data P is represented by three-dimensional coordinates may be data corresponding to the contour or area of a predetermined shape that passes the trajectory.
- the width data W indicating the diameter of the sphere SH described above is an example of such width data W.
- the predetermined shape an ellipse or a square may be used instead of the great circle of the sphere SH.
- the GPU 40 obtains the coordinate position of the contour of a predetermined shape arranged in the plane perpendicular to the traveling direction when drawing the trajectory. It is necessary to determine the direction.
- the coordinate position of the contour is determined by one parameter, so the step for determining the orientation is omitted. Can do.
- the start parameter 104 is an attribute indicating the drawing start position of the start segment S start corresponding to the head among one or more segments S constituting one path data PA.
- the end parameter 105 is an attribute indicating the drawing end position of the end segment S end corresponding to the end among one or more segments S constituting one path data PA.
- FIG. 6 is a diagram for explaining the start parameter 104 and the end parameter 105.
- the path data PA and each segment S shown in the figure are the same as those shown in FIGS. In the figure, the above-described Catmal-Rom curve will be described in detail.
- t value as shown in the enlarged view of a segment S i which is also shown in FIG. 6 is a dividing point of a segment that takes zero or more to 1 or less. According to the start parameter 104, any position between the position indicated by the position and location data P 2 indicated by the position data P 1, it can be specified as a position for starting the display process.
- FIG. 6 shows a position SP at which the display of the start segment S start is started when the value of the start parameter 104 is 0.5.
- the initial value 1 indicates that the rendering of the pass data PA is executed up to the end of the end segment Send .
- the display of ending segment S end in the case the value of the end parameter 105 is 0.7 indicates the position EP to end.
- the Catmal-Rom curve will be described.
- the segment S i based on the Cat-Mar-Rom curve has two positions data P i and P i + 1 located at both ends thereof and two position data located outside the position S 111 as an attribute (see FIG. 2).
- P i ⁇ 1 and P i + 2 are included.
- the GPU 40 shown in FIG. 1 is configured to determine the specific shape of the segment S i by using the coordinates of these four position data P i ⁇ 1 to P i + 2 as control points of the Cat-Mar-Rom curve.
- the shape of the curve constituting the start segment S start is four position data ⁇ P 0 , P 1 , P including the position data P 0 set at the same position as the position data P 1 corresponding to the start point of the path data PA. 2 , P 3 ⁇ .
- the shape of the curve constituting the end segment S end is four position data ⁇ P N ⁇ 2 , P including position data P N + 1 set at the same position as the position data P N corresponding to the end point of the path data PA. N ⁇ 1 , P N , P N + 1 ⁇ .
- the accuracy data 106 is an attribute indicating the accuracy of encoding used when encoding the pass data PA.
- One accuracy data 106 is assigned to one pass data PA.
- the accuracy data 106 is assigned to each path data PA as described above, depending on the type of the stylus 2 used when generating the path data PA, the type of the coordinate detection device 1, and the like. This is because the acquisition accuracy may be different.
- FIG. 8 is a flowchart showing the encoding process of the digital ink 100.
- the digital ink processing unit 20 is configured to repeat the processing of steps S2 to S12 by the number of pass data PA included in the digital ink 100 (assuming Z) (step S1). ).
- each path data PA is sequentially encoded.
- each encoded path data PA constitutes a path message BinPath, and each path message BinPath is sequentially added in a distinguishable state in one binary stream BinInk.
- the j-th path data PA is represented as path data PA [j].
- the digital ink processing unit 20 first acquires the start parameter 104, the end parameter 105, and the accuracy data 106 shown in FIG. 2 (step S2).
- the digital ink processing unit 20 usually acquires initial values 0 and 1 as values of the start parameter 104 and the end parameter 105, respectively.
- the start parameter 104 or the end parameter 105 may be a value different from the initial value.
- the digital ink processing unit 20 acquires a predetermined value corresponding to the combination of the stylus 2 and the coordinate detection device 1 used for generating the bus data PA [j] as the value of the accuracy data 106. To do.
- the digital ink processing unit 20 performs an encoding process on the N pieces of position data P 1 to P N included in the pass data PA [j], thereby performing N pieces of encoded position data EP 1 to EP N. Is acquired (step S3).
- FIG. 9 is a flowchart of the encoding process of the position data P. As will be described later, this encoding process is also used in encoding the width data W. As shown in the figure, the coding process is repeatedly performed for each of one or more input data D i (i ⁇ 1) (step S20). When this encoding process is called in step S3, one or more input data D i becomes N pieces of position data P 1 to P N.
- the digital ink processing unit 20 first converts the floating-point input data D i into integer data INTD i using the accuracy data 106 acquired in step S2 of FIG. Processing is performed (step S21). By performing this process, it is possible to reduce the number of bits of the input data D i, it also reduces the number of bits of the binary data generated as a result of the variable length coding performed in step S8, S9 of FIG. 8 to be described later Is possible.
- the digital ink processing unit 20 derives encoded data ED i obtained by encoding the input data D i . Specifically, it is determined whether i is equal to 1 (step S22). If it is determined that i is equal, integer type data INTD i is output as encoded data ED i (step S23). On the other hand, if it is not equal is formed by subtracting the integer type data INTD i-1 of the previous one from the integer type data INTD i values INTD i -INTD i-1 (difference value) encoded data ED i (Step S24). In step S3, thus encoded data output ED i is acquired as encoded position data EP i.
- the digital ink processing unit 20 executes the encoding process shown in FIG. 9 by using the M width data W 1 to W M included in the pass data PA [j] as one or more input data D i . acquires M coded width data EW 1 ⁇ EW M (step S4).
- Detailed contents of the encoding process are as described with reference to FIG.
- the path message BinPath [j] for adding to the binary stream BinInk is encoded by encoding each data constituting the path data PA [j] according to a predetermined schema. It is a process to generate.
- FIG. 10 is a diagram illustrating an example of a schema (data structure of the digital ink 100) of the pass message BinPath obtained by encoding one pass data PA.
- This schema is used not only for the purpose of generating the path message BinPath by the encoding process shown in FIG. 8, but also for decoding each data constituting the path data PA in the decoding process shown in FIGS. .
- an interface description language (Interface Definition Language) is used to describe the schema.
- the field (startParameter) of the start parameter 104 is defined on the second line
- the field (endParameter) of the end parameter 105 is defined on the third line.
- the precision data 106 field (decimal Precision, third binary) is defined in the fourth line
- the position data P field (Positions, first binary) is defined in the fifth line
- the width data in the sixth line is defined.
- a W field (strokeWidths, second binary) is defined
- a color data field (strokeColor) is defined on the seventh line. Note that the color data is a specific value of the stroke color 102.
- Each field is stored in a different area in the path message BinPath.
- the field of the width data W is separated as a whole from the field of position data P (however, the z coordinate data is only three-dimensional) indicating a set of a series of x coordinate data, y coordinate data, and z coordinate data. ing.
- the character of“ optional ”added to the name of each field indicates that the field can be omitted.
- the characters “repeated” indicate that the field can have a plurality of values.
- float indicates a floating point type
- uint32 indicates a 32-bit unsigned integer type
- sint32 indicates a 32-bit signed integer type.
- a numerical value described immediately after the equal sign of each field indicates a tag value for identifying the field, and a value indicated by “default” indicates an initial value of the field.
- the compressed data means data that has undergone the encoding process shown in FIG.
- step S5 the digital ink processing unit 20 sets 1 to the tag value. Then, the tag value is determined (step S6). If the tag value is any one of 1, 2, and 3, the digital ink processing unit 20 performs a process of fixed-length encoding the tag value and the corresponding data (step S7).
- the start parameter 104, end parameter 105, and accuracy data 106 acquired in step S2 are to be encoded in step S7.
- the digital ink processing unit 20 When the tag value is 1, the digital ink processing unit 20 generates floating point type data by encoding the start parameter 104 with a fixed length and adds it to the path message BinPath [j] (step S10).
- the tag value if the tag value is 2, the digital ink processing unit 20 generates floating-point type data by using the end parameter 105 and adds it to the path message BinPath [j] (step S10).
- the digital ink processing unit 20 when the tag value is 3, the digital ink processing unit 20 generates 32-bit unsigned integer type data (third binary) by performing fixed length encoding on the accuracy data 106 (accuracy data encoding). Step) is added to the path message BinPath [j] (Step S10).
- the tag value of the accuracy data 106 values smaller than the position data P, the width data W, and the color data are given in the accuracy data in the decoding process shown in FIGS. This is because 106 is decoded before these data. By decoding the accuracy data 106 first, it becomes possible to correctly decode the position data P, the width data W, and the color data.
- step S11 determines whether or not the current tag value is 5 (step S11). 1 is incremented (step S12), and the process returns to step S6.
- step S11 determines whether or not the tag value is 6. Processing when it is determined that the tag value is 5 will be described later.
- step S6 If it is determined in step S6 that the tag value is 4, the digital ink processing unit 20 changes the tag value 4 and each of the N pieces of encoded position data EP 1 to EP N acquired in step S3.
- a first binary indicating a set of a series of x coordinate data, y coordinate data, and z coordinate data (however, the z coordinate data is only three-dimensional) is generated (step S8, coordinates).
- Encoding step and the generated first binary is added to the path message BinPath [j] (step S10).
- the specific method of variable length coding is not particularly limited as long as the number of bits of a value obtained as a result of coding decreases as the absolute value of the value to be coded decreases. For example, an exponent Golomb code, a sint32 used in a Google protocol buffer, or the like can be used.
- the value of the position data P acquired by the movement of the stylus 2 tends to be close to two consecutive values. This is because there is only one physical stylus 2 and it is moved to trace the panel surface. Therefore, as described with reference to FIG. 9, a difference value between two consecutive position data P is set as an encoding target value, and the occurrence probability is relatively high by using a variable length code for encoding this value.
- the value can be a code with a short number of bits, thereby reducing the number of bits of the digital ink 100.
- step S6 If it is determined in step S6 that the tag value is 5, the digital ink processing unit 20 changes the tag value 5 and each of the M encoded width data EW 1 to EW M acquired in step S4.
- step S9 width encoding step
- step S10 width encoding step
- step S10 width encoding step
- step S10 the smaller the absolute value of the value to be encoded, the smaller the number of bits of the value obtained as a result of encoding.
- an exponent Golomb code, a sint32 used in a Google protocol buffer, or the like can be used.
- the width data W also has a tendency that two consecutive values are close to each other. This is because the width data W is determined from the writing pressure value WP as described above, and the writing pressure value WP is a value obtained by sampling the force that physically presses the stylus 2. Therefore, in this case as well, a difference value between two consecutive width data W is set as an encoding target value, and a variable length code is used for encoding this value, so that a value having a relatively high occurrence probability is reduced to a short bit number. It can be a sign, which makes it possible to reduce the number of bits of the digital ink 100.
- step S10 When step S10 after step S9 is completed, all data relating to the path data PA being processed is serialized in the path message BinPath [j]. Note that when encoding color data is considered, all the data related to the pass data PA being processed is serialized in the pass message BinPath [j] after the processing for the color data is completed. Become.
- the path message BinPath [j] thus generated becomes binary data including the first to third bins in different regions so that the third binaries are included before the second binaries in the decoding order.
- the digital ink processing unit 20 determines in step S11 that the tag value is 5 (6 when color data encoding is considered)
- the digital ink processing unit 20 determines that the pass message BinPath [j] is completed, and passes the pass A process of sequentially adding the bit length of the message BinPath [j] and the path message BinPath [j] to the binary stream BinInk is performed (step S13, serialization step).
- the digital ink processing unit 20 executes the above processing for each of the Z pieces of pass data PA in the digital ink 100, whereby a binary stream BinInk obtained by serializing the pass message BinPath of each pass data PA is completed.
- Table 1 shows the configuration of the binary stream BinInk generated as a result of the above processing.
- the binary stream BinInk is configured by repeatedly including combinations of the bit length of the path message BinPath and the substance of the path message BinPath by the number of path data PA.
- the path message BinPath includes a ⁇ tag value, binary ⁇ pair shown in the schema of FIG.
- FIGS. 11 and 12 are flowcharts showing the decoding process of the digital ink 100.
- the digital ink processing unit 20 first converts the binary stream BinInk including the digital ink 100 from the container file CF including the binary stream BinInk or the communication packet obtained by fragmenting the binary stream BinInk.
- the extraction process is performed (step S30).
- the digital ink processing unit 20 substitutes 0 for the variable j (step S31), and attempts to extract the bit length of the pass message BinPath [j] and the pass message BinPath [j] from the binary stream BinInk extracted in step S30. (Step S32). As a result, if it can be extracted, the process proceeds to step S34 in FIG. 12, and if it cannot be extracted, the process ends.
- each data (start parameter 104, end parameter 105, accuracy data 106, position data P, width data W, data stored in the path message BinPath [j] in accordance with the schema shown in FIG. Color data).
- the digital ink processing unit 20 first attempts to decode a tag included in a portion of the pass message BinPath that has not been decoded yet (step S34). Then, it is determined whether or not the decoding is successful (step S35). If it is determined that the decoding is not possible, the value of the variable j is incremented by 1 (step S36), and the process returns to step S32 in FIG. As a result, processing for the next path message BinPath [j] is started.
- step S37 the decrypted tag value is determined (step S37).
- the digital ink processing unit 20 selects the corresponding fixed length from the fixed-length binary string stored in the rear area of each tag.
- a process of decoding each long data is performed (step S38). The data thus decoded is the start parameter 104 when the tag value is 1, the end parameter 105 when the tag value is 2, and the accuracy data 106 when the tag value is 3.
- the digital ink processing unit 20 returns the process to the step S34 and decodes the next tag value.
- step S37 when it is determined in step S37 that the value of the tag is 4, the digital ink processing unit 20 performs N positions from the binary string stored in the rear area (first area) of the tag that is 4. a process for decoding the data P 1 ⁇ P N (step S39, S40. positional data decoding step).
- step S39 the digital ink processing unit 20 first performs variable-length decoding on N integer value type encoding target values from the encoded binary string (first binary). This process is the reverse process of the process of step S8 shown in FIG. 8, and as a result, N pieces of encoded position data EP 1 to EP N are acquired.
- step S40 the digital ink processing unit 20 performs a decoding process for restoring the N pieces of floating point type position data P 1 to P N from the N pieces of encoded position data EP 1 to EP N.
- FIG. 13 is a flowchart of the position data P decoding process. As will be described later, this decoding process is also used in decoding the width data W. As shown in the figure, this decoding process is repeatedly executed for each of one or more input data ED i (i ⁇ 1) (step S50). When this decoding process is called in step S40, one or more input data ED i becomes N pieces of encoded position data EP 1 to EP N.
- the digital ink processing unit 20 first determines whether or not i is equal to 1 (step S51). If it is determined that i is equal, the input data ED i is converted to integer type data INTD. Obtained as i (step S52). On the other hand, if it is not equal acquires a value ED i + INTD i-1 obtained by adding the previous integer type data INTD i-1 to the input data ED i as integer-type data INTD i (step S53).
- step S40 the digital ink processing section 20, by using the decoded precision data 106 in step S38 in FIG. 12, performs processing for converting the integer type data INTD i in floating point type data D i (step S54 ).
- step S40 thus the output data D i is to be acquired as the position data P i.
- step S40 the digital ink processing unit 20 returns the process to step S34 and decodes the value of the next tag.
- step S37 when it is determined in step S37 that the value of the tag is 5, the digital ink processing unit 20 is stored in a rear area (second area different from the first area) of the tag that is 5.
- a process of decoding M pieces of width data W 1 to W M from the binary string is performed (steps S41 and S42, width data decoding step).
- step S41 the digital ink processing unit 20 performs variable-length decoding on N integer value type encoding target values from the encoded binary string (second binary).
- This process is a reverse process of the process of step S9 shown in FIG. 8, and as a result, M pieces of encoded width data EW 1 to EW M are acquired.
- step S42 the digital ink processing unit 20 executes the decoding process shown in FIG. 13 by using the M encoded width data EW 1 to EW M as one or more input data ED i , thereby performing floating-point type data processing. M width data W 1 to W M are restored. Detailed contents of the decoding process are as described with reference to FIG.
- the digital ink processing unit 20 that has restored the M pieces of width data W 1 to W M compares the values of M and N (step S43). As a result, when it is determined that M is not smaller than N (or M is equal to N), the digital ink processing unit 20 returns the process to step S34 and tries to decode the value of the next tag. On the other hand, the digital ink processing unit 20 that has determined that M is smaller than N performs a process of complementing the (M + 1) th to Nth width data W M + 1 to W N with, for example, the Mth width data W M (Step S44). Width complement step). Specifically, the value of the width data W M is substituted into the width data W M + 1 to W N.
- the digital ink processing unit 20 After the completion of step S44, the digital ink processing unit 20 returns the process to step S34 and tries to decode the value of the next tag.
- digital ink can be decoded by the same decoding method.
- the number of bits of digital ink can be reduced.
- the position data P is encoded in units of strokes based on the accuracy data 106 that may differ for each coordinate detection device 1 or stylus 2. Or it can be decrypted. Therefore, it is possible to arrange a plurality of position data P with different accuracy in one digital ink 100. The same applies to the width data W and the color data.
- the binary stream BinInk is, as the third binary, the first accuracy data indicating the accuracy of the position data P acquired for the first stylus and the second accuracy indicating the accuracy of the position data P acquired for the second stylus.
- a series of position data P acquired for the first stylus is encoded using the first precision data, while a series of positions acquired for the second stylus.
- Data P is encoded using the second precision data. Therefore, a series of position data P constituting a stroke by the first stylus and a series of position data P constituting a stroke by the second stylus are encoded based on different accuracy data 106.
- OPC Open Packaging Convention
- FIG. 14 is an ER diagram for explaining entities constituting the container file CF.
- the notation method and multiplicity of the ER diagram are the same as in FIG. 2, but each entity indicated by a rectangle in the diagram corresponds to the above-described OPC “package” and “OPC parts” included therein. Yes.
- the container file CF includes a package 301, core information 302, application information 303, SVG section information 304, and binary stream 305 as entities.
- Core information 302 is information including general information about the container file CF and metadata about each file included in the entire package, and corresponds to the package 301 on a one-to-one basis (relation rel1).
- the application information 303 is information including information indicating the original application used for generating the container file CF, and has one-to-one correspondence with the package 301 (relation rel2).
- the SVG section information 304 is information including multimedia contents encoded according to SVG, and has a relationship rel3 of 1 to 0 or more with the package 301.
- the binary stream 305 is a binary stream BinInk generated by the digital ink encoding method according to the present invention, and has a one-to-zero relationship rel4 with the SVG section information 304.
- the package 301, the core information 302, and the relationship rel1 thereof are defined in the OPC described in Non-Patent Document 4.
- other entities and their relations rel2 to rel4 correspond to the extension of OPC according to the present invention.
- FIG. 15 is a diagram showing a configuration example of a file group archived in the container file CF.
- rectangles indicate directories, and parallelograms indicate files.
- the package 301 is a directory as an entity, and includes three directories: a relation directory 400 (_rels), a property directory 410 (prop), and a section directory 420 (sections).
- the relationship directory 400 includes a relationship file 401 (.rels) indicating the relationship between the package 301 and each part included in the package 301 (the relationships rel1 to rel3 shown in FIG. 14).
- a relationship file 401 (.rels) indicating the relationship between the package 301 and each part included in the package 301 (the relationships rel1 to rel3 shown in FIG. 14).
- FIG. 16A is a diagram showing an example of specific contents of the relation file 401.
- “/Props/core.xml” shown in the figure is the URI (Uniform Resource Identifier) of the core information 302, “/props/app.xml” is the URI of the application information 303, and “/sections/section0.svg”. "Is the URI of the first SVG section information 304.
- the relation file 401 includes identification information (Id) for identifying information of each of the core information 302, the application information 303, and the SVG section information 304 later by a computer that refers to the container file CF.
- the relation file 401 and the relation file 422 and the SVG file 423 described later are XML files in which XML data described according to XML is converted into a binary string by a text encoding method such as UTF-8.
- the relation file 401 in the example of FIG. 16A includes a section (and content) to which the identification information “section0” is assigned in the corresponding package 301, and the URI is “/sections/section0.svg”. ”Or a position derived from the position, and further, the section describes that the metadata indicated by the position“ /props/core.xml ”is given.
- the property directory 410 includes an XML file 411 (core.xml) in which the core information 302 is described, and an XML file 412 (app.xml) in which the application information 303 is described.
- FIG. 16B shows an example of specific contents of the XML file 411
- FIG. 16C shows an example of specific contents of the XML file 412.
- “Author_name_0001” illustrated in FIG. 16B indicates information on the creator of the container file CF.
- the section directory 420 includes a related directory 421 (_rels), one or more SVG files 423 (section0.svg, section1.svg) each describing SVG section information 304, and a media directory 424 (media). It is.
- FIG. 15 shows two SVG files 423, but this is an example, and the number of SVG files 423 is not limited to two.
- the media directory 424 includes one or more binary files 425 (paths0.protobuf, paths1.protobuf), each of which is a binary stream 305 (binary stream BinInk) encoded by the digital ink encoding method according to the present invention.
- FIG. 15 shows two binary files 425, but this is merely an example, and the number of binary files 425 is not limited to two.
- a relation file 422 (section0.svg.rel) indicating a relation with one or more binary files 425 (relation rel4 shown in FIG. 14) corresponding to each of the one or more SVG files 423. , Section1.svg.rel) is stored.
- FIG. 17A is a diagram showing an example of specific contents of the relation file 422.
- the target ID “strokes0” indicating the binary file 425 that is “paths0.protobuf” is described, and thus “paths0.protobuf” corresponds to the related file 422. It is shown.
- FIG. 17B is a diagram showing an example of specific contents of the SVG file 423.
- FIG. 18 is a flowchart of a method for generating a container file CF having the structure described above.
- the container file CF generation processing by the digital ink processing unit 20 shown in FIG. 1 will be described in detail with reference to FIG.
- the generation process of the container file CF is started by first performing the encoding process of the digital ink 100 shown in FIG. 8 to obtain the binary stream BinInk. That is, the digital ink processing unit 20 first stores the N pieces of position data P acquired in accordance with the operation from when the stylus 2 (see FIG. 1) is lowered to the plane until it is raised from the plane.
- a binary stream BinInk is obtained by encoding using the encoding method (the overall encoding method executed in steps S3, S4, S7 to S9 in FIG. 8) (step S60, first encoding step).
- the digital ink processing unit 20 acquires metadata to be added to the binary stream BinInk (such as information about the creator corresponding to “Author_name_0001” shown in FIG. 16B) (step S61).
- 15 is encoded by the second encoding method (UTF-8 or the like), so that the XML file 411 (Core.xml. First XML file shown in FIG. 15) is encoded.
- Step S62 First metadata binary generation step).
- the digital ink processing unit 20 generates XML data (second XML data) indicating the relationship between the target ID indicating the binary stream BinInk acquired in step S60 and the XML file 411 generated in step S62 (step XML).
- step XML XML data
- step S63 by encoding the XML data by the second encoding method, the relation file 401 (.rels. Second XML file) shown in FIG. 15 is generated (step S64, second meta). Data binary generation step).
- the digital ink processing unit 20 archives the binary stream BinInk acquired in step S60, the XML file 411 and the related file 401 generated in steps S62 and S64 in one container file CF (package). (Step S65. Package generation step).
- a general-purpose file such as XML is used for a binary stream generated by encoding a series of position data constituting a stroke.
- Metadata can be given by the description method, and each can be archived in one container file CF.
- BinInk generated by the encoding method according to the present invention can interpret the XML file stored in the container file CF in the OPC format, It becomes possible to obtain metadata.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- User Interface Of Digital Computer (AREA)
- Processing Or Creating Images (AREA)
Abstract
固定幅であっても可変幅であっても同一の復号方法によりデジタルインクを復号可能であり、かつ、ストロークの少なくとも一部を固定幅にする場合に、ストロークの全部を可変幅にする場合と比べてデジタルインクのビット数を削減できるデジタルインクの符号化を実現する。本発明によるデジタルインクの符号化方法は、スタイラスの動作に伴って取得されたN個の位置データPを符号化することによって、一連のx座標データ及びy座標データの組を示す第1のバイナリを取得するステップS8と、N個の位置データPそれぞれの位置における幅を決定するM個(Mは1以上N以下の整数)の幅データWを符号化することによって、第1のバイナリから全体として分離されてなる第2のバイナリを取得するステップS9と、第1及び第2のバイナリを互いに異なる領域に含むバイナリストリームBinInkを生成するシリアライズステップS13と、を含む。
Description
本発明は、デジタルインクの符号化方法、デジタルインクの復号方法、デジタルインクのデータ構造、及び、デジタルインクを含むファイルの生成方法に関する。
インクの充填されたペンや絵の具の付いた毛筆を紙の上で動かすことにより、インクや絵の具が紙に吸収あるいは堆積され軌跡が描かれる。このように紙に描かれた手書きの軌跡(ストローク)を模擬するように、電子ペンやスタイラスなどの指示体をタブレット等の座標検出装置の上で動かした軌跡を電子データ化したデータがデジタルインクである。特許文献1,2には、このようなデジタルインクの例が開示されている。
デジタルインクは通常、特許文献1に示されるように、手書きの軌跡を再現するためのベクターデータ及びその軌跡の描画スタイルを記述するデータを含み構成される。デジタルインクの具体的なフォーマットとしては、非特許文献1に開示されるSVG(Scalable Vector Graphics)、非特許文献2に開示されるWindows Ink、非特許文献3に開示されるInkML(Ink Markup Language)、非特許文献4に開示されるOffice Open XMLなどが知られている。これらはいずれも、多様な環境の下(様々なOSで動作する描画アプリケーションや文書作成アプリケーションなど)で利用できるように標準化されたデータフォーマットである。
"SVG 1.1(Second Edition)"、[online]、平成23年8月16日、ワールド・ワイド・ウェブ・コンソーシアム、[平成29年12月6日検索]、インターネット<URL:http://www.w3.org/TR/SVG/paths.html>
".NET Framework Class Library"、[online]、マイクロソフト・コーポレイション、[平成29年12月6日検索]、インターネット<URL:https://msdn.microsoft.com/en-us/library/system.windows.ink.stroke(v=vs.110).aspx>
"Ink Markup Language (InkML)"、[online]、平成23年9月20日、ワールド・ワイド・ウェブ・コンソーシアム、[平成29年12月6日検索]、インターネット<URL:https://www.w3.org/TR/InkML/>
"ISO/IEC 29500-2:2012"、[online]、平成24年9月1日、国際標準化機構、[平成29年12月13日検索]、インターネット<URL: http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html>
固定幅であっても可変幅であっても同一の復号方法によりデジタルインクを復号可能であり、かつ、ストロークの少なくとも一部を固定幅にする場合に、ストロークの全部を可変幅にする場合と比べてデジタルインクのビット数を削減できるデジタルインクの符号化を実現する。
また、座標検出装置やスタイラスごとに異なり得る位置データの精度データに基づき、ストローク単位で位置データを符号化ないし復号可能とする。これにより、1つのデジタルインク内に、互いに精度の異なる複数の位置データを配置することを可能にする。
さらに、ストロークを構成する一連の位置データを符号化することによって生成されたバイナリストリームに対し、XML等の汎用の記述法によりメタデータを付与可能にする。
本発明によるデジタルインクの符号化方法は、ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたそれぞれx座標データ及びy座標データの組を含んでなるN個の位置データを符号化することによって、一連のx座標データ及びy座標データの組を示す第1のバイナリを取得する座標符号化ステップと、前記N個の位置データそれぞれの位置における幅を決定するM個(Mは1以上N以下の整数)の幅データを符号化することによって、前記第1のバイナリから全体として分離されてなる第2のバイナリを取得する幅符号化ステップと、前記第1及び第2のバイナリを互いに異なる領域に含むバイナリストリームを生成するシリアライズステップと、を含む。
上記デジタルインクの符号化方法においては、前記N個の位置データの精度を示す精度データを符号化することによって第3のバイナリを生成する精度データ符号化ステップをさらに含み、前記座標符号化ステップは、前記精度データを用いて前記N個の位置データを符号化し、前記シリアライズステップは、復号順で前記前記第2のバイナリより前に前記第3のバイナリが含まれるように、前記第1乃至第3のバイナリを互いに異なる領域に含む前記バイナリストリームを生成する、こととしてもよい。
本発明によるデジタルインクの復号方法は、符号化されたデジタルインクを含むバイナリストリームからポインティングデバイスの軌跡を再現するためのデジタルインクの復号方法であって、前記ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたN個の位置データを、前記バイナリストリームの第1の領域から復号する位置データ復号ステップと、前記N個の座標データの位置での幅を決定するM個(Mは1以上N以下の整数)の幅データを、前記バイナリストリームのうち前記第1の領域とは異なる第2の領域から復号する幅データ復号ステップと、前記M個が前記N個より少ない場合に、前記M個の幅データのうちのいずれかにより、前記N個の位置データのうちのN-M個それぞれの位置における幅を補完する幅補完ステップと、を含む。
本発明によるデジタルインクのデータ構造は、ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたN個の位置データを符号化することによって得られる第1のバイナリと、前記N個の位置データそれぞれの位置における幅を決定するM個(Mは1以上N以下の整数)の幅データを符号化することによって得られる第2のバイナリとを異なる領域に含み、前記デジタルインクの復号方法を実行するコンピュータにおいて、前記第1のバイナリから前記N個の座標データを復元し、前記第2のバイナリから前記M個の幅データを復元し、前記M個の幅データを前記N個の座標データに対応付ける処理に用いられる。
本発明による符号化されたデジタルインクを含むファイルの生成方法は、符号化されたデジタルインクを含むファイルの生成方法であって、ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたN個の位置データを第1の符号化方法により符号化することによってバイナリストリームを取得する第1の符号化ステップと、前記バイナリストリームに付与すべきメタデータを取得し、該メタデータを含む第1のXMLデータを第2の符号化方法により符号化することによって第1のXMLファイルを生成する第1のメタデータバイナリ生成ステップと、前記バイナリストリームを示すターゲットIDと、該バイナリストリームに関連付ける前記メタデータとの関係を示す第2のXMLデータを生成し、該第2のXMLデータを前記第2の符号化方法により符号化することによって第2のXMLファイルを生成する第2のメタデータバイナリ生成ステップと、前記バイナリストリームと、前記第1及び第2のXMLファイルとを一つのパッケージファイルにアーカイブするパッケージ生成ステップと、を含むデジタルインクを含む。
本発明によるデジタルインクの符号化方法、復号方法、及びデータ構造によれば、一連のx座標データ及びy座標データ(並びにz座標データ)の組が1つのバイナリ(第1のバイナリ)を形成するようにシリアライズを実行しつつも、その組により示される位置における幅データについては、第1のバイナリから全体として分離されてなる第2のバイナリにシリアライズを実行するので、固定幅(M=1)であっても可変幅(1<M≦N)であっても同一の復号方法によりデジタルインクを復号可能となり、かつ、ストロークの少なくとも一部を固定幅にする場合(1≦M<N)に、ストロークの全部を可変幅にする場合(M=N)と比べてデジタルインクのビット数を削減できる。
また、本発明によるデジタルインクの符号化方法、復号方法、及びデータ構造によれば、座標検出装置ごとに異なり得る位置データの精度データに基づき、ストローク単位で位置データを符号化ないし復号可能となる。したがって、1つのデジタルインク内に、互いに精度の異なる複数の位置データを配置することが可能になる。
また、本発明によるデジタルインクを含むファイルの生成方法によれば、ストロークを構成する一連の位置データを符号化することによって生成されたバイナリストリームに対し、XML等の汎用の記述法によりメタデータを付与することが可能になる。
以下、添付図面を参照しながら、本発明の実施の形態について詳細に説明する。
図1は、本発明の実施の形態による座標検出装置1のシステム構成を示す図である。同図には、座標検出装置1への入力装置として機能するスタイラス2(ポインティングデバイス)も図示している。
図1に示すように、座標検出装置1は、電極群11に接続されたセンサコントローラ10と、センサコントローラ10に接続された入出力部23、CPU21、RAM22、及び、GPU30を含み構成されるコンピュータである。図示していないが、座標検出装置1には、液晶ディスプレイなどの表示部も設けられる。具体的な例では、座標検出装置1はタブレット端末又はスマートフォンである。
電極群11は、座標検出装置1に設けられるパネル面(平面)に平行に面を形成するように配設された各複数の電極11x,11yを含んで構成される。複数の電極11x,11yはそれぞれ、上記表示部の表示面上(又は裏側)に配置された透明な導体である。図1に示すように、複数の電極11xは、それぞれy方向(パネル面内の方向)に延設され、かつ、x方向(パネル面内でy方向に直交する方向)に等間隔で配置される。また、複数の電極11yは、それぞれx方向に延設され、かつ、y方向に等間隔で配置される。
センサコントローラ10は、電極群11を用いて、ポインティングデバイスとしてのスタイラス2がパネル面に接触したか(図1に示す「DOWN」)、又は、離間したか(図1に示す「UP」)を検出する機能と、パネル面内におけるスタイラス2の位置を示す位置データPを導出する機能と、スタイラス2から筆圧値WPを受信する機能とを有する。ここで、位置データPは、パネル面内の位置を示す2次元の座標(すなわち、x座標データ及びy座標データの組(x,y))によって表されてもよいし、パネル面内の位置及びパネル面とスタイラス2のペン先との間の距離を示す3次元の座標(すなわち、x座標データ、y座標データ、及びz座標データの組(x,y,z))によって表されてもよい。また、筆圧値WPは、スタイラス2のペン先がパネル面から受ける力を示す値であり、スタイラス2内に設けられるセンサによって検出される。
センサコントローラ10は、スタイラス2の状態によって決まる所定の期間内におけるスタイラス2の動作に伴って、一連の位置データの取得を行う。具体的には、例えば位置データPが2次元の座標によって表される場合であれば、センサコントローラ10は、例えばスタイラス2がパネル面にダウンされてからパネル面からアップされるまでの間、スタイラス2の位置データPの導出を周期的に行えばよい。また、位置データPが3次元の座標によって表される場合であれば、センサコントローラ10は、例えばスタイラス2がパネル面に一旦ダウンされてからユーザによってスタイラス2のボタン(スタイラス2の側面又は端部に配置される押しボタン)が押下されるまでの間、又は、ユーザによってスタイラス2のボタンが押下されてから再度ユーザによってスタイラス2のボタンが押下されるまでの間、スタイラス2の位置データPの導出を周期的に行えばよい。こうして導出された一連の位置データPは、それぞれ筆圧値WPと対応付けて、スタイラスデータとして入出力部23に供給される。
CPU21、RAM22、及び入出力部23は、デジタルインク100についての各種の処理を実行するデジタルインク処理部20を構成する。具体的に説明すると、CPU21は、センサコントローラ10から入出力部23に供給されたスタイラスデータに基づいてRAM22内にデジタルインク100を生成し、生成したデジタルインク100を後述する図8に示す符号化方法によって符号化する処理を実行する。また、CPU21は、符号化したデジタルインク100を含むバイナリストリームBinInkを、後述する図18に示す方法によって所定形式のコンテナファイルCF内にアーカイブし、外部に出力する処理を実行する。
ここで、コンテナファイルCFの出力先は、他のコンピュータであってもよいし、座標検出装置1自身であってもよい。また、コンテナファイルCF内にアーカイブされていない状態のバイナリストリームBinInkを直接、外部に出力することとしてもよい。この場合、バイナリストリームBinInkの断片化によって得られる各断片を、互いに異なるパケットのペイロードに含めて通信することとしてもよい。
CPU21はまた、符号化したデジタルインク100を含むバイナリストリームBinInkがアーカイブされたコンテナファイルCF(又は、コンテナファイルCF内にアーカイブされていない状態のバイナリストリームBinInk)の入力を受け付け、その中に含まれるデジタルインク100を後述する図11及び図12に示す復号方法によって復号することにより、デジタルインク100をRAM22内に復元する処理を実行する。
GPU40は、RAM22内に生成又は復元されたデジタルインク100のレンダリングを実行し、その結果をパネル面(表示部)に供給する機能を有する。これにより、デジタルインク100の描画が実行される。
デジタルインク100について説明する。デジタルインク100は、インクペンや鉛筆等の筆記具を用いて紙媒体等に残されたインクあるいは鉛筆粉等により表現される筆跡を模擬するデータである。デジタルインク100には、少なくとも1つのパスデータPAが含まれる。パスデータPAは、スタイラス2などのポインティングデバイスを動かすことにより生成されるデータであり、例えば、スタイラス2がパネル面にタッチしてから(図1のDOWN)、パネル面上を摺動した後、パネル面から離れる(図1のUP)までにパネル面上で動いた軌跡(trajectory、path、stroke等と称される)の幾何形状(2次元グラフィックス上での特徴)を表現している。
なお、本明細書では、このように手書きの軌跡を表現するデータを「パスデータ」と称するが、これは非特許文献1の用語に従ったものであり、他の用語を用いても差し支えない。例えば、非特許文献2において使用される「ストローク(Stroke)」、デジタルインクの標準の1つとして知られる非特許文献3において使用される「トレース(trace)」などの用語を、パスデータの代わりに用いてもよい。
パスデータPAには、軌跡の幅を示す幅データ、軌跡の色・透明度を示すカラーデータなどのメタデータや、その他のデータ(例えば画像データ)が関連付けられ得る。パスデータPAのレンダリングは、関連付けられたレンダリング方法によって実行される。このレンダリング方法は、形状の全てをベクターベースでレンダリングする、というものであってもよいし、ビットマップ等ピクセルデータを一部利用することによりピクセルベースの処理を用いてレンダリングする、というものであってもよいし、これら2つの方法を混合させた方法を用いてレンダリングする、というものであってもよい。
図2は、デジタルインク100のデータのモデルを示すER(Entity-Relationship)図である。同図において、矩形はエンティティを示し、楕円はエンティティの属性を示している。図2に示すように、デジタルインク100は、パスクラス101及びセグメントクラス110という2つのエンティティを含んで構成される。上述したパスデータPAは、パスクラス101のインスタンスである。また、以下では、セグメントクラス110のインスタンスをセグメントSと称する。
図2の菱形は、エンティティ間の関係を示している。菱形の両側にある記号は多重度(cardinality)を示すもので、図2の例では、1以上のパスクラス101のインスタンス(=パスデータPA)のそれぞれに、0個以上のセグメントクラス110のインスタンス(=セグメントS)が包含される、という関係(1対0以上の関係)が示されている。
パスクラス101は、デジタルインク100の核となるエンティティであり、スタイラス2をパネル面にダウンさせてからアップさせるまでのパネル面上におけるスタイラス2の移動の軌跡(SVGにおける「パスストローク」)を記述するために使用される。パスクラス101のインスタンスであるパスデータPAは複数の位置データPを含んで構成され、1つの軌跡が生成される都度新たに生成される。パスクラス101の属性には、ストロークカラー102及びストローク幅103という2つのスタイル属性と、スタートパラメータ104及びエンドパラメータ105という2つの幾何属性と、精度データ106とが含まれる。
セグメントクラス110は、パスデータPAを構成する複数の位置データPによって表される軌跡を分割してなるセグメントを示すエンティティであり、キャットマル-ロム曲線などの所定の補間曲線に関連付けて使用される。以下では、この補間曲線がキャットマル-ロム曲線である場合を例にとって説明を続ける。この場合、セグメントクラス110のインスタンスであるセグメントSには、属性として4つの位置111が含まれる。各位置111は補間曲線のコントロールポイントを表すもので、キャットマル-ロム曲線の場合には、それぞれがパスデータPAを構成する複数の位置データPのいずれかに対応する。この点については、後ほど図6及び図7を参照しながら詳しく説明する。
なお、パスクラス101及びセグメントクラス110といったエンティティの名前自体は、非特許文献1に記載されるSVGのパス仕様(Path Specification)のサブセット(Path data、SVGPathSeg等)を踏襲したものであるが、図2に示す各属性は、本発明のデジタルインク100のために拡張されたものである。
図3は、N個の位置データP1~PNにより構成されるパスデータPAと、このパスデータPAに包含されるN-1個のセグメントS1~SN-1との幾何上の関係を示す図である。同図に示すように、セグメントSk(kは1~N-1までの整数)は、位置データPkと位置データPk+1との間に形成される曲線を表すデータとなる。
図2に戻り、ストロークカラー102は、パスデータPAをレンダリングする際に用いられる色及び透明度を示す属性である。ストロークカラー102によって示される色及び透明度は、1つのパスデータPAにつき1つ(1つのRGB値及び1つの透明度A。固定カラー)としてもよいし、1つのパスデータPAにつきM個(M個のRGB値及びM個の透明度A。可変カラー)としてもよい。また、1つのパスデータPAに対し、1つのRGB値及びM個の透明度Aを示すストロークカラー102を対応付けることとしてもよい。ただし、Mは、1以上N以下の整数である。以下では、ストロークカラー102についての説明は特に行わないが、デジタルインク処理部20は、後述するストローク幅103についての処理と同様の処理により、ストロークカラー102の符号化及び復号を行うよう構成される。
ストローク幅103は、パスデータPAを構成する複数の位置データそれぞれの位置における軌跡の幅を示す属性である。デジタルインク処理部20は、センサコントローラ10から供給される筆圧値WP(図1を参照)に基づいて、ストローク幅103の具体的な値(幅データW)を決定する。ストロークカラー102と同様に、ストローク幅103によって示される幅は、1つのパスデータPAにつき1つ(固定幅)としてもよいし、1つのパスデータPAにつきM個(可変幅)としてもよい。なお、Mの具体的な値は、ストロークカラー102とストローク幅103とで同じであってもよいし、異なっていてもよい。
図4は、図3に示したパスデータPAに含まれる幅データWの例を示す図である。同図には、パスデータPAを構成するN個の位置データP1~PNがそれぞれ2次元の座標によって表される例を示している。また、図4(a)にはM=Nの場合を示し、図4(b)にはM<Nの場合を示している。
初めに図4(a)を参照すると、この場合のパスデータPAには、N個の位置データP1~PNそれぞれの位置における軌跡の幅を示すN個の幅データW1~WNが含まれる。図1に示したGPU40を用いたレンダリングにおいては、このN個の幅データW1~WNに従ってN個の位置データP1~PNそれぞれの位置における軌跡の幅が決定され、決定された幅を直径とする円をなめらかに包絡することによって、軌跡の描画が実行される。上掲した特許文献2には、この描画の詳細が記載されている。
なお、軌跡の描画のために用いる図形としては、円ではなく楕円を用いることとしてもよい。この場合における幅データWは楕円の長径又は短径などを示すデータとなり、GPU40は、N個の位置データP1~PNそれぞれの位置における軌跡の幅を決定する際に、各位置における楕円の向きを決定する必要がある。各位置における楕円の向きによって描画結果が変わってくるからである。これに対し、円を用いる場合には、円が等方性を有することから、この向きを決定するステップを省略することができる。
次に図4(b)を参照すると、この場合のパスデータPAには、M個の位置データP1~PMそれぞれの位置における軌跡の幅を示すM個の幅データW1~WMが含まれる。ただし、同図においてはM<Nである。N-M個の位置データPM+1~PNそれぞれの位置における軌跡の幅を示す幅データWは、パスデータPAに含まれない。
この場合、図1に示したGPU40によるレンダリングにおいては、まずM個の幅データW1~WMに従ってM個の位置データP1~PMそれぞれの位置における軌跡の幅が決定され、次いで、M個の幅データW1~WMのうちのいずれか(図4(b)の例では、幅データWM)に従って、残りのN-M個の位置データPM+1~PNそれぞれの位置における軌跡の幅が決定される。そして、こうして決定された幅を直径とする円をなめらかに包絡することによって、軌跡の描画が実行される。
なお、図4(b)についての説明から理解されるように、M=1である場合には、図1に示したGPU40によるレンダリングにおいて、1個の幅データW1に従ってN個の位置データP1~PNそれぞれの位置における軌跡の幅が決定されることになる。したがって、固定幅で軌跡の描画が実行されることになる。
図5は、図3に示したパスデータPAに含まれる幅データWの他の例を示す図である。同図には、パスデータPAを構成するN個の位置データP1~PNがそれぞれ3次元の座標によって表される例を示している。ただし、図5においては、N=5としている。
図5に示すように、位置データP1~PNがz座標データを含む3次元の座標によって表される場合、幅データWは、球SHの径(例えば直径又は半径)を示すデータであるとすることが好適である。この場合のレンダリングにおいては、N個の幅データW1~WNによりN個の位置データP1~PNそれぞれの位置を中心とする球SHの直径が決定され、さらに、位置データPの進行方向(例えば、位置データP1~PNを補間してなる補間曲線の各位置における接線の延在方向)に対して鉛直な面内に位置する球SHの大円(図5に網掛けで示した図形)が決定される。そして、各大円をなめらかに通過するように軌跡の描画が実行される。
なお、位置データPが3次元の座標によって表される場合の幅データWは、軌跡を通過させる所定の形状の輪郭あるいは面積に対応するデータであればよい。上述した球SHの直径を示す幅データWは、このような幅データWの一例である。また、所定の形状としては、球SHの大円ではなく、楕円や正方形を用いることとしてもよい。ただし、この場合におけるGPU40は、軌跡の描画の際に、進行方向に対して鉛直な面内に配置される所定の形状の輪郭の座標位置を得るために、上記鉛直な面内における楕円や正方形の向きを決定する必要がある。大円を用いる場合には、大円が上記鉛直な面内で等方性を有することから、1つのパラメータで輪郭の座標位置が決定されるため、向きを決定するためのステップを省略することができる。
図2に戻り、スタートパラメータ104は、1つのパスデータPAを構成する1以上のセグメントSのうち、先頭に対応する開始セグメントSstartの描画開始位置を示す属性である。また、エンドパラメータ105は、1つのパスデータPAを構成する1以上のセグメントSのうち、末尾に対応する終了セグメントSendの描画終了位置を示す属性である。
図6は、スタートパラメータ104及びエンドパラメータ105を説明する図である。同図に示したパスデータPA及び各セグメントSは、図3及び図4に示したものと同じものである。同図では、上述したキャットマル-ロム曲線についても詳しく説明する。
スタートパラメータ104は、開始セグメントSstart(=S1)のt値によって表される。t値は、図6に併記したセグメントSiの拡大図に示すように、0以上1以下の値をとるセグメントの内分点である。スタートパラメータ104によれば、位置データP1により示される位置と位置データP2により示される位置との間の任意の位置を、表示処理を開始する位置として指定することができる。
スタートパラメータ104の初期値は0である(後述する図10の2行目「default=0」を参照)。この初期値0は、パスデータPAのレンダリングが開始セグメントSstartの先頭から開始されることを示している。参考のために、図6には、スタートパラメータ104の値が0.5である場合において開始セグメントSstartの表示が開始される位置SPを示している。
エンドパラメータ105は、終了セグメントSend(=SN-1)のt値によって表される。エンドパラメータ105によれば、位置データPN-1により示される位置と位置データPNにより示される位置との間の任意の位置を、表示処理を終了する位置として指定することができる。
エンドパラメータ105の初期値は1である(後述する図10の3行目「default=1」を参照)。この初期値1は、パスデータPAのレンダリングが終了セグメントSendの末尾まで実行されることを示している。参考のために、図6には、エンドパラメータ105の値が0.7である場合において終了セグメントSendの表示が終了する位置EPを示している。
なお、開始セグメントSstartでも終了セグメントSendでもないセグメントSiにおいては、すべての区間で表示処理が実行されるため、t値は特段の意味を有さない。スタートパラメータ104及びエンドパラメータ105は、1つのパスデータPAに1つずつ存在するものである。
キャットマル-ロム曲線について、説明する。キャットマル-ロム曲線によるセグメントSiは、属性である位置111(図2を参照)として、その両端に位置する2つの位置データPi,Pi+1と、さらにその外側に位置する2つの位置データPi-1,Pi+2とを含んで構成される。図1に示したGPU40は、これら4つの位置データPi-1~Pi+2の座標をキャットマル-ロム曲線のコントロールポイントとして用いることにより、セグメントSiの具体的な形状を決定するよう構成される。
図7は、図6に示したセグメントSi,Si+1のそれぞれと、GPU40によって描画されるキャットマル-ロム曲線との関係を示す図である。同図中段には、4つの位置データ{Pi-1,Pi,Pi+1,Pi+2}の組によって、位置データPi,Pi+1のそれぞれにより示される位置の間に存在するセグメントSiの具体的な形状が定義されることを示している。また、同図下段には、4つの位置データ{Pi-1,Pi,Pi+1,Pi+2}の組を1つ右にスライドしてなる4つの位置データ{Pi,Pi+1,Pi+2,Pi+3}の組によって、位置データPi+1,Pi+2のそれぞれにより示される位置の間に存在するセグメントSi+1の具体的な形状が定義されることを示している。
なお、開始セグメントSstartを構成する曲線の形状は、パスデータPAの始点に対応する位置データP1と同じ位置に設定した位置データP0を含む4つの位置データ{P0,P1,P2,P3}の組によって定義される。同様に、終了セグメントSendを構成する曲線の形状は、パスデータPAの終点に対応する位置データPNと同じ位置に設定した位置データPN+1を含む4つの位置データ{PN-2,PN-1,PN,PN+1}の組によって定義される。ただし、位置データP0に位置データP1と異なる位置を示す値を設定してもよく、位置データPN+1に位置データPNと異なる位置を示す値を設定してもよい。
図2に戻り、精度データ106は、パスデータPAを符号化する際に用いる符号化の精度を示す属性であり、値が大きいほど、図9を参照して後述する変換処理(ステップS21)の結果として得られる整数型データの精度が細かいことを示す。精度データ106は、1つのパスデータPAに対して1つ割り当てられる。このようにパスデータPAごとに精度データ106が割り当てられるのは、パスデータPAを生成する際に使用されたスタイラス2の種類や座標検出装置1の種類などによって、位置データPや幅データWの取得精度が異なる可能性があるためである。
以下、図8~図13を参照しながら、図1に示したデジタルインク処理部20によって実行されるデジタルインク100の符号化及び復号処理について、詳しく説明する。
図8は、デジタルインク100の符号化処理を示すフロー図である。同図に示すように、デジタルインク処理部20は、デジタルインク100の中に含まれるパスデータPAの数(Z個とする)だけ、ステップS2~S12の処理を繰り返すよう構成される(ステップS1)。この繰り返しにより、各パスデータPAが順次符号化される。詳しくは後述するが、符号化された各パスデータPAはそれぞれパスメッセージBinPathを構成し、各パスメッセージBinPathは、1つのバイナリストリームBinInk内に区別可能な状態で順次追加される。なお、図8及び後掲の図においては、j番目のパスデータPAをパスデータPA[j]と表すことにする。
j番目のパスデータPA[j]に関して、デジタルインク処理部20はまず、図2に示したスタートパラメータ104、エンドパラメータ105、及び精度データ106を取得する(ステップS2)。デジタルインク処理部20は通常、スタートパラメータ104及びエンドパラメータ105の値として、それぞれの初期値0,1を取得する。ただし、パスデータPA[j]がユーザ操作等による他のパスデータPAの切断の結果として生成されたものである場合、スタートパラメータ104又はエンドパラメータ105が初期値とは異なる値になることがある。また、デジタルインク処理部20は、精度データ106の値として、バスデータPA[j]を生成するために使用されたスタイラス2及び座標検出装置1の組み合わせに対応して予め定められた値を取得する。
次にデジタルインク処理部20は、パスデータPA[j]に含まれるN個の位置データP1~PNの符号化処理を実行することにより、N個の符号化位置データEP1~EPNを取得する(ステップS3)。
図9は、位置データPの符号化処理のフロー図である。後ほど説明するが、この符号化処理は幅データWの符号化においても使用される。同図に示すように、この符号化処理は、1以上の入力データDi(i≧1)のそれぞれについて繰り返し実行される(ステップS20)。この符号化処理がステップS3で呼び出される場合、1以上の入力データDiはN個の位置データP1~PNとなる。
i番目の入力データDiに関して、デジタルインク処理部20はまず、図8のステップS2で取得した精度データ106を用いて、浮動小数型である入力データDiを整数型データINTDiに変換する処理を行う(ステップS21)。この処理を行うことにより、入力データDiのビット数を削減できるとともに、後述する図8のステップS8,S9で行う可変長符号化の結果として生成されるバイナリデータのビット数をも削減することが可能になる。
次にデジタルインク処理部20は、入力データDiを符号化してなる符号化データEDiを導出する。具体的には、iが1に等しいか否かを判定し(ステップS22)、等しいと判定した場合には、整数型データINTDiを符号化データEDiとして出力する(ステップS23)。一方、等しくないと判定した場合には、整数型データINTDiから1つ前の整数型データINTDi-1を減じてなる値INTDi-INTDi-1(差分値)を符号化データEDiとして出力する(ステップS24)。ステップS3においては、こうして出力された符号化データEDiが、符号化位置データEPiとして取得される。
図8に戻る。デジタルインク処理部20は続いて、パスデータPA[j]に含まれるM個の幅データW1~WMを1以上の入力データDiとして図9に示す符号化処理を実行することにより、M個の符号化幅データEW1~EWMを取得する(ステップS4)。符号化処理の詳しい内容については、図9を参照して説明したとおりである。
この後に実行されるステップS5~S12の処理は、パスデータPA[j]を構成する各データを所定のスキーマに従って符号化することによって、バイナリストリームBinInkに追加するためのパスメッセージBinPath[j]を生成する処理である。
図10は、1つのパスデータPAを符号化することによって得られるパスメッセージBinPathのスキーマ(デジタルインク100のデータ構造)の例を示す図である。このスキーマは、図8に示す符号化処理によってパスメッセージBinPathを生成する目的の他、後述する図11及び図12に示す復号処理においてパスデータPAを構成する各データを復号するためにも用いられる。なお、図10においては、スキーマを記述するために、インタフェース記述言語(Interface Definition Language)を用いている。
図10に示すように、本実施の形態によるパスメッセージBinPathのスキーマにおいては、2行目にスタートパラメータ104のフィールド(startParameter)が定義され、3行目にエンドパラメータ105のフィールド(endParameter)が定義され、4行目に精度データ106のフィールド(decimalPrecision。第3のバイナリ)が定義され、5行目に位置データPのフィールド(Positions。第1のバイナリ)が定義され、6行目に幅データWのフィールド(strokeWidths。第2のバイナリ)が定義され、7行目にカラーデータのフィールド(strokeColor)が定義される。なお、カラーデータは、ストロークカラー102の具体的な値である。各フィールドは、パスメッセージBinPath内の互いに異なる領域に格納される。例えば、幅データWのフィールドは、一連のx座標データ、y座標データ、及びz座標データの組を示す位置データP(ただし、z座標データは3次元の場合のみ)のフィールドから全体として分離されている。
各フィールドの名称に付加された「optional」の文字は、そのフィールドが省略可能であることを示している。また、「repeated」の文字は、そのフィールドが複数の値を持ち得ることを示している。さらに、「float」は浮動小数点型、「uint32」は32ビット符号なし整数型、「sint32」は32ビット符号あり整数型をそれぞれ示している。また、各フィールドの等号の直後に記載される数値はフィールドを識別するためのタグの値を示し、「default」により示される値はそのフィールドの初期値を示している。「packed=true」は、そのフィールドに格納されているデータが圧縮されたものであることを示している。ここでいう圧縮されたものとは、図9に示した符号化処理を経たデータであることを意味する。
図8に戻り、ステップS5において、デジタルインク処理部20は、タグの値に1を設定する。そして、タグの値の判定を行う(ステップS6)。タグの値が1,2,3のいずれかである場合、デジタルインク処理部20は、タグの値と、対応するデータとを固定長符号化する処理を行う(ステップS7)。
ステップS7で符号化の対象となるのは、ステップS2で取得したスタートパラメータ104、エンドパラメータ105、精度データ106である。タグの値が1である場合、デジタルインク処理部20はスタートパラメータ104を固定長符号化することによって浮動小数点型のデータを生成し、パスメッセージBinPath[j]に追加する(ステップS10)。また、タグの値が2である場合、デジタルインク処理部20はエンドパラメータ105をすることによって浮動小数点型のデータを生成し、パスメッセージBinPath[j]に追加する(ステップS10)。さらに、タグの値が3である場合、デジタルインク処理部20は精度データ106を固定長符号化することによって32ビット符号なし整数型のデータ(第3のバイナリ)を生成し(精度データ符号化ステップ)、パスメッセージBinPath[j]に追加する(ステップS10)。
ここで、精度データ106のタグの値として、位置データP、幅データW、及びカラーデータよりも小さい値を付与しているのは、後述する図11及び図12に示す復号処理において、精度データ106がこれらのデータよりも先に復号されるようにするためである。精度データ106を先に復号することで、位置データP、幅データW、及びカラーデータを正しく復号することが可能になる。
ステップS10で各データをパスメッセージBinPath[j]に追加したデジタルインク処理部20は、現在のタグの値が5であるか否かを判定し(ステップS11)、5でなければタグの値を1インクリメントし(ステップS12)、処理をステップS6に戻す。なお、カラーデータの符号化を考慮する場合、ステップS11の判定は、タグの値が6であるか否かの判定となる。タグの値が5であると判定した場合の処理については、後述する。
ステップS6でタグの値が4であると判定した場合、デジタルインク処理部20は、タグの値4と、ステップS3で取得したN個の符号化位置データEP1~EPNのそれぞれとを可変長符号化することにより、一連のx座標データ、y座標データ、及びz座標データの組を示す第1のバイナリ(ただし、z座標データは3次元の場合のみ)を生成し(ステップS8。座標符号化ステップ)、生成した第1のバイナリをパスメッセージBinPath[j]に追加する(ステップS10)。可変長符号化の具体的な方式としては、符号化の対象となる値の絶対値が小さいほど符号化の結果として得られる値のビット数が少なくなるものであれば、特に限定されない。例えば、指数ゴロム符号や、グーグルプロトコルバッファで用いられるsint32などを利用することが可能である。
ここで、スタイラス2の動きにより取得される位置データPの値は、連続した2つの値が近い値をとる傾向がある。これはスタイラス2が物理的に1つしかなく、これがパネル面をなぞるように動かされるためである。したがって、図9を参照して説明したように、連続する2つの位置データP間の差分値を符号化対象値とし、この値の符号化に可変長符号を用いることにより発生確率が比較的高い値を短いビット数の符号にすることができ、それによってデジタルインク100のビット数を削減することが可能になる。
ステップS6でタグの値が5であると判定した場合、デジタルインク処理部20は、タグの値5と、ステップS4で取得したM個の符号化幅データEW1~EWMのそれぞれとを可変長符号化することにより、第1のバイナリから全体として分離されてなる第2のバイナリを生成し(ステップS9。幅符号化ステップ)、生成した第2のバイナリをパスメッセージBinPath[j]に追加する(ステップS10)。可変長符号化の具体的な方式としては、ステップS8と同様に、符号化の対象となる値の絶対値が小さいほど符号化の結果として得られる値のビット数が少なくなるものであれば、特に限定されない。例えば、指数ゴロム符号や、グーグルプロトコルバッファで用いられるsint32などを利用することが可能である。
ここで、位置データPの場合と同様、幅データWについても、連続した2つの値が近い値をとる傾向がある。これは、幅データWが上述したように筆圧値WPから決定されるものであり、筆圧値WPは、スタイラス2を物理的に押し付ける力をサンプリングして得られる値であるためである。したがって、この場合にも、連続する2つの幅データW間の差分値を符号化対象値とし、この値の符号化に可変長符号を用いることにより発生確率が比較的高い値を短いビット数の符号にすることができ、それによってデジタルインク100のビット数を削減することが可能になる。
ステップS9の後のステップS10が終了すると、処理中のパスデータPAに関する各データがパスメッセージBinPath[j]内にすべてシリアライズされることになる。なお、カラーデータの符号化を考慮する場合には、処理中のパスデータPAに関する各データがパスメッセージBinPath[j]内にすべてシリアライズされるのは、さらにカラーデータについての処理も終了した後となる。
こうして生成されたパスメッセージBinPath[j]は、復号順で第2のバイナリより前に第3のバイナリが含まれるように、第1乃至第3のバイナリを互いに異なる領域に含むバイナリデータとなる。デジタルインク処理部20は、ステップS11でタグの値が5(カラーデータの符号化を考慮する場合には6)であると判定した場合、パスメッセージBinPath[j]が完成したと判断し、パスメッセージBinPath[j]のビット長と、パスメッセージBinPath[j]とを順次バイナリストリームBinInkに追加する処理を行う(ステップS13。シリアライズステップ)。
デジタルインク処理部20が以上の処理をデジタルインク100内のZ個のパスデータPAのそれぞれについて実行することにより、各パスデータPAのパスメッセージBinPathをシリアライズしてなるバイナリストリームBinInkが完成する。
表1は、以上の処理の結果として生成されるバイナリストリームBinInkの構成を示している。この表に示すように、バイナリストリームBinInkは、パスメッセージBinPathのビット長とパスメッセージBinPathの実体との組み合わせを、パスデータPAの個数分、繰り返し含んで構成される。なお、パスメッセージBinPathには、図10のスキーマに示した{タグの値、バイナリ}のペアが含まれる。
次に、図11及び図12は、デジタルインク100の復号処理を示すフロー図である。同図に示すように、デジタルインク処理部20は、まず初めにバイナリストリームBinInkを含むコンテナファイルCF、又は、バイナリストリームBinInkがフラグメント化されてなる通信パケットから、デジタルインク100を含むバイナリストリームBinInkを抽出する処理を行う(ステップS30)。
次にデジタルインク処理部20は、変数jに0を代入し(ステップS31)、ステップS30で抽出したバイナリストリームBinInkからパスメッセージBinPath[j]のビット長及びパスメッセージBinPath[j]の抽出を試みる(ステップS32)。その結果、抽出できた場合には図12のステップS34に処理を移し、抽出できなかった場合には処理を終了する。
ステップS34以降の処理は、図10に示したスキーマに従って、パスメッセージBinPath[j]内に格納されている各データ(スタートパラメータ104、エンドパラメータ105、精度データ106、位置データP、幅データW、カラーデータ)を復号する処理である。
具体的に説明すると、デジタルインク処理部20はまず、パスメッセージBinPathの未だ復号していない部分に最初に含まれるタグの復号を試みる(ステップS34)。そして、復号できたか否かを判定し(ステップS35)、できなかったと判定した場合には、変数jの値を1インクリメントしたうえで(ステップS36)、処理を図11のステップS32に戻す。これにより、次のパスメッセージBinPath[j]についての処理が開始されることになる。
一方、ステップS35で復号できたと判定した場合には、復号したタグの値の判定を行う(ステップS37)。その結果、タグの値が1,2,3のいずれかであると判定した場合、デジタルインク処理部20は、それぞれのタグの後方領域に格納されている固定長のバイナリ列から、対応する固定長の各データを復号する処理を行う(ステップS38)。こうして復号されるデータは、タグの値が1の場合にはスタートパラメータ104、タグの値が2の場合にはエンドパラメータ105、タグの値が3の場合には精度データ106となる。デジタルインク処理部20は、あるタグの値についてステップS38が終了した場合には、その都度、ステップS34に処理を戻し、次のタグの値の復号を実施する。
次に、ステップS37でタグの値が4であると判定した場合、デジタルインク処理部20は、4であるタグの後方領域(第1の領域)に格納されているバイナリ列からN個の位置データP1~PNを復号する処理を行う(ステップS39,S40。位置データ復号ステップ)。
具体的に説明すると、デジタルインク処理部20はまず、ステップS39において、符号化されたバイナリ列(第1のバイナリ)からN個の整数値型の符号化対象値を可変長復号する。この処理は図8に示したステップS8の処理の逆処理であり、結果としてN個の符号化位置データEP1~EPNが取得される。
続いてデジタルインク処理部20は、ステップS40において、N個の符号化位置データEP1~EPNから浮動小数点型のN個の位置データP1~PNを復元するための復号処理を行う。
図13は、位置データPの復号処理のフロー図である。後ほど説明するが、この復号処理は幅データWの復号においても使用される。同図に示すように、この復号処理は、1以上の入力データEDi(i≧1)のそれぞれについて繰り返し実行される(ステップS50)。この復号処理がステップS40で呼び出される場合、1以上の入力データEDiはN個の符号化位置データEP1~EPNとなる。
i番目の入力データEDiに関して、デジタルインク処理部20はまず、iが1に等しいか否かを判定し(ステップS51)、等しいと判定した場合には、入力データEDiを整数型データINTDiとして取得する(ステップS52)。一方、等しくないと判定した場合には、入力データEDiに1つ前の整数型データINTDi-1を加算してなる値EDi+INTDi-1を整数型データINTDiとして取得する(ステップS53)。
次にデジタルインク処理部20は、図12のステップS38で復号済みの精度データ106を用いて、整数型データINTDiを浮動小数型のデータDiに変換して出力する処理を行う(ステップS54)。ステップS40においては、こうして出力されたデータDiが位置データPiとして取得されることになる。
図12に戻る。ステップS40の処理を終えたデジタルインク処理部20は、ステップS34に処理を戻し、次のタグの値の復号を実施する。
次に、ステップS37でタグの値が5であると判定した場合、デジタルインク処理部20は、5であるタグの後方領域(第1の領域とは異なる第2の領域)に格納されているバイナリ列からM個の幅データW1~WMを復号する処理を行う(ステップS41,S42。幅データ復号ステップ)。
具体的に説明すると、デジタルインク処理部20はまず、ステップS41において、符号化されたバイナリ列(第2のバイナリ)からN個の整数値型の符号化対象値を可変長復号する。この処理は図8に示したステップS9の処理の逆処理であり、結果としてM個の符号化幅データEW1~EWMが取得される。
続いてデジタルインク処理部20は、ステップS42において、M個の符号化幅データEW1~EWMを1以上の入力データEDiとして図13に示す復号処理を実行することにより、浮動小数点型のM個の幅データW1~WMを復元する。復号処理の詳しい内容については、図13を参照して説明したとおりである。
M個の幅データW1~WMを復元したデジタルインク処理部20は、MとNの値を比較する(ステップS43)。その結果、MがNより小さくない(又は、MがNに等しい)と判定した場合、デジタルインク処理部20は、ステップS34に処理を戻し、次のタグの値の復号を試みる。一方、MがNより小さいと判定したデジタルインク処理部20は、例えばM番目の幅データWMにより、M+1番目~N番目の幅データWM+1~WNを補完する処理を行う(ステップS44。幅補完ステップ)。具体的には、幅データWM+1~WNに幅データWMの値を代入する。これにより、MがNより小さく、すべての位置データPに対応する幅データWが存在しない場合にも、すべての位置データPに幅データWを対応付けることが可能になる。なお、代入する幅データWは、必ずしも幅データWMでなくてもよく、幅データW1~WMのいずれかであればよい。ステップS44の完了後、デジタルインク処理部20は、ステップS34に処理を戻し、次のタグの値の復号を試みる。
以上説明したように、本実施の形態によるデジタルインクの符号化方法、復号方法、及びデータ構造によれば、固定幅(M=1)であっても可変幅(1<M≦N)であっても、同一の復号方法によりデジタルインクを復号できるようになる。また、ストロークの少なくとも一部を固定幅にする場合(1≦M<N)には、N個未満の幅データを付加すれば足りることになるので、ストロークの全部を可変幅にする場合(M=N)と比べてデジタルインクのビット数を削減することが可能になる。
また、本実施の形態によるデジタルインクの符号化方法、復号方法、及びデータ構造によれば、座標検出装置1又はスタイラス2ごとに異なり得る精度データ106に基づき、ストローク単位で位置データPを符号化ないし復号可能となる。したがって、1つのデジタルインク100内に、互いに精度の異なる複数の位置データPを配置することが可能になる。幅データW及びカラーデータについても同様である。
例えば、本実施の形態によるデジタルインクの符号化方法、復号方法、及びデータ構造によれば、スタイラス2が第1及び第2のスタイラス(第1及び第2のポインティングデバイス)を含む場合、バイナリストリームBinInkは、第3のバイナリとして、第1のスタイラスについて取得される位置データPの精度を示す第1の精度データと、第2のスタイラスについて取得される位置データPの精度を示す第2の精度データとを含む。そしてこの場合、図9のステップS21においては、第1のスタイラスについて取得される一連の位置データPを第1の精度データを用いて符号化する一方、第2のスタイラスについて取得される一連の位置データPを第2の精度データを用いて符号化する。したがって、第1のスタイラスによるストロークを構成する一連の位置データPと、第2のスタイラスによるストロークを構成する一連の位置データPとが、異なる精度データ106に基づいて符号化される。
次に、図14~図18を参照しながら、図1に示したデジタルインク処理部20によって実行されるコンテナファイルCFの生成処理について、詳しく説明する。なお、以下では、非特許文献4に記載されるOPC(OpenPackagingConvention)のフォーマットに従ったファイルの生成方法を説明する。OPCは、XMLファイル群及び非XMLファイル群(SVGファイル、及び、バイナリストリームBinInk等)がZIPアーカイブされてなるコンテナファイルCFのフォーマットである。
図14は、コンテナファイルCFを構成するエンティティを説明するER図である。ER図の表記方法及び多重度は図2と同じであるが、図中に矩形で示す各エンティティは、上述したOPCの「パッケージ」と、その中に含まれる「OPCパーツ」とに対応している。
図14に示すように、コンテナファイルCF内には、エンティティとしてパッケージ301、コア情報302、アプリ情報303、SVGセクション情報304、バイナリストリーム305が含まれる。
コア情報302は、コンテナファイルCFに関する一般的な情報と、このパッケージ全体に含まれる各ファイルについてのメタデータとを含む情報であり、パッケージ301と1対1に対応する(関係rel1)。アプリ情報303は、コンテナファイルCFを生成するために用いられたオリジナルアプリケーションを示す情報を含む情報であり、パッケージ301と1対1に対応する(関係rel2)。
SVGセクション情報304は、SVGに従って符号化されたマルチメディアコンテンツを含む情報であり、パッケージ301との間に1対0以上の関係rel3を有する。バイナリストリーム305は、本発明によるデジタルインクの符号化方法により生成されたバイナリストリームBinInkであり、SVGセクション情報304との間に1対0以上の関係rel4を有する。
なお、パッケージ301、コア情報302、及びこれらの関係rel1は、非特許文献4に記載されるOPCに規定されるものである。これに対し、その他のエンティティ及びこれらに関する関係rel2~rel4(破線で囲った部分)は、本発明によるOPCの拡張に相当する。
図15は、コンテナファイルCF内にアーカイブされるファイル群の構成例を示す図である。同図において、長方形はディレクトリを示し、平行四辺形はファイルを示している。同図に示すように、パッケージ301は実体としてはディレクトリであり、関係ディレクトリ400(_rels)、プロパティディレクトリ410(prop)、セクションディレクトリ420(sections)という3つのディレクトリを含んで構成される。
関係ディレクトリ400には、パッケージ301とパッケージ301に含まれる各パーツとの関係(図14に示した関係rel1~rel3)を示す関係ファイル401(.rels)が含まれる。
図16(a)は、関係ファイル401の具体的な内容の例を示す図である。同図に示す「/props/core.xml」はコア情報302のURI(Uniform Resource Identifier)であり、「/props/app.xml」はアプリ情報303のURIであり、「/sections/section0.svg」は1番目のSVGセクション情報304のURIである。同図に示すように、関係ファイル401には、コア情報302、アプリ情報303、SVGセクション情報304のそれぞれについて、後にコンテナファイルCFを参照するコンピュータがその情報を識別するための識別情報(Id)と、その情報のタイプを示す情報(Type)と、その情報のURIとが対応付けて格納される。なお、関係ファイル401並びに後述する関係ファイル422及びSVGファイル423は、XMLに従って記述されたXMLデータがUTF-8等のテキストの符号化方法によってバイナリ列化されてなるXMLファイルである。
例えば、図16(a)の例による関係ファイル401には、対応するパッケージ301に「section0」という識別情報が付与されたセクション(並びにコンテンツ)が存在し、そのURIが「/sections/section0.svg」あるいはその位置から派生する位置であることが記載されており、さらに、そのセクションには、「/props/core.xml」の位置に示されるメタデータが付与されることが記載されている。
図15に戻り、プロパティディレクトリ410には、コア情報302が記述されてなるXMLファイル411(core.xml)と、アプリ情報303が記述されてなるXMLファイル412(app.xml)とが含まれる。図16(b)は、XMLファイル411の具体的な内容の例を示し、図16(c)は、XMLファイル412の具体的な内容の例を示している。例えば図16(b)に示した「Author_name_0001」は、コンテナファイルCFの作成者の情報を示している。
セクションディレクトリ420には、関係ディレクトリ421(_rels)と、それぞれSVGセクション情報304が記述されてなる1以上のSVGファイル423(section0.svg,section1.svg)と、メディアディレクトリ424(media)とが含まれる。なお、図15には2つのSVGファイル423を示しているが、これは例示であり、SVGファイル423の数は2つに限定されない。
メディアディレクトリ424には、それぞれ本発明によるデジタルインクの符号化方法によって符号化されたバイナリストリーム305(バイナリストリームBinInk)である1以上のバイナリファイル425(paths0.protobuf,paths1.protobuf)が含まれる。なお、図15には2つのバイナリファイル425を示しているが、これは例示であり、バイナリファイル425の数は2つに限定されない。また、関係ディレクトリ421には、1以上のSVGファイル423のそれぞれに対応して、1以上のバイナリファイル425との関係(図14に示した関係rel4)を示す関係ファイル422(section0.svg.rel,section1.svg.rel)が格納される。
図17(a)は、関係ファイル422の具体的な内容の例を示す図である。例えば、この例においては、「paths0.protobuf」であるバイナリファイル425を示すターゲットID「strokes0」が記述されており、これにより、「paths0.protobuf」がこの関係ファイル422に対応するものであることが示されている。また、図17(b)は、SVGファイル423の具体的な内容の例を示す図である。
図18は、以上で説明した構造を有するコンテナファイルCFの生成方法のフロー図である。以下、この図18を参照しながら、図1に示したデジタルインク処理部20によるコンテナファイルCFの生成処理について、詳しく説明する。
コンテナファイルCFの生成処理は、まず、図8に示したデジタルインク100の符号化処理を行ってバイナリストリームBinInkを得ることから開始される。すなわち、デジタルインク処理部20はまず、スタイラス2(図1を参照)が平面にダウンされてから、該平面からアップされるまでの動作に伴い取得されたN個の位置データPを第1の符号化方法(図8のステップS3,S4,S7~S9において実行される符号化方法の総体)により符号化することによって、バイナリストリームBinInkを取得する(ステップS60。第1の符号化ステップ)。
次にデジタルインク処理部20は、バイナリストリームBinInkに付与すべきメタデータ(図16(b)に示した「Author_name_0001」に対応する作成者の情報など)を取得し(ステップS61)、該メタデータを含むコア情報302(第1のXMLデータ)を第2の符号化方法(UTF-8等)により符号化することによって、図15に示したXMLファイル411(Core.xml。第1のXMLファイル)を生成する(ステップS62。第1のメタデータバイナリ生成ステップ)。
続いてデジタルインク処理部20は、ステップS60で取得したバイナリストリームBinInkを示すターゲットIDと、ステップS62で生成したXMLファイル411との関係を示すXMLデータ(第2のXMLデータ)を生成し(ステップS63)、該XMLデータを上記第2の符号化方法により符号化することによって、図15に示した関係ファイル401(.rels。第2のXMLファイル)を生成する(ステップS64。第2のメタデータバイナリ生成ステップ)。
そして最後に、デジタルインク処理部20は、ステップS60で取得したバイナリストリームBinInkと、ステップS62,S64で生成したXMLファイル411及び関係ファイル401とを、1つのコンテナファイルCF(パッケージ)内にアーカイブする(ステップS65。パッケージ生成ステップ)。
以上説明したように、本実施の形態によるデジタルインクを含むファイルの生成方法によれば、ストロークを構成する一連の位置データを符号化することによって生成されたバイナリストリームに対し、XML等の汎用の記述法によりメタデータを付与し、それぞれを1つのコンテナファイルCF内にアーカイブすることが可能になる。これにより、例えば本発明に係る符号化方法により生成されたバイナリストリームBinInkを復号できないアプリケーションであっても、OPC形式のコンテナファイルCFに格納されたXMLファイルを解釈することが可能であれば、そのメタデータを得ることが可能になる。
以上、本発明の好ましい実施の形態について説明したが、本発明はこうした実施の形態に何等限定されるものではなく、本発明が、その要旨を逸脱しない範囲において、種々なる態様で実施され得ることは勿論である。
1 座標検出装置
2 スタイラス
10 センサコントローラ
11 電極群
11x,11y 電極
20 デジタルインク処理部
21 CPU
22 RAM
23 入出力部
30 GPU
100 デジタルインク
101 パスクラス
102 ストロークカラー
103 ストローク幅
104 スタートパラメータ
105 エンドパラメータ
106 精度データ
110 セグメントクラス
111 位置
301 パッケージ
302 コア情報
303 アプリ情報
304 セクション情報
305 バイナリストリーム
400,421 関係ディレクトリ
401,422 関係ファイル
410 プロパティディレクトリ
411,412 XMLファイル
420 セクションディレクトリ
423 SVGファイル
424 メディアディレクトリ
425 バイナリファイル
BinInk バイナリストリーム
BinPath パスメッセージ
CF コンテナファイル
EP 符号化位置データ
EW 符号化幅データ
INTD 整数型データ
P 位置データ
PA パスデータ
S セグメント
W 幅データ
WP 筆圧値
rel1~rel3 関係
2 スタイラス
10 センサコントローラ
11 電極群
11x,11y 電極
20 デジタルインク処理部
21 CPU
22 RAM
23 入出力部
30 GPU
100 デジタルインク
101 パスクラス
102 ストロークカラー
103 ストローク幅
104 スタートパラメータ
105 エンドパラメータ
106 精度データ
110 セグメントクラス
111 位置
301 パッケージ
302 コア情報
303 アプリ情報
304 セクション情報
305 バイナリストリーム
400,421 関係ディレクトリ
401,422 関係ファイル
410 プロパティディレクトリ
411,412 XMLファイル
420 セクションディレクトリ
423 SVGファイル
424 メディアディレクトリ
425 バイナリファイル
BinInk バイナリストリーム
BinPath パスメッセージ
CF コンテナファイル
EP 符号化位置データ
EW 符号化幅データ
INTD 整数型データ
P 位置データ
PA パスデータ
S セグメント
W 幅データ
WP 筆圧値
rel1~rel3 関係
Claims (10)
- デジタルインクの符号化方法であって、
ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたそれぞれx座標データ及びy座標データの組を含んでなるN個の位置データを符号化することによって、一連のx座標データ及びy座標データの組を示す第1のバイナリを取得する座標符号化ステップと、
前記N個の位置データそれぞれの位置における幅を決定するM個(Mは1以上N以下の整数)の幅データを符号化することによって、前記第1のバイナリから全体として分離されてなる第2のバイナリを取得する幅符号化ステップと、
前記第1及び第2のバイナリを互いに異なる領域に含むバイナリストリームを生成するシリアライズステップと、
を含むデジタルインクの符号化方法。 - 前記幅データは、前記Mが1である場合に、前記N個の位置データにより示される軌跡の幅が固定値であることを示し、前記Mが2以上前記N以下である場合に、前記N個の位置データにより示される軌跡の幅が可変であることを示す、
請求項1に記載のデジタルインクの符号化方法。 - 前記N個の位置データはそれぞれ、x座標データ、y座標データ、及びz座標データの組を含んでなり、
前記第1のバイナリは、一連のx座標データ、y座標データ、及びz座標データの組を示すバイナリであり、
前記M個の幅データはそれぞれ、前記N個の位置データの位置における所定の形状の面積に対応するデータである、
請求項1に記載のデジタルインクの符号化方法。 - 前記所定の形状の面積に対応するデータは、球の径を示すデータである、
請求項3に記載のデジタルインクの符号化方法。 - 前記N個の位置データの精度を示す精度データを符号化することによって第3のバイナリを生成する精度データ符号化ステップをさらに含み、
前記座標符号化ステップは、前記精度データを用いて前記N個の位置データを符号化し、
前記シリアライズステップは、復号順で前記第2のバイナリより前に前記第3のバイナリが含まれるように、前記第1乃至第3のバイナリを互いに異なる領域に含む前記バイナリストリームを生成する、
請求項1に記載のデジタルインクの符号化方法。 - 前記ポインティングデバイスは、第1及び第2のポインティングデバイスを含み、
前記バイナリストリームは、前記第3のバイナリとして、前記第1のポインティングデバイスについて取得される位置データの精度を示す第1の精度データ、及び、前記第2のポインティングデバイスについて取得される位置データの精度を示す第2の精度データを含み、
前記座標符号化ステップは、前記第1のポインティングデバイスについて取得される一連の位置データを前記第1の精度データを用いて符号化する一方、前記第2のポインティングデバイスについて取得される一連の位置データを前記第2の精度データを用いて符号化する、
請求項5に記載のデジタルインクの符号化方法。 - 符号化されたデジタルインクを含むバイナリストリームからポインティングデバイスの軌跡を再現するためのデジタルインクの復号方法であって、
前記ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたN個の位置データを、前記バイナリストリームの第1の領域から復号する位置データ復号ステップと、
前記N個の座標データの位置での幅を決定するM個(Mは1以上N以下の整数)の幅データを、前記バイナリストリームのうち前記第1の領域とは異なる第2の領域から復号する幅データ復号ステップと、
前記M個が前記N個より少ない場合に、前記M個の幅データのうちのいずれかにより、前記N個の位置データのうちのN-M個それぞれの位置における幅を補完する幅補完ステップと、
を含むデジタルインクの復号方法。 - 前記幅データは、前記Mが1である場合に、前記N個の位置データにより示される軌跡の幅が固定値であることを示し、前記Mが2以上前記N以下である場合に、前記N個の位置データにより示される軌跡の幅が可変であることを示す、
請求項7に記載のデジタルインクの復号方法。 - デジタルインクのデータ構造であって、
ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたN個の位置データを符号化することによって得られる第1のバイナリと、前記N個の位置データそれぞれの位置における幅を決定するM個(Mは1以上N以下の整数)の幅データを符号化することによって得られる第2のバイナリとを、互いに異なる領域に含み、
前記デジタルインクの復号方法を実行するコンピュータにおいて、
前記第1のバイナリから前記N個の座標データを復元し、
前記第2のバイナリから前記M個の幅データを復元し、
前記M個の幅データを前記N個の座標データに対応付ける処理に用いられる、
デジタルインクのデータ構造。 - 符号化されたデジタルインクを含むファイルの生成方法であって、
ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたN個の位置データを第1の符号化方法により符号化することによってバイナリストリームを取得する第1の符号化ステップと、
前記バイナリストリームに付与すべきメタデータを取得し、該メタデータを含む第1のXMLデータを第2の符号化方法により符号化することによって第1のXMLファイルを生成する第1のメタデータバイナリ生成ステップと、
前記バイナリストリームを示すターゲットIDと、該バイナリストリームに関連付ける前記メタデータとの関係を示す第2のXMLデータを生成し、該第2のXMLデータを前記第2の符号化方法により符号化することによって第2のXMLファイルを生成する第2のメタデータバイナリ生成ステップと、
前記バイナリストリームと、前記第1及び第2のXMLファイルとを一つのパッケージファイルにアーカイブするパッケージ生成ステップと、
を含むデジタルインクを含むファイルの生成方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018511499A JP6387207B1 (ja) | 2016-12-30 | 2017-12-27 | デジタルインクの符号化方法、復号化方法 |
US16/453,656 US10747339B2 (en) | 2016-12-30 | 2019-06-26 | Digital ink coding method, digital ink decoding method, digital ink data structure, and method of generating file including digital ink |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662440851P | 2016-12-30 | 2016-12-30 | |
US62/440851 | 2016-12-30 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/453,656 Continuation US10747339B2 (en) | 2016-12-30 | 2019-06-26 | Digital ink coding method, digital ink decoding method, digital ink data structure, and method of generating file including digital ink |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018124209A1 true WO2018124209A1 (ja) | 2018-07-05 |
Family
ID=62709549
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2017/047025 WO2018124209A1 (ja) | 2016-12-30 | 2017-12-27 | デジタルインクの符号化方法、復号化方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10747339B2 (ja) |
JP (1) | JP6387207B1 (ja) |
WO (1) | WO2018124209A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6387207B1 (ja) * | 2016-12-30 | 2018-09-05 | 株式会社ワコム | デジタルインクの符号化方法、復号化方法 |
CN114585992B (zh) * | 2020-09-29 | 2024-06-11 | 京东方科技集团股份有限公司 | 书写轨迹处理方法、触控设备、书写系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007305109A (ja) * | 1997-10-31 | 2007-11-22 | Hewlett Packard Co <Hp> | インタリーブ画像を捕捉する方法及び装置 |
JP2016505907A (ja) * | 2013-10-25 | 2016-02-25 | 株式会社ワコム | 手書きデータ出力方法及びコンピュータシステム |
JP2016532165A (ja) * | 2013-11-19 | 2016-10-13 | 株式会社ワコム | インクデータの生成、インクデータのレンダリング、インクデータの操作、及び、インクデータの伝達のための方法及びシステム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10277242B2 (en) * | 2014-11-11 | 2019-04-30 | Zerokey Inc. | Method of detecting user input in a 3D space and a 3D input system employing same |
JP2016134014A (ja) * | 2015-01-20 | 2016-07-25 | 株式会社リコー | 電子情報ボード装置、情報処理方法およびプログラム |
JP2016224808A (ja) * | 2015-06-02 | 2016-12-28 | 株式会社ジャパンディスプレイ | タッチ検出機能付き表示システム |
US10049289B2 (en) | 2016-02-12 | 2018-08-14 | Wacom Co., Ltd. | Method and system for generating and selectively outputting two types of ink vector data |
JP6387207B1 (ja) * | 2016-12-30 | 2018-09-05 | 株式会社ワコム | デジタルインクの符号化方法、復号化方法 |
-
2017
- 2017-12-27 JP JP2018511499A patent/JP6387207B1/ja active Active
- 2017-12-27 WO PCT/JP2017/047025 patent/WO2018124209A1/ja active Application Filing
-
2019
- 2019-06-26 US US16/453,656 patent/US10747339B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007305109A (ja) * | 1997-10-31 | 2007-11-22 | Hewlett Packard Co <Hp> | インタリーブ画像を捕捉する方法及び装置 |
JP2016505907A (ja) * | 2013-10-25 | 2016-02-25 | 株式会社ワコム | 手書きデータ出力方法及びコンピュータシステム |
JP2016532165A (ja) * | 2013-11-19 | 2016-10-13 | 株式会社ワコム | インクデータの生成、インクデータのレンダリング、インクデータの操作、及び、インクデータの伝達のための方法及びシステム |
Also Published As
Publication number | Publication date |
---|---|
US20190317616A1 (en) | 2019-10-17 |
JP6387207B1 (ja) | 2018-09-05 |
JPWO2018124209A1 (ja) | 2018-12-27 |
US10747339B2 (en) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11747976B2 (en) | Method and system for ink data generation, ink data rendering, ink data manipulation and ink data communication | |
US12046060B2 (en) | Ink file searching method, apparatus, and program | |
US20140225928A1 (en) | Manipulation of textual content data for layered presentation | |
US20040233197A1 (en) | System and method for ink or handwriting compression | |
JP6387207B1 (ja) | デジタルインクの符号化方法、復号化方法 | |
CN114494303B (zh) | Pdf版面分割方法和装置、电子设备、存储介质 | |
WO2002091288A1 (en) | System and method for compressing stroke-based handwriting and line drawing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
ENP | Entry into the national phase |
Ref document number: 2018511499 Country of ref document: JP Kind code of ref document: A |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 17886853 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: 17886853 Country of ref document: EP Kind code of ref document: A1 |