WO2017187641A1 - 骨格推定装置、骨格推定方法および骨格推定プログラム - Google Patents

骨格推定装置、骨格推定方法および骨格推定プログラム Download PDF

Info

Publication number
WO2017187641A1
WO2017187641A1 PCT/JP2016/063501 JP2016063501W WO2017187641A1 WO 2017187641 A1 WO2017187641 A1 WO 2017187641A1 JP 2016063501 W JP2016063501 W JP 2016063501W WO 2017187641 A1 WO2017187641 A1 WO 2017187641A1
Authority
WO
WIPO (PCT)
Prior art keywords
unit
region
skeleton
area
data
Prior art date
Application number
PCT/JP2016/063501
Other languages
English (en)
French (fr)
Inventor
藤本 博昭
桝井 昇一
佐々木 和雄
阿部 大輔
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2016/063501 priority Critical patent/WO2017187641A1/ja
Priority to JP2018514089A priority patent/JP6617830B2/ja
Priority to CN201680084967.XA priority patent/CN109074641B/zh
Priority to EP16900511.3A priority patent/EP3451292B1/en
Publication of WO2017187641A1 publication Critical patent/WO2017187641A1/ja
Priority to US16/171,196 priority patent/US10839550B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/107Static hand or arm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30196Human being; Person

