A system for measuring a golf club head having a club face, the system comprising: at least three markers placed on the club face such that the at least three markers define the geometry of the club face, and conform to a known tolerance of relative spacing and orientation between the markers, defining a known geometric relationship between the markers; at least two cameras (105, 110) adapted to capture a plurality of images during a swing and to communicate those images to a processor; the processor configured to perform the following steps: a. performing threshold processing on the images to detect pixels that may correspond to the markers (515, 520); b. determining a position for the markers in three dimensional space; c. finding a group of markers that falls within the known tolerance of the known geometric relationship (535, 540); d. labeling the markers based on their position with respect to the known geometric relationship; and e. calculating the position of the club head during the swing based on the 3D position of the markers (550, 555), characterized by an inertial navigation system connected to the golf club and adapted to capture inertial data during the swing and communicate the inertia data to the processor, wherein the processor is configured to perform the following additional steps: f. converting the inertial data to rotational and translational values of an inertial coordinate frame; g. converting the club face position data of step (e) to rotational and translational values of a club face coordinate frame; and h. determining a relationship between the inertial coordinate frame and the club face coordinate frame. at least three markers placed on the club face such that the at least three markers define the geometry of the club face, and conform to a known tolerance of relative spacing and orientation between the markers, defining a known geometric relationship between the markers; at least two cameras (105, 110) adapted to capture a plurality of images during a swing and to communicate those images to a processor; the processor configured to perform the following steps: a. performing threshold processing on the images to detect pixels that may correspond to the markers (515, 520); b. determining a position for the markers in three dimensional space; c. finding a group of markers that falls within the known tolerance of the known geometric relationship (535, 540); d. labeling the markers based on their position with respect to the known geometric relationship; and e. calculating the position of the club head during the swing based on the 3D position of the markers (550, 555), characterized by a. performing threshold processing on the images to detect pixels that may correspond to the markers (515, 520); b. determining a position for the markers in three dimensional space; c. finding a group of markers that falls within the known tolerance of the known geometric relationship (535, 540); d. labeling the markers based on their position with respect to the known geometric relationship; and e. calculating the position of the club head during the swing based on the 3D position of the markers (550, 555), characterized by an inertial navigation system connected to the golf club and adapted to capture inertial data during the swing and communicate the inertia data to the processor, wherein the processor is configured to perform the following additional steps: f. converting the inertial data to rotational and translational values of an inertial coordinate frame; g. converting the club face position data of step (e) to rotational and translational values of a club face coordinate frame; and h. determining a relationship between the inertial coordinate frame and the club face coordinate frame. f. converting the inertial data to rotational and translational values of an inertial coordinate frame; g. converting the club face position data of step (e) to rotational and translational values of a club face coordinate frame; and h. determining a relationship between the inertial coordinate frame and the club face coordinate frame.