Definitions

  • the present invention relates to a skeleton estimation device and the like.
  • ICT Information and Communication Technology
  • distance image information is acquired from a 3D (dimension) sensor such as Kinect (registered trademark), and the position of each part such as a person's head, hand, torso, and foot is recognized.
  • Kinect registered trademark
  • Conventional techniques are used. In the following, a body part recognition method and a model fitting method will be described as an example of a conventional technique for recognizing the position of each part of a person.
  • the body part recognition method uses a distance image as an input, and performs label classification for each pixel using a discriminator learned using a random forest method. Then, the body part recognition method directly estimates the joint coordinates using the center of gravity of the label corresponding to the joint position.
  • FIG. 58 is a diagram for explaining a body part recognition method.
  • the body part recognition method generates the image 11 by acquiring the distance image information from the 3D sensor and removing the background of the distance image information (step S10).
  • labeling for each pixel is performed using a discriminator learned by using the random forest method (step S11).
  • the body part recognition method estimates the center of gravity of each label as a joint position (step S12), and recognizes the result of connecting the center of gravity of each label as a skeleton (step S13).
  • a region connecting each joint is defined by a cylindrical model (or conical model) or the like, and the shape of the cylindrical model most applicable to the observation point is calculated while changing the position and size of the model.
  • a process of calculating the shape of a cylindrical model is repeatedly executed in a region corresponding to each part, and a combination of the cylindrical models is recognized as a skeleton.
  • the model fitting method has eight variables of radius r, height h, center positions 20a (x1, y1, z1) and 20b (x2, y2, z2) of a certain range within a certain range. Change with.
  • the number of observation points included in the cylinder 20 is used as an evaluation value, and the cylinder having the highest evaluation value is used as a skeleton.
  • a circle in FIG. 59 corresponds to an observation point.
  • the model fitting method is a method in which a plurality of cylinders corresponding to each part are obtained by repeatedly executing the process described in FIG. Is recognized as a skeleton.
  • the body part recognition method obtains joint coordinates directly from the center of gravity of the label, so if there is a 3D sensor noise, label division due to part hiding, or a label position error in a posture that is difficult to learn, it may not be a human skeleton
  • the position may be estimated as the joint position.
  • the body part recognition method performs probability labeling for each pixel, the label near the boundary of the part becomes ambiguous, and the joint position is not stable when viewed in a time series frame.
  • FIG. 61 is a diagram for explaining a problem of the conventional technology.
  • circles indicate joint positions, and a straight line connecting the joints is defined as a link.
  • a group of each joint and each link is defined as a skeleton.
  • FIG. 61 shows a skeleton at a certain timing when the user performs a golf swing, and a part of the joint of the body 25 is partially hidden by the left arm. In this case, a label position error occurs and the skeleton cannot be properly recognized.
  • the model fitting method evaluates a combination of a large number of parameters, the calculation time increases when fitting a target composed of a large number of parts such as a human body.
  • the calculation time is longer than in other parts, and the user's skeleton cannot be recognized at high speed.
  • an object of the present invention is to provide a skeleton estimation apparatus, a skeleton estimation method, and a skeleton estimation program that can quickly and accurately recognize a user's skeleton.
  • the skeleton estimation device includes a specifying unit, a first estimation unit, and a second estimation unit.
  • the specifying unit acquires three-dimensional information of a plurality of observation points existing on the object from the distance sensor, and is adjacent to the first area and the first area from the area of the object based on the three-dimensional information.
  • the plurality of second regions are specified, and the positions of the plurality of feature points included in the first region and the second region are specified.
  • the first estimation unit estimates the position of the skeleton included in the second region by setting a link based on each feature point included in the second region.
  • the second estimation unit includes the end point of the skeleton included in the second region and the portion included in the first region from the end point of the skeleton The following processing is performed in a state where the length to the position is fixed.
  • the second estimation unit specifies the position of the part included in the first region, and estimates the position of the skeleton included in the first region based on the position of the specified part.
  • the user's skeleton can be recognized quickly and accurately.
  • FIG. 1 is a functional block diagram illustrating the configuration of the skeleton estimation apparatus according to the first embodiment.
  • FIG. 2 is a diagram illustrating an example of the data structure of the three-dimensional data table according to the first embodiment.
  • FIG. 3 is a diagram illustrating an example of the data structure of the model data according to the first embodiment.
  • FIG. 4 is a diagram illustrating an example of the data structure of the skeleton data table according to the first embodiment.
  • FIG. 5 is a diagram illustrating an example of each area specified by the specifying unit according to the first embodiment.
  • FIG. 6 is a diagram illustrating an example of a binarized image.
  • FIG. 7 is a diagram illustrating an example of a thinned image.
  • FIG. 8 is a diagram illustrating an example of a removal pattern.
  • FIG. 1 is a functional block diagram illustrating the configuration of the skeleton estimation apparatus according to the first embodiment.
  • FIG. 2 is a diagram illustrating an example of the data structure of the three-dimensional data
  • FIG. 9 is a diagram illustrating an example of feature points.
  • FIG. 10 is a diagram for explaining an example of processing for extracting intersections.
  • FIG. 11 is a diagram for explaining an example of the model matching process.
  • FIG. 12 is a diagram for explaining an example of the process of determining the cylindrical main axis.
  • FIG. 13 is a diagram for explaining an example of the process of determining the cylinder radius and the cylinder center.
  • FIG. 14 is a diagram for explaining an example of the link connection process.
  • FIG. 15 is a diagram for explaining an example of a process of the second estimation unit according to the first embodiment.
  • FIG. 16 is a diagram (1) for explaining an example of a process for estimating the trunk estimated coordinates.
  • FIG. 17 is a diagram (2) for explaining an example of the process of estimating the trunk estimated coordinates.
  • FIG. 18 is a flowchart illustrating the processing procedure of the skeleton estimation apparatus according to the first embodiment.
  • FIG. 19 is a flowchart illustrating a processing procedure of the body skeleton recognition process.
  • FIG. 20 is a diagram illustrating an example of a hardware configuration of the skeleton estimation device.
  • FIG. 21 is a functional block diagram illustrating the configuration of the skill determination apparatus according to the second embodiment.
  • FIG. 22 is a diagram illustrating an example of a data structure of frame data.
  • FIG. 23 is a diagram illustrating an example of a data structure of model data.
  • FIG. 24 is a diagram illustrating an example of a data structure of skill determination definition data.
  • FIG. 25 is a diagram for supplementarily explaining skill determination definition data.
  • FIG. 20 is a diagram illustrating an example of a hardware configuration of the skeleton estimation device.
  • FIG. 21 is a functional block diagram illustrating the configuration of the skill determination apparatus according to the second embodiment.
  • FIG. 22 is a diagram
  • FIG. 26 is a diagram illustrating an example of a display screen displayed on the display device.
  • FIG. 27 is a diagram illustrating an example of a parameter setting screen of “PositionChecker”.
  • FIG. 28 is a diagram illustrating an example of a parameter setting screen of “AngleChecker (1)”.
  • FIG. 29 is a diagram illustrating an example of a parameter setting screen of “AngleChecker (2)”.
  • FIG. 30 is a diagram for explaining an example of frame matching.
  • FIG. 31 is a diagram for explaining the weights.
  • FIG. 32 is a diagram (1) for explaining the processing of the skill determination unit.
  • FIG. 33 is a diagram (2) for explaining the process of the skill determination unit.
  • FIG. 34 is a diagram (1) illustrating an example of a display screen generated by the output unit.
  • FIG. 35 is a diagram (2) illustrating an example of a display screen generated by the output unit.
  • FIG. 36 is a flowchart illustrating a processing procedure of the skill determination apparatus.
  • FIG. 37 is a flowchart showing a processing procedure of skill determination processing.
  • FIG. 38 is a flowchart illustrating a processing procedure of setting processing.
  • FIG. 39 is a diagram illustrating an example of a computer that executes a skill determination program.
  • FIG. 40 is a diagram illustrating the configuration of the system according to the third embodiment.
  • FIG. 41 is a functional block diagram illustrating the configuration of the server according to the third embodiment.
  • FIG. 42 is a diagram illustrating an example of a data structure of the skill determination result table.
  • FIG. 43 is a diagram illustrating an example of a skill determination result.
  • FIG. 44 is a diagram illustrating an example of the data structure of the personal information table according to the third embodiment.
  • FIG. 45 is a diagram illustrating an example of the data structure of the burner information table.
  • FIG. 46 is a diagram illustrating an example of the data structure of the product table.
  • FIG. 47 is a flowchart illustrating the processing procedure of the server according to the third embodiment.
  • FIG. 48 is a diagram illustrating the configuration of the system according to the fourth embodiment.
  • FIG. 49 is a functional block diagram illustrating the configuration of the server according to the fourth embodiment.
  • FIG. 50 is a diagram illustrating an example of the data structure of the personal information table according to the fourth embodiment.
  • FIG. 51 is a diagram illustrating an example of the data structure of the group management table.
  • FIG. 52 is a flowchart illustrating the processing procedure of the server according to the fourth embodiment.
  • FIG. 53 is a diagram illustrating the configuration of the system according to the fifth embodiment.
  • FIG. 54 is a functional block diagram illustrating the configuration of the server according to the fifth embodiment.
  • FIG. 55 is a diagram illustrating an example of the data structure of the expert data table.
  • FIG. 56 is a flowchart of the process procedure of the server according to the fifth embodiment.
  • FIG. 57 is a diagram illustrating an example of a computer that executes a control program.
  • FIG. 58 is a diagram for explaining a body part recognition method.
  • FIG. 59 is a diagram (1) for explaining the model fitting method.
  • FIG. 60 is a diagram (2) for explaining the model fitting method.
  • FIG. 61 is a diagram for explaining a problem of the conventional technique.
  • FIG. 1 is a functional block diagram illustrating the configuration of the skeleton estimation apparatus according to the first embodiment.
  • the skeleton estimation device 100 includes a 3D sensor 110, a communication unit 120, an input unit 130, a display unit 140, a storage unit 150, and a control unit 160.
  • the 3D sensor 110 is a sensor that measures distance information from the installation position of the 3D sensor 110 to each observation point on the subject included in the imaging range of the 3D sensor 110. For example, the 3D sensor 110 generates three-dimensional data indicating the three-dimensional coordinates of each observation point every predetermined time or every frame, and outputs the generated three-dimensional data to the control unit 160.
  • FIG. 2 is a diagram illustrating an example of the data structure of the three-dimensional data table according to the first embodiment.
  • this three-dimensional data table 151 associates observation point identification information with three-dimensional coordinates.
  • Observation point identification information is information for uniquely identifying an observation point.
  • the three-dimensional coordinates indicate the coordinates of observation points on the x-axis, y-axis, and z-axis that are orthogonal to each other.
  • the x-axis is a horizontal axis with respect to the 3D sensor 110.
  • the y-axis is a vertical axis with respect to the 3D sensor 110.
  • the z axis is an axis in the depth direction of the 3D sensor 110.
  • the communication unit 120 is a processing unit that communicates with an external device (not shown) via a network.
  • the communication unit 120 corresponds to a communication device or the like.
  • the input unit 130 is an input device for inputting various types of information to the skeleton estimation device 100.
  • the input unit 130 corresponds to, for example, a keyboard, a mouse, a touch panel, and the like.
  • the display unit 140 is a display device that displays various types of information output from the control unit 160.
  • the display unit 140 corresponds to, for example, a liquid crystal display or a touch panel.
  • the storage unit 150 includes a three-dimensional data table 151, model data 152, and a skeleton data table 153.
  • the storage unit 150 corresponds to, for example, a semiconductor memory device such as a RAM (Random Access Memory), a ROM (Read Only Memory), and a flash memory (Flash Memory), or a storage device such as a hard disk or an optical disk.
  • a semiconductor memory device such as a RAM (Random Access Memory), a ROM (Read Only Memory), and a flash memory (Flash Memory), or a storage device such as a hard disk or an optical disk.
  • the 3D data table 151 is a table for storing a plurality of 3D data acquired from the 3D sensor 110.
  • the data structure of each three-dimensional data corresponds to that described in FIG.
  • the model data 152 is information defining the type of model and the three-dimensional coordinates of each part of the model.
  • the model type corresponds to various postures of the target person.
  • FIG. 3 is a diagram illustrating an example of the data structure of the model data according to the first embodiment. As shown in FIG. 3, the model data 152 associates model numbers, parts, and three-dimensional coordinates.
  • the model number is a number that identifies the type of model.
  • part shows a site
  • the skeleton data table 153 is a table that stores information on the skeleton of the subject for each predetermined time.
  • FIG. 4 is a diagram illustrating an example of the data structure of the skeleton data table according to the first embodiment. As shown in FIG. 4, the skeleton data table 153 associates an identification number, a part, and a three-dimensional coordinate. The identification number is information for identifying the record.
  • part shows a site
  • the control unit 160 includes an acquisition unit 161, a specification unit 162, a first estimation unit 163, a second estimation unit 164, and an output unit 165.
  • the control unit 160 corresponds to an integrated device such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field Programmable Gate Array).
  • the acquisition unit 161 is a processing unit that acquires three-dimensional data from the 3D sensor 110.
  • the acquisition unit 161 stores the three-dimensional data in the three-dimensional data table 151 every time three-dimensional data is acquired.
  • the acquisition unit 161 converts distance information acquired from the 3D sensor 110 into three-dimensional data according to a predetermined conversion rule. Thus, three-dimensional data may be generated.
  • the specifying unit 162 acquires three-dimensional data from the three-dimensional data table 151, and based on the three-dimensional data, determines a first region and a plurality of second regions adjacent to the first region from the subject's region. A processing unit to be identified.
  • FIG. 5 is a diagram illustrating an example of each area specified by the specifying unit according to the first embodiment. As illustrated in FIG. 5, the specifying unit 162 specifies the first region 31 and the second regions 32, 33, 34, 35, and 36 from the subject region 30.
  • the first region 31 corresponds to the subject's torso.
  • the second region 32 corresponds to the subject's head.
  • the second area 33 corresponds to the right arm of the subject.
  • the second area 34 corresponds to the left arm of the subject.
  • the second region 35 corresponds to the subject's right foot.
  • the second region 36 corresponds to the subject's left foot.
  • the specifying unit 162 specifies the positions of the parts included in the plurality of second regions, outputs the specified result to the first estimation unit 163, and specifies the positions of the parts included in the plurality of first regions.
  • the specified result is output to the second estimation unit 164.
  • the specifying unit 162 specifies the first region 31 and the second regions 32 to 36, and when specifying the positions of the parts included in the first region 31 and the second regions 32 to 36, binarization processing described later, Thinning processing, feature point extraction processing, and model matching processing are executed. Note that such processing is an example, and the specifying unit 162 specifies the first region 31 and the second regions 32 to 36 using a classifier based on machine learning, and assigns them to the first region 31 and the second regions 32 to 36. The position of the part to be included may be specified.
  • the specifying unit 162 acquires information on observation points that exist in a preset background difference area among the observation points included in the three-dimensional data.
  • the specifying unit 162 focuses on the value of the z-axis among the three-dimensional coordinates of each observation point included in the background difference area.
  • a three-dimensional coordinate of a certain observation point included in the background difference area is (x1, y2, z1), and a pixel on the binarized image corresponding to the observation point is (u1, v2).
  • the identifying unit 162, when "z1" is less than the threshold Z th sets the value of a pixel on the binary image (u1, v2) to "0".
  • the specifying unit 162 executes the binarization process by repeatedly executing the above process for each observation point included in the background difference area, and generates a binarized image.
  • FIG. 6 is a diagram illustrating an example of a binarized image.
  • a white area is an area where “0” is set by the binarization process, and corresponds to the area of the subject.
  • the black area is an area where “1” is set by the binarization process, and corresponds to an area other than the target person.
  • the values “0” and “1” have been described. For example, the value “0” is the pixel value “0”, and the value “1” is the pixel value “255”. May be.
  • FIG. 7 is a diagram illustrating an example of a thinned image.
  • a thinned image 40b shown in FIG. 7 is an image obtained by executing a thinning process on the binarized image 40a shown in FIG.
  • the specifying unit 162 determines whether or not the partial pattern on the binarized image 40a corresponds to the removal pattern. When the partial pattern matches the removal pattern, the value of the region corresponding to the partial pattern is set to “1”. Change to The specifying unit 162 executes the thinning process by repeatedly executing the above process while shifting the position of the partial pattern on the binarized image 40a.
  • FIG. 8 is a diagram showing an example of the removal pattern.
  • the removal patterns are the removal patterns 5a, 5b, and 5c.
  • the size of the removal pattern is 3 ⁇ 3 pixels
  • the size of the partial pattern set on the binarized image is 3 ⁇ 3 pixels.
  • the present invention is not limited to this.
  • “1” indicates that the value of the corresponding pixel in the partial pattern is “1”.
  • “0” indicates that the value is “0” for the corresponding pixel of the partial pattern.
  • “X” indicates that the value of the corresponding pixel of the partial pattern may be “0” or “1”.
  • FIG. 9 is a diagram illustrating an example of feature points.
  • the example shown in FIG. 9 shows an example in which feature points 6a to 6k are extracted from the thinned image 40b.
  • the feature points include feature points 6a, 6d, 6e, 6f, 6g corresponding to the end points, feature points 6b, 6c corresponding to the intersections, and feature points 6h, 6i, 6j, 6k corresponding to the corners.
  • the specifying unit 162 extracts feature points by three approaches.
  • the first approach will be described.
  • the specifying unit 162 extracts end points as feature points in the region where the value is “0” in the thinned image 40b.
  • the specifying unit 162 uses the points 6a, 6d, 6e, 6f, and 6g as feature points.
  • the specifying unit 162 extracts an intersection as a feature point in a region where the value is “0” in the thinned image 40b. In the example shown in FIG. 9, since the points 6b and 6c are intersections, the specifying unit 162 sets the points 6b and 6c as feature points.
  • the specifying unit 162 uses, as the feature point, a point in which the neighboring pixel value includes three or more blank areas separated by pixels having a value of “1”. Extract.
  • the blank area is a collection of pixels in which one pixel or a plurality of consecutive values are “0”.
  • FIG. 10 is a diagram for explaining an example of processing for extracting intersections.
  • the specifying unit 162 extracts the point 6A as a feature point, but does not extract the points 6B and 6C as feature points.
  • the reason why the point 6A is a feature point is that the point has a value of “0” at the upper left, upper right, and lower of the point 6A, and each point is separated by a point of “1”, so there are three blank areas.
  • the reason why the points 6B and 6C are not intersections is that the point 6B is 1 at the top left, top, and top right, but there is no “1” between them, and it is close because it is continuous.
  • the point 6C has four points “0”, but the upper left, the left, the upper right, and the right are continuous, so there are two adjacent blank regions, and three or more. This is because it does not exist.
  • the specifying unit 162 extracts a corner point as a feature point in a region where the value is “0” in the thinned image 40b.
  • the specifying unit 162 specifies a point corresponding to a corner by applying a corner detection filter to the thinned image 40b.
  • points 6h, 6i, 6j, and 6k correspond to corner points.
  • the identifying unit 162 executes the above processing, thereby extracting the feature points 6a to 6k from the thinned image 40b.
  • the center of gravity is an average coordinate of the coordinates of a part in the case of model data and the coordinates of the feature point in the case of a feature point.
  • the specifying unit 162 associates the feature point with the shortest distance with the part.
  • the specifying unit 162 specifies the model number that minimizes the sum of the differences between the coordinates of the associated feature points and the coordinates of the parts.
  • the specifying unit 162 specifies the part of the feature point as a part associated with the specified model number.
  • FIG. 11 is a diagram for explaining an example of the model matching process. As shown in FIG. 11, it is assumed that the specifying unit 162 extracts the feature points 6a to 6g from the thinned image 40b. For convenience of explanation, explanation of the feature points 6h to 6k is omitted.
  • the model data 152 includes model numbers m1 to m3. Sites 7a, 7b, 7c, 7d, 7e, 7f, and 7g of model number m1 correspond to the head, neck, pelvis, right wrist, left wrist, right ankle, and left ankle, respectively.
  • Sites 8a, 8b, 8c, 8d, 8e, 8f, and 8g of model number m2 correspond to the head, neck, pelvis, right wrist, left wrist, right ankle, and left ankle, respectively.
  • Sites 9a, 9b, 9c, 9d, 9e, 9f, and 9g of model number m1 correspond to the head, neck, pelvis, right wrist, left wrist, right ankle, and left ankle, respectively.
  • the specifying unit 162 associates the feature points 6a to 6g with the parts 7a to 7g of the model m1 so that the distance between the coordinates of the feature points and the coordinates of the parts is minimized, and coordinates of the associated feature points And the total value M1 of the difference between the coordinates of the part and the part.
  • the specifying unit 162 associates the feature points 6a to 6g with the parts 8a to 8g of the model m2 so that the distance between the feature point coordinates and the part coordinates is minimized, and coordinates of the associated feature points And the total value M2 of the difference between the coordinates of the part and the part.
  • the specifying unit 162 associates the feature points 6a to 6g with the parts 9a to 9g of the model m3 so that the distance between the coordinates of the feature points and the part coordinates is minimized, and coordinates of the associated feature points And the total value M3 of the differences between the coordinates of the part and the part.
  • the specifying unit 162 specifies the model m1, and the correspondence between the parts 7a to 7g of the specified model m1 and the feature points 6a to 6g From these, the parts of the feature points 6a to 6g are specified.
  • the specifying unit 162 specifies the feature points 6a to 6g as the head, neck, pelvis, right wrist, left wrist, left ankle, and right ankle, respectively.
  • the specifying unit 162 performs the same processing on the feature points 6h to 6k, thereby specifying the portions of the feature points 6h to 6k as the right shoulder, the left shoulder, the right hip joint, and the left hip joint. To do.
  • the specifying unit 162 specifies the feature points corresponding to the head, neck, left wrist, right wrist, pelvis, left ankle, right ankle, right shoulder, left shoulder, right hip joint, and left hip joint, but the present invention is not limited thereto. Is not to be done.
  • the specifying unit 162 may further specify feature points corresponding to other parts. Other parts correspond to, for example, the spine, right elbow joint, left elbow joint, right knee joint, left knee joint, and the like.
  • the specifying unit 162 may specify the position of the part where the feature point cannot be specified from the thinned image. For example, the position of the spine is calculated from the position of the neck and pelvis specified as the feature points in the model specified after the normalization is performed by defining the position of the spine in the model data 152.
  • the specifying unit 162 executes the above binarization processing, thinning processing, feature point extraction processing, and model matching processing, so that the feature points included in the second regions 32 to 36 and the parts corresponding to the feature points
  • the information that associates the three-dimensional coordinates of the feature points is output to the first estimation unit 163. Further, the specifying unit 162 performs the above-described binarization processing, thinning processing, feature point extraction processing, and model matching processing, thereby secondly estimating the position information of the part corresponding to the body portion included in the first region 31.
  • the first estimation unit 163 is a processing unit that estimates the positions of the skeletons included in the second regions 32 to 36 by setting the links based on the feature points included in the second regions 32 to 36. For example, the first estimation unit 163 estimates the position of the skeleton by executing a cylinder principal axis determination process, a cylinder radius and cylinder center determination process, and a link coupling process.
  • the cylinder spindle determination process executed by the first estimation processing unit 163 will be described.
  • the second region 34 includes a feature point 6i corresponding to the left shoulder, a feature point 6l corresponding to the left elbow joint, and a feature point 6e corresponding to the left wrist.
  • FIG. 12 is a diagram for explaining an example of the process of determining the cylinder main axis.
  • a feature point 6i indicates a feature point corresponding to the right shoulder
  • a feature point 61 indicates a feature point corresponding to the right elbow joint.
  • the first estimation unit 163 sets the cylinder 50 in the vicinity of the feature points 6i and 6l.
  • the height of the cylinder 50 corresponds to the height from the feature point 61 to the feature point 6i.
  • the first estimation unit 163 acquires, from the three-dimensional data table 151, information on the three-dimensional coordinates of observation points existing within a predetermined distance from the cylinder 50.
  • the 1st estimation part 163 calculates the inclination of the main axis
  • the first estimation unit 163 obtains the covariance matrix ⁇ xx from the vectors x 1 , x 2 ,..., X n of the three-dimensional coordinates of the observation points existing between the feature points based on the formula (1). calculate.
  • N corresponds to the number of data at the observation point.
  • ⁇ X> is an average of xn and is defined by the formula (2).
  • the first estimation unit 163 calculates a covariance matrix ⁇ xx and calculates eigenvectors e 1 , e 2 , e 3 of the covariance matrix ⁇ xx .
  • the first estimation unit 163 specifies the direction of the eigenvector belonging to the maximum eigenvalue among the eigenvectors e 1 , e 2 , e 3 as the direction of the cylinder 50.
  • the orientation of the cylinder 50 corresponds to the inclination of the main axis of the cylinder 50.
  • the first estimating unit 163 also calculates the inclination of the main axis of the cylinder by executing the above-described processing for other sets of feature points included in the second region.
  • FIG. 13 is a diagram for explaining an example of the process of determining the cylinder radius and the cylinder center.
  • the vertical axis is an axis corresponding to the second principal component
  • the horizontal axis is an axis corresponding to the third principal component.
  • the second principal component corresponds to the eigenvector belonging to the second largest eigenvalue among the eigenvectors e 1 , e 2 , e 3 of the covariance matrix ⁇ xx
  • the third principal component corresponds to the eigenvector belonging to the third largest eigenvalue among the eigenvectors e 1 , e 2 , e 3 of the covariance matrix ⁇ xx .
  • the first estimation unit 163 projects an observation point existing within a predetermined distance from the cylinder 50 onto the plane of the second and third principal components, and uses a least square method or the like, so that the circle (ellipse) 50a of the cylinder 50 and The cylinder radius 50b and the cylinder center 50c are specified so that the error from each projected observation point is minimized.
  • the 1st estimation part 163 specifies a cylinder radius and a cylinder center by performing the said process also about the other feature point contained in a 2nd area
  • FIG. 14 is a diagram for explaining an example of the link connection process.
  • a link of a certain cylinder is a link 55a
  • a link of another cylinder is a link 55b.
  • An upper end point of the link 55a is an end point a1
  • a lower end point of the link 55a is an end point a2.
  • An upper end point of the link 55b is an end point b1, and a lower end point of the link 55b is an end point b2.
  • the first estimation unit 163 sets a plurality of connection point candidates and adjusts the inclinations of the links 55a and 55b so that the link extension lines pass through the respective connection point candidates.
  • the first estimation unit 163 identifies a candidate for a connection point that minimizes the sum of the change in the inclination of the link 55a and the change in the inclination of the link 55b from the plurality of connection points.
  • the first estimation unit 163 sets a plurality of candidate c1 to c3 for the coupling points.
  • the first estimation unit 163 adjusts the inclinations of the links 55a and 55b so that the link extension line passes through each candidate for the coupling point.
  • a value obtained by adding the change in the inclination of the link 55a and the change in the inclination of the link 55b is c1.
  • a value obtained by adding the change in the inclination of the link 55a and the change in the inclination of the link 55b is defined as c2.
  • the connection point is the connection point c3
  • the total value of the change in the inclination of the link 55a and the change in the inclination of the link 55b is defined as c3.
  • the first estimation unit 163 adjusts the inclinations of the links 55a and 55b so that the coupling point is c2 when the value c2 is the minimum among the values c1 to c3.
  • the first estimation unit 163 also performs the above-described processing for other links included in other second regions, thereby identifying a coupling point and adjusting the inclination of each link.
  • the 1st estimation part 163 adjusts the length of a link so that a link may be connected to a connection point.
  • the first estimation unit 163 estimates the group of links connected by the coupling point as the position of the skeleton included in the second region.
  • the first estimation unit 163 performs the above processing to estimate the position of the skeleton corresponding to the second regions 33 to 36, and outputs information on the position of each skeleton to the second estimation unit 164 and the output unit 165. To do.
  • the second estimation unit 164 fixes, for each angle parameter, the end points of the skeleton included in the second regions 33 to 36 and the length from the end point of the skeleton to the position of the part included in the first region 31.
  • the positions of a plurality of parts in the first region 31 are estimated.
  • the second estimation unit 164 compares the set of a plurality of parts corresponding to the angle parameter and the approximate coordinates of the plurality of parts in the first region 31, and determines the set of the plurality of parts closest to the approximate coordinates as the first Estimated as a region 31 region.
  • the second estimation unit 164 connects the estimated parts of the first region 31 with a link, and estimates what is connected with the link as the position of the skeleton included in the first region 31.
  • FIG. 15 is a diagram for explaining an example of a process of the second estimation unit according to the first embodiment.
  • F 0 is a point corresponding to the right shoulder.
  • the point corresponding to the right shoulder corresponds to the upper end point of the skeleton included in the second region 33.
  • F 1 is a point corresponding to the left shoulder.
  • the point corresponding to the left shoulder corresponds to the upper end point of the skeleton included in the second region 34.
  • F 2 is a point corresponding to the right hip joint.
  • the point corresponding to the right hip joint corresponds to the upper end point of the skeleton included in the second region 35.
  • F 3 is a point corresponding to the left hip joint.
  • the point corresponding to the left hip joint corresponds to the upper end point of the skeleton included in the second region 36.
  • the second estimation unit 164 fixes the three-dimensional coordinates F 0 to F 3 and fixes the lengths L 0 to L 5 of the links, and determines the body estimated coordinates P 0 and P 1 according to a certain angle parameter ⁇ . , P 2 is estimated.
  • the second estimator 164 includes approximate body coordinates J 0 , J 1 , J 2 corresponding to the body part among the part coordinates identified by the model matching process by the identifying unit 162, and estimated body estimated coordinates P 0 , P 1 and P 2 are associated with each other, and a distance total value D of the associated points is calculated.
  • the total distance value D is defined by Expression (3).
  • the second estimation unit 164 changes the angle parameter ⁇ within a predetermined range, and calculates a total value for each changed angle parameter.
  • the second estimation unit 164 identifies the body estimated coordinates P 0 , P 1 , P 2 in the minimum total value among the calculated total values as the part of the first region 31.
  • the second estimation unit 164 estimates a skeleton included in the first region 31 by connecting the estimated parts with links. Further, the second estimation unit 164 uses the calculated body estimation coordinates P 0 , P 1 , P 2 instead of using the part coordinates specified by the model matching process by the specification unit 162 to estimate the body for the next frame processing.
  • the coordinates J 0 , J 1 , J 2 may be updated.
  • FIG. 16 and FIG. 17 are diagrams for explaining an example of processing for estimating body estimation coordinates.
  • F 0 ⁇ F 3 shown in FIG. 16 corresponds to the F 0 ⁇ F 3 described in FIG 15.
  • the neck coordinates P 0 is a circle determined by the radii r 0 and ⁇ 0 . It becomes a point on the circumference.
  • the pelvic coordinate P 0 is a circumference determined by the radii r 2 and ⁇ 2 . This is the top point.
  • Neck coordinate P 0 and pelvic coordinate P 2 are determined by ⁇ 0 and ⁇ 2 .
  • the lengths of the neck coordinate P 0 and the spine coordinate P 1 are fixed at L 4 .
  • the length of the pelvic coordinates P 2 and spine coordinates P 1 is fixed at L 5. Therefore, when the neck coordinate P 0 and the pelvic coordinate P 2 are determined by ⁇ 0 and ⁇ 2 , the spine coordinate P 1 becomes a point on the circumference determined by the radii r 1 and ⁇ 1 .
  • the second estimation unit 164 calculates the total distance value D while changing the angle parameter.
  • the second estimation unit 164 calculates the coordinates (x 0 , y 0 , z 0 ) of O using F 0 , F 1 , L 0 , L 1 based on Expression (4).
  • the coordinates of F 0 are (x F0 , y F0 , z F0 )
  • the coordinates of F 1 are (x F1 , y F1 , z F1 ).
  • the lengths of L 0 and L 1 are equal.
  • the 2nd estimation part 164 calculates the length of b based on Formula (5). Further, the second estimation unit 164 calculates the radius r based on Expression (6).
  • Second estimation unit 164 a straight line parallel to the street y axis O, a plane perpendicular to the street F 0 F 1 a O a point a distance r from O in orthogonal projection on a straight line and P A.
  • the second estimation unit 164 assumes that the vectors of OP, OP A , and OF 1 are shown in Expression (7), respectively.
  • the second estimation unit 164 defines Expression (8) based on the relationship of OP ⁇ OF 1 .
  • the second estimation unit 164 defines Expression (9) based on the inner product relationship between OP A and OP.
  • the second estimation unit 164 defines Expression (10) from the outer product of OP A and OP.
  • the second estimation unit 164 calculates the coordinates (x, y, z) of P 0 from equations (5), (6), (7), and (8). Second estimation unit 164 is calculated by the same coordinates P 2.
  • the second estimation unit 164 calculates the coordinates of the neck P 0 , the spine P 1 , and the pelvis P 2 of the skeleton included in the first region 31 by performing the above processing.
  • the second estimation unit 164 outputs the calculated coordinate information of the neck P 0 , the spine P 1 , and the pelvis P 2 to the output unit 165.
  • the output unit 165 acquires information on the recognition results of the skeletons included in the first region 31 and the second regions 32 to 33 from the first estimation unit 163 and the second estimation unit 164, and outputs the acquired information It is.
  • skeleton recognition result information includes head, neck, spine, pelvis, left wrist, right wrist, hip joint, left ankle, right ankle, right shoulder, left shoulder, right hip joint, left hip joint, right elbow joint, left elbow joint Corresponds to the coordinates of the right and left knee joints.
  • the output unit 165 may output the information on the recognition result of the skeleton in association with the three-dimensional data acquired from the 3D sensor 110.
  • the second estimation unit 164 outputs three-dimensional data and information on the recognition result of the skeleton side by side in the format of (x, y, z, d) as a color for drawing d. It is assumed that the color d to be drawn defines in advance a color corresponding to the numerical value of d.
  • the output unit 165 may display information on the skeleton recognition result on the display unit 140 in accordance with the information on the skeleton recognition result.
  • the identification unit 162, the first estimation unit 163, and the second estimation unit 164 described above repeatedly execute the above process for each predetermined frame to generate a recognition result of the skeleton corresponding to the predetermined frame.
  • the output unit 165 sequentially stores the skeleton recognition results in the skeleton data table 153 in association with the identification numbers.
  • FIG. 18 is a flowchart illustrating the processing procedure of the skeleton estimation apparatus according to the first embodiment.
  • the specifying unit 162 of the skeleton estimation device 100 acquires information on observation points included in the background difference area (step S50).
  • the identifying unit 162 executes binarization processing (step S51).
  • the identifying unit 162 performs a thinning process (step S52).
  • the identification unit 162 executes feature point extraction processing (step S53).
  • the identification unit 162 executes model matching processing (step S54).
  • the first estimation unit 163 of the skeleton estimation apparatus 100 executes a cylindrical main axis determination process (step S55).
  • the first estimation unit 163 performs a process for determining the cylinder radius and the cylinder center (step S56).
  • the first estimation unit 163 performs a link coupling process (step S57).
  • the second estimation unit 164 of the skeleton estimation apparatus 100 performs the skeleton recognition process of the trunk (step S58).
  • the output unit 165 of the skeleton estimation apparatus 100 outputs a skeleton recognition result (step S59).
  • FIG. 19 is a flowchart illustrating a processing procedure of the body skeleton recognition process.
  • the second estimation unit 164 of the skeleton estimation device 100 acquires the coordinates of both shoulders, both hip joints, and the length between each joint (step S61).
  • Second estimation unit 164 updates the parameter theta 0 (step S62), and updates the parameter theta 2 (step S63). Second estimation unit 164 calculates the neck coordinate P 0 (step S64), and calculates the pelvic coordinate P 2 (step S65). The second estimation unit 164 determines whether or not the neck-pelvic distance P 0 P 2 is shorter than the total link length from the neck to the pelvis (step S66).
  • step S66 If the neck-pelvic distance P 0 P 2 is not shorter than the total link length from the neck to the pelvis (step S66, No), the second estimating unit 164 proceeds to step S63. On the other hand, when the neck-pelvic distance P 0 P 2 is shorter than the total link length from the neck to the pelvis (step S66, Yes), the second estimating unit 164 proceeds to step S67.
  • Second estimation unit 164 updates the parameter theta 1 (step S67). Second estimation unit 164 calculates the spine coordinates P 1 (step S68). The second estimating unit 164 calculates the distance total value D of PJ (step S69).
  • the second estimation unit 164 determines whether or not the distance total value D is the minimum (step S70). If the total distance value D is not the minimum (No at Step S70), the second estimating unit 164 proceeds to Step S72. On the other hand, when the total distance value D is the minimum (step S70, Yes), the second estimation unit 164 proceeds to step S71.
  • the second estimation unit 164 determines whether or not selection of all ⁇ 1 has been completed (step S72). Second estimation unit 164, if the selection of all of the theta 1 is not completed (step S72, No), the process proceeds to step S67. Second estimation unit 164, if the selection of all of the theta 1 is completed (step S72, Yes), the process proceeds to step S73.
  • the second estimation unit 164 determines whether or not selection of all ⁇ 2 has been completed (step S73). If the selection of all ⁇ 2 is not completed (No at Step S73), the second estimating unit 164 proceeds to Step S63. The second estimation unit 164 proceeds to step S74 when selection of all ⁇ 2 is completed (step S73, Yes).
  • the second estimation unit 164 determines whether or not selection of all ⁇ 0 has been completed (step S74). The second estimating unit 164 proceeds to Step S62 when selection of all ⁇ 0 is not completed (No at Step S74). When the selection of all ⁇ 0 is completed (Yes at Step S74), the second estimating unit 164 proceeds to Step S75.
  • the second estimation unit 164 calculates the coordinates of the neck P 0 , the spine P 1 , and the pelvis P 2 using ⁇ min (step S75).
  • the second estimation unit 164 outputs the coordinates of the neck P 0 , the spine P 1 , and the pelvis P 2 (step S76).
  • the skeleton estimation apparatus 100 roughly identifies the region of the subject's head, both arms, torso, and both legs, recognizes the positions of the skeletons of both arms and both legs, and then recognizes the recognition results of the positions of both arms and both legs. As a constraint, the body skeleton is recognized. As a result, the skeleton of the subject can be recognized quickly and accurately.
  • the skeleton estimation apparatus 100 calculates a plurality of candidates for the position of the skeleton of the torso by changing the angle parameter in a state where the coordinates of the skeletons of both arms and both legs and the length between the joints are fixed.
  • the skeleton estimation apparatus 100 estimates a candidate close to the torso approximate coordinates out of the torso skeleton position candidates as the torso skeleton position.
  • the second estimation unit 164 calculates a plurality of candidates for the position of the skeleton of the torso by changing the angle parameter in a state where the coordinates of the skeletons of both arms and both feet and the length between the joints are fixed.
  • the length between the joints may be adjusted according to the scale of the subject. By executing such processing, the skeleton of the subject can be recognized more accurately.
  • FIG. 20 is a diagram illustrating an example of a hardware configuration of the skeleton estimation device.
  • the computer 170 includes a CPU 171 that executes various arithmetic processes, an input device 172 that receives input of data from a user, and a display 173.
  • the computer 170 also includes a reading device 174 that reads a program and the like from a storage medium, and an interface device 175 that exchanges data with other computers via a network.
  • the computer 170 has a 3D sensor 176.
  • the computer 170 also includes a RAM 177 that temporarily stores various types of information and a hard disk device 178.
  • the devices 171 to 178 are connected to the bus 179.
  • the hard disk device 178 has a specific program 178a, a first estimation program 178b, and a second estimation program 178c.
  • the CPU 171 reads out each program 178a to 178c and develops it in the RAM 177.
  • the specific program 178a functions as a specific process 177a.
  • the first estimation program 178b functions as a first estimation process 177b.
  • the second estimation program 178c functions as a second estimation process 177c.
  • the process of the specifying process 177a corresponds to the process of the specifying unit 162.
  • the process of the first estimation process 177b corresponds to the process of the first estimation unit 163.
  • the process of the second estimation process 177c corresponds to the process of the second estimation unit 164.
  • each program does not necessarily have to be stored in the hard disk device 178 from the beginning.
  • each program is stored in a “portable physical medium” such as a flexible disk (FD), a CD-ROM, a DVD disk, a magneto-optical disk, and an IC card inserted into the computer 170. Then, the computer 170 may read the programs 178a to 178c from these and execute them.
  • a “portable physical medium” such as a flexible disk (FD), a CD-ROM, a DVD disk, a magneto-optical disk, and an IC card inserted into the computer 170.
  • the computer 170 may read the programs 178a to 178c from these and execute them.
  • the skill determination device is a device that extracts user motion data based on the recognition result of the user's skeleton and determines the skill of the user.
  • FIG. 21 is a functional block diagram illustrating the configuration of the skill determination apparatus according to the second embodiment.
  • the skill determination device 100A is connected to the motion sensors 10a and 10b.
  • the skill determination apparatus 100A includes sensing units 110a and 110b, a storage unit 120A, a model data generation unit 130A, a skill determination definition unit 140A, a phase determination unit 150A, a skill determination unit 160A, and an output unit 170A.
  • the motion sensors 10a and 10b are collectively referred to as the motion sensor 10 as appropriate.
  • the motion sensor 10 is a sensor that detects the movement of a person or an object.
  • the motion sensor 10 detects the three-dimensional coordinates of a human feature point, and outputs sensing information in which the feature point is associated with the three-dimensional coordinate to the skill determination device 100A.
  • the person's feature points correspond to, for example, the person's head, neck, back, waist, and other joint parts.
  • the motion sensors 10a and 10b have the configuration of the skeleton estimation apparatus 100 described in the first embodiment.
  • the motion sensor 10 may output sensing information using any conventional technique.
  • the motion sensor 10 corresponds to a reflective MA motion sensor and a light receiving thermal sensor.
  • the sensing information may be extracted by attaching a three-axis acceleration sensor or a three-axis gyro sensor to a person.
  • the sensing unit 110a is a processing unit that acquires sensing information of a user who receives guidance from an expert from the motion sensor 10. In the following description, a user who receives guidance from an expert is simply referred to as a user.
  • the sensing unit 110a continuously acquires sensing information from the motion sensor 10 as frame data and outputs the frame information to the phase determination unit 150A.
  • FIG. 22 is a diagram showing an example of the data structure of frame data.
  • the frame data is continuously acquired by the sensing unit 110a and output to the phase determination unit 150A.
  • Each frame data is associated with a frame number.
  • each frame data is associated with time information and is output to phase determination unit 150A in chronological order.
  • the frame data 20 of the frame number “102” indicates the three-dimensional coordinates of the feature point of the user detected by the motion sensor 10 at the time “t2”.
  • the sensing unit 110b is a processing unit that acquires expert sensing information from the motion sensor 10.
  • the sensing unit 110b continuously obtains the sensing information from the motion sensor 10 and outputs the frame data to the model data generation unit 130A.
  • the data structure of expert frame data is the same as the data structure of frame data shown in FIG.
  • frame data included in expert motion data is referred to as first frame data.
  • Frame data included in the user's motion data is referred to as second frame data.
  • the storage unit 120A has model data 120a and skill determination definition data 120b.
  • the storage unit 120A corresponds to, for example, a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory (Flash Memory) or a storage device such as an HDD (Hard Disk Drive).
  • a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory (Flash Memory) or a storage device such as an HDD (Hard Disk Drive).
  • the model data 120a is information for associating the first frame data with the phase type of the first frame data.
  • the model data 120a corresponds to phase definition information.
  • the types of phases include “start”, “backswing”, “top”, “impact”, “follow”, “end”, and the like.
  • the model data 120a is generated by a model data generation unit 130A described later.
  • FIG. 23 is a diagram showing an example of the data structure of model data.
  • the model data 120a includes metadata 30A and motion data 20A.
  • the metadata 30A is information that associates the frame number of the first frame data with the type of phase.
  • the motion data 20A illustrated in FIG. 23 includes a plurality of first frame data.
  • the region 30a defines that the frame type of the first frame data with the frame number “100” is “start”.
  • the area 30b defines that the frame type of the first frame data having the frame number “150” is “backswing”.
  • the area 30c defines that the frame type of the first frame data having the frame number “250” is “top”.
  • the area 30d defines that the frame type of the first frame data having the frame number “450” is “end”.
  • the skill determination definition data 120b is defined by associating the feature amount of the user's motion derived from the feature points included in the plurality of second frame data, the skill determination criterion, and the phase type to be determined. Information.
  • FIG. 24 is a diagram illustrating an example of the data structure of skill determination definition data.
  • FIG. 25 is a diagram for supplementarily explaining skill determination definition data.
  • the skill determination definition data 120b associates module names, skill determination names, and parameter definitions.
  • the module name is a module name used when the skill determination unit 160A described later performs skill determination.
  • the skill judgment name defines a skill judgment name.
  • the parameter definition has a target phase, a comparison position, and a reference parameter.
  • the skill indicates, for example, a series of movements, postures, and joint angles while the expert performs a golf swing or the like.
  • the skill judgment name “movement of head” defines the movement of the head of an expert during a swing as a skill.
  • skill judgment criteria are based on a series of motions, postures, and joint angles of experts. To what extent are a series of motions, postures, and joint angles of users compared to those of specialists. Depending on whether they are different, the evaluation is performed. For example, a set of a target phase, a comparison position, and a reference parameter corresponds to a skill determination criterion. A process for determining the skill based on the criterion for determining the skill will be described later.
  • the target phase is information that identifies the type of phase that is a skill determination target.
  • the comparison position is information defining the type of the second frame data to be compared and the position of the feature point.
  • the reference parameter and the reference value are numerical values used when determining whether the skill is good or bad.
  • This “head movement” skill determination is to determine whether the user's head movement is good or bad while swinging a golf driver. Since the target phase is “start-follow”, the type of the second phase to be determined is “start, backing swing, top, impact, follow” as shown in FIG.
  • the comparison position is “start: head, current: head”. For this reason, the position of the feature point of the comparison source is the position of the first feature point of the second frame data among the second frame data whose phase type is “strat”. The position of the comparison feature point is the position of the feature point at the head of the current second frame data.
  • Standard parameters are “8, 10, 20”.
  • the determination result is “Excellent”.
  • the difference between the positions of the feature points to be compared is “8 cm or more and less than 10 cm”, it is defined that the determination result is “Good”.
  • the difference between the positions of the feature points to be compared is “10 cm or more and less than 20 cm”, it is defined that the determination result is “Bad”.
  • the skill determination of the “left elbow angle” is to determine whether the left elbow angle of the user is good or bad while the driver swings.
  • the target phase is “start-impact”.
  • the type of second phase to be determined is “start, backing, top, impact” as shown in FIG.
  • the comparison position is “current: left shoulder, current: left elbow, current: left wrist”. Therefore, an angle formed by a line segment passing through the left shoulder feature point and the left elbow feature point of the current second frame data and a straight line passing through the left elbow feature point and the left wrist feature point is a determination target. .
  • the reference parameters are “(135-180), (130-135, 180-190), (110-130, 190-200)”.
  • the formed angle is included in “135-180”, it is defined that the determination result is “Excellent”.
  • the formed angle is included in “130-135, 180-190”, it is defined that the determination result is “Good”.
  • the formed angle is included in “110-130, 190-200”, it is defined that the determination result is “Bad”.
  • the skill determination of the “forward leaning posture” is for determining whether the forward leaning posture of the user is good or bad while swinging the driver.
  • the target phase is “start-impact”.
  • the type of second phase to be determined is “start, backing, top, impact” as shown in FIG.
  • the comparison position is “current: head, current: waist”. For this reason, the angle formed by the line segment passing through the head feature point and the waist feature point of the current second frame data and the perpendicular is a determination target.
  • Standard parameters are “(25-40), (20-25, 40-55), (8-20, 55-60)”.
  • the determination result is “Excellent”.
  • the formed angle is “20-25, 40-55”, it is defined that the determination result is “Good”.
  • the formed angle is “8-20, 55-60”, it is defined that the determination result is “Bad”.
  • the model data generation unit 130A is a processing unit that acquires expert motion data from the sensing unit 110b and generates model data 120a.
  • the model data generation unit 130A stores the generated model data 120a in the storage unit 120A.
  • the model data generation unit 130A displays the first frame data included in the motion data of the expert on the display device, and receives from the input device which first frame data corresponds to which phase type.
  • illustration of the display device and the input device is omitted.
  • the expert operates the input device to input the relationship between the first frame data and the phase type to the model data generation unit 130A. Based on the information received from the input device, the example data generation unit 130A associates the frame number of the first frame data with the type of phase to generate the metadata 30A illustrated in FIG.
  • the model data generation unit 130A stores model data 120a having metadata 30A and motion data 20A in the storage unit 120A.
  • the skill determination definition unit 140A is a processing unit that generates skill determination definition data 120b.
  • the skill determination definition unit 140A stores the generated skill determination definition data 120b in the storage unit 120A.
  • the skill determination definition unit 140A displays a skill determination definition setting screen on a display device, and receives information regarding the skill determination definition from the input device.
  • the expert operates the input device to input information related to the skill determination definition.
  • the skill determination definition unit 140A generates skill determination definition data 120b based on the information related to the skill determination definition and stores it in the storage unit 120A.
  • FIG. 26 is a diagram illustrating an example of a display screen displayed on the display device.
  • the display screen 50 includes a phase setting screen 50a displayed by the model data generating unit 130A and a skill setting screen 50b displayed by the skill determination defining unit 140A. Further, the display screen 50 may display a reproduction screen 50c for displaying expert motion data and a frame number display screen 50d for the current first frame data.
  • the expert operates the input device to input the correspondence between the frame number and the phase type on the phase setting screen 50a while referring to the reproduction screen 50c and the frame number display screen 50d.
  • the model data generation unit 130A generates model data 120a based on information input to the phase setting screen 50a.
  • the expert operates the input device and selects one of the checker names on the skill setting screen 50b.
  • a parameter setting screen displayed when “PositionChecker”, “AngleChecker (1)”, and “AngleChecker (2)” are selected will be described.
  • FIG. 27 is a diagram illustrating an example of a parameter setting screen of “PositionChecker”.
  • the parameter setting screen 60 includes an area 61 for defining a determination target and an area 62 for defining a determination criterion.
  • the area 61 includes an area 61a that defines a comparison source, an area 61b that defines a comparison destination, and an area 61c that defines a target section.
  • the expert operates the input device to input information in each area.
  • the position of the feature point of the comparison source is the head of the first second frame data among the second frame data whose phase type is “start”. It is defined to be the position of a feature point.
  • the position of the feature point of the comparison destination is the position of the feature point at the head of the current second frame data.
  • the target phase is “start-follow”.
  • the criterion parameter is “8, 10, 20”.
  • the skill determination definition unit 140A For example, based on the information input in FIG. 27, the skill determination definition unit 140A generates a record corresponding to the module name “PositionChecker” in FIG.
  • FIG. 28 is a diagram showing an example of a parameter setting screen of “AngleChecker (1)”.
  • the parameter setting screen 70 includes an area 71 for defining a determination target and an area 72 for defining a determination criterion.
  • the area 71 includes an area 71a that defines a feature point to be compared and an area 71b that defines a target section. The expert operates the input device to input information in each area.
  • the region 71a defining the feature points to be compared includes a line segment passing through the left shoulder feature point and the left elbow feature point of the current second frame data, the left elbow feature point, and the left hand. It is defined that an angle formed with a straight line passing through the feature point of the neck is a determination target. In the area 71b for defining the target section, it is defined that the target phase is “start-impact”. Various criteria parameters are defined in the region 72 for defining the judgment criteria.
  • the skill determination definition unit 140A For example, based on the information input in FIG. 28, the skill determination definition unit 140A generates a record corresponding to the module name “AngleChecker (1)” in FIG.
  • FIG. 29 is a diagram illustrating an example of a parameter setting screen of “AngleChecker (2)”.
  • the parameter setting screen 80 includes an area 81 for defining a determination target and an area 82 for defining a determination criterion.
  • the region 81 includes a region 81a that defines a perpendicular, a region 81b that defines a feature point to be compared, and a region 81c that defines a target section.
  • the expert operates the input device to input information in each area.
  • the three-dimensional coordinates of the start point and end point of the perpendicular are defined in the area 81a for defining the perpendicular.
  • a line segment passing through the head feature point and the waist feature point of the current second frame data is defined in the region 81b for defining the feature point to be compared.
  • the target phase is “start-impact”.
  • Various reference parameters are defined in the region 82 where the determination criteria are defined.
  • the skill determination definition unit 140A For example, based on the information input in FIG. 29, the skill determination definition unit 140A generates a record corresponding to the module name “AngleChecker (2)” in FIG.
  • the phase determination unit 150A is a processing unit that compares each first frame data included in the model data 120a with the second frame data of the user and determines the type of phase corresponding to the second frame data.
  • the phase determination unit 150A adds the determined phase type to the acquired frame data and outputs it to the skill determination unit 160A.
  • the phase determination unit 150A stores the second frame data of the user in the memory, and sequentially executes correction processing, feature amount calculation, and frame matching.
  • the phase determination unit 150A performs vertical axis correction of the second frame data.
  • the phase determination unit 150A displays the second frame data on the display device, accepts input of correction information from the user, and associates the vertical axis of the second frame data with a vertical line.
  • the phase determination unit 150A may perform correction so that the orientation of the user is the front orientation. After receiving the input of the correction information, the phase determination unit 150A may perform the vertical axis correction and the direction correction of the remaining second frame data using the correction information.
  • the phase determination unit 150A also executes a correction process for suppressing variations in the position of the feature points of the second frame data. For example, the phase determination unit 150A suppresses the variation by setting the average value of the positions of the feature points of the preceding and succeeding second frame data as the position of the feature point of the second frame data. Further, the phase determination unit 150A may remove a noise component included in the second frame data using a low-pass filter.
  • feature amount calculation executed by the phase determination unit 150A will be described.
  • the three-dimensional coordinates of feature points for each joint included in the second frame data are calculated as feature amounts.
  • phase determination unit 150A may calculate a three-dimensional coordinate such as a hand, a waist, and a finger, and speed / acceleration as a feature amount.
  • the phase determination unit 150A may calculate the three-dimensional coordinates of all joints and the speed / acceleration as the feature amount. Further, the phase determination unit 150A may calculate the center of gravity position of all joint positions as a feature amount.
  • FIG. 30 is a diagram for explaining an example of frame matching.
  • the current second frame data the second frame data S 0.
  • the first frame data included in the model data 120a is referred to as first frame data t1 to t6, respectively.
  • Phase determination unit 150A is based on the equation (11), a second frame data S 0, for the first frame data t1 ⁇ t6, it calculates the average value of the distance for each feature point of the joint, respectively.
  • the average value of the distance for each feature point of the joint is expressed as “joint average distance”.
  • xS 0j , yS 0j , and zS 0j are three-dimensional coordinates of feature points of a certain joint (joint corresponding to the numerical value of j) in the second frame data.
  • x tij , y tij , and z tij are three-dimensional coordinates of feature points of a certain joint (joint corresponding to the numerical value of j) in the first frame data ti.
  • n is the number of feature points of the joint.
  • the phase determination unit 150A identifies a set of the second frame data S0 and the first frame data that minimizes the joint average distance among the joint average distances calculated by Expression (11).
  • the phase determination unit 150A since the joint average distance in the set of the second frame data S 0 to the first frame data t 2 is minimized, the phase determination unit 150A includes a first corresponding to the second frame data S 0 frame data and determines the first frame data t 2. Further, the phase determination unit 150A determines the type of the phase of the second frame data S 0, as the type of phase corresponding to the first frame data t2.
  • the phase determination unit 150A corrects the value of the joint average distance using the weight when calculating the joint average distance using Expression (11).
  • the phase determination unit 150A may correct the joint average distance by dividing the joint average distance by the weight.
  • FIG. 31 is a diagram for explaining the weights.
  • the horizontal axis corresponds to the frame number of the first frame data
  • the vertical axis corresponds to the weight.
  • the total weight corresponding to each frame number is 1.
  • the first frame data that matches the second frame data S0 is the first frame data near the first frame data that matched the previous second frame data S- 1 .
  • the first frame data that matches the second frame data S ⁇ 1 is the first frame data t 4
  • the first frame data that matches the second frame data S 0 is after the first frame data t 4 .
  • the first frame data is nearby.
  • the first frame data closer to the matched first frame data in the first frame after the first frame data matched with the previous second frame data S- 1 is increased in weight. Further, even in the vicinity of the matched first frame data, since the possibility is low in the frame before the matched first frame data, the weight is reduced.
  • the phase determination unit 150A repeatedly performs the above process on other second frame data to determine the first frame data corresponding to each second frame data, and the phase type of each second frame data Determine.
  • the phase determination unit 150A extracts second frame data having a phase type from start to end from the second frame data, saves it as a motion data in a file, and outputs it to the output unit 170A.
  • the skill determination unit 160A based on the skill determination definition data 120b and the user's motion, posture, and joint feature amount derived from the feature points included in the second frame data extracted for each phase type, It is a processing unit that determines a user's skill for each type of phase.
  • the skill determination unit 160A refers to the skill determination definition data 120b and generates a determination module. For example, in the example illustrated in FIG. 24, the skill determination unit 160A generates a “PositionChecker” module, an “AngleChecker (1)” module, and an “AngleChecker (2)” module.
  • the skill determination unit 160A outputs the second frame data received from the phase determination unit 150A to the corresponding module based on the type of phase corresponding to the second frame data and the skill determination definition data 120b. To do.
  • the module When receiving the second frame data, the module outputs the result of the skill determination of the user based on the data defined in the skill determination definition data 120b.
  • Skill determination unit 160A the classification of the phase to obtain a second frame data S 0 of the "start”.
  • the skill judging section 160A outputs the second frame data S 0 to "PositionChecker” module 160a.
  • "PositionChecker” module 160a stores the 3-dimensional coordinates of the feature points of the head of the second frame data S 0.
  • the skill judging section 160A may output a second frame data S 0 to "AngleChecker (1)” module 160b To do.
  • “AngleChecker (1)” module 160b based on the comparison position and the reference parameter, by evaluating the second frame data S 0, performs skill judgment of the user, and outputs the determination result.
  • the “angle checker (1)” module 160b outputs a determination result “Excellent” when the angle formed by “angle checker (1)” is included in “135-180”.
  • the “angle checker (1)” module 160b outputs a determination result “Good” when the angle formed is included in “130-135, 180-190”.
  • the “angle checker (1)” module 160b outputs a determination result “bad” when the angle formed is included in “110-130, 190-200”.
  • the “AngleChecker (1)” module 160b may output a comment separately from the determination result. For example, the “angle checker (1)” module 160b outputs the comment “bending” when the angle formed is included in “130-135”, and the comment is output when the angle formed is included in “180-190”. Output “stretching”. The “AngleChecker (1)” module 160b outputs the comment “too bending” when the formed angle is included in “110-130”, and the comment “stretch” when the formed angle is included in “190-200”. Too much "is output.
  • the skill judging section 160A may output a second frame data S 0 to "AngleChecker (2)” module 160c To do.
  • “AngleChecker (2)” module 160c based on the comparison position and the reference parameter, by evaluating the second frame data S 0, performs skill judgment of the user, and outputs the determination result.
  • the “AngleChecker (2)” module 160c outputs a determination result “Excellent” when the angle formed by “AngleChecker (2)” is included in “25-40”.
  • the “angle checker (2)” module 160c outputs a determination result “Good” when the angle formed is “20-25, 40-55”.
  • the “angle checker (2)” module 160c outputs the determination result “bad” when the angle formed is “8-20, 55-60”.
  • the “AngleChecker (2)” module 160c may output a comment separately from the determination result. For example, the “AngleChecker (2)” module 160c outputs the comment “Standing” when the formed angle is included in “20-25”, and the comment is displayed when the formed angle is included in “40-55”. Outputs “Kagami”. The “AngleChecker (2)” module 160c outputs the comment “too much standing” when the formed angle is included in “8-20”, and the comment “Kagami” when the formed angle is included in “55-60”. Too much "is output.
  • the skill determination unit 160A acquires the second frame data Sm whose phase type is “follow”. As described in FIG. 24, since the target phase of “PositionChecker” is “start-follow”, the skill determination unit 160A outputs the second frame data Sm to the “PositionChecker” module 160a.
  • the “PositionChecker” module 160a evaluates the second frame data Sm based on the comparison position and the reference parameter, thereby determining the skill of the user and outputting the determination result. For example, the “PositionChecker” module 160 a determines the determination result when the difference between the position of the head feature point of the second frame data S 0 and the position of the head feature point of the second frame data Sm is “less than 8 cm”. Outputs “Excellent”. "PositionChecker” module 160a includes a position of the characteristic point of the head of the second frame data S 0, the difference between the position of the characteristic point of the head of the second frame data S m is "8cm or less than 10cm" in the case of, The determination result “Good” is output.
  • “PositionChecker” module 160a includes a position of the characteristic point of the head of the second frame data S 0, the difference between the position of the characteristic point of the head of the second frame data S m is "more than 10cm, less than 20cm" in the case of, The determination result “bad” is output.
  • the “PositionChecker” module 160a may output a comment separately from the determination result. For example, the “PositionChecker” module 160 a makes a comment when the difference between the position of the head feature point of the second frame data S 0 and the position of the head feature point of the second frame data Sm is “10 cm” or more. Outputs “too much movement”.
  • the skill determination unit 160A transfers the second frame data Sm to the “AngleChecker (1)” module 160b. Do not output. Since the target phase of “AngleChecker (2)” is “start-impact”, the skill determination unit 160A does not output the second frame data Sm to the “AngleChecker (2)” module 160c. Note that the skill determination unit 160A may output the second frame data to each module, and the module may individually determine whether to process the second frame data.
  • the skill determination unit 160A outputs the determination result information obtained by associating the determination result of each module with the second frame data to the output unit 170A.
  • the output unit 170A is a processing unit that outputs the determination result of the skill determination unit 160A by image information, audio information, or physical stimulation to the user.
  • image information e.g., portrait, iris, iris, etc.
  • FIG. 34 is a diagram (1) illustrating an example of a display screen generated by the output unit.
  • the display screen 200 includes a self data screen 200a, a model data screen 200b, and a skill determination screen 200c.
  • the output unit 170A displays the second frame data of the user acquired from the skill determination unit 160A on the own data screen 200a. Further, the output unit 170A may display each feature point of the second frame data in association with the feature amount of the motion, posture, joint, and comment. In the example shown in FIG. 34, the output unit 170A displays the head movement (11 cm, too much movement) at the head of the feature point. The output unit 170A displays the left elbow angle (154 °) on the left shoulder of the feature point.
  • the output unit 170A displays the first frame data of the model data 120a on the model data screen 200b.
  • the output unit 170A associates the phase type of the first frame data with the phase type of the second frame data displayed on the own data screen 200a.
  • the output unit 170A may display each feature point of the first frame data in association with the feature amount of the motion, posture, and joint.
  • the output unit 170A displays the head movement (9 cm) at the head of the feature point.
  • the output unit 170A displays the left elbow angle (155 °) on the left shoulder of the feature point.
  • the output unit 170A causes the skill determination screen 200c to display the skill determination result acquired from the skill determination unit 160A.
  • the output unit 170A may display the skill determination name, the determination result, the motion, posture, joint feature amount, and the comment in association with each other.
  • the output unit 170A may update the display screen of FIG. 34 in real time 200a, 200b, and 200c each time each second frame data is acquired. Further, after determining that the phase type is “End”, the frame data up to start-end may be reproduced on the same screen as this screen.
  • the output unit 170A sequentially changes the phase of the second frame data on the own data screen 200a of the display screen 200 of FIG. 34, and switches the contents of the model data screen 200b and the skill determination screen 200c accordingly. May be performed.
  • the output unit 170A may generate a display screen by associating the type of each phase, the second frame data, and the determination result.
  • FIG. 35 is a diagram (2) illustrating an example of a display screen generated by the output unit. As shown in the display screen 210 of FIG. 35, the output unit 170A displays the second frame data of each phase type and the determination result in association with each other. For example, the output unit 170A may display the skill determination name, the determination result, the motion, posture, joint feature amount, and the comment in association with each other. The output unit 170A may display the image information in addition to the 3D skeleton information.
  • the output unit 170A may output the skill result and points to be corrected by voice in accordance with the determination result output from the skill determination unit 160A. For example, when the determination result regarding the head movement is Bad, the output unit 170A outputs a sound “the head is moving too much”. Which sound is to be output for which determination result is set in a table or the like in advance, and the output unit 170A outputs the sound based on the table.
  • the user wears equipment including a small motor, and the output unit 170A operates the small motor in accordance with the determination result.
  • the output unit 170A changes the rotation speed of the small motor in accordance with various determination results “Excellent, Good, Bad”.
  • the rotation speed of the small motor with respect to the determination result is set in advance in a table or the like, and the output unit 170A rotates the small motor based on the table.
  • the user wears a cooling device such as a Peltier element, and the output unit 170A cools the cooling device in accordance with the determination result.
  • the output unit 170A changes the temperature of the cooling device in accordance with various determination results “Excellent, Good, Bad”.
  • the temperature of the cooling device with respect to the determination result is set in a table or the like in advance, and the output unit 170A controls the cooling device based on the table.
  • the user wears a device through which a low-frequency current flows, and the output unit 170A generates a current in the device according to the determination result.
  • the output unit 170A changes the magnitude of the current in accordance with various determination results “Excellent, Good, Bad”.
  • the magnitude of the current with respect to the determination result is set in a table or the like in advance, and the output unit 170A controls the device based on the table.
  • the output unit 170A may cause the user to experience the movement of the expert by causing the user to wear the powered suit or artificial muscle and moving the powered suit or artificial muscle according to the motion data of the expert. .
  • FIG. 36 is a flowchart illustrating a processing procedure of the skill determination apparatus.
  • the phase determination unit 150A of the skill determination apparatus 100A reads the model data 120a (step S101).
  • the skill determination unit 160A of the skill determination apparatus 100A reads the skill determination definition data 120b (step S102).
  • the skill determination unit 160A generates a module and sets parameters based on the skill determination definition data 120b (step S103).
  • the phase determination unit 150A starts acquiring user motion data (step S104).
  • the skill determination device 100A determines whether an end event has been detected via the input device (step S105).
  • step S105 When the skill determination device 100A detects an end event via the input device (step S105, Yes), the phase determination unit 150A executes the motion data acquisition end process of the user (step S106).
  • the skill determination device 100A determines whether the skill determination process event is detected via the input device. (Step S107).
  • the skill determination apparatus 100A detects an event of the skill determination process via the input device (step S107, Yes)
  • the skill determination unit 160A executes the skill determination process (step S108), and the process proceeds to step S105.
  • the event of the skill determination process is an event that occurs when the sensing unit 110a acquires frame data from the motion sensor.
  • Step S109 the output unit 170A of the skill determination apparatus 100A executes the reproduction process (Step S109). ), The process proceeds to step S105.
  • FIG. 37 is a flowchart showing a processing procedure of skill determination processing.
  • the phase determination unit 150A of the skill determination apparatus 100A stores the second frame data in the memory (step S201).
  • the phase determination unit 150A corrects the second frame data (step S202).
  • Phase determination unit 150A calculates the feature amount of the second frame data (step S203).
  • the phase determination unit 150A extracts the first frame data having the closest feature amount to the second frame data from the model data 120a (step S204).
  • the phase determination unit 150A extracts the type of phase corresponding to the first frame data, and assigns the extracted phase type to the second frame data (step S205).
  • the phase type is not only a phase type corresponding to one-to-one frame numbers such as “start” and “backswing” as indicated by 50a in FIG. 26, but also between “start” and “backswing”.
  • a phase type representing a certain phase is also included.
  • the phase determination unit 150A determines whether or not the type of the extracted phase is from Start to End (step S206). If the phase type is not within the range from start to end (step S206, No), the phase determination unit 150A deletes the second frame data stored in step S201 from the memory (step S213), and ends the skill determination process.
  • step S206 if the phase type is within the range from start to end (step S206, Yes), the skill determination unit 160A outputs the second frame data to the module corresponding to the phase type and determines the skill. (Step S207). The output unit 170A outputs the determination result (step S208).
  • the phase determining unit 150A determines whether or not the type of the extracted phase is End (step S209). When the extracted phase type is not “End” (step S209, No), the phase determination unit 150A ends the skill determination process.
  • step S209 when the type of the extracted phase is End (step S209, Yes), the phase determination unit 150A proceeds to step S210.
  • the phase determination unit 150A extracts a series of second frame data having a phase type from Start to End from the second frame data stored in the memory, and stores the second frame data as motion data in a file (step S210).
  • 170 A of output parts output the determination result of a series of motion data (step S211), delete the 2nd frame data stored in S201 from memory (step S212), and complete
  • FIG. 38 is a flowchart illustrating a processing procedure of setting processing.
  • the skill determination apparatus 100A determines whether or not an event has been detected (step S301). If the event is not detected (No at Step S301), the skill determination device 100A proceeds to Step S301 again.
  • the skill determination apparatus 100A proceeds to step S302 when a motion data acquisition selection event is detected (step S301, motion data acquisition selection).
  • step S301 motion data acquisition selection.
  • the model data generation unit 130A or the skill determination definition unit 140A acquires the motion data and stores it in the memory (step S302), and proceeds to step S301.
  • step S301 phase determination selection event
  • step S301 phase setting selection
  • step S301 phase setting selection
  • step S301 phase setting selection
  • step S303 the skill determination apparatus 100A proceeds to step S303.
  • the example data generation unit 130A stores the phase type and the frame number in the memory (step S303), and proceeds to step S301.
  • step S301 skill determination definition selection
  • step S304 the process proceeds to step S304.
  • the skill determination definition unit 140A stores the module name, skill determination name, and parameter definition to be used in the memory (step S304), and proceeds to step S301.
  • step S301 save selection
  • the model data generation unit 130A saves the correspondence between the motion data, the phase type, and the frame number stored in the memory.
  • Step S305 The skill determination definition unit 140A outputs the skill determination definition data 120b stored in the memory to a file (step S306), and proceeds to step S301.
  • the skill determination apparatus 100A extracts second frame data corresponding to each phase type from the user motion data, and uses the second frame data for the second frame data for each phase type based on the skill determination definition data 120b.
  • the skill of the person For this reason, according to the skill determination apparatus 100A, a user's skill can be determined automatically for general purposes.
  • the skill determination definition unit 140A appropriately updates the skill determination definition data 120b for performing skill determination based on information from the input device, and the skill determination unit 160A, based on the skill determination definition data 120b, Perform skill judgment.
  • the skill determination definition data 120b can be appropriately updated by the skill determination definition unit 140A. Can be increased.
  • the skill determination definition data 120b is defined by a combination of modules and parameter definitions, it is easy to reuse modules and parameter definitions defined in other objects as different objects.
  • the skill determination device 100A displays the skill determination result on the display screen in association with the motion data of the user and the motion data of the expert. Thereby, even if an expert is not near, the point which should be improved by the user himself is understood. Also, without having to worry about the screen one after another, it is possible to play back after swinging and grasp the improvements. In addition, the difference between the user himself and the expert can be compared to help improve skills. In addition, since the second frame data of the user is managed in association with the type of phase, handling in the case of performing analysis or the like can be facilitated.
  • the skill determination apparatus 100A compares the model data 120a with each second frame data included in the motion data of the user, determines the type of the phase corresponding to the second frame data, and determines the type for each phase type. Two frame data is extracted. For example, the skill determination apparatus 100A specifies the first frame data corresponding to the second frame data from the similarity between each first frame data and the second frame data, and the type of phase corresponding to the first frame data Is determined as the type of the second frame data. For this reason, the type of the second frame data of the user can be determined with high accuracy, and the skill determination accuracy can be improved.
  • the skill determination device 100A corrects the similarity between the first frame data and the second frame data with a weight when performing matching.
  • This weight is determined according to FIG. 31 based on the time of the first frame data selected last time and the time of the first frame data that is the target of calculating the similarity degree this time. Accordingly, it is possible to prevent the first frame data matching with the second frame data from moving back and forth or jumping.
  • the skill determination device 100A outputs the determination result of the skill by image information, audio information, or physical stimulation to the user. Thereby, a user's skill improvement can be supported by various notification methods.
  • the server on the network may have the function of the skill determination device 100A.
  • the server acquires and accumulates motion data from the terminal device of the user or expert.
  • the server also stores model data 120a and skill determination definition data 120b.
  • the server receives an access from the user's terminal device, the server displays motion data and skill determination results on the Web screen of the terminal device.
  • the skill determination definition unit 140A receives the input from the input device and generates the skill determination definition data 120b. However, the skill determination data 120b may be automatically generated based on the model data 120a. For example, the skill determination definition unit 140A analyzes the model data 120a, and sets the result of statistical processing such as the average value of the parameters for skill determination in the skill determination definition data 120b. For example, an average value of the movement amount of the feature point at the head of the first frame data included in the model data 120a is ⁇ . In this case, the skill determination definition unit 140A sets “ ⁇ , ⁇ + a, ⁇ + 2a” as the reference parameters of the record of the module name “PositionChecker”. a is a numerical value set as appropriate.
  • the skill determination unit 160A determines the skill for each second frame data and outputs the determination result, but is not limited to this.
  • the skill determination unit 160A may convert and display each skill determination result into a total score. For example, as shown in FIG. 35, the skill determination unit 160A performs skill determination for each phase, but the determination result from start to end may be converted into a total score, and the total score may be displayed. .
  • the number of points assigned to the determination result “Excellent, Good, Bad” is set in advance.
  • the skill determination unit 160A may perform the skill determination process not only on the motion data of the user but also on the motion data of the model data 120a.
  • the output unit 170A may display the difference between the determination result for the motion data of the model data 120a and the determination result for the user's motion data.
  • the way to show the motion data output by the output unit 170A may not be fixed.
  • the output unit 170A may receive an operation from the input device and display the motion data at a different angle such as the back surface, the side surface, or the upper side. Further, the output unit 170A may change the way the motion data of the model data 120a is changed in conjunction with the change in the way the user shows the motion data.
  • the skill determination apparatus 100A is applicable to other sports other than golf.
  • the skill determination device 100A can be applied to tennis, land, dance, usage of cooking utensils, musical instrument performance, and the like.
  • FIG. 39 is a diagram illustrating an example of a computer that executes a skill determination program.
  • the computer 300 is connected to an input device 350a such as an acceleration sensor or a motion sensor and an output device 350b such as a speaker or a vibration device.
  • the computer 300 includes a CPU 301 that executes various arithmetic processes, a primary storage unit 302 that temporarily stores various types of information, a display unit 303 such as a display, and an operation unit 304 such as an input device.
  • the computer 300 includes a device IF 305 that exchanges data with the input device 350a and a device IF 306 that exchanges data with the output device 350b.
  • the computer 300 also has a secondary storage unit 307 corresponding to a hard disk drive or the like.
  • the secondary storage unit 307 includes a skill determination program 307a, a skill setting program 307b, and various data 307c.
  • the skill determination program 307a is read and executed by the CPU 301, and performs processing corresponding to the phase determination unit 150A, the skill determination unit 160A, and the output unit 170A in FIG.
  • the skill setting program 307b is read out and executed by the CPU 301 to perform processing corresponding to the model data generation unit 130A and the skill setting determination / definition unit 140A in FIG.
  • the various data 307c corresponds to model data 120a, skill determination definition data 120b, user motion data, and the like.
  • each program is stored in a “portable physical medium” such as a flexible disk (FD), a CD-ROM, a DVD disk, a magneto-optical disk, and an IC card inserted into the computer 300. Then, the computer 300 may read and execute the programs 307a and 307b.
  • a “portable physical medium” such as a flexible disk (FD), a CD-ROM, a DVD disk, a magneto-optical disk, and an IC card inserted into the computer 300.
  • the computer 300 may read and execute the programs 307a and 307b.
  • FIG. 40 is a diagram illustrating the configuration of the system according to the third embodiment. As shown in FIG. 40, this system includes user terminals 400a, 400b, and 400c, and a server 500. User terminals 400 a to 400 c and server 500 are connected to each other via network 50. Here, user terminals 400 a to 400 c are shown as an example, but other user terminals may be connected to the network 50. In the following description, user terminals 400a to 400b are collectively referred to as user terminal 400 as appropriate.
  • the user terminal 400 has the same function as the skill determination apparatus 100A shown in the second embodiment.
  • the user terminal 400 is a processing unit that acquires user motion data, determines the skill of the user, and notifies the server 500 of the skill determination result. Note that the user terminal 400 may connect to the skill determination device 100A and acquire the determination result of the skill of the user from the connected skill determination device 100A.
  • the user operates the user terminal 400 to access the server 500, and refers to past skill determination results stored in the server 500.
  • the server 500 receives information on skill determination results from each user terminal 400 and holds the information. Further, when the server 500 accepts access to the skill determination result information from the user terminal, the server 500 notifies the user terminal 400 of the corresponding skill determination result.
  • the server 500 when the server 500 notifies the user terminal 400 of information on the skill determination result, the server 500 displays an advertisement burner directly or indirectly related to the type of sport for which the skill determination is performed. On the display screen. In addition, the server 500 displays product information corresponding to the determination result of the skill of the user on the display screen. For example, when the type of sport is golf, the server 500 displays a golf-related advertising burner and notifies the user terminal 400 of information on golf products suitable for the skill. In addition to golf, the user terminal 400 may also be notified of advertising burners and product information for baseball, tennis, land, dance, how to use cooking utensils, and playing musical instruments.
  • FIG. 41 is a functional block diagram illustrating the configuration of the server according to the third embodiment.
  • the server 500 includes a communication unit 510, a storage unit 520, and a control unit 530.
  • the communication unit 510 is a processing unit that performs data communication with each user terminal 400 via the network 50.
  • Communication unit 510 corresponds to a communication device.
  • a control unit 530 described later exchanges data with each user terminal 400 via the communication unit 510.
  • the storage unit 520 includes a skill determination result table 520a, a personal information table 520b, a burner information table 520c, and a product table 520d.
  • the storage unit 520 corresponds to a storage device such as a semiconductor memory element such as a RAM (Random Access Memory), a ROM (Read Only Memory), and a flash memory (Flash Memory).
  • the skill determination result table 520a is a table that holds information on a skill determination result notified from the user terminal 400.
  • FIG. 42 is a diagram illustrating an example of a data structure of the skill determination result table. As shown in FIG. 42, the user identification information, the item, and the skill determination result are associated with each other.
  • the user identification information is information that uniquely identifies the user.
  • the item indicates an item that is a target of skill determination.
  • the skill determination result is a skill determination result for a user who has performed an action related to the event.
  • FIG. 43 is a diagram illustrating an example of a skill determination result.
  • the skill determination result shown in FIG. 43 is a skill determination result corresponding to certain user identification information.
  • each skill determination result is associated with the date on which the skill is determined.
  • Each skill determination result is associated with a determination result of the head movement, a determination result of the right elbow angle, a determination result of the forward tilt posture, and a determination result of the hip rotation for each phase.
  • the skill determination result table 520a may hold the user motion data, which is the determination source of the skill determination result, in association with the skill determination result.
  • the personal information table 520b is a table that holds personal information of users.
  • FIG. 44 is a diagram illustrating an example of the data structure of the personal information table according to the third embodiment. As shown in FIG. 44, this personal information table 520b associates user identification information, an address, sex, age, height, and weight.
  • the user identification information is information that uniquely identifies the user.
  • the address is, for example, an e-mail address (electronic mail address) used by the user.
  • the sex, age, height, and weight are the sex, age, height, and weight of the user identified by the user identification information.
  • the burner information table 520c is a table that holds information related to the advertisement burner to be displayed on the display screen of the user terminal 400.
  • FIG. 45 is a diagram illustrating an example of the data structure of the burner information table. As shown in FIG. 45, this burner information table 520c associates conditions with advertisement burner information. The conditions include, for example, an item, sex, and age. For example, in the example shown in FIG. 45, when the event corresponding to the skill determination result is “golf”, the user's gender is “male”, and the user's age is “20 years or older”, the advertisement burner A1, B1 and C1 are displayed on the display screen of the user terminal 400. For example, the advertisement burners A1, B1, and C1 are advertisement burners related directly or indirectly to the item “golf”.
  • the product table 520d is a table that defines products according to the skill determination result of the user.
  • FIG. 46 is a diagram illustrating an example of the data structure of the product table. As shown in FIG. 46, the product table 520d associates conditions, product names, and comments.
  • the condition indicates a condition when selecting a product, and the condition includes an item, a phase, and a determination result.
  • the event is the event in which the skill is determined.
  • the product name indicates the name of the product recommended for the user.
  • the comment indicates the reason for recommending the product.
  • the control unit 530 includes an acquisition unit 530a, a reception unit 530b, a search unit 530c, and a screen generation unit 530d.
  • the control unit 530 corresponds to, for example, an integrated device such as an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA).
  • the acquisition unit 530a is an acquisition unit that acquires information related to a skill determination result from the user terminal 400.
  • the information regarding the skill determination result is information in which user identification information, an item, a skill determination result, and motion data are associated with each other.
  • the acquisition unit 530a associates the user identification information, the item, and the skill determination result, and stores them in the skill determination result table 520a.
  • the acquiring unit 530a stores the record of the same user identification information and item group in the corresponding record. Add information on skill judgment results.
  • the accepting unit 530b is a processing unit that accepts access to information on past skill determination results stored in the skill determination result table 520a from the user terminal 400. For example, the user terminal 400 notifies the server 500 of user identification information when accessing information on past skill determination results.
  • the receiving unit 530b outputs the user identification information received from the user terminal 400 to the search unit 530c.
  • the search unit 530c searches for past skill determination results corresponding to the user identification information, advertisement burner information related to the event determined as a skill determination target, and products according to the user skill determination results. Part. In the following description, the past skill determination result corresponding to the user identification information is appropriately referred to as history information.
  • the search unit 530c outputs the searched history information, advertisement burner information, and product information to the screen generation unit 530d. Hereinafter, an example of processing of the search unit 530c will be described.
  • the search unit 530c compares the user identification information acquired from the reception unit 530b with the skill determination result table 520a, and searches for the event and skill determination result corresponding to the user identification information.
  • the search unit 530c outputs the searched skill determination result information as history information to the screen generation unit 530d.
  • the item searched by the search unit 530c is used when searching for advertisement burner information, which will be described later.
  • the information of the skill determination result searched by the search unit 530c is used when searching for product information, which will be described later.
  • the search unit 530c compares the user identification information with the personal information table 520b to identify the gender and age corresponding to the user identification information. Then, the search unit 530c identifies the corresponding record by comparing the combination of the event, gender, and age with the conditions of the burner information table 520c. The search unit 530c outputs the advertisement burner information included in the identified record to the screen generation unit 530d.
  • the search unit 530c specifies the record in the first row in FIG. Then, the search unit 530c outputs information on the advertisement burners A1, B1, and C1 to the screen generation unit 530d.
  • the search unit 530c compares the set of the event and the skill determination result with the condition of the product table 520d, and specifies the corresponding record.
  • the search unit 530c outputs the product information included in the identified record to the screen generation unit 530d.
  • the product information includes a product name and a comment.
  • the search unit 530c searches for product information using the latest skill determination results.
  • the search unit 530c searches for the combination of the product name and the comment included in the record on the first line in FIG. 46 as product information.
  • the screen generation unit 530d is a processing unit that generates a display screen to be displayed on the screen of the user terminal 400. For example, the screen generation unit 530d generates a display screen by arranging skill determination result information, advertisement burner information, and product information acquired from the search unit 530c on the screen. The screen generation unit 530d notifies the generated display screen information to the user terminal 400 that has accessed the skill determination result.
  • FIG. 47 is a flowchart illustrating the processing procedure of the server according to the third embodiment.
  • the reception unit 530b of the server 500 receives the user identification information (step S301).
  • the search unit 530c of the server 500 refers to the skill determination result table 520a, searches for a skill determination result corresponding to the user identification information, and generates history information (step S302).
  • the search unit 530c refers to the burner information table 520c and searches for advertisement burner information (step S303).
  • the search unit 530c searches for product information with reference to the product table 520d (step S304).
  • the screen generation unit 530d of the server 500 generates a display screen on which history information, advertisement burner information, and product information are arranged (step S305).
  • the screen generation unit 530d transmits information on the display screen to the user terminal 400 (step S306).
  • the server 500 When the server 500 notifies the user terminal 400 of information on the determination result of the past skill, the display screen of the user terminal 400 displays an advertisement burner related directly or indirectly to the event for which the skill determination is performed. To display. In addition, the server 500 displays product information corresponding to the determination result of the skill of the user on the display screen. This makes it possible to advertise information related directly or indirectly to the user who refers to the skill determination result. Further, product information corresponding to the skill determination result can be recommended.
  • the reception unit 530b of the server 500 notifies the user terminal 400 of billing information corresponding to the data amount when storing the skill determination result information from the user terminal 400 in the skill determination result table 520a. Also good.
  • the reception unit 530b monitors the data amount stored in the skill determination result table for each user identification information.
  • the accepting unit 530b notifies the user terminal 400 corresponding to the user identification information whose data amount exceeds the threshold value that the upload amount exceeds the threshold value, so that further uploading is charged.
  • the receiving unit 530b receives the payment method and stores it in association with the user identification information.
  • the data to be notified instead of notifying the server 500 of all information related to the skill determination result. May be selected. For example, when the user determines that the amount of data related to motion data is large, the user can be notified of only the skill determination result to the server 500 to save the amount of data. Also, the user can notify the server 500 of only the snapshot instead of the motion data to reduce the data amount.
  • FIG. 48 is a diagram illustrating a configuration of a system according to the fourth embodiment. As shown in FIG. 48, this system includes user terminals 400a, 400b, and 400c, and a server 600. User terminals 400 a to 400 c and server 600 are connected to each other via network 50. Here, user terminals 400 a to 400 c are shown as an example, but other user terminals may be connected to the network 50. In the following description, user terminals 400a to 400c are collectively referred to as user terminal 400 as appropriate.
  • the user terminal 400 has the same function as the skill determination apparatus 100A shown in the second embodiment.
  • the user terminal 400 is a processing unit that acquires user motion data, determines the skill of the user, and notifies the server 600 of the skill determination result. Note that the user terminal 400 may connect to the skill determination device 100A and acquire the determination result of the skill of the user from the connected skill determination device 100A.
  • the server 600 classifies the users into a plurality of groups based on the characteristics of the users.
  • the server 600 receives a skill determination result from the user terminal 400, the server 600 determines a group to which the user who is a target of the skill belongs, and the user terminal 400 of each user included in the determined group. To notify the skill judgment result information.
  • FIG. 49 is a functional block diagram illustrating the configuration of the server according to the fourth embodiment.
  • the server 600 includes a communication unit 610, a storage unit 620, and a control unit 630.
  • the communication unit 610 is a processing unit that performs data communication with each user terminal 400 via the network 50.
  • the communication unit 610 corresponds to a communication device.
  • a control unit 630 described later exchanges data with each user terminal 400 via the communication unit 610.
  • the storage unit 620 includes a skill determination result table 620a, a personal information table 620b, and a group management table 620c.
  • the storage unit 620 corresponds to a storage device such as a semiconductor memory element such as a RAM, a ROM, or a flash memory.
  • the skill determination result table 620a is a table that holds a skill determination result notified from the user terminal 400.
  • the data structure of the skill determination result table 620a is the same as the data structure of the skill determination result table 520a shown in FIG. 42, for example.
  • the personal information table 620b is a table that holds personal information of users.
  • FIG. 50 is a diagram illustrating an example of the data structure of the personal information table according to the fourth embodiment. As shown in FIG. 50, this personal information table 620b associates user identification information, address, gender, age, height, weight, school, and practice field.
  • the user identification information is information that uniquely identifies the user.
  • the address is, for example, an e-mail address used by the user.
  • Age, height, and weight are the gender, age, height, and weight of the user identified by the user identification information.
  • the school indicates the school where the user attends.
  • the practice field indicates a place where the user performs practice.
  • the group management table 620c is a table that holds information on groups to which users belong.
  • FIG. 51 is a diagram illustrating an example of the data structure of the group management table. As shown in FIG. 51, this group management table 620c associates group identification information with belonging user identification information.
  • the group identification information is information that uniquely identifies a group.
  • affiliated user identification information indicates user identification information of a user belonging to a group. For example, in the example shown in FIG. 51, it is indicated that the user of the user identification information “U101, U103, U114,...” Belongs to the group of the group identification information “G101”.
  • the control unit 630 includes an acquisition unit 630a, a classification unit 630b, and an SNS (Social Networking Service) providing unit 630c.
  • the SNS providing unit 630c corresponds to a notification unit.
  • the control unit 630 corresponds to, for example, an integrated device such as an ASIC or FPGA.
  • corresponds to electronic circuits, such as CPU and MPU, for example.
  • the acquisition unit 630a is an acquisition unit that acquires information related to the skill determination result from the user terminal 400.
  • the information regarding the skill determination result is information in which user identification information, an item, and a skill determination result are associated with each other.
  • the acquisition unit 630a stores the user identification information, the item, and the skill determination result in association with each other in the skill determination result table 620a.
  • the acquisition unit 630a stores information related to the skill determination result in the skill determination result table 620a. If a record of a set of the same user identification information and item is already stored, the acquisition unit 630a includes the corresponding record. Add information on skill judgment results.
  • the classification unit 630b is a processing unit that refers to the personal information table 620b and classifies user identification information into groups for each feature of the user. Based on the classification result, the classification unit 630b associates the group identification information with the user identification information belonging to the group of the group identification information and registers them in the group management table 620c.
  • the classification unit 630b refers to the personal information table 620b, identifies user identification information that goes to the same school, and classifies the identified user identification information into the same group.
  • the classification unit 630b refers to the personal information table 620b, identifies user identification information that goes to the same practice field, and classifies the identified user identification information into the same group.
  • the above classification process is an example, and the classification unit 630b may classify the user identification information into a group of the same age, a group of family members, or a group receiving guidance from the same coach. Further, the classification unit 630b may refer to the skill determination result table 620a and classify user identification information having the same skill level into the same group. For example, the classification unit 630b calculates the score of each user identification information by summing the scores according to good, bad, and Excel included in the skill determination result, and the user identification information having similar scores is the same. You may classify into groups.
  • the SNS providing unit 630c is a processing unit that provides the SNS to each user terminal 400.
  • the SNS providing unit 630c refers to the group management table 620c and shares information on skill determination results and other information such as electronic bulletin numbers among users of user identification information belonging to the same group. .
  • the SNS providing unit 630c displays the user identification information belonging to the same group as the user identification information corresponding to the skill determination result in the group management table. The determination is based on 620c.
  • the SNS providing unit 630c notifies the user terminal 400 corresponding to the identified user identification information of the skill determination result information registered in the skill determination result table 620a.
  • the SNS providing unit 630c may identify the address of the user identification information belonging to the group with reference to the personal information table 620b, and notify the information of the skill determination result with the identified address as the destination.
  • belonging user identification information U101, U103, U114 belongs to a group of group identification information “G101”. Further, it is assumed that the skill determination result of the user identification information U101 is registered in the skill determination table 620a by the acquisition unit 630a. In this case, the SNS providing unit 630c notifies the skill determination result of the user identification information U101 to the user terminal 400 of the user identification information U103 and U114 of the same group.
  • FIG. 52 is a flowchart illustrating the processing procedure of the server according to the fourth embodiment.
  • the classification unit 630b of the server 600 refers to the personal information table 620b and classifies the user identification information into a plurality of groups (step S401).
  • the SNS providing unit 630c of the server 600 determines whether or not a skill determination result has been received (step S402). If the SNS providing unit 630c has not received the skill determination result (No at Step S402), the SNS providing unit 630c proceeds to Step S402 again.
  • the SNS providing unit 630c When the SNS providing unit 630c receives the skill determination result (Yes in step S402), the SNS providing unit 630c stores the received skill determination result in the skill determination result table 620a (step S403). The SNS providing unit 630c specifies the group to which the user identification information corresponding to the received skill determination result belongs (step S404).
  • the SNS providing unit 630c specifies the user identification information belonging to the specified group, and notifies the skill determination result to the user terminal 400 corresponding to the specified user identification information (step S405).
  • the server 600 classifies the user identification information into a plurality of groups based on the user characteristics.
  • the server 600 receives the skill determination result from the user terminal 400, the server 600 determines the group to which the user who is the target of the skill belongs, and the user of each user identification information included in the determined group
  • the terminal 400 is notified of information on skill determination results. For this reason, each user belonging to the same group can easily communicate. For example, advice for improving skills can be exchanged on social networks.
  • the above processing can be an indirectly related site such as solicitation to an event, event solicitation, or solicitation for encounters, or an offline contact.
  • FIG. 53 is a diagram illustrating the configuration of the system according to the fifth embodiment. As shown in FIG. 53, this system includes user terminals 400a, 400b, and 400c, and a server 700. User terminals 400 a to 400 c and server 700 are connected to each other via network 50. Here, user terminals 400 a to 400 c are shown as an example, but other user terminals may be connected to the network 50. In the following description, user terminals 400a to 400b are collectively referred to as user terminal 400 as appropriate.
  • the user terminal 400 has the same function as the skill determination apparatus 100A shown in the second embodiment.
  • the user terminal 400 is a processing unit that acquires user motion data, determines the skill of the user, and notifies the server 700 of the skill determination result. Note that the user terminal 400 may connect to the skill determination device 100A and acquire the determination result of the skill of the user from the connected skill determination device 100A.
  • the user operates the user terminal 400 to acquire model data of an expert of his / her preference from the server 700, and determines the skill of the user using the acquired model data of the expert. To do.
  • the server 700 is a server that manages model data of a plurality of types of experts.
  • the server 700 displays model data of a plurality of types of experts, and accepts selection of model data of any one of the experts.
  • the server 700 accepts selection of expert model data
  • the server 700 notifies the user terminal 400 of the selected model data.
  • the server 700 may select expert model data suitable for the user and notify the user terminal 400 of the selected expert model data.
  • FIG. 54 is a functional block diagram illustrating the configuration of the server according to the fifth embodiment.
  • the server 700 includes a communication unit 710, a storage unit 720, and a control unit 730.
  • the communication unit 710 is a processing unit that performs data communication with each user terminal 400 via the network 50.
  • the communication unit 710 corresponds to a communication device.
  • a control unit 730 described below exchanges data with each user terminal 400 via the communication unit 710.
  • the storage unit 720 includes a skill determination result table 720a, a personal information table 720b, and an expert data table 720c.
  • the storage unit 720 corresponds to a storage device such as a semiconductor memory element such as a RAM, a ROM, or a flash memory.
  • the skill determination result table 720a is a table that holds a skill determination result notified from the user terminal 400.
  • the data structure of the skill determination result table 720a is the same as the data structure of the skill determination result table 520a shown in FIG. 42, for example.
  • the personal information table 720b is a table that holds personal information of users.
  • the data structure of the personal information table 720b is the same as the data structure of the personal information table 520b shown in FIG. 44, for example.
  • the expert data table 720c is a table that holds information related to expert model data.
  • FIG. 55 is a diagram illustrating an example of the data structure of the expert data table. As shown in FIG. 55, the expert data table 720c associates expert identification information, profile information, model data, and evaluation values. Among these, the expert identification information is information that uniquely identifies the expert.
  • Profile information is information about the profile of an expert. For example, information on the profile of the expert includes information such as the gender, age, weight, and height of the expert.
  • the model data corresponds to the model data 120a described in the second embodiment.
  • the control unit 730 includes an acquisition unit 730a, a reception unit 730b, a selection unit 730c, and a notification unit 730d.
  • the control unit 730 corresponds to, for example, an integrated device such as an ASIC or FPGA.
  • the control unit 730 corresponds to an electronic circuit such as a CPU or MPU.
  • the acquisition unit 730a is an acquisition unit that acquires information related to skill determination results from the user terminal 400.
  • the information regarding the skill determination result is information in which user identification information, an item, and a skill determination result are associated with each other.
  • the acquisition unit 730a associates the user identification information, the item, and the skill determination result, and stores them in the skill determination result table 720a.
  • the acquisition unit 730a stores the record of the same user identification information and item in the corresponding record. Add information on skill judgment results.
  • the accepting unit 730b executes the following operation when an access request related to expert model data is received from the user terminal.
  • the reception unit 730b causes the user terminal 400 to display a display screen in which the profile information of the expert stored in the expert data table 720c, the model data, and the evaluation value are associated with each other.
  • the accepting unit 730b accepts selection of model data from a user who operates the user terminal, the accepting unit 730b notifies the user terminal 400 of the model data that has received the selection.
  • the notification unit 730d which will be described later, may notify the user terminal 400 of the model data that has been accepted for selection.
  • the reception unit 730b when the reception unit 730b receives the evaluation value information for the expert model data from the user terminal 400, the reception unit 730b updates the corresponding evaluation value. For example, the reception unit 730b may update the evaluation values of the expert data table 720c by averaging the evaluation values from the user terminals 400 corresponding to the experts.
  • the server 700 selects appropriate model data for the user, and the selected model data is used as the user terminal 400. May notify you.
  • the selection unit 730c is a processing unit that selects appropriate model data for the user. For example, the selection unit 730c acquires user identification information from the user terminal 400, and acquires gender, age, height, and weight corresponding to the user identification information from the personal information table 720b. In the following description, the gender, age, height, and weight corresponding to the user identification information are collectively described as user profile information as appropriate.
  • the notification unit 730d is a processing unit that notifies the request source user terminal 400 of the model data acquired from the selection unit 730c.
  • the selection unit 730c selects profile information of the expert data table 720c that is most similar to the user profile information.
  • the selection unit 730c selects model data of a record corresponding to the selected profile information, and outputs the selected model data to the notification unit 730d.
  • the selection unit 730c may select any similar profile information. For example, the selection unit 730c compares the user profile information with the profile information of the expert, gives a score to each of whether the gender matches, age difference, height difference, weight difference, and the total score is The highest profile information is selected as similar profile information. For example, when genders match, a predetermined score is given, and when they do not match, a score is not given. Regarding the difference in age, the difference in height, and the difference in weight, the smaller the difference, the larger the score.
  • the selection unit 730c may acquire the user's motion data from the user terminal 400, and may acquire model data most similar to the acquired motion data from the model data of the expert data table 720c. For example, the selection unit 730c performs skill determination by performing the same processing as the skill determination device 100A described in the second embodiment, based on the user motion data and each model data of the expert data table 720c. Thus, the model data most similar to the user's motion data is selected. For example, the selection unit 730c may perform skill determination and select model data having the largest number of excellent as model data that is most similar.
  • the selection unit 730c may associate the model data notified to the user terminal 400 and the skill determination result based on the model data and store them in the skill determination result table 720a.
  • the selection unit 730c repeatedly executes the above-described processing, and determines whether or not the user's skill is improved based on the skill determination result stored in the skill determination result table 720a. For example, the selection unit 730c compares the past skill determination result corresponding to the same user identification information with the current skill determination result, and when the number of excellent is increased, the user and the expert It is determined that the compatibility is good. In this case, the selection unit 730c continues to notify the user terminal 400 of the model data of the same expert. In addition, when the number of excellent is increased, the selection unit 730c may perform correction to increase the evaluation value of the corresponding expert.
  • the selection unit 730c compares the past skill determination result corresponding to the same user identification information with the current skill determination result, and the number of excellent is decreased or not changed It is determined that the compatibility between the user and the expert is bad. In this case, the selection unit 730c notifies the user terminal 400 of model data of other experts. Moreover, the selection part 730c may perform correction
  • FIG. 56 is a flowchart of the process procedure of the server according to the fifth embodiment.
  • the receiving unit 730a of the server 700 receives a request for expert model data from the user terminal 400 (step S501).
  • step S502 when the user himself selects expert model data (Yes in step S502), the server 700 proceeds to step S503. On the other hand, when the user himself does not select the expert model data (No in step S502), the process proceeds to step S506.
  • the reception unit 730b of the server 700 displays the profile information of the expert, the model data, and the evaluation value in association with each other on the user terminal 400 (step S503).
  • the receiving unit 730b determines whether or not selection of model data has been received (step S504). If the selection unit 730b has not received selection of model data (step S504, No), the process proceeds to step S504 again.
  • the accepting unit 730b notifies the user terminal 400 of the model data accepted for selection (step S505).
  • the selection unit 730c of the server 700 acquires user identification information from the user terminal 400 (step S506).
  • the selection unit 730c selects model data appropriate for the user (step S507).
  • the server 700 notifies the user terminal 400 of the model data selected by the selection unit 730c (step S508).
  • the server 700 displays expert model data on the user terminal 400, and upon receiving selection of expert model data, the server 700 notifies the user terminal 400 of the selected model data. Alternatively, the server 700 selects expert model data suitable for the user, and notifies the user terminal 400 of the selected expert model data. For this reason, the user can perform skill determination using model data of an expert suitable for him.
  • FIG. 57 is a diagram illustrating an example of a computer that executes a control program.
  • the computer 800 includes a CPU 801 that executes various arithmetic processes, an input device 802 that receives input of data from the user, and a display 803.
  • the computer 800 also includes a reading device 804 that reads a program or the like from a storage medium, and an interface device 805 that exchanges data with another computer via a network.
  • the computer 800 also includes a RAM 806 that temporarily stores various types of information and a hard disk device 807.
  • the devices 801 to 807 are connected to the bus 808.
  • the hard disk device 807 has a control program 807a.
  • the CPU 801 reads the control program 807a and develops it in the RAM 806.
  • the control program 807a functions as a control process 806a.
  • the control process 806a corresponds to the acquisition unit 530a, the reception unit 530b, the search unit 530c, and the screen generation unit 530d illustrated in FIG.
  • the control process 806a corresponds to the acquisition unit 630a, the classification unit 630b, and the SNS providing unit 630c illustrated in FIG.
  • the control process 806a corresponds to the acquisition unit 730a, the reception unit 730b, the selection unit 730c, and the notification unit 730d illustrated in FIG.
  • control program 807a is not necessarily stored in the hard disk device 807 from the beginning.
  • each program is stored in a “portable physical medium” such as a flexible disk (FD), a CD-ROM, a DVD disk, a magneto-optical disk, or an IC card inserted into the computer 800. Then, the computer 800 may read out and execute the control program 807a.
  • a “portable physical medium” such as a flexible disk (FD), a CD-ROM, a DVD disk, a magneto-optical disk, or an IC card inserted into the computer 800. Then, the computer 800 may read out and execute the control program 807a.

Abstract

骨格推定装置(100)は、対象者の頭、両腕、胴体、両足の領域を大まかに特定し、両腕および両足の骨格の位置を認識した後に、両腕および両足の骨格の位置の認識結果を制約条件として、胴体の骨格を認識する。例えば、骨格推定装置(100)は、両腕および両足の骨格の座標と、関節間の長さを固定した状態で、角度パラメータを変化させることで、胴体の骨格の位置の候補を複数算出する。骨格推定装置(100)は、胴体の骨格の位置の候補のうち、胴体概算座標に近い候補を、胴体の骨格の位置として推定する。

Description

骨格推定装置、骨格推定方法および骨格推定プログラム
 本発明は、骨格推定装置等に関する。
 近年、ICT(Information and Communication Technology)を活用することにより、スポーツのスキルを向上させることや、業務の効率化を目指す試みがなされている。例えば、スポーツのスキルを向上させる技術として、指導者の体の動きと、利用者の体の動きとを比較解析し、指導者と利用者との体の動きの相違点を表示するものがある。
 人の体の動きを解析する場合には、Kinect(登録商標)等の3D(dimension)センサから距離画像情報を取得し、人の頭、手、胴体、足等の各部位の位置を認識する従来技術を用いる。以下において、人の各部位の位置を認識する従来技術の一例として、身体部位認識手法と、モデルフィッティング手法を説明する。
 身体部位認識手法について説明する。身体部位認識手法は、距離画像を入力とし、ランダムフォレスト方式を用いて学習した識別器を用いてピクセル毎のラベル分けを行う。そして、身体部位認識手法は、関節位置に相当するラベルの重心を用いて、直接関節座標を推定する。
 図58は、身体部位認識手法を説明するための図である。図58に示すように、身体部位認識手法は、3Dセンサから距離画像情報を取得し、距離画像情報の背景を除去することで、画像11を生成する(ステップS10)。身体部位認識手法は、ランダムフォレスト方式を用いて学習した識別器を用いて、ピクセル毎のラベル分けを行う(ステップS11)。身体部位認識手法は、各ラベルの重心を関節位置として推定し(ステップS12)、各ラベルの重心を結んだものを骨格として認識する(ステップS13)。
 モデルフィッティング手法について説明する。モデルフィッティング手法は、各関節を結ぶ領域を、円柱モデル(あるいは円錐モデル)等で定義し、モデルの位置や大きさを変化させながら、観測点に対して最も当てはまる円柱モデルの形状を算出する。モデルフィッティング手法は、円柱モデルの形状を算出する処理を各部位に相当する領域において繰り返し実行し、各円柱モデルを組み合わせたものを骨格として認識する。
 図59および図60は、モデルフィッティング手法を説明するための図である。図59に示すように、モデルフィッティング手法は、円柱20の半径r、高さh、両端の中心位置20a(x1、y1、z1)、20b(x2、y2、z2)の8変数をある一定範囲で変化させる。モデルフィッティング手法は、円柱20内に含まれる観測点の数を評価値とし、最も高い評価値となる円柱を骨格とする。図59のマルが、観測点に相当する。図60に示すように、モデルフィッティング手法は、図59で説明した処理を、人の各部位に対して繰り返し実行することで、各部位に相当する複数の円柱を求め、各円柱を組み合わせたものを骨格として認識する。
J.Shotton,A.Fitzgibbon,M.Cook,T.Sharp,M.Finocchio,R.Moore,A.Kipman,A.Blake"Real-time human pose recognition in parts from a single depth image"In Proc.CVPR,2011. 堀内英一、「シングルスキャン点群データのための半形状幾何学モデル」、日本ロボット学会誌 Vol.32 No.8,pp.721~730,2014
 しかしながら、上述した従来技術では、高速かつ正確に利用者の骨格を認識することができないという問題がある。
 身体部位認識手法は、ラベルの重心から直接関節座標を求めるため、3Dセンサのノイズ、部位の隠れによるラベル分割、学習の難しい姿勢でのラベル位置誤りが発生すると、人体骨格としてあり得ないような位置を関節の位置として推定する場合がある。また、身体部位認識手法は、ピクセル毎に確率的にラベル付けを行うため、部位の境界付近のラベルが曖昧になり、時系列フレームで見た場合、関節位置が安定しない。
 図61は、従来技術の問題を説明するための図である。図61において、マルは関節の位置を示し、関節を結ぶ直線をリンクと定義する。また、各関節と各リンクとをまとめたものを骨格と定義する。図61では、利用者がゴルフスイングをするあるタイミングの骨格を示しており、左腕によって、胴体25の関節の一部が部分的に隠れている。この場合には、ラベルの位置誤りが発生し、適切に骨格を認識することができない。
 一方、モデルフィッティング手法は、多数のパラメータの組み合わせを評価するため、人体のように多数の部位により構成される対象のフィッティングを行う場合には、計算時間が大きくなる。また、胴体のように観測点が多い部位では、評価値の組み合わせが多くなり、他の部位と比較して、計算時間が大きくなり、高速に利用者の骨格を認識することができない。
 1つの側面では、本発明は、高速かつ正確に利用者の骨格を認識することができる骨格推定装置、骨格推定方法および骨格推定プログラムを提供することを目的とする。
 第1の案では、骨格推定装置は、特定部と、第1推定部と、第2推定部とを有する。特定部は、対象物上に存在する複数の観測点の3次元情報を距離センサから取得し、3次元情報を基にして、対象物の領域から、第1領域と、第1領域に隣接する複数の第2領域とを特定し、第1領域、第2領域に含まれる複数の特徴点の位置を特定する。第1推定部は、第2領域に含まれる各特徴点に基づいてリンクを設定することで、第2領域に含まれる骨格の位置を推定する。第2推定部は、第1領域に含まれる特徴点の位置を特定する際に用いる複数のパラメータのうち、第2領域に含まれる骨格の端点と、骨格の端点から第1領域に含まれる部位の位置までの長さとを固定した状態で次の処理を行う。第2推定部は、第1領域に含まれる部位の位置を特定し、特定した部位の位置を基にして、第1領域に含まれる骨格の位置を推定する。
 本発明の1実施態様によれば、高速かつ正確に利用者の骨格を認識することができる。
図1は、本実施例1に係る骨格推定装置の構成を示す機能ブロック図である。 図2は、本実施例1に係る3次元データテーブルのデータ構造の一例を示す図である。 図3は、本実施例1に係るモデルデータのデータ構造の一例を示す図である。 図4は、本実施例1に係る骨格データテーブルのデータ構造の一例を示す図である。 図5は、本実施例1の特定部が特定する各領域の一例を示す図である。 図6は、2値化画像の一例を示す図である。 図7は、細線化画像の一例を示す図である。 図8は、除去パターンの一例を示す図である。 図9は、特徴点の一例を示す図である。 図10は、交点を抽出する処理の一例を説明するための図である。 図11は、モデル照合処理の一例を説明するための図である。 図12は、円柱主軸の決定処理の一例を説明するための図である。 図13は、円柱半径および円柱中心の決定処理の一例を説明するための図である。 図14は、リンク結合処理の一例を説明するための図である。 図15は、本実施例1に係る第2推定部の処理の一例を説明するための図である。 図16は、胴体推定座標を推定する処理の一例を説明するための図(1)である。 図17は、胴体推定座標を推定する処理の一例を説明するための図(2)である。 図18は、本実施例1に係る骨格推定装置の処理手順を示すフローチャートである。 図19は、胴体の骨格認識処理の処理手順を示すフローチャートである。 図20は、骨格推定装置のハードウェア構成の一例を示す図である。 図21は、本実施例2に係るスキル判定装置の構成を示す機能ブロック図である。 図22は、フレームデータのデータ構造の一例を示す図である。 図23は、お手本データのデータ構造の一例を示す図である。 図24は、スキル判定定義データのデータ構造の一例を示す図である。 図25は、スキル判定定義データを補足説明するための図である。 図26は、表示装置に表示される表示画面の一例を示す図である。 図27は、「PositionChecker」のパラメータ設定画面の一例を示す図である。 図28は、「AngleChecker(1)」のパラメータ設定画面の一例を示す図である。 図29は、「AngleChecker(2)」のパラメータ設定画面の一例を示す図である。 図30は、フレームマッチングの一例を説明するための図である。 図31は、重みを説明するための図である。 図32は、スキル判定部の処理を説明するための図(1)である。 図33は、スキル判定部の処理を説明するための図(2)である。 図34は、出力部が生成する表示画面の一例を示す図(1)である。 図35は、出力部が生成する表示画面の一例を示す図(2)である。 図36は、スキル判定装置の処理手順を示すフローチャートである。 図37は、スキル判定処理の処理手順を示すフローチャートである。 図38は、設定処理の処理手順を示すフローチャートである。 図39は、スキル判定プログラムを実行するコンピュータの一例を示す図である。 図40は、本実施例3に係るシステムの構成を示す図である。 図41は、本実施例3に係るサーバの構成を示す機能ブロック図である。 図42は、スキル判定結果テーブルのデータ構造の一例を示す図である。 図43は、スキル判定結果の一例を示す図である。 図44は、本実施例3に係る個人情報テーブルのデータ構造の一例を示す図である。 図45は、バーナー情報テーブルのデータ構造の一例を示す図である。 図46は、商品テーブルのデータ構造の一例を示す図である。 図47は、本実施例3に係るサーバの処理手順を示すフローチャートである。 図48は、本実施例4に係るシステムの構成を示す図である。 図49は、本実施例4に係るサーバの構成を示す機能ブロック図である。 図50は、本実施例4に係る個人情報テーブルのデータ構造の一例を示す図である。 図51は、グループ管理テーブルのデータ構造の一例を示す図である。 図52は、本実施例4に係るサーバの処理手順を示すフローチャートである。 図53は、本実施例5に係るシステムの構成を示す図である。 図54は、本実施例5に係るサーバの構成を示す機能ブロック図である。 図55は、専門家データテーブルのデータ構造の一例を示す図である。 図56は、本実施例5に係るサーバの処理手順を示すフローチャートである。 図57は、制御プログラムを実行するコンピュータの一例を示す図である。 図58は、身体部位認識手法を説明するための図である。 図59は、モデルフィッティング手法を説明するための図(1)である。 図60は、モデルフィッティング手法を説明するための図(2)である。 図61は、従来技術の問題を説明するための図である。
 以下に、本発明にかかる骨格推定装置、骨格推定方法および骨格推定プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
 図1は、本実施例1に係る骨格推定装置の構成を示す機能ブロック図である。図1に示すように、この骨格推定装置100は、3Dセンサ110と、通信部120と、入力部130と、表示部140と、記憶部150と、制御部160とを有する。
 3Dセンサ110は、3Dセンサ110の設置位置から、3Dセンサ110の撮影範囲に含まれる対象者上の各観測点までの距離情報を計測するセンサである。例えば、3Dセンサ110は、所定時間毎あるいはフレーム毎に、各観測点の3次元座標を示す3次元データを生成し、生成した3次元データを制御部160に出力する。
 図2は、本実施例1に係る3次元データテーブルのデータ構造の一例を示す図である。図2に示すように、この3次元データテーブル151は、観測点識別情報と、3次元座標とを対応付ける。観測点識別情報は、観測点を一意に識別する情報である。3次元座標は、互いに直交するx軸、y軸、z軸上の観測点の座標を示すものである。例えば、x軸は、3Dセンサ110に対して水平方向の軸とする。y軸は、3Dセンサ110に対して鉛直方向の軸とする。z軸は、3Dセンサ110の奥行き方向の軸とする。
 通信部120は、ネットワークを介して、図示しない外部装置等と通信を行う処理部である。通信部120は、通信装置等に対応する。
 入力部130は、各種の情報を骨格推定装置100に入力するための入力装置である。入力部130は、例えば、キーボード、マウス、タッチパネル等に対応する。
 表示部140は、制御部160から出力される各種の情報を表示する表示装置である。表示部140は、例えば、液晶ディスプレイやタッチパネル等に対応する。
 記憶部150は、3次元データテーブル151、モデルデータ152、骨格データテーブル153を有する。記憶部150は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
 3次元データテーブル151は、3Dセンサ110から取得する複数の3次元データを格納するテーブルである。各3次元データのデータ構造は、図2に説明したものに対応する。
 モデルデータ152は、モデルの種別と、モデルの各部位の3次元座標とを定義した情報である。例えば、モデルの種別は、対象者の様々な姿勢に対応するものである。図3は、本実施例1に係るモデルデータのデータ構造の一例を示す図である。図3に示すように、このモデルデータ152は、モデル番号と、部位と、3次元座標とを対応付ける。モデル番号は、モデルの種別を識別する番号である。部位は、対象者の部位を示す。3次元座標は、モデル上の部位の3次元座標を示すものである。
 骨格データテーブル153は、所定時間毎の、対象者の骨格の情報を格納するテーブルである。図4は、本実施例1に係る骨格データテーブルのデータ構造の一例を示す図である。図4に示すように、この骨格データテーブル153は、識別番号と、部位と、3次元座標とを対応付ける。識別番号は、レコードを識別する情報である。部位は、対象者の部位を示す。3次元座標は、対象者の部位の3次元座標を示すものである。
 制御部160は、取得部161と、特定部162と、第1推定部163と、第2推定部164と、出力部165とを有する。制御部160は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。また、制御部160は、例えば、CPUやMPU(Micro Processing Unit)等の電子回路に対応する。
 取得部161は、3Dセンサ110から、3次元データを取得する処理部である。取得部161は、3次元データを取得する度に、3次元データテーブル151に格納する。上述した説明では、3Dセンサ110が、3次元データを生成する場合について説明したが、取得部161が、3Dセンサ110から取得する距離情報を、所定の変換規則に従って、3次元データに変換することで、3次元データを生成しても良い。
 特定部162は、3次元データテーブル151から3次元データを取得し、3次元データを基にして、対象者の領域から、第1領域と、第1領域に隣接する複数の第2領域とを特定する処理部である。図5は、本実施例1の特定部が特定する各領域の一例を示す図である。図5に示すように、特定部162は、対象者の領域30から、第1領域31、第2領域32,33,34,35,36を特定する。第1領域31は、対象者の胴体に対応する。第2領域32は、対象者の頭に対応する。第2領域33は、対象者の右腕に対応する。第2領域34は、対象者の左腕に対応する。第2領域35は、対象者の右足に対応する。第2領域36は、対象者の左足に対応する。
 また、特定部162は、複数の第2領域に含まれる部位の位置を特定し、特定した結果を、第1推定部163に出力し、複数の第1領域に含まれる部位の位置を特定し、特定した結果を第2推定部164に出力する。
 特定部162は、第1領域31、第2領域32~36を特定し、第1領域31、第2領域32~36に含まれる部位の位置を特定する場合に、後述する2値化処理、細線化処理、特徴点抽出処理、モデル照合処理を実行する。なお、かかる処理は一例であり、特定部162は、機械学習による識別器を用いて、第1領域31、第2領域32~36を特定し、第1領域31、第2領域32~36に含まれる部位の位置を特定しても良い。
 特定部162が実行する2値化処理の一例について説明する。特定部162は、3次元データに含まれる各観測点のうち、予め設定した背景差分領域に存在する観測点の情報を取得する。特定部162は、背景差分領域に含まれる各観測点の3次元座標のうち、z軸の値に着目する。特定部162は、z軸の値が閾値Zth以上である場合には、該当する2次元座標の値を「1」に設定し、z軸の値が閾値Zth未満である場合には、該当する2次元座標の値を「0」に設定する。
 例えば、背景差分領域に含まれるある観測点の3次元座標を(x1、y2、z1)とし、その観測点に対応する2値化画像上の画素を(u1、v2)とする。特定部162は、「z1」が閾値Zth以上である場合には、2値化画像上の画素(u1、v2)の値を「1」に設定する。一方、特定部162は、「z1」が閾値Zth未満である場合には、2値化画像上の画素(u1、v2)の値を「0」に設定する。特定部162は、背景差分領域に含まれる各観測点について上記処理を繰り返し実行することで、2値化処理を実行し、2値化画像を生成する。
 図6は、2値化画像の一例を示す図である。2値化画像40aにおいて、白色の領域は、上記2値化処理によって「0」が設定された領域であり、対象者の領域に対応する。黒色の領域は、上記2値化処理によって「1」が設定された領域であり、対象者以外の領域に対応する。ここでは説明の便宜上、値「0」、「1」を用いて説明したが、例えば、値「0」は、画素値の「0」、値「1」は、画素値の「255」であってもよい。
 特定部162が実行する細線化処理の一例について説明する。特定部162は、2値化画像に対して細線化処理を実行することで、細線化画像を生成する。図7は、細線化画像の一例を示す図である。図7に示す細線化画像40bは、図6に示した2値化画像40aに対して、細線化処理を実行することで得られる画像である。
 特定部162は、2値化画像40a上の部分パターンが除去パターンに該当するか否かを判定し、部分パターンが除去パターンと一致する場合には、部分パターンに対応する領域の値を「1」に変更する。特定部162は、2値化画像40a上の部分パターンの位置をずらしながら、上記処理を繰り返し実行することで、細線化処理を実行する。
 図8は、除去パターンの一例を示す図である。図8に示す例では、除去パターンは、除去パターン5a,5b,5cとなる。例えば、除去パターンのサイズを、3×3ピクセルとし、2値化画像上に設定される部分パターンのサイズを3×3ピクセルとするが、これに限定されるものではない。除去パターンにおいて「1」は、部分パターンの該当するピクセルの値が「1」であることを示す。「0」は、部分パターンの該当するピクセルに値が「0」であること示す。「×」は、部分パターンの該当するピクセルの値が「0」でも「1」でも良い旨を示す。
 特定部162が実行する特徴点抽出処理の一例について説明する。特定部162は、細線化画像に対して特徴点抽出処理を実行することで、細線化画像から特徴点を抽出する。図9は、特徴点の一例を示す図である。図9に示す例では、細線化画像40bから、特徴点6a~6kが抽出される例を示す。例えば、特徴点は、端点に対応する特徴点6a,6d,6e,6f,6gと、交点に対応する特徴点6b,6cと、コーナーに対応する特徴点6h、6i、6j、6kを含む。
 例えば、特定部162は、3通りのアプローチで特徴点を抽出する。1つ目のアプローチについて説明する。特定部162は、細線化画像40bのうち、値が「0」となる領域において、端点を特徴点として抽出する。図9に示す例では、点6a,6d,6e,6f,6gが端点となるため、特定部162は、点6a,6d,6e,6f,6gを特徴点とする。
 2つ目のアプローチについて説明する。特定部162は、細線化画像40bのうち、値が「0」となる領域において、交点を特徴点として抽出する。図9に示す例では、点6b,6cが交点となるため、特定部162は、点6b,6cを特徴点とする。
 例えば、特定部162は、交点の特徴点を抽出する場合に、近傍画素値に値が「1」となる画素で区切られた3つ以上の空白領域が含まれている点を、特徴点として抽出する。空白領域は、1画素または複数の連続した値が「0」となる画素の集まりである。図10は、交点を抽出する処理の一例を説明するための図である。図10において、特定部162は、点6Aを特徴点として抽出するが、点6B,6Cを特徴点として抽出しない。点6Aが特徴点となる理由は、点6Aの左上、右上、下に値が「0」となる点があり、それぞれの点が「1」の点により区切られているため空白領域が3つとなり、点6B,6Cが交点とならない理由としては、点6Bは左上、上、右上の3点が1となっているが、間に「1」となる点が無く、連続しているため近接の空白領域が1つとなり、点6Cは4点の「0」となる点があるが、左上、左と右上、右がそれぞれ連続しているため近接の空白領域が2つとなり、3つ以上存在していないためである。
 3つ目のアプローチについて説明する。特定部162は、細線化画像40bのうち、値が「0」となる領域において、コーナーの点を特徴点として抽出する。例えば、特定部162は、細線化画像40bに対し、コーナー検出フィルタを適用することにより、コーナーに対応する点を特定する。図9に示す例では、点6h,6i,6j,6kがコーナーの点に対応する。
 特定部162が上記処理を実行することで、細線化画像40bから、特徴点6a~6kを抽出する。
 特定部162が実行するモデル照合処理について説明する。特定部162は、特徴点の位置と、モデルデータ152とを基にして、各特徴点の部位を特定する処理部である。例えば、特定部162は、モデルデータ152のモデル番号毎に、特徴点の大きさに正規化し、特徴点の座標と部位の座標との対応付けを行い、対応付けた特徴点の座標と部位の座標との差分の合計値を算出する。正規化は、以下のように実施する。まず、モデルデータの重心と各部位との最も遠い距離L1、特徴点の重心と各特徴点との最も遠い距離L2、を求め、L1=L2になるように、モデルデータの大きさを変更する。また、重心は、モデルデータであれば部位の座標、特徴点であれば特徴点の座標の、それぞれ平均座標である。特定部162は、距離が最も近い特徴点と部位とを対応付けるものとする。特定部162は、対応付けた特徴点の座標と部位の座標との差分の合計値が最小となるモデル番号を特定する。特定部162は、特徴点の部位を、特定したモデル番号において対応付けた部位として特定する。
 図11は、モデル照合処理の一例を説明するための図である。図11に示すように、特定部162は、細線化画像40bから特徴点6a~6gを抽出したものとする。説明の便宜上、特徴点6h~6kの説明は省略する。また、モデルデータ152には、モデル番号m1~m3が含まれているものとする。モデル番号m1の部位7a,7b,7c,7d,7e,7f,7gは、それぞれ、頭、首、骨盤、右手首、左手首、右足首、左足首に対応する。モデル番号m2の部位8a,8b,8c,8d,8e,8f,8gは、それぞれ、頭、首、骨盤、右手首、左手首、右足首、左足首に対応する。モデル番号m1の部位9a,9b,9c,9d,9e,9f,9gは、それぞれ、頭、首、骨盤、右手首、左手首、右足首、左足首に対応する。
 特定部162は、特徴点の座標と部位の座標との距離が最小となるように、特徴点6a~6gと、モデルm1の部位7a~7gとをそれぞれ対応付け、対応付けた特徴点の座標と部位の座標との差分の合計値M1を算出する。特定部162は、特徴点の座標と部位の座標との距離が最小となるように、特徴点6a~6gと、モデルm2の部位8a~8gとをそれぞれ対応付け、対応付けた特徴点の座標と部位の座標との差分の合計値M2を算出する。特定部162は、特徴点の座標と部位の座標との距離が最小となるように、特徴点6a~6gと、モデルm3の部位9a~9gとをそれぞれ対応付け、対応付けた特徴点の座標と部位の座標との差分の合計値M3を算出する。
 特定部162は、合計値M1~M3のうち、合計値M1が最小である場合には、モデルm1を特定し、特定したモデルm1の部位7a~7gと、特徴点6a~6gとの対応関係から、特徴点6a~6gの部位を特定する。図11に示す例では、特定部162は、特徴点6a~6gをそれぞれ、頭、首、骨盤、右手首、左手首、左足首、右足首と特定する。図11では図示を省略したが、特定部162は、特徴点6h~6kについても同様に処理を行うことで、特徴点6h~6kの部位を、右肩、左肩、右股関節、左股関節として特定する。
 上記説明では、特定部162は、頭、首、左手首、右手首、骨盤、左足首、右足首、右肩、左肩、右股関節、左股関節に対応する特徴点を特定したが、これに限定されるものではない。特定部162は、更に、他の部位に対応する特徴点を特定してもよい。他の部位は、例えば、背骨、右肘関節、左肘関節、右膝関節、左膝関節等に対応する。さらに、特定部162は、細線化画像から特徴点を特定できない部位の位置を特定しても良い。例えば、モデルデータ152に、背骨の位置を定義しておき、正規化を行った後で特定されたモデルにおいて、特徴点として特定された首、骨盤の位置から背骨の位置を算出する。
 特定部162は、上記の2値化処理、細線化処理、特徴点抽出処理、モデル照合処理を実行することで、第2領域32~36に含まれる特徴点と、特徴点に対応する部位と、特徴点の3次元座標とを対応付けた情報を、第1推定部163に出力する。また、特定部162は上記の2値化処理、細線化処理、特徴点抽出処理、モデル照合処理を実行することで第1領域31に含まれる胴体部分に対応する部位の位置情報を第2推定部164に出力する。
 第1推定部163は、第2領域32~36に含まれる各特徴点に基づいてリンクで設定することで、第2領域32~36に含まれる骨格の位置を推定する処理部である。例えば、第1推定部163は、円柱主軸の決定処理、円柱半径および円柱中心の決定処理、リンク結合処理を実行することで、骨格の位置を推定する。
 第1推定処理部163が実行する円柱主軸の決定処理について説明する。ここでは一例として、第2領域34の骨格の位置を推定する場合について説明する。また、第2領域34には、左肩に対応する特徴点6i、左肘関節に対応する特徴点6l、左手首に対応する特徴点6eが含まれているものとする。
 図12は、円柱主軸の決定処理の一例を説明するための図である。図12において、特徴点6iは右肩に対応する特徴点を示し、特徴点6lは右肘関節に対応する特徴点を示すものとする。第1推定部163は、特徴点6i,6lの近傍に円柱50を設定する。例えば、円柱50の高さは、特徴点6lから特徴点6iまでの高さに対応する。また、第1推定部163は、円柱50から所定距離内に存在する観測点の3次元座標の情報を、3次元データテーブル151から取得する。
 第1推定部163は、主成分分析を用いて円柱50の主軸の傾きを算出する。例えば、第1推定部163は、式(1)に基づいて、特徴点間に存在する観測点の3次元座標のベクトルx,x、・・・、xから共分散行列σxxを算出する。式(1)において、Nは、観測点のデータ数に対応する。<x>は、xの平均であり、式(2)によって定義される。
Figure JPOXMLDOC01-appb-M000001
Figure JPOXMLDOC01-appb-M000002
 第1推定部163は、共分散行列σxxを算出し、共分散行列σxxの固有ベクトルe,e,eを計算する。第1推定部163は、固有ベクトルe,e,eのうち、最大固有値に属する固有ベクトルの向きを、円柱50の向きとして特定する。この円柱50の向きは、円柱50の主軸の傾きに対応する。第1推定部163は、第2領域に含まれる他の特徴点の組についても、上記処理を実行することで、円柱の主軸の傾きを算出する。
 第1推定部163が実行する円柱半径および円柱中心の決定処理について説明する。図13は、円柱半径および円柱中心の決定処理の一例を説明するための図である。図13において、縦軸は第二主成分に対応する軸であり、横軸は第三主成分に対応する軸である。第二主成分は、共分散行列σxxの固有ベクトルe,e,eのうち、2番目に大きい固有値に属する固有ベクトルに対応する。第三主成分は、共分散行列σxxの固有ベクトルe,e,eのうち、3番目に大きい固有値に属する固有ベクトルに対応する。
 第1推定部163は、円柱50から所定距離内に存在する観測点を、第二、三主成分の平面に投影し、最小二乗法等を用いることで、円柱50の円(楕円)50aと、投影した各観測点との誤差が最小となるように、円柱半径50bおよび円柱中心50cを特定する。第1推定部163は、第2領域に含まれる他の特徴点についても、上記処理を実行することで、円柱半径および円柱中心を特定する。
 第1推定部163が実行するリンク結合処理について説明する。例えば、リンクは上述した円柱主軸の決定処理、円柱半径および円柱中心の決定処理によって算出された円柱の軸に対応するものである。図14は、リンク結合処理の一例を説明するための図である。図14に示す例では、ある円柱のリンクをリンク55aとし、他の円柱のリンクをリンク55bとする。リンク55aの上側端点を端点a1とし、リンク55aの下側端点を端点a2とする。リンク55bの上側端点を端点b1とし、リンク55bの下側端点を端点b2とする。
 第1推定部163は、複数の結合点の候補を設定し、各結合点の候補にリンクの延長線が通るように、リンク55a,55bの傾きを調整する。第1推定部163は、リンク55aの傾きの変化と、リンク55bの傾きの変化とを合計した値が最小となる結合点の候補を、複数の結合点の中から特定する。
 例えば、図14に示す例では、第1推定部163は、複数の結合点の候補c1~c3を設定する。第1推定部163は、各結合点の候補にリンクの延長線が通るように、リンク55a,55bの傾きを調整する。例えば、結合点を結合点c1とした場合において、リンク55aの傾きの変化と、リンク55bの傾きの変化とを合計した値をc1とする。結合点を結合点c2とした場合において、リンク55aの傾きの変化と、リンク55bの傾きの変化とを合計した値をc2とする。例えば、結合点を結合点c3とした場合において、リンク55aの傾きの変化と、リンク55bの傾きの変化とを合計した値をc3とする。
 第1推定部163は、値c1~c3のうち、値c2が最小となる場合には、結合点がc2となるように、リンク55aおよび55bの傾きを調整する。第1推定部163は、他の第2領域に含まれる他のリンクについても、上記処理を実行することで、結合点を特定し、各リンクの傾きを調整する。また、第1推定部163は、結合点にリンクが接続されるように、リンクの長さを調整する。第1推定部163は、結合点により接続されたリンクのグループを、第2領域に含まれる骨格の位置として推定する。
 第1推定部163は、上記処理を実行することで、第2領域33~36に対応する骨格の位置を推定し、各骨格の位置の情報を、第2推定部164および出力部165に出力する。
 第2推定部164は、角度パラメータ毎に、第2領域33~36に含まれる骨格の端点と、骨格の端点から第1領域31に含まれる部位の位置までの長さとを固定した状態で、第1領域31の複数の部位の位置を推定する。第2推定部164は、角度パラメータに対応する複数の部位の組と、第1領域31の複数の部位の概算座標とを比較し、概算座標に最も近い、複数の部位の組を、第1領域31の部位として推定する。第2推定部164は、推定した第1領域31の部位をリンクで接続し、リンクで接続したものを、第1領域31に含まれる骨格の位置として推定する。
 図15は、本実施例1に係る第2推定部の処理の一例を説明するための図である。図15において、Fは、右肩に対応する点である。右肩に対応する点は、第2領域33に含まれる骨格の上端の点に対応する。Fは、左肩に対応する点である。左肩に対応する点は、第2領域34に含まれる骨格の上端の点に対応する。Fは、右股関節に対応する点である。右股関節に対応する点は、第2領域35に含まれる骨格の上端の点に対応する。Fは、左股関節に対応する点である。左股関節に対応する点は、第2領域36に含まれる骨格の上端の点に対応する。
 第2推定部164は、F~Fの3次元座標を固定し、各リンクの長さL~Lを固定した状態で、ある角度パラメータθによって、胴体推定座標P,P,Pを推定する。第2推定部164は、特定部162によるモデル照合処理により特定された部位座標の内、胴体部分に対応する胴体概算座標J,J,Jと、推定した胴体推定座標P,P,Pとをそれぞれ対応付け、対応付けた点の距離合計値Dを算出する。例えば、距離合計値Dは、式(3)によって定義される。
Figure JPOXMLDOC01-appb-M000003
 第2推定部164は、所定の範囲内で、角度パラメータθを変化させ、変化させた各角度パラメータに対する、合計値を算出する。第2推定部164は、算出した合計値のうち、最小となる合計値における、胴体推定座標P,P,Pを、第1領域31の部位として特定する。第2推定部164は、推定した部位をリンクで結んだものを、第1領域31に含まれる骨格として推定する。また、第2推定部164は、特定部162によるモデル照合処理によって特定した部位座標を用いる代わりに、算出した胴体推定座標P,P,Pによって、次フレームの処理のために胴体概算座標J,J,Jを更新してもよい。
 続いて、第2推定部164が第1領域31の胴体推定座標P,P,Pを推定する具体的な処理について説明する。図16および図17は、胴体推定座標を推定する処理の一例を説明するための図である。図16に示すF~Fは、図15で説明したF~Fに対応するものである。図16に示すL~Lは、図15で説明したL~Lに対応するものである。
 図16において、左右の肩座標F,F、首座標Pまでの骨の長さL、Lが固定されるため、首座標Pは、半径r、θによって決まる円周上の点となる。同様に、左右の股関節座標F,F、骨盤座標Pまでの骨の長さL,Lが固定されるため、骨盤座標Pは、半径r、θによって決まる円周上の点となる。θ,θによって首座標Pおよび骨盤座標Pが決まる。
 また、首座標Pと背骨座標Pとの長さは、Lで固定される。骨盤座標Pと背骨座標Pとの長さは、Lで固定される。このため、θおよびθによって、首座標Pおよび骨盤座標Pが決まると、背骨座標Pは、半径r、θによって決まる円周上の点となる。第2推定部164は、角度パラメータを変更しつつ、距離合計値Dを算出する。
 続いて、図17を用いて、θによって決まるPの座標算出例について説明する。
 第2推定部164は、F、F、L、LによりOの座標(x,y,z)を式(4)に基づき算出する。ここで、Fの座標を(xF0,yF0,zF0)とし、Fの座標を(xF1,yF1,zF1)とする。また、LとLとの長さは等しいものとする。
Figure JPOXMLDOC01-appb-M000004
 第2推定部164は、式(5)に基づき、bの長さを算出する。また、第2推定部164は、式(6)に基づき、半径rを算出する。
Figure JPOXMLDOC01-appb-M000005
Figure JPOXMLDOC01-appb-M000006
 第2推定部164は、Oを通りy軸に平行な直線を、Oを通りFに垂直な平面に正射影した直線上でのOからの距離rの点をPとする。第2推定部164は、OP、OP、OFのベクトルをそれぞれ、式(7)に示すものとする。
Figure JPOXMLDOC01-appb-M000007
 第2推定部164は、OP⊥OFの関係より、式(8)を定義する。
Figure JPOXMLDOC01-appb-M000008
 第2推定部164は、OPとOPとの内積の関係より式(9)を定義する。
Figure JPOXMLDOC01-appb-M000009
 第2推定部164は、OPとOPとの外積より式(10)を定義する。
Figure JPOXMLDOC01-appb-M000010
 第2推定部164は、式(5)、(6)、(7)、(8)より、Pの座標(x,y,z)を算出する。第2推定部164は、Pの座標も同様にして算出する。
 第2推定部164は、上記処理を行うことで、第1領域31に含まれる骨格の首P、背骨P、骨盤Pの座標を算出する。第2推定部164は、算出した首P、背骨P、骨盤Pの座標の情報を、出力部165に出力する。
 出力部165は、第1推定部163および第2推定部164から、第1領域31、第2領域32~33に含まれる骨格の認識結果の情報を取得し、取得した情報を出力する処理部である。例えば、骨格の認識結果の情報は、頭、首、背骨、骨盤、左手首、右手首、股関節、左足首、右足首、右肩、左肩、右股関節、左股関節、右肘関節、左肘関節、右膝関節、左膝関節の座標に対応する。
 出力部165は、骨格の認識結果の情報と、3Dセンサ110から取得した3次元データとを対応付けて出力しても良い。例えば、第2推定部164は、dを描画する色として(x,y,z,d)の形式で、3次元データと、骨格の認識結果の情報とを並べて出力する。描画する色dは、予め、dの数値と対応する色を定義しているものとする。また、出力部165は、骨格の認識結果の情報に従って、骨格の認識結果の情報を表示部140に表示しても良い。
 上述した特定部162、第1推定部163、第2推定部164は、所定フレーム毎に、上記処理を繰り返し実行し、所定フレームに対応する骨格の認識結果を生成する。出力部165は、識別番号と対応付けて、骨格の認識結果を、骨格データテーブル153に順次格納する。
 次に、本実施例1に係る骨格推定装置100の処理手順の一例について説明する。図18は、本実施例1に係る骨格推定装置の処理手順を示すフローチャートである。図18に示すように、骨格推定装置100の特定部162は、背景差分領域に含まれる観測点の情報を取得する(ステップS50)。
 特定部162は、2値化処理を実行する(ステップS51)。特定部162は、細線化処理を実行する(ステップS52)。特定部162は、特徴点抽出処理を実行する(ステップS53)。特定部162は、モデル照合処理を実行する(ステップS54)。
 骨格推定装置100の第1推定部163は、円柱主軸の決定処理を実行する(ステップS55)。第1推定部163は、円柱半径および円柱中心の決定処理を実行する(ステップS56)。第1推定部163は、リンク結合処理を実行する(ステップS57)。骨格推定装置100の第2推定部164は、胴体の骨格認識処理を実行する(ステップS58)。骨格推定装置100の出力部165は、骨格の認識結果を出力する(ステップS59)。
 続いて、図18のステップS58に示した胴体の骨格認識処理の処理手順について説明する。図19は、胴体の骨格認識処理の処理手順を示すフローチャートである。図19に示すように、骨格推定装置100の第2推定部164は、両肩、両股関節の座標、各関節間の長さを取得する(ステップS61)。
 第2推定部164は、パラメータθを更新し(ステップS62)、パラメータθを更新する(ステップS63)。第2推定部164は、首座標Pを算出し(ステップS64)、骨盤座標Pを算出する(ステップS65)。第2推定部164は、首-骨盤間距離Pが首から骨盤までのリンク長合計よりも短いか否かを判定する(ステップS66)。
 第2推定部164は、首-骨盤間距離Pが首から骨盤までのリンク長合計よりも短くない場合には(ステップS66,No)、ステップS63に移行する。一方、第2推定部164は、首-骨盤間距離Pが首から骨盤までのリンク長合計よりも短い場合には(ステップS66,Yes)、ステップS67に移行する。
 第2推定部164は、パラメータθを更新する(ステップS67)。第2推定部164は、背骨座標Pを算出する(ステップS68)。第2推定部164は、PJの距離合計値Dを算出する(ステップS69)。
 第2推定部164は、距離合計値Dが最小であるか否かを判定する(ステップS70)。第2推定部164は、距離合計値Dが最小でない場合には(ステップS70,No)、ステップS72に移行する。一方、第2推定部164は、距離合計値Dが最小である場合には(ステップS70,Yes)、ステップS71に移行する。
 第2推定部164は、各θを保存する(ステップS71)。例えば、距離合計値Dが最小となるθをθmin=(θ,θ,θ)とする。
 第2推定部164は、全てのθの選択が完了したか否かを判定する(ステップS72)。第2推定部164は、全てのθの選択が完了していない場合には(ステップS72,No)、ステップS67に移行する。第2推定部164は、全てのθの選択が完了した場合には(ステップS72,Yes)、ステップS73に移行する。
 第2推定部164は、全てのθの選択が完了したか否かを判定する(ステップS73)。第2推定部164は、全てのθの選択が完了していない場合には(ステップS73,No)、ステップS63に移行する。第2推定部164は、全てのθの選択が完了した場合には(ステップS73,Yes)、ステップS74に移行する。
 第2推定部164は、全てのθの選択が完了したか否かを判定する(ステップS74)。第2推定部164は、全てのθの選択が完了していない場合には(ステップS74,No)、ステップS62に移行する。第2推定部164は、全てのθの選択が完了した場合には(ステップS74,Yes)、ステップS75に移行する。
 第2推定部164は、θminを用いて首P、背骨P、骨盤Pの座標を算出する(ステップS75)。第2推定部164は、首P、背骨P、骨盤Pの座標を出力する(ステップS76)。
 次に、本実施例1に係る骨格推定装置100の効果について説明する。骨格推定装置100は、対象者の頭、両腕、胴体、両足の領域を大まかに特定し、両腕および両足の骨格の位置を認識した後に、両腕および両足の骨格の位置の認識結果を制約条件として、胴体の骨格を認識する。これにより、高速かつ正確に対象者の骨格を認識することができる。
 例えば、骨格推定装置100は、両腕および両足の骨格の座標と、関節間の長さを固定した状態で、角度パラメータを変化させることで、胴体の骨格の位置の候補を複数算出する。骨格推定装置100は、胴体の骨格の位置の候補のうち、胴体概算座標に近い候補を、胴体の骨格の位置として推定する。両腕および両足の骨格の位置は、胴体と比較して、高速かつ正確に骨格の位置を推定できるので、両腕および両足の骨格の位置を先に求めて、胴体を算出する場合の制約条件に用いることで、胴体の骨格の位置を算出する際に、計算量を削減しつつ、精度を向上させることができる。
 なお、第2推定部164は、両腕および両足の骨格の座標と、関節間の長さを固定した状態で、角度パラメータを変化させることで、胴体の骨格の位置の候補を複数算出する場合に、対象者のスケールにあわせて、関節間の長さを調整しても良い。このような処理を実行することで、より正確に、対象者の骨格を認識することができる。
 次に、上記実施例に示した骨格推定装置100のハードウェア構成の一例について説明する。図20は、骨格推定装置のハードウェア構成の一例を示す図である。
 図20に示すように、コンピュータ170は、各種演算処理を実行するCPU171と、利用者からのデータの入力を受け付ける入力装置172と、ディスプレイ173を有する。また、コンピュータ170は、記憶媒体からプログラム等を読取る読み取り装置174と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置175とを有する。コンピュータ170は、3Dセンサ176を有する。また、コンピュータ170は、各種情報を一時記憶するRAM177と、ハードディスク装置178を有する。そして、各装置171~178は、バス179に接続される。
 ハードディスク装置178は、特定プログラム178a、第1推定プログラム178b、第2推定プログラム178cを有する。CPU171は、各プログラム178a~178cを読み出してRAM177に展開する。特定プログラム178aは、特定プロセス177aとして機能する。第1推定プログラム178bは、第1推定プロセス177bとして機能する。第2推定プログラム178cは、第2推定プロセス177cとして機能する。
 例えば、特定プロセス177aの処理は、特定部162の処理に対応する。第1推定プロセス177bの処理は、第1推定部163の処理に対応する。第2推定プロセス177cの処理は、第2推定部164の処理に対応する。
 なお、各プログラム178a~178cについては、必ずしも最初からハードディスク装置178に記憶させておかなくても良い。例えば、コンピュータ170に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ170がこれらから各プログラム178a~178cを読み出して実行するようにしてもよい。
 実施例1において説明した骨格推定装置100を利用したスキル判定装置の実施例2について説明する。スキル判定装置は、利用者の骨格の認識結果を基にして、利用者のモーションデータを抽出し、利用者のスキルを判定する装置である。
 本実施例2に係るスキル判定装置の構成について説明する。図21は、本実施例2に係るスキル判定装置の構成を示す機能ブロック図である。図21に示すように、スキル判定装置100Aは、モーションセンサ10a,10bに接続される。スキル判定装置100Aは、センシング部110a,110b、記憶部120A、お手本データ生成部130A、スキル判定定義部140A、フェーズ判定部150A、スキル判定部160A、出力部170Aを有する。
 モーションセンサ10a,10bをまとめて、適宜、モーションセンサ10と表記する。モーションセンサ10は、人や物の動きを検知するセンサである。例えば、モーションセンサ10は、人の特徴点の3次元座標を検知し、特徴点と3次元座標とを対応付けたセンシング情報を、スキル判定装置100Aに出力する。ここで、人の特徴点は、例えば、人の頭、首、背中、腰や、その他の関節部分に対応する。例えば、モーションセンサ10a,10bは、実施例1で説明した骨格推定装置100の構成を有する。
 モーションセンサ10は、どのような従来技術を用いて、センシング情報を出力してもよい。例えば、モーションセンサ10は、反射型のMAモーションセンサ、受光型の熱型センサに対応する。または、人に3軸加速度センサ、3軸ジャイロセンサを装着させて、センシング情報を抽出してもよい。
 センシング部110aは、専門家の指導を受ける利用者のセンシング情報をモーションセンサ10から取得する処理部である。以下の説明において、専門家の指導を受ける利用者を単に利用者と表記する。センシング部110aは、モーションセンサ10からセンシング情報をフレームデータとして連続的に取得し、フェーズ判定部150Aに出力する。
 図22は、フレームデータのデータ構造の一例を示す図である。図22に示すように、フレームデータは連続的にセンシング部110aによって取得され、フェーズ判定部150Aに出力される。各フレームデータは、それぞれフレーム番号に対応付けられる。図示を省略するが、各フレームデータは、時刻情報に対応付けられ、時系列順に、フェーズ判定部150Aに出力される。例えば、フレーム番号「102」のフレームデータ20は、時刻「t2」において、モーションセンサ10に検出された利用者の特徴点の3次元座標を示す。
 センシング部110bは、専門家のセンシング情報をモーションセンサ10から取得する処理部である。センシング部110bは、モーションセンサ10からセンシング情報をフレームデータを連続的に取得し、お手本データ生成部130Aに出力する。専門家のフレームデータのデータ構造は、図22に示したフレームデータのデータ構造と同じである。
 以下では、説明の便宜上、専門家のモーションデータに含まれるフレームデータを、第1フレームデータと表記する。利用者のモーションデータに含まれるフレームデータを第2フレームデータと表記する。
 記憶部120Aは、お手本データ120aおよびスキル判定定義データ120bを有する。記憶部120Aは、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子やHDD(Hard Disk Drive)などの記憶装置に対応する。
 お手本データ120aは、第1フレームデータと、この第1フレームデータのフェーズの種別とをそれぞれ対応付ける情報である。お手本データ120aは、フェーズ定義情報に対応する。例えば、フェーズの種別には、「start」、「backswing」、「top」、「impact」、「follow」、「end」等が含まれる。お手本データ120aは、後述するお手本データ生成部130Aによって生成される。
 図23は、お手本データのデータ構造の一例を示す図である。図23に示すように、このお手本データ120aは、メタデータ30Aと、モーションデータ20Aとを含む。メタデータ30Aは、第1フレームデータのフレーム番号と、フェーズの種別とを対応付ける情報である。図23に示すモーションデータ20Aは、複数の第1フレームデータを有する。
 図23のメタデータ30Aにおいて、領域30aは、フレーム番号「100」の第1フレームデータのフレームの種別が「start」であることを定義する。領域30bは、フレーム番号「150」の第1フレームデータのフレームの種別が「backswing」であることを定義する。領域30cは、フレーム番号「250」の第1フレームデータのフレームの種別が「top」であることを定義する。領域30dは、フレーム番号「450」の第1フレームデータのフレームの種別が「end」であることを定義する。
 スキル判定定義データ120bは、複数の第2フレームデータに含まれる特徴点から導き出させる利用者の動作の特徴量と、スキルの判定基準と、判定対象となるフェーズの種別とを対応付けて定義する情報である。
 図24は、スキル判定定義データのデータ構造の一例を示す図である。図25は、スキル判定定義データを補足説明するための図である。図24に示すように、このスキル判定定義データ120bは、モジュール名と、スキル判定名と、パラメータ定義とを対応付ける。モジュール名は、後述するスキル判定部160Aがスキルの判定を行う場合に利用するモジュール名である。スキル判定名は、スキルの判定名を定義したものである。パラメータ定義は、対象フェーズと、比較位置と、基準パラメータとを有する。ここで、スキルは、例えば、専門家がゴルフのスイング等を行う間の、一連の動作、姿勢、関節の角度を示すものである。例えば、スキル判定名の「頭の移動」は、スイングを行う間の専門家の頭の移動をスキルとして定義する。また、スキルの判定基準は、専門家の一連の動作、姿勢、関節の角度を基準とするものであり、利用者の一連の動作、姿勢、関節の角度がどの程度、専門家のものと比較して異なっているのかに応じて、評価が行われる。例えば、対象フェーズ、比較位置、基準パラメータの組が、スキルの判定基準に対応する。このスキルの判定基準を基にスキルを判定する処理については、後述する。
 対象フェーズは、スキルの判定対象となるフェーズの種別を特定する情報である。比較位置は、比較する第2フレームデータの種別および特徴点の位置を定義する情報である。基準パラメータおよび基準値は、スキルの善し悪しを判定する場合に利用する数値である。
 図24において、モジュール名「PositionChecker」、スキル判定名「頭の移動」のレコードについて説明する。この「頭の移動」のスキル判定は、ゴルフのドライバをスイングする間において、利用者の頭の移動の善し悪しを判定するものである。対象フェーズは「start-follow」であるため、判定対象となる第2フェーズの種別は図25に示すように「start、backswing、top、impact、follow」となる。
 比較位置は「start:頭、current:頭」である。このため、比較元の特徴点の位置は、フェーズの種別が「strat」となる第2フレームデータのうち最初の第2フレームデータの頭の特徴点の位置となる。比較先の特徴点の位置は、現在の第2フレームデータの頭の特徴点の位置となる。
 基準パラメータは「8、10、20」である。比較対象となる特徴点の位置の差が「8cm未満」の場合に、判定結果が「すばらしい(Excellent)」であることが定義される。比較対象となる特徴点の位置の差が「8cm以上、10cm未満」の場合に、判定結果が「よい(Good)」であることが定義される。比較対象となる特徴点の位置の差が「10cm以上、20cm未満」の場合に、判定結果が「悪い(Bad)」であることが定義される。
 続いて、モジュール名「AngleChecker(1)」、スキル判定名「左肘角度」のレコードについて説明する。この「左肘角度」のスキル判定は、ドライバをスイングする間において、利用者の左肘角度の善し悪しを判定するものである。対象フェーズは「start-impact」である。判定対象となる第2フェーズの種別は図25に示すように「start、backswing、top、impact」となる。
 比較位置は「current:左肩、current:左肘、current:左手首」である。このため、現在の第2フレームデータの左肩の特徴点および左肘の特徴点を通る線分と、左肘の特徴点および左手首の特徴点を通る直線とのなす角度が、判定対象となる。
 基準パラメータは「(135-180)、(130-135、180-190)、(110-130、190-200)」である。なす角度が「135-180」に含まれる場合に、判定結果が「すばらしい(Excellent)」であることが定義される。なす角度が「130-135、180-190」に含まれる場合に、判定結果が「よい(Good)」であることが定義される。なす角度が「110-130、190-200」に含まれる場合に、判定結果が「悪い(Bad)」であることが定義される。
 続いて、モジュール名「AngleChecker(2)」、スキル判定名「前傾姿勢」のレコードについて説明する。この「前傾姿勢」のスキル判定は、ドライバをスイングする間において、利用者の前傾姿勢の善し悪しを判定するものである。対象フェーズは「start-impact」である。判定対象となる第2フェーズの種別は図25に示すように「start、backswing、top、impact」となる。
 比較位置は「current:頭、current:腰」である。このため、現在の第2フレームデータの頭の特徴点および腰の特徴点を通る線分と垂線とのなす角度が、判定対象となる。
 基準パラメータは「(25-40)、(20-25、40-55)、(8-20、55-60)」である。なす角が「25-40」に含まれる場合に、判定結果が「すばらしい(Excellent)」であることが定義される。なす角が「20-25、40-55」である場合に、判定結果が「よい(Good)」であることが定義される。なす角が「8-20、55-60」である場合に、判定結果が「悪い(Bad)」であることが定義される。
 図21の説明に戻る。お手本データ生成部130Aは、センシング部110bから専門家のモーションデータを取得し、お手本データ120aを生成する処理部である。お手本データ生成部130Aは、生成したお手本データ120aを記憶部120Aに保存する。
 例えば、お手本データ生成部130Aは、専門家のモーションデータに含まれる第1フレームデータを表示装置に表示させ、どの第1フレームデータがどのフェーズの種別に対応するのかを、入力装置から受け付ける。ここでは、表示装置および入力装置の図示を省略する。
 専門家は、入力装置を操作して、第1フレームデータとフェーズの種別との関係を、お手本データ生成部130Aに入力する。お手本データ生成部130Aは、入力装置から受け付けた情報を基にして、第1フレームデータのフレーム番号と、フェーズの種別を対応付けて、図23に示したメタデータ30Aを生成する。お手本データ生成部130Aは、メタデータ30Aと、モーションデータ20Aとを有するお手本データ120aを、記憶部120Aに保存する。
 スキル判定定義部140Aは、スキル判定定義データ120bを生成する処理部である。スキル判定定義部140Aは、生成したスキル判定定義データ120bを記憶部120Aに保存する。
 例えば、スキル判定定義部140Aは、スキル判定定義の設定画面を、表示装置に表示させ、スキル判定定義に関する情報を、入力装置から受け付ける。専門家は、入力装置を操作して、スキル判定定義に関する情報を入力する。スキル判定定義部140Aは、スキル判定定義に関する情報を基にして、スキル判定定義データ120bを生成し、記憶部120Aに保存する。
 図26は、表示装置に表示される表示画面の一例を示す図である。表示画面50には、お手本データ生成部130Aが表示させるフェーズ設定画面50aと、スキル判定定義部140Aが表示させるスキル設定画面50bが含まれる。また、表示画面50には、専門家のモーションデータを表示する再生画面50cと、現在の第1フレームデータのフレーム番号表示画面50dとを表示してもよい。
 専門家は、入力装置を操作して、再生画面50cとフレーム番号表示画面50dとを参照しつつ、フェーズ設定画面50aに、フレーム番号と、フェーズの種別との対応関係を入力する。例えば、お手本データ生成部130Aは、フェーズ設定画面50aに入力された情報を基にして、お手本データ120aを生成する。
 専門家は、入力装置を操作して、スキル設定画面50bのいずれかのチェッカー名を選択する。以下の説明では、「PositionChecker」、「AngleCheker(1)」、「AngleCheker(2)」が選択された場合に表示されるパラメータ設定画面の一例についてそれぞれ説明する。
 図27は、「PositionChecker」のパラメータ設定画面の一例を示す図である。図27に示すように、パラメータ設定画面60には、判定対象を定義する領域61と、判定基準を定義する領域62が含まれる。また、領域61には、比較元を定義する領域61a、比較先を定義する領域61b、対象区間を定義する領域61cが含まれる。専門家は、入力装置を操作して、各領域に情報を入力する。
 図27に示す例では、比較元を定義する領域61aには、比較元の特徴点の位置が、フェーズの種別が「start」となる第2フレームデータのうち最初の第2フレームデータの頭の特徴点の位置であることが定義されている。比較先を定義する領域61bには、比較先の特徴点の位置が、現在の第2フレームデータの頭の特徴点の位置であることが定義されている。対象区間を定義する領域61cには、対象フェーズが「start-follow」であることが定義されている。判定基準を定義する領域62には、基準パラメータは「8、10、20」である旨が定義されている。
 例えば、図27に入力された情報を基にして、スキル判定定義部140Aは、図24のモジュール名「PositionChecker」に対応するレコードを生成する。
 図28は、「AngleChecker(1)」のパラメータ設定画面の一例を示す図である。パラメータ設定画面70には、判定対象を定義する領域71と、判定基準を定義する領域72が含まれる。また、領域71には、比較対象の特徴点を定義する領域71a、対象区間を定義する領域71bが含まれる。専門家は、入力装置を操作して、各領域に情報を入力する。
 図28に示す例では、比較対象の特徴点を定義する領域71aには、現在の第2フレームデータの左肩の特徴点および左肘の特徴点を通る線分と、左肘の特徴点および左手首の特徴点を通る直線とのなす角度が、判定対象であることが定義されている。対象区間を定義する領域71bには、対象フェーズが「start-impact」であることが定義されている。判定基準を定義する領域72には、各種の基準パラメータが定義されている。
 例えば、図28に入力された情報を基にして、スキル判定定義部140Aは、図24のモジュール名「AngleChecker(1)」に対応するレコードを生成する。
 図29は、「AngleChecker(2)」のパラメータ設定画面の一例を示す図である。パラメータ設定画面80には、判定対象を定義する領域81と、判定基準を定義する領域82が含まれる。また、領域81には、垂線を定義する領域81a、比較対象の特徴点を定義する領域81b、対象区間を定義する領域81cが含まれる。専門家は、入力装置を操作して、各領域に情報を入力する。
 図29に示す例では、垂線を定義する領域81aには、垂線の始点と終点の3次元座標が定義されている。比較対象の特徴点を定義する領域81bには、現在の第2フレームデータの頭の特徴点および腰の特徴点を通る線分が定義されている。対象区間を定義する領域81cには、対象フェーズが「start-impact」であることが定義されている。判定基準を定義する領域82には、各種の基準パラメータが定義されている。
 例えば、図29に入力された情報を基にして、スキル判定定義部140Aは、図24のモジュール名「AngleChecker(2)」に対応するレコードを生成する。
 図21の説明に戻る。フェーズ判定部150Aは、お手本データ120aに含まれる各第1フレームデータと、利用者の第2フレームデータとを比較して、第2フレームデータに対応するフェーズの種別を判定する処理部である。フェーズ判定部150Aは、判定したフェーズの種別を取得したフレームデータに付与し、スキル判定部160Aに出力する。
 以下において、フェーズ判定部150Aの処理の一例を具体的に説明する。フェーズ判定部150Aは、利用者の第2フレームデータをメモリに保存し、補正処理、特徴量計算、フレームマッチングを順に実行する。
 フェーズ判定部150Aが実行する補正処理の一例について説明する。フェーズ判定部150Aは、第2フレームデータの縦軸補正を行う。例えば、モーションセンサ10が、設置型センサの場合には、設置位置や設置角度が前回の環境と異なる場合があり、設置環境に合わせて第2フレームデータの縦軸を補正する。例えば、フェーズ判定部150Aは、第2フレームデータを表示装置に表示させて、利用者からの補正情報の入力を受け付け、第2フレームデータの縦軸を垂線に対応させる。また、フェーズ判定部150Aは、利用者の向きが正面の向きとなるように合わせて補正してもよい。フェーズ判定部150Aは、補正情報の入力を受け付けた後は、係る補正情報を利用して、残りの第2フレームデータの縦軸補正や向きの補正を行ってもよい。
 フェーズ判定部150Aは、第2フレームデータの特徴点の位置のばらつきを押さえるための補正処理も合わせて実行する。例えば、フェーズ判定部150Aは、前後の第2フレームデータの特徴点の位置の平均値を、間の第2フレームデータの特徴点の位置とすることで、ばらつきを押さえる。また、フェーズ判定部150Aは、ローパスフィルタを用いて、第2フレームデータに含まれるノイズ成分を取り除いてもよい。
 フェーズ判定部150Aが実行する特徴量計算の一例について説明する。本実施例1では、一例として、第2フレームデータに含まれる各関節に対する特徴点の3次元座標を、特徴量としてそれぞれ算出するものとする。
 フェーズ判定部150Aが実行するその他の特徴量計算の一例について説明する。各スポーツ固有のスイングを特徴付ける関節をピックアップする場合において、フェーズ判定部150Aは、手や腰、指等の3次元座標や速度・加速度を特徴量として計算してもよい。
 各スポーツ固有ではない汎用的なデータを特徴量とする場合に、フェーズ判定部150Aは、全関節の3次元座標や速度・加速度を特徴量として計算してもよい。また、フェーズ判定部150Aは、全関節位置の重心位置等を特徴量として計算してもよい。
 フェーズ判定部150Aが実行するフレームマッチングの一例について説明する。図30は、フレームマッチングの一例を説明するための図である。図30に示す例では、現在の第2フレームデータを、第2フレームデータSとする。また、お手本データ120aに含まれる各第1フレームデータをそれぞれ、第1フレームデータt1~t6とする。フェーズ判定部150Aは、式(11)を基にして、第2フレームデータSと、第1フレームデータt1~t6とについて、関節の特徴点毎の距離の平均値をそれぞれ算出する。以下の説明では、関節の特徴点毎の距離の平均値を、「関節平均距離」と表記する。
Figure JPOXMLDOC01-appb-M000011
 式(11)について、xS0j、yS0j、zS0jは、第2フレームデータのある関節(jの数値に対応する関節)の特徴点の3次元座標である。xtij、ytij、ztijは、第1フレームデータtiのある関節(jの数値に対応する関節)の特徴点の3次元座標である。nは、関節の特徴点の数である。フェーズ判定部150Aは、式(11)によって算出される各関節平均距離のうち、かかる関節平均距離が最小となる第2フレームデータS0と第1フレームデータとの組を特定する。
 図30に示す例では、第2フレームデータSと第1フレームデータtとの組における関節平均距離が最小となるため、フェーズ判定部150Aは、第2フレームデータSに対応する第1フレームデータを、第1フレームデータtとして判定する。また、フェーズ判定部150Aは、第2フレームデータSのフェーズの種別を、第1フレームデータt2に対応するフェーズの種別として判定する。
 ところで、フェーズ判定部150Aは、式(11)を用いて関節平均距離を算出する場合に、重みを用いて、関節平均距離の値を補正する。例えば、フェーズ判定部150Aは、関節平均距離を重みで除算することで、関節平均距離を補正してもよい。図31は、重みを説明するための図である。図31において、横軸は、第1フレームデータのフレーム番号に対応し、縦軸は重みに対応する。例えば、各フレーム番号に対応する重みの合計を1とする。
 例えば、第2フレームデータS0がマッチする第1フレームデータは、その前の第2フレームデータS-1がマッチした第1フレームデータの近くの第1フレームデータである可能性が高い。例えば、第2フレームデータS-1がマッチした第1フレームデータを第1フレームデータtとすると、第2フレームデータSがマッチする第1フレームデータは、第1フレームデータtの後でかつ、近くの第1フレームデータである可能性が高い。
 このため、前の第2フレームデータS-1がマッチした第1フレームデータよりも後の第1フレームで、マッチした第1フレームデータに近い第1フレームデータほど、重みを大きくする。また、マッチした第1フレームデータの近くでも、マッチした第1フレームデータの前のフレームでは、可能性が低いため、重みを小さくする。
 式(11)で算出した関節平均距離の値を重みで補正することにより、マッチングする第1フレームデータが前後したり、ジャンプすることを防止することができる。
 フェーズ判定部150Aは、他の第2フレームデータに対しても上記処理を繰り返し実行することで、各第2フレームデータに対応する第1フレームデータを判定し、各第2フレームデータのフェーズの種別を判定する。フェーズ判定部150Aは、第2フレームデータのうち、フェーズの種別がstartからendまでの第2フレームデータを抽出し、モーションデータとしてファイルに保存し、出力部170Aに出力する。
 スキル判定部160Aは、スキル判定定義データ120bと、フェーズの種別毎に抽出された第2フレームデータに含まれる特徴点から導き出される利用者の動作、姿勢、関節の特徴量とを基にして、フェーズの種別毎に、利用者のスキルを判定する処理部である。
 スキル判定部160Aの処理の一例について説明する。スキル判定部160Aは、スキル判定定義データ120bを参照し、判定モジュールを生成する。例えば、図24に示す例では、スキル判定部160Aは、「PositionChecker」モジュール、「AngleChecker(1)」モジュール、「AngleChecker(2)」モジュールを生成する。
 スキル判定部160Aは、フェーズ判定部150Aから受け付けた第2フレームデータを、この第2フレームデータに対応するフェーズの種別と、スキル判定定義データ120bに基づき、対応するモジュールに第2フレームデータを出力する。モジュールは、第2フレームデータを受け付けると、スキル判定定義データ120bに定義されたデータを基にして、利用者のスキル判定の結果を出力する。
 図32および図33は、スキル判定部の処理を説明するための図である。図32について説明する。スキル判定部160Aは、フェーズの種別が「start」の第2フレームデータSを取得する。図24で示したように、「PositionChecker」の対象フェーズが「start-follow」であるため、スキル判定部160Aは、第2フレームデータSを「PositionChecker」モジュール160aに出力する。例えば、「PositionChecker」モジュール160aは、第2フレームデータSの頭の特徴点の3次元座標を保存する。
 図24で示したように、「AngleChecker(1)」の対象フェーズが「start-impact」であるため、スキル判定部160Aは、第2フレームデータSを「AngleChecker(1)」モジュール160bに出力する。「AngleChecker(1)」モジュール160bは、比較位置と基準パラメータに基づき、第2フレームデータSを評価することで、利用者のスキル判定を行い、判定結果を出力する。
 例えば、「AngleChecker(1)」モジュール160bは、なす角が「135-180」に含まれる場合に、判定結果「すばらしい(Excellent)」を出力する。「AngleChecker(1)」モジュール160bは、なす角が「130-135、180-190」に含まれる場合に、判定結果「よい(Good)」を出力する。「AngleChecker(1)」モジュール160bは、なす角が「110-130、190-200」に含まれる場合に、判定結果「悪い(Bad)」を出力する。
 なお、「AngleChecker(1)」モジュール160bは、判定結果とは別に、コメントを出力してもよい。例えば、「AngleChecker(1)」モジュール160bは、なす角が「130-135」に含まれる場合に、コメント「曲げ気味」を出力し、なす角が「180-190」に含まれる場合に、コメント「伸ばし気味」を出力する。「AngleChecker(1)」モジュール160bは、なす角が「110-130」に含まれる場合に、コメント「曲げすぎ」を出力し、なす角が「190-200」に含まれる場合に、コメント「伸ばしすぎ」を出力する。
 図24で示したように、「AngleChecker(2)」の対象フェーズが「start-impact」であるため、スキル判定部160Aは、第2フレームデータSを「AngleChecker(2)」モジュール160cに出力する。「AngleChecker(2)」モジュール160cは、比較位置と基準パラメータに基づき、第2フレームデータSを評価することで、利用者のスキル判定を行い、判定結果を出力する。
 例えば、「AngleChecker(2)」モジュール160cは、なす角が「25-40」に含まれる場合に、判定結果「すばらしい(Excellent)」を出力する。「AngleChecker(2)」モジュール160cは、なす角が「20-25、40-55」である場合に、判定結果「よい(Good)」を出力する。「AngleChecker(2)」モジュール160cは、なす角が「8-20、55-60」である場合に、判定結果「悪い(Bad)」を出力する。
 なお、「AngleChecker(2)」モジュール160cは、判定結果とは別に、コメントを出力してもよい。例えば、「AngleChecker(2)」モジュール160cは、なす角が「20-25」に含まれる場合に、コメント「立ち気味」を出力し、なす角が「40-55」に含まれる場合に、コメント「かがみ気味」を出力する。「AngleChecker(2)」モジュール160cは、なす角が「8-20」に含まれる場合に、コメント「立ちすぎ」を出力し、なす角が「55-60」に含まれる場合に、コメント「かがみすぎ」を出力する。
 続いて、図33について説明する。スキル判定部160Aは、フェーズの種別が「follow」の第2フレームデータSmを取得する。図24で説明したように、「PositionChecker」の対象フェーズが「start-follow」であるため、スキル判定部160Aは、第2フレームデータSmを「PositionChecker」モジュール160aに出力する。
 「PositionChecker」モジュール160aは、比較位置と基準パラメータに基づき、第2フレームデータSmを評価することで、利用者のスキル判定を行い、判定結果を出力する。例えば、「PositionChecker」モジュール160aは、第2フレームデータSの頭の特徴点の位置と、第2フレームデータSmの頭の特徴点の位置との差が「8cm未満」の場合に、判定結果「すばらしい(Excellent)」を出力する。「PositionChecker」モジュール160aは、第2フレームデータSの頭の特徴点の位置と、第2フレームデータSの頭の特徴点の位置との差が「8cm以上、10cm未満」の場合に、判定結果「よい(Good)」を出力する。「PositionChecker」モジュール160aは、第2フレームデータSの頭の特徴点の位置と、第2フレームデータSの頭の特徴点の位置との差が「10cm以上、20cm未満」の場合に、判定結果「悪い(Bad)」を出力する。
 「PositionChecker」モジュール160aは、判定結果とは別に、コメントを出力してもよい。例えば、「PositionChecker」モジュール160aは、第2フレームデータSの頭の特徴点の位置と、第2フレームデータSmの頭の特徴点の位置との差が「10cm」以上である場合に、コメント「動きすぎ」を出力する。
 なお、図24で示したように、「AngleChecker(1)」の対象フェーズが「start-impact」であるため、スキル判定部160Aは、第2フレームデータSmを「AngleChecker(1)」モジュール160bに出力しない。「AngleChecker(2)」の対象フェーズが「start-impact」であるため、スキル判定部160Aは、第2フレームデータSmを「AngleChecker(2)」モジュール160cに出力しない。なお、スキル判定部160Aが、第2フレームデータを各モジュールに出力し、モジュールが、第2フレームデータを処理するか否かを個別に判定してもよい。
 スキル判定部160Aは、各モジュールの判定結果と、第2フレームデータとを対応付けた判定結果の情報とを、出力部170Aに出力する。
 出力部170Aは、画像情報、音声情報または利用者に対する肉体的な刺激によって、スキル判定部160Aの判定結果を出力する処理部である。以下において、出力部170Aの処理の一例について説明する。
 出力部170Aが、スキル判定部160Aの判定結果を基にして生成する表示画面について説明する。図34は、出力部が生成する表示画面の一例を示す図(1)である。図34に示すように、この表示画面200には、自データ画面200aと、手本データ画面200bと、スキル判定画面200cとが含まれる。
 出力部170Aは、自データ画面200aに、スキル判定部160Aから取得する利用者の第2フレームデータを表示させる。また、出力部170Aは、第2フレームデータの各特徴点と、動き、姿勢、関節の特徴量と、コメントとを対応付けて表示させてもよい。図34に示す例では、出力部170Aは、特徴点の頭にヘッド移動(11cm、動きすぎ)を表示させる。出力部170Aは、特徴点の左肩に左肘角度(154°)を表示させる。
 出力部170Aは、手本データ画面200bに、お手本データ120aの第1フレームデータを表示させる。例えば、出力部170Aは、第1フレームデータのフェーズの種別を、自データ画面200aに表示させている第2フレームデータのフェーズの種別に対応させる。また、出力部170Aは、第1フレームデータの各特徴点と、動き、姿勢、関節の特徴量とを対応付けて表示させてもよい。図34に示す例では、出力部170Aは、特徴点の頭にヘッド移動(9cm)を表示させる。出力部170Aは、特徴点の左肩に左肘角度(155°)を表示させる。
 出力部170Aは、スキル判定部160Aから取得するスキルの判定結果を、スキル判定画面200cに表示させる。例えば、出力部170Aは、スキル判定名と、判定結果と、動き、姿勢、関節の特徴量と、コメントとを対応付けて表示させてもよい。
 出力部170Aは、図34の表示画面を各第2フレームデータが取得されるたびに、200a,200b、200cをリアルタイムに更新してもよい。また、フェーズ種別が「End」を判定後に、start-endまでのフレームデータを本画面と同様な画面で再生してもよい。
 また、出力部170Aは、図34の表示画面200の自データ画面200aにおいて、第2フレームデータのフェーズを順に変化させ、それに合わせて、手本データ画面200b、スキル判定画面200cの内容を切り替える処理を行ってもよい。
 出力部170Aは、各フェーズの種別と、第2フレームデータと、判定結果とを対応付けて表示画面を生成してもよい。図35は、出力部が生成する表示画面の一例を示す図(2)である。図35の表示画面210に示すように、出力部170Aは、各フェーズの種別の第2フレームデータと、判定結果とを対応付けて表示する。例えば、出力部170Aは、スキル判定名と、判定結果と、動き、姿勢、関節の特徴量と、コメントとを対応付けて表示させてもよい。また、出力部170Aは、3Dの骨格情報に加えて、画像情報を合わせて表示させてもよい。
 続いて、出力部170Aが判定結果を基にして、音声情報を出力する場合の処理について説明する。出力部170Aは、スキル判定部160Aから出力される判定結果に合わせて、スキル結果や直すべきポイントを音声で出力させてもよい。例えば、出力部170Aは、ヘッド移動に関する判定結果がBadである場合には、「頭が動きすぎです」という音声を出力させる。どの判定結果に対してどの音声を出力するのかは、事前にテーブル等に設定されており、係るテーブルを基にして、出力部170Aは音声を出力する。
 続いて、出力部170Aが利用者に対する肉体的な刺激によって、判定結果を通知する場合の処理について説明する。利用者は、小型モータを含む装備を装着し、出力部170Aは、判定結果に合わせて小型モータを動作させる。例えば、出力部170Aは、各種の判定結果「Excelltent、Good、Bad」に応じて、小型モータの回転数を変化させる。判定結果に対する小型モータの回転数は、事前にテーブル等に設定されており、係るテーブルを基にして、出力部170Aは小型モータを回転させる。
 利用者は、ペルチェ素子等の冷却デバイスを装着し、出力部170Aは、判定結果に合わせて冷却デバイスを冷却させる。例えば、出力部170Aは、各種の判定結果「Excelltent、Good、Bad」に応じて、冷却デバイスの温度を変化させる。判定結果に対する冷却デバイスの温度は、事前にテーブル等に設定されており、係るテーブルを基にして、出力部170Aは冷却デバイスを制御する。
 利用者は、低周波電流の流れるデバイスを装着し、出力部170Aは、判定結果に合わせてデバイスに電流を発生させる。例えば、出力部170Aは、各種の判定結果「Excelltent、Good、Bad」に応じて、電流の大きさを変化させる。判定結果に対する電流の大きさは、事前にテーブル等に設定されており、係るテーブルを基にして、出力部170Aはデバイスを制御する。
 更に、出力部170Aは、パワードスーツや人工筋肉を利用者に装着させ、専門家のモーションデータに合わせてパワードスーツや人工筋肉を動かすことで、利用者に専門家の動きを体感させてもよい。
 次に、本実施例に係るスキル判定装置100Aの処理手順について説明する。図36は、スキル判定装置の処理手順を示すフローチャートである。図36に示すように、スキル判定装置100Aのフェーズ判定部150Aは、お手本データ120aを読み込む(ステップS101)。スキル判定装置100Aのスキル判定部160Aは、スキル判定定義データ120bを読み込む(ステップS102)。
 スキル判定部160Aは、スキル判定定義データ120bに基づいて、モジュールを生成し、パラメータをセットする(ステップS103)。フェーズ判定部150Aは、利用者のモーションデータの取得を開始する(ステップS104)。スキル判定装置100Aは、入力装置を介して、終了イベントを検知したか否かを判定する(ステップS105)。
 スキル判定装置100Aは、入力装置を介して、終了イベントを検知した場合には(ステップS105,Yes)、フェーズ判定部150Aが利用者のモーションデータ取得終了処理を実行する(ステップS106)。
 一方、スキル判定装置100Aは、入力装置を介して、終了イベントを検知していない場合には(ステップS105,No)、入力装置を介して、スキル判定処理のイベントを検知したか否かを判定する(ステップS107)。スキル判定装置100Aは、入力装置を介して、スキル判定処理のイベントを検知した場合には(ステップS107,Yes)、スキル判定部160Aがスキル判定処理を実行し(ステップS108)、ステップS105に移行する。なお、スキル判定処理のイベントは、センシング部110aがモーションセンサからフレームデータ取得時に発生するイベントである。
 一方、スキル判定装置100Aは、入力装置を介して、再生処理のイベントを検知していない場合には(ステップS107,No)、スキル判定装置100Aの出力部170Aが再生処理を実行し(ステップS109)、ステップS105に移行する。
 次に、ステップS108に示したスキル判定処理の処理手順について説明する。図37は、スキル判定処理の処理手順を示すフローチャートである。図37に示すように、スキル判定装置100Aのフェーズ判定部150Aは、第2フレームデータをメモリに保存する(ステップS201)。フェーズ判定部150Aは、第2フレームデータを補正する(ステップS202)。
 フェーズ判定部150Aは、第2フレームデータの特徴量を計算する(ステップS203)。フェーズ判定部150Aは、お手本データ120aの中から第2フレームデータと一番特徴量の近い第1フレームデータを抽出する(ステップS204)。フェーズ判定部150Aは、第1フレームデータに対応するフェーズの種別を抽出し、抽出したフェーズの種別を第2フレームデータに付与する(ステップS205)。なお、フェーズの種別とは、図26の50aに示すように「start」,「backswing」等のフレーム番号に1対1に対応するフェーズ種別だけでなく、「start」から「backswing」の間にあるフェーズを表すフェーズ種別も含む。
 フェーズ判定部150Aは、抽出したフェーズの種別がStartからEnd内であるかを判定する(ステップS206)。フェーズ判定部150Aは、フェーズの種別がstartからEnd内でない場合には(ステップS206,No)、S201において格納した第2フレームデータをメモリから削除し(ステップS213)、スキル判定処理を終了する。
 一方、フェーズの種別がstartからEnd内である場合には(ステップS206,Yes)、スキル判定部160Aは、フェーズの種別に対応するモジュールに対して、第2フレームデータを出力し、スキルを判定する(ステップS207)。出力部170Aは、判定結果を出力する(ステップS208)。
 フェーズ判定部150Aは、抽出したフェーズの種別がEndであるか否かを判定する(ステップS209)。フェーズ判定部150Aは、抽出したフェーズの種別がEndでない場合には(ステップS209,No)、スキル判定処理を終了する。
 一方、フェーズ判定部150Aは、抽出したフェーズの種別がEndである場合には(ステップS209,Yes)、ステップS210に移行する。フェーズ判定部150Aは、メモリに保存された第2フレームデータの中からフェーズの種別がStartからEndまでの一連の第2フレームデータを抽出し、モーションデータとしてファイルに保存する(ステップS210)。出力部170Aは、一連のモーションデータの判定結果を出力し(ステップS211)、S201において格納した第2フレームデータをメモリから削除し(ステップS212)、スキル判定処理を終了する。
 次に、お手本データ生成部130Aおよびスキル判定定義部140Aが実行する設定処理の処理手順について説明する。図38は、設定処理の処理手順を示すフローチャートである。図38に示すように、スキル判定装置100Aは、イベント検知したか否かを判定する(ステップS301)。スキル判定装置100Aは、イベント検知していない場合には(ステップS301,No)、再度ステップS301に移行する。
 スキル判定装置100Aは、モーションデータ取得選択のイベントを検知した場合には(ステップS301,モーションデータ取得選択)ステップS302に移行する。お手本データ生成部130Aまたはスキル判定定義部140Aは、モーションデータを取得してメモリに保存し(ステップS302)、ステップS301に移行する。
 スキル判定装置100Aは、フェーズ設定選択のイベントを検知した場合には(ステップS301、フェーズ設定選択)、ステップS303に移行する。お手本データ生成部130Aは、フェーズの種別とフレーム番号とをメモリに保存し(ステップS303)、ステップS301に移行する。
 スキル判定装置100Aは、スキル判定定義選択のイベントを検知した場合には(ステップS301,スキル判定定義選択)、ステップS304に移行する。スキル判定定義部140Aは、利用するモジュール名、スキル判定名、パラメータ定義をメモリに保存し(ステップS304)、ステップS301に移行する。
 スキル判定装置100Aは、保存選択のイベントを検知した場合には(ステップS301,保存選択)、お手本データ生成部130Aは、メモリに保存されたモーションデータおよびフェーズの種別、フレーム番号の対応関係をファイルに出力する(ステップS305)。スキル判定定義部140Aは、メモリに保存されたスキル判定定義データ120bをファイルに出力し(ステップS306)、ステップS301に移行する。
 次に、本実施例に係るスキル判定装置100Aの効果について説明する。スキル判定装置100Aは、フェーズの種別毎に対応する第2フレームデータを利用者のモーションデータから抽出し、スキル判定定義データ120bを基にして、フェーズの種別毎の第2フレームデータに対して利用者のスキルを判定する。このため、スキル判定装置100Aによれば、汎用的に、利用者のスキルを自動で判定することができる。
 例えば、スキル判定定義部140Aは、入力装置からの情報を基にして、スキル判定を行うスキル判定定義データ120bを適宜更新し、スキル判定部160Aは、係るスキル判定定義データ120bを基にして、スキル判定を行う。従来技術では、スキル判定のためのロジックが埋め込まれているため、スキル判定対象が固定されているが、スキル判定定義部140Aにより適宜、スキル判定定義データ120bを更新可能であるため、汎用性を高めることができる。また、スキル判定定義データ120bは、モジュールおよびパラメータ定義の組み合わせで定義されるものであるため、他の対象で定義したモジュール、パラメータ定義を別対象に再利用することが容易である。
 また、スキル判定装置100Aは、スキルの判定結果を利用者のモーションデータと専門家のモーションデータとを対応付けて、表示画面に表示する。これにより、専門家がそばにいなくても、利用者自身で改善すべき点が分かる。また、画面をいちいち気にしないで、スイングを行った後からプレイバックして改善点を把握することができる。また、利用者自身と専門家との差を比較して、スキル向上に役立てることができる。また、利用者の第2フレームデータは、フェーズの種別と対応付けて管理されるため、解析などを行う場合の取り扱いを容易にすることができる。
 スキル判定装置100Aは、お手本データ120aと、利用者のモーションデータに含まれる各第2フレームデータとを比較して、第2フレームデータに対応するフェーズの種別を判定し、フェーズの種別毎に第2フレームデータを抽出する。例えば、スキル判定装置100Aは、各第1フレームデータと第2フレームデータとの類似度から、第2フレームデータに対応する第1フレームデータを特定し、係る第1フレームデータに対応するフェーズの種別を、第2フレームデータの種別と判定する。このため、利用者の第2フレームデータの種別を精度よく判定することができ、スキル判定精度を向上させることができる。
 スキル判定装置100Aは、マッチングを行う場合に、第1フレームデータと第2フレームデータの類似度を重みで補正する。この重みは、前回選択した第1フレームデータの時刻と、今回類似度の算出対象となる第1フレームデータの時刻に基づいて、図31により決定されるものである。これにより、第2フレームデータとマッチングする第1フレームデータが前後したり、ジャンプすることを防止することができる。
 スキル判定装置100Aは、画像情報、音声情報または利用者に対する肉体的な刺激によって、スキルの判定結果を出力する。これにより、利用者のスキルアップを様々な通知方法によって支援することができる。
 ところで、上述したスキル判定装置100Aの処理は一例である。以下では、スキル判定装置100Aが実行するその他の処理について説明する。
 例えば、スキル判定装置100Aの機能をネットワーク上のサーバに持たせてもよい。サーバは、利用者や専門家の端末装置からモーションデータを取得して、蓄積する。また、サーバは、お手本データ120a、スキル判定定義データ120bを保存しておく。サーバは、利用者の端末装置からアクセスを受け付けた場合には、端末装置のWeb画面上に、モーションデータやスキルの判定結果を表示させる。
 スキル判定定義部140Aは、入力装置からの入力を受け付けてスキル判定定義データ120bを生成していたが、お手本データ120aを基にして、自動的にスキル判定データ120bを生成してもよい。例えば、スキル判定定義部140Aは、お手本データ120aを解析し、スキル判定の該当パラメータの平均値等の統計処理を行った結果を、スキル判定定義データ120bに設定する。例えば、お手本データ120aに含まれる第1フレームデータの頭の特徴点の移動量の平均値をαとする。この場合には、スキル判定定義部140Aは、モジュール名「PositionChecker」のレコードの基準パラメータを「α、α+a、α+2a」とする。aは、適宜設定される数値である。
 スキル判定部160Aは、第2フレームデータ毎にスキルを判定し判定結果を出力していたがこれに限定されるものではない。スキル判定部160Aは、各スキル判定結果を総合得点に換算して表示してもよい。例えば、図35に示したように、スキル判定部160Aは、フェーズ毎にスキル判定を行っているが、startからendまでの判定結果を総合得点に換算して、総合得点を表示させてもよい。判定結果「Excelltent、Good、Bad」に付与する点数をいくつにするのかは、予め設定される。
 スキル判定部160Aは、利用者のモーションデータだけではなく、お手本データ120aのモーションデータに対してもスキル判定処理を行ってもよい。この場合には、出力部170Aは、お手本データ120aのモーションデータに対する判定結果と、利用者のモーションデータに対する判定結果との差分を表示してもよい。
 出力部170Aが出力するモーションデータの見せ方は固定でなくてもよい。例えば、出力部170Aは、入力装置からの操作を受け付けて、モーションデータの背面や側面、上側等の別角度で表示してもよい。また、出力部170Aは、利用者のモーションデータの見せ方の変化に連動させて、お手本データ120aのモーションデータも見せ方を変化させてもよい。
 ところで、上記実施例では、ゴルフのスキル判定を行う場合について説明したが、本実施例に係るスキル判定装置100Aは、ゴルフ以外のその他のスポーツ等にも適用可能である。例えば、スキル判定装置100Aは、テニス、陸上、ダンス、料理器具の使い方、楽器演奏などに適用することができる。
 次に、上記実施例に示したスキル判定装置100Aと同様の機能を実現するスキル判定プログラムを実行するコンピュータの一例について説明する。図39は、スキル判定プログラムを実行するコンピュータの一例を示す図である。
 図39に示すように、コンピュータ300は、加速度センサ、モーションセンサ等の入力デバイス350aと、スピーカ、振動デバイス等の出力デバイス350bに接続させる。コンピュータ300は、各種演算処理を実行するCPU301と、各種情報を一時記憶する一次記憶部302と、ディスプレイ等の表示部303と、入力装置等の操作部304とを有する。コンピュータ300は、入力デバイス350aとデータをやり取りするデバイスIF305と、出力デバイス350bとデータをやり取りするデバイスIF306を有する。また、コンピュータ300は、ハードディスクドライブ等に対応する二次記憶部307を有する。
 二次記憶部307は、スキル判定プログラム307aと、スキル設定プログラム307bと、各種データ307cを有する。スキル判定プログラム307aは、CPU301に読み出され、実行されることで、図21のフェーズ判定部150A、スキル判定部160A、出力部170Aに対応する処理を行う。スキル設定プログラム307bは、CPU301に読み出され、実行されることで、図21のお手本データ生成部130A、スキル設判定定義部140Aに対応する処理を行う。また、各種データ307cは、お手本データ120a、スキル判定定義データ120b、利用者のモーションデータ等に対応する。
 なお、各プログラム307a,307bについては、必ずしも最初から二次記憶部307に記憶させておかなくても良い。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム307a,307bを読み出して実行するようにしてもよい。
 図40は、本実施例3に係るシステムの構成を示す図である。図40に示すように、このシステムは、利用者端末400a,400b,400cと、サーバ500とを有する。利用者端末400a~400cと、サーバ500とは、ネットワーク50を介して相互に接続される。ここでは一例として、利用者端末400a~400cを示すが、その他の利用者端末が、ネットワーク50に接続されていても良い。以下の説明では、利用者端末400a~400bをまとめて、適宜、利用者端末400と表記する。
 利用者端末400は、上記実施例2に示したスキル判定装置100Aと同様の機能を有する。利用者端末400は、利用者のモーションデータを取得して、利用者のスキルを判定し、スキルの判定結果を、サーバ500に通知する処理部である。なお、利用者端末400は、スキル判定装置100Aに接続して、接続先のスキル判定装置100Aから、利用者のスキルの判定結果を取得しても良い。
 利用者は、利用者端末400を操作して、サーバ500にアクセスし、サーバ500に蓄積された過去のスキルの判定結果を参照する。
 サーバ500は、各利用者端末400から、スキルの判定結果の情報を受信し、保持する。また、サーバ500は、利用者端末から、スキルの判定結果の情報に対するアクセスを受け付けた場合には、該当するスキルの判定結果を利用者端末400に通知する。
 ここで、サーバ500は、利用者端末400に、スキルの判定結果の情報を通知する場合に、スキル判定を行ったスポーツの種別に直接的または間接的に関連する広告バーナーを、利用者端末400の表示画面に表示させる。また、サーバ500は、利用者のスキルの判定結果に応じた商品の情報を表示画面に表示させる。例えば、サーバ500は、スポーツの種別が、ゴルフの場合には、ゴルフ関連の広告バーナーを表示させると共に、スキルにあったゴルフ商品の情報を、利用者端末400に通知する。なお、ゴルフ以外にも、野球、テニス、陸上、ダンス、料理器具の使い方、楽器演奏に対しても同様に、広告バーナーや、商品の情報を利用者端末400に通知しても良い。
 図41は、本実施例3に係るサーバの構成を示す機能ブロック図である。図41に示すように、このサーバ500は、通信部510と、記憶部520と、制御部530とを有する。
 通信部510は、ネットワーク50を介して、各利用者端末400とデータ通信を実行する処理部である。通信部510は、通信装置に対応する。後述する制御部530は、通信部510を介して、各利用者端末400とデータをやり取りする。
 記憶部520は、スキル判定結果テーブル520aと、個人情報テーブル520bと、バーナー情報テーブル520cと、商品テーブル520dとを有する。記憶部520は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子などの記憶装置に対応する。
 スキル判定結果テーブル520aは、利用者端末400から通知されるスキルの判定結果の情報を保持するテーブルである。図42は、スキル判定結果テーブルのデータ構造の一例を示す図である。図42に示すように、利用者識別情報と、種目と、スキル判定結果とを対応付ける。利用者識別情報は、利用者を一意に識別する情報である。種目は、スキル判定の対象となった種目を示すものである。スキル判定結果は、種目に関連する動作を行った利用者に対するスキルの判定結果である。
 図43は、スキル判定結果の一例を示す図である。図43に示すスキル判定結果は、ある利用者識別情報に対応するスキル判定結果である。例えば、各スキル判定結果は、スキルの判定を行った日付に対応付けられる。また、各スキル判定結果は、フェーズ毎に、ヘッド移動の判定結果、右肘角度の判定結果、前傾姿勢の判定結果、腰回転の判定結果を対応付ける。また、ここでは図示を省略するが、スキル判定結果テーブル520aは、スキル判定結果の判定元となった、利用者のモーションデータを、スキル判定結果に対応付けて保持して良い。
 個人情報テーブル520bは、利用者の個人情報を保持するテーブルである。図44は、本実施例3に係る個人情報テーブルのデータ構造の一例を示す図である。図44に示すように、この個人情報テーブル520bは、利用者識別情報と、アドレスと、性別と、年齢と、身長と、体重とを対応付ける。このうち、利用者識別情報は、利用者を一意に識別する情報である。アドレスは、例えば、利用者が用いるEメールアドレス(Electronic mail address)である。性別、年齢、身長、体重は、利用者識別情報によって識別される利用者の性別、年齢、身長、体重である。
 バーナー情報テーブル520cは、利用者端末400の表示画面に表示させる広告バーナーに関する情報を保持するテーブルである。図45は、バーナー情報テーブルのデータ構造の一例を示す図である。図45に示すように、このバーナー情報テーブル520cは、条件と、広告バーナー情報とを対応付ける。条件には、例えば、種目と、性別と、年齢とが含まれる。例えば、図45に示す例では、スキルの判定結果に対応する種目が「ゴルフ」、利用者の性別が「男」、利用者の年齢が「20才以上」の場合には、広告バーナーA1,B1,C1を、利用者端末400の表示画面に表示させることを示している。例えば、広告バーナーA1,B1、C1は、種目「ゴルフ」に直接的または間接的に、関連する広告バーナーである。
 商品テーブル520dは、利用者のスキル判定結果に応じた商品を定義するテーブルである。図46は、商品テーブルのデータ構造の一例を示す図である。図46に示すように、この商品テーブル520dは、条件と、商品名と、コメントとを対応付ける。条件は、商品を選択する場合に条件を示し、条件には、種目、フェーズ、判定結果が含まれる。種目は、スキルの判定を行った種目である。商品名は、利用者に推薦する商品の名称を示す。コメントは、商品を推薦する理由などを示す。例えば、種目が「ゴルフ」である場合に、フェーズ「impact」において、腰回転の判定結果が-45°±αであり、右膝角度の判定結果が10°±αである場合には、商品「ゴルフクラブA」を推薦することが定義されている。また、この商品「ゴルフクラブA」を推薦する際に、コメント「ボディターン・タイプには、しなりを大きく使えるように手元側を柔らかくしたシャフトを推薦」を付与することも定義されている。
 制御部530は、取得部530aと、受付部530bと、検索部530cと、画面生成部530dとを有する。制御部530は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。また、制御部530は、例えば、CPUやMPU(Micro Processing Unit)等の電子回路に対応する。
 取得部530aは、利用者端末400からスキルの判定結果に関する情報を取得する取得部である。例えば、スキルの判定結果に関する情報は、利用者識別情報と、種目と、スキル判定結果と、モーションデータとを対応付けた情報である。取得部530aは、利用者識別情報と、種目と、スキル判定結果とを対応付けて、スキル判定結果テーブル520aに格納する。
 取得部530aは、スキル判定結果に関する情報を、スキル判定結果テーブル520aに格納する場合に、既に同一の利用者識別情報と種目との組のレコードが格納されている場合には、該当するレコードにスキル判定結果の情報を追加する。
 受付部530bは、利用者端末400から、スキル判定結果テーブル520aに格納された過去のスキル判定結果の情報に対するアクセスを受け付ける処理部である。例えば、利用者端末400は、過去のスキル判定結果の情報に対するアクセスを行う場合に、サーバ500に、利用者識別情報を通知するものとする。受付部530bは、利用者端末400から受け付けた利用者識別情報を検索部530cに出力する。
 検索部530cは、利用者識別情報に対応する過去のスキル判定結果と、スキルの判定対象となった種目に関連する広告バーナー情報と、利用者のスキル判定結果に応じた商品とを検索する処理部である。以下の説明において、利用者識別情報に対応する過去のスキル判定結果を、適宜、履歴情報と表記する。検索部530cは、検索した履歴情報と、広告バーナー情報と、商品の情報とを、画面生成部530dに出力する。以下において、検索部530cの処理の一例について説明する。
 まず、検索部530cが、履歴情報を検索する処理の一例について説明する。検索部530cは、受付部530bから取得した利用者識別情報と、スキル判定結果テーブル520aとを比較して、利用者識別情報に対応する種目およびスキル判定結果を検索する。検索部530cは、検索したスキル判定結果の情報を、履歴情報として、画面生成部530dに出力する。検索部530cが検索した種目は、後述する、広告バーナー情報を検索する場合に利用する。また、検索部530cが検索した、スキル判定結果の情報は、後述する、商品情報を検索する場合に利用する。
 続いて、検索部530cが、広告バーナー情報を検索する処理の一例について説明する。検索部530cは、利用者識別情報と、個人情報テーブル520bとを比較して、利用者識別情報に対応する性別および年齢を特定する。そして、検索部530cは、種目と、性別と、年齢との組と、バーナー情報テーブル520cの条件とを比較して、該当するレコードを特定する。検索部530cは、特定したレコードに含まれる広告バーナー情報を、画面生成部530dに出力する。
 例えば、検索部530cは、種目と、性別と、年齢との組が、「ゴルフ」、「男」、「25才」である場合には、図45の1行目のレコードを特定する。そして、検索部530cは、広告バーナーA1,B1,C1の情報を、画面生成部530dに出力する。
 続いて、検索部530cが、商品情報を検索する処理の一例について説明する。検索部530cは、種目とスキル判定結果との組と、商品テーブル520dの条件とを比較して、該当するレコードを特定する。検索部530cは、特定したレコードに含まれる商品情報を、画面生成部530dに出力する。例えば、商品情報には、商品名およびコメントが含まれる。検索部530cは、同一の利用者識別情報に対して、スキル判定結果が複数存在する場合には、最新のスキル判定結果を用いて、商品情報を検索する。
 例えば、種目が「ゴルフ」であり、スキル判定結果に含まれるフェーズ「impact」において、腰回転の判定結果が「45°±α」、右膝角度の判定結果が「10°±α」であるとする。この場合には、検索部530cは、図46の1行目のレコードに含まれる商品名とコメントとの組を、商品情報として検索する。
 画面生成部530dは、利用者端末400の画面に表示させる表示画面を生成する処理部である。例えば、画面生成部530dは、検索部530cから取得するスキル判定結果の情報、広告バーナー情報、商品情報を画面上に配置することで、表示画面を生成する。画面生成部530dは、生成した表示画面の情報を、スキル判定結果に対するアクセスを行った利用者端末400に通知する。
 次に、本実施例3に係るサーバ500の処理手順の一例について説明する。図47は、本実施例3に係るサーバの処理手順を示すフローチャートである。図47に示すように、サーバ500の受付部530bは、利用者識別情報を受信する(ステップS301)。サーバ500の検索部530cは、スキル判定結果テーブル520aを参照し、利用者識別情報に対応するスキル判定結果を検索し、履歴情報を生成する(ステップS302)。
 検索部530cは、バーナー情報テーブル520cを参照し、広告バーナー情報を検索する(ステップS303)。検索部530cは、商品テーブル520dを参照し、商品情報を検索する(ステップS304)。
 サーバ500の画面生成部530dは、履歴情報、広告バーナー情報、商品情報を配置した表示画面を生成する(ステップS305)。画面生成部530dは、表示画面の情報を、利用者端末400に送信する(ステップS306)。
 次に、本実施例3に係るサーバ500の効果について説明する。サーバ500は、利用者端末400に、過去のスキルの判定結果の情報を通知する場合に、スキル判定を行った種目に直接的または間接的に関連する広告バーナーを、利用者端末400の表示画面に表示させる。また、サーバ500は、利用者のスキルの判定結果に応じた商品の情報を表示画面に表示させる。これによって、スキル判定結果を参照する利用者に、直接的、間接的に関連する情報を広告することができる。また、スキル判定結果に応じた商品情報を推薦することができる。
 ところで、サーバ500の受付部530bは、利用者端末400からスキルの判定結果の情報を、スキル判定結果テーブル520aに格納する場合に、データ量に応じた課金情報を利用者端末400に通知しても良い。例えば、受付部530bは、スキル判定結果テーブルに記憶されたデータ量を、利用者識別情報毎に監視する。受付部530bは、データ量が閾値を超えた利用者識別情報に対応する利用者端末400に、アップロードするデータ量が閾値を超えたため、これ以上のアップロードは有料である旨を通知する。この通知に対して、利用者が支払いに同意した場合には、受付部530bは、支払い方法を受け付け、利用者識別情報に対応付けて保存する。
 なお、利用者端末400を操作する利用者は、スキルの判定結果に関する情報を、サーバ500に通知する場合に、スキルの判定結果に関する全ての情報を、サーバ500に通知する代わりに、通知するデータを選択しても良い。例えば、利用者は、モーションデータに関するデータ量が大きいと判断した場合には、スキルの判定結果のみを、サーバ500に通知して、データ量を節約することもできる。また、利用者は、モーションデータの代わりに、スナップショットのみを、サーバ500に通知して、データ量を削減することもできる。
 図48は、本実施例4に係るシステムの構成を示す図である。図48に示すように、このシステムは、利用者端末400a,400b,400cと、サーバ600とを有する。利用者端末400a~400cと、サーバ600とは、ネットワーク50を介して相互に接続される。ここでは一例として、利用者端末400a~400cを示すが、その他の利用者端末が、ネットワーク50に接続されていても良い。以下の説明では、利用者端末400a~400cをまとめて、適宜、利用者端末400と表記する。
 利用者端末400は、上記実施例2に示したスキル判定装置100Aと同様の機能を有する。利用者端末400は、利用者のモーションデータを取得して、利用者のスキルを判定し、スキルの判定結果を、サーバ600に通知する処理部である。なお、利用者端末400は、スキル判定装置100Aに接続して、接続先のスキル判定装置100Aから、利用者のスキルの判定結果を取得しても良い。
 サーバ600は、利用者の特徴に基づいて、利用者を複数のグループに分類しておく。サーバ600は、利用者端末400からスキルの判定結果を受信した場合に、このスキルの判定対象となった利用者が属するグループを判定し、判定したグループに含まれる各利用者の利用者端末400に、スキルの判定結果の情報を通知する。
 図49は、本実施例4に係るサーバの構成を示す機能ブロック図である。図49に示すように、このサーバ600は、通信部610と、記憶部620と、制御部630とを有する。
 通信部610は、ネットワーク50を介して、各利用者端末400とデータ通信を実行する処理部である。通信部610は、通信装置に対応する。後述する制御部630は、通信部610を介して、各利用者端末400とデータをやり取りする。
 記憶部620は、スキル判定結果テーブル620aと、個人情報テーブル620bと、グループ管理テーブル620cとを有する。記憶部620は、例えば、RAM、ROM、フラッシュメモリなどの半導体メモリ素子などの記憶装置に対応する。
 スキル判定結果テーブル620aは、利用者端末400から通知されるスキルの判定結果を保持するテーブルである。スキル判定結果テーブル620aのデータ構造は、例えば、図42に示した、スキル判定結果テーブル520aのデータ構造と同様である。
 個人情報テーブル620bは、利用者の個人情報を保持するテーブルである。図50は、本実施例4に係る個人情報テーブルのデータ構造の一例を示す図である。図50に示すように、この個人情報テーブル620bは、利用者識別情報と、アドレスと、性別と、年齢と、身長と、体重と、学校と、練習場とを対応付ける。このうち、利用者識別情報は、利用者を一意に識別する情報である。アドレスは、例えば、利用者が用いるEメールアドレスである。年齢、身長、体重は、利用者識別情報によって識別される利用者の性別、年齢、身長、体重である。学校は、利用者が通う学校を示すものである。練習場は、利用者が練習を行う場所を示すものである。
 グループ管理テーブル620cは、利用者の属するグループの情報を保持するテーブルである。図51は、グループ管理テーブルのデータ構造の一例を示す図である。図51に示すように、このグループ管理テーブル620cは、グループ識別情報と、所属利用者識別情報とを対応付ける。グループ識別情報は、グループを一意に識別する情報である。所属利用者識別情報は、グループに所属する利用者の利用者識別情報を示す。例えば、図51に示す例では、グループ識別情報「G101」のグループには、利用者識別情報「U101,U103,U114,・・・」の利用者が所属する旨が示される。
 制御部630は、取得部630aと、分類部630bと、SNS(Social Networking Service)提供部630cを有する。SNS提供部630cは、通知部に対応する。制御部630は、例えば、ASICや、FPGAなどの集積装置に対応する。また、制御部630は、例えば、CPUやMPU等の電子回路に対応する。
 取得部630aは、利用者端末400からスキルの判定結果に関する情報を取得する取得部である。例えば、スキルの判定結果に関する情報は、利用者識別情報と、種目と、スキル判定結果とを対応付けた情報である。取得部630aは、利用者識別情報と、種目と、スキル判定結果とを対応付けて、スキル判定結果テーブル620aに格納する。
 取得部630aは、スキル判定結果に関する情報を、スキル判定結果テーブル620aに格納する場合に、既に同一の利用者識別情報と種目との組のレコードが格納されている場合には、該当するレコードにスキル判定結果の情報を追加する。
 分類部630bは、個人情報テーブル620bを参照し、利用者識別情報を、利用者の特徴毎のグループに分類する処理部である。分類部630bは、分類結果に基づいて、グループ識別情報と、このグループ識別情報のグループに所属する利用者識別情報とを対応付けて、グループ管理テーブル620cに登録する。
 以下において、分類部630bの処理の一例について説明する。例えば、分類部630bは、個人情報テーブル620bを参照し、同一の学校に通う利用者識別情報を特定し、特定した利用者識別情報を、同一のグループに分類する。または、分類部630bは、個人情報テーブル620bを参照し、同一の練習場に通う利用者識別情報を特定し、特定した利用者識別情報を、同一のグループに分類する。
 上記の分類処理は一例であり、分類部630bは、利用者識別情報を、同一年代のグループ、家族のグループ、同一のコーチの指導を受けているグループに分類しても良い。また、分類部630bは、スキル判定結果テーブル620aを参照し、スキルが同レベルの利用者識別情報を、同一のグループに分類しても良い。例えば、分類部630bは、スキル判定結果に含まれるgood、bad、Excellentに応じた点数を合計することで、各利用者識別情報の点数を求め、点数が類似する利用者識別情報同士を、同一グループに分類しても良い。
 SNS提供部630cは、各利用者端末400に、SNSを提供する処理部である。例えば、SNS提供部630cは、グループ管理テーブル620cを参照して、同一のグループに所属する利用者識別情報の利用者間で、スキル判定結果の情報やその他の電子掲示番等の情報を共有させる。
 例えば、SNS提供部630cは、スキル判定結果テーブル620aにスキル判定結果の情報が登録された場合に、スキル判定結果に対応する利用者識別情報と同じグループに属する利用者識別情報を、グループ管理テーブル620cを基にして判定する。SNS提供部630cは、特定した利用者識別情報に対応する利用者端末400に、スキル判定結果テーブル620aに登録されたスキル判定結果の情報を、通知する。SNS提供部630cは、個人情報テーブル620bを参照して、グループに属する利用者識別情報のアドレスを特定し、特定したアドレスを宛先として、スキル判定結果の情報を通知しても良い。
 例えば、図51を参照すると、グループ識別情報「G101」のグループには、所属利用者識別情報U101,U103,U114が所属している。また、取得部630aにより、利用者識別情報U101のスキル判定結果が、スキル判定テーブル620aに登録されたとする。この場合には、SNS提供部630cは、利用者識別情報U101のスキル判定結果を、同一グループの利用者識別情報U103、U114の利用者端末400に通知する。
 次に、本実施例4に係るサーバ600の処理手順の一例について説明する。図52は、本実施例4に係るサーバの処理手順を示すフローチャートである。図52に示すように、サーバ600の分類部630bは、個人情報テーブル620bを参照して、利用者識別情報を複数のグループに分類する(ステップS401)。
 サーバ600のSNS提供部630cは、スキル判定結果を受信したか否かを判定する(ステップS402)。SNS提供部630cは、スキル判定結果を受信していない場合には(ステップS402,No)、再度、ステップS402に移行する。
 SNS提供部630cは、スキル判定結果を受信した場合には(ステップS402,Yes)、受信したスキル判定結果を、スキル判定結果テーブル620aに格納する(ステップS403)。SNS提供部630cは、受信したスキル判定結果に対応する利用者識別情報の属するグループを特定する(ステップS404)。
 SNS提供部630cは、特定したグループに属する利用者識別情報を特定し、特定した利用者識別情報に対応する利用者端末400に、スキル判定結果を通知する(ステップS405)。
 次に、本実施例4に係るサーバ600の効果について説明する。サーバ600は、利用者の特徴に基づいて、利用者識別情報を複数のグループに分類しておく。サーバ600は、利用者端末400からスキルの判定結果を受信した場合に、このスキルの判定対象となった利用者が属するグループを判定し、判定したグループに含まれる各利用者識別情報の利用者端末400に、スキルの判定結果の情報を通知する。このため、同一グループに属する各利用者がコミュニケーションを取ることを容易にすることができる。例えば、ソーシャルネットワーク上で、スキルを上達させるためのアドバイスをやり取りすることができる。また、上記処理は、種目への勧誘、イベント勧誘、出会い勧誘など間接的に関連するサイトや、オフラインの窓口になり得る。
 図53は、本実施例5に係るシステムの構成を示す図である。図53に示すように、このシステムは、利用者端末400a,400b,400cと、サーバ700とを有する。利用者端末400a~400cと、サーバ700とは、ネットワーク50を介して相互に接続される。ここでは一例として、利用者端末400a~400cを示すが、その他の利用者端末が、ネットワーク50に接続されていても良い。以下の説明では、利用者端末400a~400bをまとめて、適宜、利用者端末400と表記する。
 利用者端末400は、上記実施例2に示したスキル判定装置100Aと同様の機能を有する。利用者端末400は、利用者のモーションデータを取得して、利用者のスキルを判定し、スキルの判定結果を、サーバ700に通知する処理部である。なお、利用者端末400は、スキル判定装置100Aに接続して、接続先のスキル判定装置100Aから、利用者のスキルの判定結果を取得しても良い。
 また、利用者は、利用者端末400を操作して、サーバ700から、自分好みの専門家のお手本データを取得し、取得した、専門家のお手本データを利用して、利用者のスキルを判定する。
 サーバ700は、複数種類の専門家のお手本データを管理するサーバである。サーバ700は、利用者端末400からアクセスを受け付けると、複数種類の専門家のお手本データを表示し、いずれかの専門家のお手本データの選択を受け付ける。サーバ700は、専門家のお手本データの選択を受け付けると、選択を受け付けたお手本データを、利用者端末400に通知する。なお、サーバ700は、利用者に適した専門家のお手本データを選択し、選択した専門家のお手本データを、利用者端末400に通知しても良い。
 図54は、本実施例5に係るサーバの構成を示す機能ブロック図である。図54に示すように、このサーバ700は、通信部710と、記憶部720と、制御部730とを有する。
 通信部710は、ネットワーク50を介して、各利用者端末400とデータ通信を実行する処理部である。通信部710は、通信装置に対応する。後述する制御部730は、通信部710を介して、各利用者端末400とデータをやり取りする。
 記憶部720は、スキル判定結果テーブル720aと、個人情報テーブル720bと、専門家データテーブル720cとを有する。記憶部720は、例えば、RAM、ROM、フラッシュメモリなどの半導体メモリ素子などの記憶装置に対応する。
 スキル判定結果テーブル720aは、利用者端末400から通知されるスキルの判定結果を保持するテーブルである。スキル判定結果テーブル720aのデータ構造は、例えば、図42に示した、スキル判定結果テーブル520aのデータ構造と同様である。
 個人情報テーブル720bは、利用者の個人情報を保持するテーブルである。個人情報テーブル720bのデータ構造は、例えば、図44に示した、個人情報テーブル520bのデータ構造と同様である。
 専門家データテーブル720cは、専門家のお手本データに関する情報を保持するテーブルである。図55は、専門家データテーブルのデータ構造の一例を示す図である。図55に示すように、この専門家データテーブル720cは、専門家識別情報と、プロフィール情報と、お手本データと、評価値とを対応付ける。このうち、専門家識別情報は、専門家を一意に識別する情報である。プロフィール情報は、専門家のプロフィールの情報である。例えば、専門家のプロフィールの情報には、専門家の性別、年齢、体重、身長等の情報が含まれる。お手本データは、実施例2で説明したお手本データ120aに対応するものである。
 制御部730は、取得部730aと、受付部730bと、選択部730cと、通知部730dとを有する。制御部730は、例えば、ASICや、FPGAなどの集積装置に対応する。また、制御部730は、例えば、CPUやMPU等の電子回路に対応する。
 取得部730aは、利用者端末400からスキルの判定結果に関する情報を取得する取得部である。例えば、スキルの判定結果に関する情報は、利用者識別情報と、種目と、スキル判定結果とを対応付けた情報である。取得部730aは、利用者識別情報と、種目と、スキル判定結果とを対応付けて、スキル判定結果テーブル720aに格納する。
 取得部730aは、スキル判定結果に関する情報を、スキル判定結果テーブル720aに格納する場合に、既に同一の利用者識別情報と種目との組のレコードが格納されている場合には、該当するレコードにスキル判定結果の情報を追加する。
 受付部730bは、利用者端末から専門家のお手本データに関するアクセス要求を受け付けた場合に、次の動作を実行する。受付部730bは、専門家データテーブル720cに格納された専門家のプロフィール情報と、お手本データと、評価値とを対応させた表示画面を、利用者端末400に表示させる。受付部730bは、お手本データの選択を、利用者端末を操作する利用者から受け付けると、選択を受け付けたお手本データを、利用者端末400に通知する。なお、後述する通知部730dが、選択を受け付けたお手本データを、利用者端末400に通知しても良い。
 また、受付部730bは、専門家のお手本データに対する評価値の情報を、利用者端末400から受け付けた場合には、該当する評価値を更新する。例えば、受付部730bは、専門家に対応する各利用者端末400からの評価値を平均化することで、専門家データテーブル720cの評価値を更新しても良い。
 上述した例では、利用者端末を操作する利用者が、お手本データを選択する場合について説明したが、サーバ700が、利用者に対する適切なお手本データを選択し、選択したお手本データを利用者端末400に通知して良い。
 選択部730cは、利用者に対する適切なお手本データを選択する処理部である。例えば、選択部730cは、利用者端末400から、利用者識別情報を取得し、個人情報テーブル720bから、利用者識別情報に対応する性別、年齢、身長、体重を取得する。以下の説明では、利用者識別情報に対応する性別、年齢、身長、体重をまとめて、適宜、利用者プロフィール情報と表記する。
 通知部730dは、選択部730cから取得したお手本データを、要求元の利用者端末400に通知する処理部である。
 続いて、選択部730cの処理の一例について説明する。選択部730cは、利用者プロフィール情報と最も類似する、専門家データテーブル720cのプロフィール情報を選択する。選択部730cは、選択したプロフィール情報に対応するレコードのお手本データを選択し、選択したお手本データを、通知部730dに出力する。
 選択部730cは、類似するプロフィール情報をどのように選択しても良い。例えば、選択部730cは、利用者プロフィール情報と専門家のプロフィール情報とを比較し、性別が一致するか否か、年齢の差分、身長の差分、体重の差分にそれぞれ点数を与え、合計点数が最も高いプロフィール情報を、類似するプロフィール情報として選択する。例えば、性別が一致する場合には、所定の点数を与え、一致しない場合には、点数を与えない。年齢の差分、身長の差分、体重の差分については、差分が小さいほど、大きい点数を与える。
 更に、選択部730cは、利用者端末400から、利用者のモーションデータを取得し、取得したモーションデータに最も類似するお手本データを、専門家データテーブル720cのお手本データから取得しても良い。例えば、選択部730cは、利用者のモーションデータと、専門家データテーブル720cの各お手本データとを基にして、実施例2で説明したスキル判定装置100Aと同様の処理を行ってスキル判定を行うことで、利用者のモーションデータと最も類似するお手本データを選択する。例えば、選択部730cは、スキル判定を行い、Excellentの数が最も多いお手本データを、最も類似するお手本データとして選択しても良い。
 また、選択部730cは、利用者端末400に通知したお手本データと、このお手本データを基にしたスキル判定結果を対応付けて、スキル判定結果テーブル720aに格納しても良い。選択部730cは、上記処理を繰り返し実行し、スキル判定結果テーブル720aに格納されたスキル判定結果に基づき、利用者のスキルが上達しているか否かを判定する。例えば、選択部730cは、同一の利用者識別情報に対応する過去のスキル判定結果と現在のスキル判定結果を比較して、Excellentの数が増加している場合には、利用者と専門家との相性が良いと判定する。この場合には、選択部730cは、引き続き、同一の専門家のお手本データを利用者端末400に通知する。また、選択部730cは、Excellentの数が増加している場合には、該当する専門家の評価値を大きくする補正を行っても良い。
 これに対して、選択部730cは、同一の利用者識別情報に対応する過去のスキル判定結果と現在のスキル判定結果を比較して、Excellentの数が減少している場合または変化していない場合には、利用者と専門家との相性が悪いと判定する。この場合には、選択部730cは、他の専門家のお手本データを利用者端末400に通知する。また、選択部730cは、Excellentの数が減少している場合または変化がない場合には、該当する専門家の評価値を小さくする補正を行っても良い。
 次に、本実施例5に係るサーバ700の処理手順の一例について説明する。図56は、本実施例5に係るサーバの処理手順を示すフローチャートである。図56に示すように、サーバ700の受付部730aは、利用者端末400から、専門家のお手本データの要求を受け付ける(ステップS501)。
 ここで、サーバ700は、利用者自身が専門家のお手本データを選択する場合には(ステップS502,Yes)、ステップS503に移行する。一方、利用者自身が専門家のお手本データを選択しない場合には(ステップS502,No)、ステップS506に移行する。
 ステップS503以降の処理について説明する。サーバ700の受付部730bは、専門家のプロフィール情報と、お手本データと、評価値とを対応付けて、利用者端末400に表示させる(ステップS503)。
 受付部730bは、お手本データの選択を受け付けたか否かを判定する(ステップS504)。受付部730bは、お手本データの選択を受け付けていない場合には(ステップS504,No)、再度、ステップS504に移行する。
 一方、受付部730bは、お手本データの選択を受け付けた場合には(ステップS504,Yes)、選択を受け付けたお手本データを利用者端末400に通知する(ステップS505)。
 ステップS506以降の処理について説明する。サーバ700の選択部730cは、利用者端末400から、利用者識別情報を取得する(ステップS506)。選択部730cは、利用者に適切なお手本データを選択する(ステップS507)。サーバ700は、選択部730cに選択されたお手本データを、利用者端末400に通知する(ステップS508)。
 次に、本実施例5に係るサーバ700の効果について説明する。サーバ700は、専門家のお手本データを利用者端末400に表示し、専門家のお手本データの選択を受け付けると、選択を受け付けたお手本データを、利用者端末400に通知する。または、サーバ700は、利用者に適した専門家のお手本データを選択し、選択した専門家のお手本データを、利用者端末400に通知する。このため、利用者は、自分に適した専門家のお手本データを用いてスキル判定を行うことができる。
 次に、上記実施例に示したサーバ500、600、700と同様の機能を実現する制御プログラムを実行するコンピュータの一例およびハードウェア構成について説明する。図57は、制御プログラムを実行するコンピュータの一例を示す図である。
 図57に示すように、コンピュータ800は、各種演算処理を実行するCPU801と、ユーザからのデータの入力を受け付ける入力装置802と、ディスプレイ803とを有する。また、コンピュータ800は、記憶媒体からプログラム等を読取る読み取り装置804と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置805とを有する。また、コンピュータ800は、各種情報を一時記憶するRAM806と、ハードディスク装置807とを有する。そして、各装置801~807は、バス808に接続される。
 ハードディスク装置807は、制御プログラム807aを有する。CPU801は、制御プログラム807aを読み出してRAM806に展開する。制御プログラム807aは、制御プロセス806aとして機能する。例えば、制御プロセス806aは、図41に示した、取得部530a、受付部530b、検索部530c、画面生成部530dに対応する。または、制御プロセス806aは、図49に示した、取得部630a、分類部630b、SNS提供部630cに対応する。または、制御プロセス806aは、図54に示した、取得部730a、受付部730b、選択部730c、通知部730dに対応する。
 なお、制御プログラム807aについては、必ずしも最初からハードディスク装置807に記憶させておかなくても良い。例えば、コンピュータ800に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ800が制御プログラム807aを読み出して実行するようにしてもよい。
 100  骨格推定装置
 110  3Dセンサ
 120  通信部
 130  入力部
 140  表示部
 150  記憶部
 151  3次元データテーブル
 152  モデルデータ
 153  骨格データテーブル
 160  制御部
 161  取得部
 162  特定部
 163  第1推定部
 164  第2推定部
 165  出力部

Claims (12)

  1.  対象物上に存在する複数の観測点の3次元情報を距離センサから取得し、前記3次元情報を基にして、前記対象物の領域から、第1領域と、前記第1領域に隣接する複数の第2領域とを特定し、前記第2領域に含まれる複数の特徴点の位置を特定する特定部と、
     前記第2領域に含まれる各特徴点に基づいてリンクを設定することで、前記第2領域に含まれる骨格の位置を推定する第1推定部と、
     前記第1領域に含まれる部位の位置を特定する際に用いる複数のパラメータのうち、前記第2領域に含まれる骨格の端点と、前記骨格の端点から前記第1領域に含まれる部位の位置までの長さとを固定した状態で、前記第1領域に含まれる部位の位置を特定し、特定した部位の位置を基にして、前記第1領域に含まれる骨格の位置を推定する第2推定部と
     を有することを特徴とする骨格推定装置。
  2.  前記複数のパラメータは角度パラメータを含み、前記第2推定部は、前記角度パラメータを変更することで複数の部位候補の位置を特定し、複数の部位候補のうち、前記第1領域内の予め定められた点の位置との距離が近い部位候補を、前記第1領域に含まれる部位として特定することを特徴とする請求項1に記載の骨格推定装置。
  3.  前記第2推定部は、前記第1領域に含まれる部位を特定した場合に、特定した部位の位置によって、前記第1領域内の予め定められた点の位置を更新することを特徴とする請求項2に記載の骨格推定装置。
  4.  前記第1領域は、前記対象物の胴体部分の領域に対応し、前記複数の第2領域は、前記対象物の頭部の領域、腕部分の領域、足部分の領域に対応することを特徴とする請求項1、2または3に記載の骨格推定装置。
  5.  コンピュータが実行する骨格推定方法であって、
     対象物上に存在する複数の観測点の3次元情報を距離センサから取得し、前記3次元情報を基にして、前記対象物の領域から、第1領域と、前記第1領域に隣接する複数の第2領域とを特定し、前記第2領域に含まれる複数の特徴点の位置を特定し、
     前記第2領域に含まれる各特徴点に基づいてリンクを設定することで、前記第2領域に含まれる骨格の位置を推定し、
     前記第1領域に含まれる部位の位置を特定する際に用いる複数のパラメータのうち、前記第2領域に含まれる骨格の端点と、前記骨格の端点から前記第1領域に含まれる部位の位置までの長さとを固定した状態で、前記第1領域に含まれる部位の位置を特定し、特定した部位の位置を基にして、前記第1領域に含まれる骨格の位置を推定する
     処理を実行することを特徴とする骨格推定方法。
  6.  前記複数のパラメータは角度パラメータを含み、前記第1領域に含まれる骨格の位置を推定する処理は、前記角度パラメータを変更することで複数の部位候補の位置を特定し、複数の部位候補のうち、前記第1領域内の予め定められた点の位置との距離が近い部位候補を、前記第1領域に含まれる部位として特定することを特徴とする請求項5に記載の骨格推定方法。
  7.  前記第1領域に含まれる骨格の位置を推定する処理は、前記第1領域に含まれる部位を特定した場合に、特定した部位の位置によって、前記第1領域内の予め定められた点の位置を更新することを特徴とする請求項6に記載の骨格推定方法。
  8.  前記第1領域は、前記対象物の胴体部分の領域に対応し、前記複数の第2領域は、前記対象物の頭部の領域、腕部分の領域、足部分の領域に対応することを特徴とする請求項5、6または7に記載の骨格推定方法。
  9.  コンピュータに、
     対象物上に存在する複数の観測点の3次元情報を距離センサから取得し、前記3次元情報を基にして、前記対象物の領域から、第1領域と、前記第1領域に隣接する複数の第2領域とを特定し、前記第2領域に含まれる複数の特徴点の位置を特定し、
     前記第2領域に含まれる各特徴点に基づいてリンクを設定することで、前記第2領域に含まれる骨格の位置を推定し、
     前記第1領域に含まれる部位の位置を特定する際に用いる複数のパラメータのうち、前記第2領域に含まれる骨格の端点と、前記骨格の端点から前記第1領域に含まれる部位の位置までの長さとを固定した状態で、前記第1領域に含まれる部位の位置を特定し、特定した部位の位置を基にして、前記第1領域に含まれる骨格の位置を推定する
     処理を実行させることを特徴とする骨格推定プログラム。
  10.  前記複数のパラメータは角度パラメータを含み、前記第1領域に含まれる骨格の位置を推定する処理は、前記角度パラメータを変更することで複数の部位候補の位置を特定し、複数の部位候補のうち、前記第1領域内の予め定められた点の位置との距離が近い部位候補を、前記第1領域に含まれる特徴点として特定することを特徴とする請求項9に記載の骨格推定プログラム。
  11.  前記第1領域に含まれる骨格の位置を推定する処理は、前記第1領域に含まれる部位を特定した場合に、特定した部位の位置によって、前記第1領域内の予め定められた点の位置を更新することを特徴とする請求項10に記載の骨格推定プログラム。
  12.  前記第1領域は、前記対象物の胴体部分の領域に対応し、前記複数の第2領域は、前記対象物の頭部の領域、腕部分の領域、足部分の領域に対応することを特徴とする請求項9、10または11に記載の骨格推定プログラム。
PCT/JP2016/063501 2016-04-28 2016-04-28 骨格推定装置、骨格推定方法および骨格推定プログラム WO2017187641A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
PCT/JP2016/063501 WO2017187641A1 (ja) 2016-04-28 2016-04-28 骨格推定装置、骨格推定方法および骨格推定プログラム
JP2018514089A JP6617830B2 (ja) 2016-04-28 2016-04-28 骨格推定装置、骨格推定方法および骨格推定プログラム
CN201680084967.XA CN109074641B (zh) 2016-04-28 2016-04-28 骨骼估计装置、骨骼估计方法以及骨骼估计程序
EP16900511.3A EP3451292B1 (en) 2016-04-28 2016-04-28 Skeleton estimation device, skeleton estimation method, and skeleton estimation program
US16/171,196 US10839550B2 (en) 2016-04-28 2018-10-25 Non-transitory computer-readable recording medium for storing skeleton estimation program, skeleton estimation device, and skeleton estimation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/063501 WO2017187641A1 (ja) 2016-04-28 2016-04-28 骨格推定装置、骨格推定方法および骨格推定プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/171,196 Continuation US10839550B2 (en) 2016-04-28 2018-10-25 Non-transitory computer-readable recording medium for storing skeleton estimation program, skeleton estimation device, and skeleton estimation method

Publications (1)

Publication Number Publication Date
WO2017187641A1 true WO2017187641A1 (ja) 2017-11-02

Family

ID=60160217

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/063501 WO2017187641A1 (ja) 2016-04-28 2016-04-28 骨格推定装置、骨格推定方法および骨格推定プログラム

Country Status (5)

Country Link
US (1) US10839550B2 (ja)
EP (1) EP3451292B1 (ja)
JP (1) JP6617830B2 (ja)
CN (1) CN109074641B (ja)
WO (1) WO2017187641A1 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019230205A1 (ja) * 2018-05-31 2019-12-05 株式会社日立製作所 骨格検出装置、及び骨格検出方法
WO2019229818A1 (ja) * 2018-05-28 2019-12-05 富士通株式会社 表示方法、表示プログラムおよび情報処理装置
JP2020123342A (ja) * 2019-01-30 2020-08-13 株式会社ストラドビジョンStradvision,Inc. 魚眼レンズが装着された2次元カメラを使用して2次元イメージショットで乗客の状態を予測するための方法及び装置{method and device for estimating passenger statuses in 2 dimension image shot by using 2 dimension camera with fisheye lens}
JP2020197044A (ja) * 2019-05-31 2020-12-10 株式会社小松製作所 マップ生成システム及びマップ生成方法
JP2021043839A (ja) * 2019-09-13 2021-03-18 株式会社東芝 学習システム、分析システム、学習方法、分析方法、プログラム、及び記憶媒体
JP2021077218A (ja) * 2019-11-12 2021-05-20 ソフトバンク株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP2021124748A (ja) * 2020-01-31 2021-08-30 Kddi株式会社 映像変換方法、装置およびプログラム
JP2022033037A (ja) * 2020-08-12 2022-02-25 株式会社リコー 画像処理方法、装置及び記憶媒体
WO2022085978A1 (ko) * 2020-10-23 2022-04-28 주식회사 모아이스 이미지상에 그래픽 객체를 표시하기 위한 방법, 디바이스 및 비일시성의 컴퓨터 판독 가능한 기록 매체
EP4265106A1 (en) * 2020-12-21 2023-10-25 Revamp Corporation Information processing device, information processing method, and program
WO2024009503A1 (ja) * 2022-07-08 2024-01-11 富士通株式会社 姿勢推定プログラム、装置、及び方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7192528B2 (ja) * 2019-01-24 2022-12-20 株式会社ジェイテクト アシスト装置
US11205350B2 (en) * 2019-05-15 2021-12-21 International Business Machines Corporation IoT-driven proprioceptive analytics with automated performer feedback
FR3098332B1 (fr) * 2019-07-05 2022-01-07 Fond B Com Procédé et dispositif de détermination de l’amplitude d’un mouvement effectué par un membre d’un corps articulé
KR102332113B1 (ko) * 2020-03-31 2021-11-30 한국과학기술원 Visuomotor 시스템을 이용한 모델 예측 제어에 기반한 풀바디 모델링 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015011404A (ja) * 2013-06-26 2015-01-19 シャープ株式会社 動作認識処理装置
JP2015167008A (ja) * 2013-07-30 2015-09-24 キヤノン株式会社 姿勢推定装置、姿勢推定方法およびプログラム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2308636C (en) * 1997-11-05 2007-10-09 Synthes (U.S.A.) Virtual representation of a bone or a bone joint
US8577154B2 (en) * 2008-06-16 2013-11-05 University Of Southern California Automated single viewpoint human action recognition by matching linked sequences of key poses
BRPI0917864A2 (pt) * 2008-08-15 2015-11-24 Univ Brown aparelho e método para estimativa da forma corporal
CN101782968B (zh) * 2010-02-03 2012-10-03 北京航空航天大学 基于测地模型的人体骨骼提取和朝向判定方法
WO2011106239A1 (en) * 2010-02-25 2011-09-01 Honda Motor Co., Ltd. Constrained resolved acceleration control
ES2812578T3 (es) * 2011-05-13 2021-03-17 Vizrt Ag Estimación de una postura basada en la silueta
JP2013003686A (ja) * 2011-06-13 2013-01-07 Sony Corp 認識装置および方法、プログラム、並びに記録媒体
CN102831380A (zh) * 2011-06-15 2012-12-19 康佳集团股份有限公司 一种基于深度图像感应的肢体动作识别方法及系统
US8786680B2 (en) * 2011-06-21 2014-07-22 Disney Enterprises, Inc. Motion capture from body mounted cameras
US8929600B2 (en) * 2012-12-19 2015-01-06 Microsoft Corporation Action recognition based on depth maps
JP6027554B2 (ja) * 2014-01-21 2016-11-16 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置、情報処理システム、ブロックシステム、および情報処理方法
KR101693585B1 (ko) * 2014-09-16 2017-01-06 주식회사 대부 엑스레이 뼈위치 확인을 이용한 도체 발골장치
KR101729195B1 (ko) * 2014-10-16 2017-04-21 한국전자통신연구원 질의동작기반 안무 검색 시스템 및 방법
US9928412B2 (en) * 2014-10-17 2018-03-27 Ebay Inc. Method, medium, and system for fast 3D model fitting and anthropometrics
MA41117A (fr) * 2014-12-05 2017-10-10 Myfiziq Ltd Imagerie d'un corps
CN104751513A (zh) * 2015-03-12 2015-07-01 深圳市同洲电子股份有限公司 一种建立人体骨骼模型的方法及装置
US11511156B2 (en) * 2016-03-12 2022-11-29 Arie Shavit Training system and methods for designing, monitoring and providing feedback of training
US20170312032A1 (en) * 2016-04-27 2017-11-02 Arthrology Consulting, Llc Method for augmenting a surgical field with virtual guidance content

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015011404A (ja) * 2013-06-26 2015-01-19 シャープ株式会社 動作認識処理装置
JP2015167008A (ja) * 2013-07-30 2015-09-24 キヤノン株式会社 姿勢推定装置、姿勢推定方法およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3451292A4 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019229818A1 (ja) * 2018-05-28 2019-12-05 富士通株式会社 表示方法、表示プログラムおよび情報処理装置
US11837255B2 (en) 2018-05-28 2023-12-05 Fujitsu Limited Display method, computer-readable recording medium recording display program, and information processing apparatus
WO2019230205A1 (ja) * 2018-05-31 2019-12-05 株式会社日立製作所 骨格検出装置、及び骨格検出方法
JP2019211850A (ja) * 2018-05-31 2019-12-12 株式会社日立製作所 骨格検出装置、及び骨格検出方法
JP2020123342A (ja) * 2019-01-30 2020-08-13 株式会社ストラドビジョンStradvision,Inc. 魚眼レンズが装着された2次元カメラを使用して2次元イメージショットで乗客の状態を予測するための方法及び装置{method and device for estimating passenger statuses in 2 dimension image shot by using 2 dimension camera with fisheye lens}
JP2020197044A (ja) * 2019-05-31 2020-12-10 株式会社小松製作所 マップ生成システム及びマップ生成方法
JP2021043839A (ja) * 2019-09-13 2021-03-18 株式会社東芝 学習システム、分析システム、学習方法、分析方法、プログラム、及び記憶媒体
JP7370777B2 (ja) 2019-09-13 2023-10-30 株式会社東芝 学習システム、分析システム、学習方法、分析方法、プログラム、及び記憶媒体
US11676362B2 (en) 2019-09-13 2023-06-13 Kabushiki Kaisha Toshiba Training system and analysis system
JP2021077218A (ja) * 2019-11-12 2021-05-20 ソフトバンク株式会社 情報処理装置、情報処理方法、および情報処理プログラム
JP7231573B2 (ja) 2020-01-31 2023-03-01 Kddi株式会社 映像変換方法、装置およびプログラム
JP2021124748A (ja) * 2020-01-31 2021-08-30 Kddi株式会社 映像変換方法、装置およびプログラム
JP7230963B2 (ja) 2020-08-12 2023-03-01 株式会社リコー 画像処理方法、装置及び記憶媒体
JP2022033037A (ja) * 2020-08-12 2022-02-25 株式会社リコー 画像処理方法、装置及び記憶媒体
KR102501811B1 (ko) * 2020-10-23 2023-02-21 주식회사 모아이스 이미지상에 그래픽 객체를 표시하기 위한 방법, 디바이스 및 비일시성의 컴퓨터 판독 가능한 기록 매체
KR20220053999A (ko) * 2020-10-23 2022-05-02 주식회사 모아이스 이미지상에 그래픽 객체를 표시하기 위한 방법, 디바이스 및 비일시성의 컴퓨터 판독 가능한 기록 매체
WO2022085978A1 (ko) * 2020-10-23 2022-04-28 주식회사 모아이스 이미지상에 그래픽 객체를 표시하기 위한 방법, 디바이스 및 비일시성의 컴퓨터 판독 가능한 기록 매체
EP4265106A1 (en) * 2020-12-21 2023-10-25 Revamp Corporation Information processing device, information processing method, and program
WO2024009503A1 (ja) * 2022-07-08 2024-01-11 富士通株式会社 姿勢推定プログラム、装置、及び方法

Also Published As

Publication number Publication date
EP3451292A4 (en) 2019-03-13
JP6617830B2 (ja) 2019-12-11
EP3451292A1 (en) 2019-03-06
EP3451292B1 (en) 2020-02-12
US10839550B2 (en) 2020-11-17
CN109074641A (zh) 2018-12-21
US20190066327A1 (en) 2019-02-28
CN109074641B (zh) 2022-02-11
JPWO2017187641A1 (ja) 2018-11-29

Similar Documents

Publication Publication Date Title
JP6617830B2 (ja) 骨格推定装置、骨格推定方法および骨格推定プログラム
JP6384549B2 (ja) スキル判定プログラム、スキル判定方法およびスキル判定装置
CN109863535B (zh) 运动识别装置、存储介质以及运动识别方法
JP5820366B2 (ja) 姿勢推定装置及び姿勢推定方法
KR102097190B1 (ko) 스마트 미러를 이용하여 실시간 운동 동작을 분석 및 디스플레이하기 위한 방법 및 이를 위한 스마트 미러
JP5873442B2 (ja) 物体検出装置および物体検出方法
WO2014162787A1 (ja) 身体動作採点装置、ダンス採点装置、カラオケ装置及びゲーム装置
JP6760490B2 (ja) 認識装置、認識方法および認識プログラム
JP2016091108A (ja) 人体部位検出システムおよび人体部位検出方法
JP6760491B2 (ja) 認識装置、認識システム、認識方法および認識プログラム
JPWO2019069358A1 (ja) 認識プログラム、認識方法および認識装置
Zhang et al. Intelligent sports performance scoring and analysis system based on deep learning network
US20230185845A1 (en) Image selection apparatus, image selection method, and non-transitory computer-readable medium
WO2023112321A1 (ja) 画像処理システム、画像処理方法及び非一時的なコンピュータ可読媒体
Bascones Cloud point labelling in optical motion capture systems
WO2021224994A1 (ja) 画像選択装置、画像選択方法、及びプログラム
JP7272470B2 (ja) 運動認識方法、運動認識プログラムおよび情報処理装置
US20230161815A1 (en) Image selection apparatus, image selection method, and non-transitory computer-readable medium
US20230186597A1 (en) Image selection apparatus, image selection method, and non-transitory computer-readable medium
Jiménez Bascones Cloud point labelling in optical motion capture systems
KR20220109570A (ko) 스마트 미러를 이용하여 실시간 운동 동작을 분석 방법
Mena et al. Temporal nearest end-effectors for real-time full-body human actions recognition
Hoshino et al. Quick and accurate estimation of human 3D hand posture

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2018514089

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

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

Ref document number: 16900511

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2016900511

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2016900511

Country of ref document: EP

Effective date: 20181128