WO2012029833A1 - 操作判定装置、操作判定方法、及び、操作判定プログラム - Google Patents

操作判定装置、操作判定方法、及び、操作判定プログラム Download PDF

Info

Publication number
WO2012029833A1
WO2012029833A1 PCT/JP2011/069719 JP2011069719W WO2012029833A1 WO 2012029833 A1 WO2012029833 A1 WO 2012029833A1 JP 2011069719 W JP2011069719 W JP 2011069719W WO 2012029833 A1 WO2012029833 A1 WO 2012029833A1
Authority
WO
WIPO (PCT)
Prior art keywords
fingertip
user
predetermined range
portion corresponding
mcu
Prior art date
Application number
PCT/JP2011/069719
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
Priority claimed from JP2010203730A external-priority patent/JP2012073658A/ja
Priority claimed from JP2010203748A external-priority patent/JP2012073659A/ja
Application filed by 新世代株式会社 filed Critical 新世代株式会社
Publication of WO2012029833A1 publication Critical patent/WO2012029833A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures

Definitions

  • the present invention relates to an operation determination device that determines whether or not a click operation has been performed when operating a device in a non-contact manner using a gesture, and a related technology.
  • the present invention also relates to an operation determination device that determines whether or not a button operation has been performed in a pseudo manner when operating a device in a non-contact manner using a gesture, and a related technology.
  • the present invention relates to a fingertip detection apparatus that detects an image of a human hand and detects the fingertip from the captured image, and a related technique.
  • the present invention relates to a computer system that captures the movement of a human hand in a three-dimensional space, analyzes the captured image, and uses the analysis result for pointing, and related technology.
  • Patent Document 1 discloses a cursor operation device that is a non-contact type pointing device. This cursor operation device detects the movement of a user's fingertip in a three-dimensional space using a camera, causes the cursor to follow the movement, and operates the device without contact. Then, when the cursor stays on the button displayed on the screen for a certain period of time, the cursor operation device determines that a click operation has been performed and considers that the button has been pressed.
  • a pointing device that a user touches and operates such as a mouse or a touchpad
  • a contact-type pointing device is referred to as a contact-type pointing device, as opposed to a non-contact type.
  • the position of the fingertip can be obtained only with the accuracy of the image from the camera. Therefore, when the camera image has a low resolution and the screen on which the cursor is displayed has a high resolution, the cursor cannot be moved smoothly, resulting in discontinuous movement.
  • an object of the present invention is to provide an operation determination device that determines that a click operation has been performed with a gesture that is easy for the user and related technology.
  • Another object of the present invention is to provide an operation determination device and related technology for determining that a pseudo button operation has been performed by a gesture that is easy for the user.
  • Still another object of the present invention is to detect the position of the fingertip with high accuracy from a low resolution image obtained by photographing a human finger, and to reduce the storage capacity and increase the processing speed. It is an object of the present invention to provide a fingertip detection device and related technology that can be realized.
  • Still another object of the present invention is to provide a computer system capable of providing a user with comfortable operability in multi-window operation and related technology.
  • an operation determination device includes a photographing unit that photographs a user's hand moved in a three-dimensional space, and a portion corresponding to the fingertip of the user from an image obtained by photographing. Detecting means for detecting; setting means for setting a predetermined range including a portion corresponding to the detected fingertip; and whether the portion corresponding to the fingertip has disappeared after the setting means has set the predetermined range.
  • First judgment means for judging whether or not the part corresponding to the fingertip has appeared in the predetermined range after the first judgment means judges that the part corresponding to the fingertip has disappeared from the predetermined range
  • Second determining means for determining whether or not the second determining means determines that a click operation has been performed when it is determined that a portion corresponding to the fingertip has appeared in the predetermined range.
  • the user can perform a non-contact click by simply performing a gesture of folding a finger from a state where one finger is raised and returning to the original state again in a three-dimensional space.
  • the operation can be performed.
  • a click operation can be performed with a gesture that is easy for the user.
  • the setting means sets the predetermined range when the detected movement of the portion corresponding to the fingertip is within a certain range.
  • the predetermined range is set, and this is used as a trigger. It can be determined whether or not the user has made a gesture corresponding to the click operation. For this reason, it is not always necessary to determine whether or not the user has made the gesture, and the processing load can be reduced.
  • the setting unit when the setting unit does not determine that the portion corresponding to the fingertip has disappeared from the predetermined range within a first predetermined time after the predetermined range is set.
  • the predetermined range is canceled.
  • the first determination means does not determine that the portion corresponding to the fingertip has disappeared from the predetermined range within the first predetermined time, it is considered that the user does not intend to perform a click operation. Therefore, it can be determined that a click operation is performed against the user's intention. In other words, in general, a click operation is performed quickly, but by appropriately setting the first predetermined time, even if the movement is the same, a movement other than the gesture intended for the click operation can be excluded and erroneous determination can be prevented. .
  • the setting means does not determine that the portion corresponding to the fingertip has appeared in the predetermined range within the first predetermined time after the predetermined range is set. In the case, the predetermined range is canceled.
  • the second determination means does not determine that the portion corresponding to the fingertip has appeared in the predetermined range within the first predetermined time, it is considered that the user does not intend to perform a click operation. Therefore, it can be determined that a click operation is performed against the user's intention. In other words, in general, a click operation is performed quickly, but by appropriately setting the first predetermined time, even if the movement is the same, a movement other than the gesture intended for the click operation can be excluded and erroneous determination can be prevented. .
  • the setting means includes the second determination means within a second predetermined time after the first determination means determines that the portion corresponding to the fingertip has disappeared from the predetermined range. However, when it is not determined that the portion corresponding to the fingertip has appeared in the predetermined range, the predetermined range can be canceled.
  • the second determination unit when the second determination unit does not determine that the portion corresponding to the fingertip has appeared in the predetermined range within the second predetermined time, it is considered that the user does not intend to perform the click operation. Therefore, it can be determined that a click operation is performed against the user's intention. That is, in general, a click operation is performed quickly, but by appropriately setting the second predetermined time, even if the movement is the same, movement other than the gesture intended for the click operation can be excluded to prevent erroneous determination. .
  • the operation determining apparatus is configured to determine whether the portion corresponding to the fingertip has disappeared after the second determining portion determines that the portion corresponding to the fingertip has appeared in the predetermined range. And the third determining means determines whether or not the portion corresponding to the fingertip has appeared in the predetermined range after determining that the portion corresponding to the fingertip has disappeared from the predetermined range. The determination unit determines that a double-click operation has been performed when the fourth determination unit determines that a portion corresponding to the fingertip has appeared in the predetermined range.
  • the user folds the finger from the state where one finger is raised, returns it to the original state, and further folds the finger again.
  • a non-contact double-click operation can be performed only by performing the gesture of returning to the original standing state again, that is, by performing the gesture for the click operation (single click operation) twice. In this way, a double click operation can be performed with a gesture that is easy for the user.
  • Such a double click operation is performed by performing the single click operation twice. However, it has been verified by experiments of the present inventor that the folded fingertip returns to almost the same position both times. Yes. For this reason, by detecting such a gesture, it can be determined stably and reliably, that is, with high reproducibility, whether or not a double-click operation has been performed.
  • the setting means does not determine that the portion corresponding to the fingertip has disappeared from the predetermined range within the first predetermined time after the predetermined range is set. In the case, the predetermined range is canceled.
  • the third determination means does not determine that the portion corresponding to the fingertip has disappeared from the predetermined range within the first predetermined time, it is considered that the user does not intend to perform a double-click operation.
  • a movement other than a gesture intended for the double-click operation is excluded, and an erroneous determination is made. Can be prevented.
  • the setting means does not determine that the portion corresponding to the fingertip has appeared in the predetermined range within the first predetermined time after the predetermined range is set. In the case, the predetermined range is canceled.
  • the fourth determination unit does not determine that the portion corresponding to the fingertip has appeared in the predetermined range within the first predetermined time, it is considered that the user does not intend to perform a double click operation.
  • a double-click operation has been performed against the user's intention. That is, in general, a double-click operation is performed quickly.
  • a movement other than a gesture intended for the double-click operation is excluded, and an erroneous determination is made. Can be prevented.
  • the setting means includes the fourth determination means within a third predetermined time after the third determination means determines that the portion corresponding to the fingertip has disappeared from the predetermined range. However, when it is not determined that the portion corresponding to the fingertip has appeared in the predetermined range, the predetermined range can be canceled.
  • the fourth determination means does not determine that the portion corresponding to the fingertip has appeared in the predetermined range within the third predetermined time, it is considered that the user does not intend to perform a double click operation.
  • a double-click operation is performed quickly, but by appropriately setting the third predetermined time, even if it is the same movement, a movement other than a gesture intended for the double-click operation is excluded, and an erroneous determination is made. Can be prevented.
  • the setting means may include the third determination means within a fourth predetermined time after the second determination means determines that the portion corresponding to the fingertip has appeared in the predetermined range. If it is not determined that the part corresponding to the fingertip has disappeared from the predetermined range, the predetermined range is canceled.
  • the third determination unit does not determine that the portion corresponding to the fingertip has disappeared from the predetermined range within the fourth predetermined time, it is considered that the user does not intend to perform a double-click operation.
  • the setting unit cancels the predetermined range when the fourth determination unit does not determine that a portion corresponding to the fingertip has appeared in the predetermined range within the fourth predetermined time.
  • the fourth determination unit does not determine that the portion corresponding to the fingertip has appeared in the predetermined range within the fourth predetermined time, it is considered that the user does not intend to perform a double-click operation.
  • the setting means includes the fourth determination means within a fifth predetermined time after the third determination means determines that the portion corresponding to the fingertip has disappeared from the predetermined range. However, when it is not determined that the portion corresponding to the fingertip has appeared in the predetermined range, the predetermined range can be canceled.
  • the fourth determination unit does not determine that the portion corresponding to the fingertip has appeared in the predetermined range within the fifth predetermined time. Thus, it can be determined that a double-click operation has been performed against the user's intention. In other words, in general, a double-click operation is performed quickly.
  • a movement other than a gesture intended for the double-click operation is excluded, and an erroneous determination is made. Can be prevented.
  • the operation determination device includes a photographing unit that photographs the user's hand moved in the three-dimensional space, and a portion corresponding to the user's finger from the image obtained by the photographing.
  • a photographing unit that photographs the user's hand moved in the three-dimensional space, and a portion corresponding to the user's finger from the image obtained by the photographing.
  • the user can perform a button operation in a pseudo manner simply by changing one finger up to another finger up. In this way, it is possible to perform a pseudo button operation with a gesture that is easy for the user.
  • the cursor can be displayed at the position on the screen corresponding to the fingertip, and pointing and pseudo button operation can be performed with one hand. it can.
  • “pseudo button operation” is not an operation of an actual button of a device such as a pointing device, but is equivalent to information or a case of operating an actual button. This means giving instructions to the computer by gestures in a three-dimensional space.
  • the operation determination device includes a photographing unit that photographs the user's hand moved in the three-dimensional space, and a portion corresponding to the user's finger from the image obtained by the photographing.
  • a pseudo button operation is performed. Determination means for determining whether or not.
  • the user can perform a button operation in a pseudo manner simply by closing another finger and raising one finger from a state where two fingers are raised. In this way, it is possible to perform a pseudo button operation with a gesture that is easy for the user.
  • the cursor can be displayed at the position on the screen corresponding to the fingertip, and pointing and pseudo button operation can be performed with one hand. it can.
  • an operation determination device includes a photographing unit that photographs a user's hand moved in a three-dimensional space, and a portion corresponding to the fingertip of the user from an image obtained by photographing.
  • the user can perform a pseudo button operation simply by bringing the fingertips of two fingers close together. In this way, it is possible to perform a pseudo button operation with a gesture that is easy for the user.
  • a cursor can be displayed between two detected fingertips (for example, the middle point), and pointing and pseudo button operations can be performed with one hand.
  • an operation determination method includes a step of photographing a user's hand moved in a three-dimensional space, and a portion corresponding to the user's fingertip is detected from an image obtained by the photographing.
  • This configuration has the same effect as the operation determination device according to the first aspect.
  • an operation determination method includes a step of photographing a user's hand moved in a three-dimensional space, and a portion corresponding to the user's finger is detected from an image obtained by the photographing. In the case where one portion corresponding to the user's finger is detected this time and two portions corresponding to the user's finger have been detected last time, it is determined that a pseudo button operation has been performed. Including the steps of:
  • This configuration has the same effect as the operation determination device according to the second aspect.
  • an operation determination method includes a step of photographing a user's hand moved in a three-dimensional space, and a portion corresponding to the user's finger is detected from an image obtained by the photographing. When two portions corresponding to the user's finger are detected this time and one portion corresponding to the user's finger has been detected last time, it is determined that a pseudo button operation has been performed. Including the steps of:
  • This configuration has the same effect as the operation determination device according to the third aspect.
  • an operation determination method includes a step of photographing a user's hand moved in a three-dimensional space, and a portion corresponding to the user's fingertip is detected from an image obtained by the photographing. And, when two portions corresponding to the user's fingertips are detected, and when the distance between the two points is smaller than a predetermined value, determining that a button operation has been performed in a pseudo manner. Including.
  • This configuration has the same effect as the operation determination device according to the fourth aspect.
  • the computer program causes a computer to execute the operation determination method according to the fifth aspect.
  • a computer program causes a computer to execute the operation determination method according to the sixth aspect.
  • a computer program causes a computer to execute the operation determination method according to the seventh aspect.
  • a computer program causes a computer to execute the operation determination method according to the eighth aspect.
  • a computer-readable recording medium records a computer program according to the ninth aspect.
  • a computer-readable recording medium records the computer program according to the tenth aspect.
  • a computer-readable recording medium records the computer program according to the eleventh aspect.
  • a computer-readable recording medium records a computer program according to the twelfth aspect.
  • the fingertip detection device detects the contour of the hand image from the photographing means for photographing the user's hand moved in the three-dimensional space and the image obtained by the photographing.
  • a contour detection means a finger detection means for detecting a pixel corresponding to the fingertip of the hand (hereinafter referred to as “fingertip pixel”) from the contour; and a pixel surrounding the fingertip pixel (hereinafter referred to as “peripheral”).
  • the position of the fingertip can be determined with high precision even when the imaging means has a relatively low resolution.
  • the movement can be smoothed.
  • the corrected fingertip can be determined not at the contour line but at the position inside the finger, and closer to the position recognized by the user as the fingertip.
  • the cursor is displayed at a position on the screen corresponding to the fingertip, the user can easily control the cursor with the fingertip.
  • the convex point on the contour of the finger is not recognized as the fingertip, and the center of the finger pad at the tip of the finger is the center of the fingertip. Recognize.
  • the correction value calculation means calculates the weighted average of the coordinates of the fingertip pixel and the surrounding pixels by using the pixel values of the fingertip pixel and the surrounding pixels as weights, and corrects the coordinates of the fingertip pixels. To do.
  • the correction value calculation means performs the correction so that the corrected fingertip position exceeds the range of the surrounding pixels.
  • the position of the fingertip after correction can be determined to be a constant position or a substantially constant position of the belly of the finger tip, and the position of the fingertip detected by the contour detection means is not stable
  • the position of the fingertip after correction can be made as constant as possible, or the difference in the position of the fingertip can be kept as small as possible.
  • the corrected fingertip can be brought closer to the position that the user recognizes as the fingertip.
  • the cursor is displayed at a position on the screen corresponding to the fingertip, it becomes easier for the user to control the cursor with the fingertip.
  • the correction value calculation means uses the pixel values of the fingertip pixel and the surrounding pixels as weights to the coordinates of the fingertip pixel and the surrounding pixels, and weights the fingertip pixels and the surrounding pixels.
  • the coordinate of the fingertip pixel can also be corrected by calculating the sum of coordinates and dividing the sum by the maximum value of the pixel values of the fingertip pixel and the surrounding pixels.
  • the correction value calculation means includes a distance between the fingertip pixel and the surrounding pixels located in an oblique direction of the fingertip pixel, and a horizontal direction or a vertical direction of the fingertip pixel and the fingertip pixel.
  • the coordinates of the surrounding pixels are defined such that the distance between the surrounding pixels and the surrounding pixels is equal.
  • the pixel values of all the surrounding pixels are treated equally, and correction can be performed without deviation depending on the direction.
  • a fingertip detection method includes a step of photographing a user's hand moved in a three-dimensional space, and a step of detecting a contour of the hand image from an image obtained by the photographing. And detecting a pixel corresponding to the fingertip of the hand (hereinafter referred to as “fingertip pixel”) from the contour, and a pixel surrounding the fingertip pixel (hereinafter referred to as “peripheral pixel”). And correcting the coordinates of the fingertip pixel detected by the step of detecting the fingertip pixel with the decimal point accuracy using the pixel value and coordinates of
  • This configuration has the same effect as the fingertip detection device according to the seventeenth aspect.
  • a computer program causes a computer to execute the fingertip detection method according to the eighteenth aspect.
  • a computer-readable recording medium records the computer program according to the nineteenth aspect.
  • a computer system photographs a user's hand moved in a three-dimensional space, a window system that assigns and controls a unique window to each of a plurality of application programs that operate in parallel.
  • a motion sensor as a pointing device that analyzes the obtained image and detects the user's hand, and the window system is configured to display the window based on information on the user's hand detected by the motion sensor.
  • a function for controlling is provided to each application program.
  • each application program can control the window assigned to each application program based on the user's hand information detected by the motion sensor. That is, the user's hand moved in the three-dimensional space can be photographed by the motion sensor, and the multi-window can be operated in a non-contact manner based on the detection result from the photographed image.
  • various inputs can be performed, and a comfortable operability can be provided to the user in the multi-window operation.
  • Various inputs include, for example, hand shape (goo, choki, par, single finger), hand shape change, hand area (correlation with distance between motion sensor and hand), hand Movement (eg, hand rotation, fingertip movement), hand position, hand movement, hand movement trajectory, hand speed, hand acceleration, and the like.
  • a contact-type pointing device cannot input all of them.
  • the present invention can include the same function as the contact type pointing device. For example, a function equivalent to that of a mouse can be included by causing the cursor to follow the movement of the fingertip and assuming that a button operation is performed in a pseudo manner by a predetermined change in the shape of the hand.
  • the motion sensor functions as a gesture control device and also functions as a pointing device. Therefore, the gesture control function and the pointing device function can be used properly depending on the control contents of the window, and the user operability can be optimized.
  • the motion sensor detects the hand by analyzing the image, it is not necessary for the window system to perform such processing, and the processing load can be reduced.
  • the window system programmer can detect the hand. There is no need to create a program and the burden can be reduced. That is, a motion sensor can be easily mounted on a computer system.
  • a computer system in which a plurality of applications can operate in parallel, and an operating system for managing the entire computer system and a user's hand moved in a three-dimensional space are photographed.
  • a motion sensor as a pointing device that analyzes the obtained image and detects the user's hand, controls the motion sensor, and receives information on the user's hand as an analysis result from the motion sensor
  • a device driver that is passed to the operating system; and an application program interface that provides each application program with a predetermined function of the operating system based on information of the user's hand received from the device driver.
  • the operating system includes a window system that assigns and controls a unique window to each of the plurality of application programs operating in parallel, and the predetermined function is based on information of the user's hand detected by the motion sensor. It is a function of the window system for controlling.
  • This configuration has the same technical characteristics as those of the computer system according to the twenty-first aspect, and therefore provides the same effects as those of the computer system according to the twenty-first aspect.
  • the window system controls a cursor on the screen based on information on the user's hand detected by the motion sensor.
  • the user can operate the cursor in a non-contact manner while moving the hand in the three-dimensional space.
  • the window system monitors whether an event requested by the application program has occurred based on information on the user's hand detected by the motion sensor. And event monitoring means for notifying the occurrence of the event to the application program that is the requester when the event occurs.
  • the application program can be created as an event-driven program, which is suitable for window control.
  • the user's hand information detected by the motion sensor includes the user's hand shape, hand shape change, hand area, hand movement, hand Part or all of the information on the position, hand movement, hand movement trajectory, hand speed, and hand acceleration.
  • the movement of the hand, the position of the hand, the movement of the hand, the movement trajectory of the hand, the speed of the hand, and the acceleration of the hand are the movement, position, movement of the hand itself, It is a concept that includes not only the movement trajectory, speed, and acceleration but also the movement, position, movement, movement trajectory, speed, and acceleration of the fingertip of the hand.
  • the fingertip is not limited to one finger, and may include a plurality of fingertips.
  • the hand may be one hand or both hands.
  • a computer system photographs a user's hand moved in a three-dimensional space, and a window system that assigns and controls a unique window to each of a plurality of application programs that operate in parallel.
  • a motion sensor as a pointing device that analyzes the obtained image and detects the user's hand, and a function for controlling the window based on information on the user's hand detected by the motion sensor, Middleware provided to each application program.
  • This configuration has the same technical characteristics as those of the computer system according to the twenty-first aspect, and therefore provides the same effects as those of the computer system according to the twenty-first aspect.
  • the motion sensor intermittently irradiates light of the user's hand that is moved in a three-dimensional space, and shoots when irradiated and not irradiated.
  • a process is executed, a difference image between the image obtained at the time of irradiation and the image obtained at the time of non-irradiation is analyzed, and the user's hand is detected.
  • noise such as the background can be easily removed, and only the image of the subject (hand) can be easily extracted.
  • a computer system photographs a user's hand that is moved in a three-dimensional space, and a window system that assigns and controls unique windows to a plurality of application programs that operate in parallel.
  • the window system includes information on the user's hand acquired by the analyzing unit. A function for controlling the window based on the above is provided to each application program.
  • each application program can control the window assigned to each application program based on the user's hand information detected by the photographing unit and the analyzing unit. That is, the user's hand moved in the three-dimensional space can be photographed by the photographing means, and the multi-window can be operated without contact based on the analysis result of the photographed image by the analyzing means.
  • various inputs can be performed, and a comfortable operability can be provided to the user in the multi-window operation.
  • Various inputs include, for example, hand shape (goo, choki, par, single finger), hand shape change, hand area (correlation with distance between motion sensor and hand), hand Movement (eg, hand rotation, fingertip movement), hand position, hand movement, hand movement trajectory, hand speed, hand acceleration, and the like.
  • a contact-type pointing device cannot input all of them.
  • the present invention can include the same function as the contact type pointing device. For example, a function equivalent to that of a mouse can be included by causing the cursor to follow the movement of the fingertip and assuming that a button operation is performed in a pseudo manner by a predetermined change in the shape of the hand.
  • the motion sensor functions as a gesture control device and also functions as a pointing device. Therefore, the gesture control function and the pointing device function can be used properly depending on the control contents of the window, and the user operability can be optimized.
  • the computer system further includes light emitting means for intermittently irradiating light on the user's hand moved in a three-dimensional space, and the photographing means performs photographing processing when the light is irradiated and when not irradiated.
  • the analysis unit analyzes a difference image between an image obtained at the time of irradiation and an image obtained at the time of non-irradiation, and acquires information on the user's hand.
  • noise such as the background can be easily removed, and only the image of the subject (hand) can be easily extracted.
  • a computer system photographs a user's hand that is moved in a three-dimensional space, and a window system that assigns and controls unique windows to a plurality of application programs that operate in parallel.
  • Image capturing means, and middleware for analyzing the image obtained by the image capturing means and obtaining information on the user's hand, the middleware for controlling the window based on the information on the user's hand Is provided to each application program.
  • This configuration has the same technical characteristics as those of the computer system according to the twenty-fourth aspect, and therefore provides the same effects as those of the computer system according to the twenty-fourth aspect.
  • the computer system further includes light emitting means for intermittently irradiating light on the user's hand moved in a three-dimensional space, and the photographing means performs photographing processing when the light is irradiated and when not irradiated.
  • the middleware analyzes a difference image between an image obtained at the time of irradiation and an image obtained at the time of non-irradiation, and acquires information on the user's hand.
  • noise such as the background can be easily removed, and only the image of the subject (hand) can be easily extracted.
  • a window control method in which a computer assigns and controls a unique window to each of a plurality of application programs operating in parallel, and the computer is moved in a three-dimensional space.
  • a function for controlling the window based on information of the user's hand detected by a motion sensor as a pointing device, which captures the user's hand, analyzes the obtained image, and detects the user's hand Providing to each of the application programs.
  • This configuration has the same effects as the computer system according to the twenty-first aspect.
  • a window control method is a window control method executed by a computer capable of operating a plurality of applications in parallel, wherein the plurality of applications operate in parallel.
  • a pointing device for assigning and controlling a window unique to each program, and for the computer to shoot a user's hand moved in a three-dimensional space, analyze the obtained image, and detect the user's hand Controlling the motion sensor of the user, receiving the information of the user's hand as an analysis result from the motion sensor, and passing the information to the operating system; and the computer having a predetermined function of the operating system based on the information of the user's hand
  • the steps of providing the program, a predetermined function, the window the motion sensor is a function for controlling on the basis of the information of the hand of the user detected.
  • This configuration has the same effects as the computer system according to the twenty-second aspect.
  • a window control method in which a computer assigns and controls a unique window to each of a plurality of application programs operating in parallel, and the computer is moved in a three-dimensional space. Analyzing the image obtained by the photographing means for photographing the user's hand to obtain information on the user's hand, and the computer for controlling the window based on the information on the user's hand Providing a function to each application program.
  • This configuration has the same effects as the computer system according to the twenty-fourth aspect.
  • a computer program causes a computer to execute the window control method according to the twenty-sixth aspect.
  • the computer program causes a computer to execute the window control method according to the twenty-seventh aspect.
  • a computer program causes a computer to execute the window control method according to the twenty-eighth aspect.
  • a computer-readable recording medium records the computer program according to the twenty-ninth aspect.
  • a computer-readable recording medium records the computer program according to the thirtieth aspect.
  • a computer-readable recording medium records a computer program according to the thirty-first aspect.
  • FIG. 7 is a hierarchy diagram of a computer system 700 according to an embodiment of the present invention.
  • A It is a figure which shows the electrical constitution of the computer system 700 by embodiment of this invention.
  • B It is a figure which shows the electrical constitution of the motion sensor 600 of Fig.2 (a).
  • A It is explanatory drawing of pseudo button operation by embodiment of this invention.
  • B It is explanatory drawing of the 1st-3rd example of pseudo button operation by embodiment of this invention.
  • It is a flowchart which shows an example of the flow of the image analysis process by MCU3 of FIG. It is a flowchart which shows an example of the flow of the binarization process of step S1 of FIG.
  • (C) It is a flowchart which shows the flow of the 3rd example of the fingertip correction value calculation process of FIG.11 S377 and FIG.13 S447.
  • (D) It is a flowchart which shows the flow of the 4th example of the fingertip correction value calculation process of step S377 of FIG. 11, and step S447 of FIG.
  • (A) It is a flowchart which shows the flow of the 1st example of the pseudo
  • (B) It is a flowchart which shows the flow of the 2nd example of the pseudo
  • (C) It is a flowchart which shows the flow of the 3rd example of the pseudo
  • FIG. 5 is an explanatory diagram of a deviation angle ⁇ j detected in step S5 of FIG. 4. It is explanatory drawing of the inflection point detected by step S7 of FIG. 4, and the fingertip detected by step S163 of FIG. (A) It is explanatory drawing of the fingertip correction value calculation process of Fig.14 (a) and FIG.14 (c). (B) It is explanatory drawing of the fingertip correction value calculation process of FIG.14 (b) and FIG.14 (d). It is explanatory drawing of the divisor in a fingertip correction value calculation process. It is a flowchart which shows an example of the flow of the event monitoring process by the window system 400 of FIG.
  • FIG. 28 is a flowchart showing an example of part of the flow of determination processing for gestures 1 to 4 in step S102 of FIG. 27.
  • FIG. 28 is a flowchart showing another example of part of the determination process for gestures 1 to 4 in step S102 of FIG. It is a hierarchy figure of the computer system by the modification of embodiment of this invention.
  • Windows registered trademark
  • Microsoft Corporation is equipped with a window system that assigns a unique window to each of a plurality of applications operating in parallel and multiplexes screen outputs.
  • Each application program controls the window assigned to each application program using the function of the window system.
  • the user operates a pointing device such as a mouse, and operates a plurality of windows (multi-windows) displayed on the same screen via the window system. That is, the window system detects the operation of the window by the user based on the information of the pointing device operated by the user, and notifies the requested application. Upon receiving the notification, the application program controls the window assigned to itself.
  • a pointing device such as a mouse
  • a multi-window with a contact-type pointing device such as a mouse does not necessarily provide a comfortable operability for the user. This is because the user operation is limited in the contact type pointing device. For example, in the case of a mouse, only mouse movements and mouse button operations can be performed.
  • the embodiment of the present invention provides a computer system that can provide a user with comfortable operability in multi-window operation. It will also be described as appropriate that this computer system has functions as the first and second operation determination devices and the fingertip detection device.
  • the first operation determination device determines that a click operation has been performed with a gesture that is easy for the user.
  • the second operation determination device determines that a button operation is performed in a pseudo manner by a gesture that is easy for the user.
  • the fingertip detection device can detect the position of the fingertip with high accuracy from a low-resolution image obtained by photographing a human finger, and can reduce the storage capacity and increase the processing speed. .
  • FIG. 1 is a hierarchical diagram of a computer system 700 according to an embodiment of the present invention.
  • this computer system 700 is managed by an operating system 300.
  • the operating system 300 is software that provides an interface that abstracts hardware to the application program 100. Hardware abstraction is to provide a unified and simplified usage of hardware.
  • the operating system 300 performs process management and memory management, has a file system, and provides a graphical user interface (GUI), a communication function, and the like.
  • GUI graphical user interface
  • the operating system 300 includes a window system 400 as one of its functions.
  • the window system 400 assigns and controls a unique window to each of the plurality of application programs 100 operating in parallel on the operating system 300. These multiple windows (multi-windows) are displayed on the screen of the monitor 67 described later. In addition, the window system 400 controls a cursor displayed on the screen of the monitor 67.
  • the application program 100 is software that operates on the operating system 300 and directly has a function of performing a task that the user of the computer system 700 wants to execute on the computer system 700.
  • API 200 is an interface for calling various functions of the operating system from each application program 100.
  • the API 200 can also be defined as a function of the operating system 300 that can be called from the application program 100. Note that the API is sometimes called a system call.
  • each application program 100 can use various functions of the operating system 300 via the API 200.
  • each application program 100 can use the window system 400 via the API 200.
  • the motion sensor 600 as a pointing device is controlled by the device driver 500.
  • the motion sensor 600 includes an image sensor 5 described later.
  • the image sensor 5 captures a user's hand, analyzes the image, and outputs the analysis result to the device driver 500.
  • the device driver 500 operates in the environment of the operating system 300, and passes the analysis result received from the motion sensor 600 to the operating system 300.
  • the operating system 300 can provide various functions based on the analysis result of the motion sensor 600 to each application program 100 via the API 200.
  • each application program 100 can use the function of the window system 400 based on the analysis result of the motion sensor 600 via the API 200.
  • FIG. 2A is a diagram showing an electrical configuration of the computer system 700 according to the embodiment of the present invention.
  • the computer system 700 includes a computer 50, a monitor 67, a speaker 69, and a keyboard 71.
  • the computer 50 includes a CPU (central processing unit) 51, a main memory 53, a chip set 55, a GPU (graphics processing unit) 57, an SPU (sound processing unit) 59, an HDD (hard disk drive) 61, a drive 63, and a communication unit. 65, and a motion sensor 600.
  • the CPU 51 executes various computer programs by executing computer programs stored in the HDD 61.
  • the main memory 53 is a high-speed memory that is directly read / written by the CPU 51.
  • the GPU 57 executes graphics processing and gives a video signal to the monitor 67.
  • the monitor 67 displays an image according to the given video signal.
  • the SPU 59 executes sound processing and gives an audio signal to the speaker 69.
  • the speaker 69 outputs sound according to the given audio signal.
  • the HDD 61 is an auxiliary storage device for storing computer programs and data.
  • the drive 63 is a device that reads and writes data from the removable recording medium 75.
  • the communication unit 65 includes a LAN card and a USB controller (not shown) that controls connection to the network, and controls communication.
  • Functional units such as the CPU 51, GPU 57, SPU 59, HDD 61, drive 63, communication unit 65, keyboard 71, and motion sensor 600 are connected to the chipset 55.
  • the chip set 55 manages data exchange between functional units connected to the chip set 55.
  • the HDD 61 stores the application program 100, API 200, operating system 300, window system 400, and device driver 500 of FIG.
  • the CPU 51 loads these programs into the main memory 53 and executes them. Then, the CPU 51 outputs the execution result to the monitor 67 or the speaker 69 or stores it in the HDD 61 or the main memory 53.
  • the application program 100, API 200, operating system 300, window system 400, and device driver 500 of FIG. 1 may be stored in the HDD 61 from the removable recording medium 75, or may be stored in the HDD 61 via a network. Also good.
  • the removable recording medium 75 is, for example, an optical disc such as a CD (including CD-ROM, Video-CD) or DVD (including DVD-Video, DVD-ROM, DVD-RAM), a memory card memory equipped with a semiconductor memory.
  • FIG. 2 (b) is a diagram showing an electrical configuration of the motion sensor 600 of FIG. 2 (a).
  • the motion sensor 600 includes an MCU (Micro Controller Unit) 3, an image sensor 5, and an infrared light emitting diode 9.
  • the MCU 3 includes a memory 7.
  • the image sensor 5 can be used in either color or gray scale, and any number of pixels can be used. In the present embodiment, the image sensor 5 is gray scale and has a relatively low resolution of 64 ⁇ 64 pixels. Is used.
  • the infrared light emitting diode 9 emits infrared light.
  • As the image sensor 5, a CMOS image sensor, a CCD image sensor, or the like can be employed.
  • the memory 7 of the MCU 3 is a semiconductor memory such as a RAM, a ROM, and a flash memory, and is used as a program storage area, a data storage area, a work area, a temporary storage area, and the like.
  • the MCU 3 executes various processes shown in the flowcharts described later in accordance with programs stored in the memory 7.
  • an optical disc such as a CD (including CD-ROM, Video-CD) and a DVD (including DVD-Video, DVD-ROM, DVD-RAM), a semiconductor
  • a memory card, a memory cartridge, a USB memory, a hard disk, a magneto-optical disk, a magnetic tape, a flexible disk, and the like equipped with a memory can be connected to the MCU 3.
  • programs and data can be stored in these.
  • the MCU 3 controls the image sensor 5 according to the program stored in the memory 7.
  • the image sensor 5 drives the infrared light-emitting diode 9 intermittently under the control of the MCU 3, and intermittently irradiates infrared light onto a subject (in this embodiment, a human hand) moved in a three-dimensional space. To do.
  • the image sensor 5 performs a photographing process both when the infrared light is irradiated and when not irradiated, generates a difference image between the infrared light irradiation image and the non-irradiation image, and outputs the difference image to the MCU 3.
  • noise such as background can be easily removed, and only the subject image can be extracted easily.
  • the MCU 3 analyzes the difference image received from the image sensor 5 according to the program stored in the memory 7 to detect the user's hand, and the shape, area, barycentric position, fingertip position, and pseudo Information on the presence / absence of a button operation is given to the CPU 51 via the chipset 55. Then, the CPU 51 executes various processes based on hand information that is an analysis result of the motion sensor 600.
  • FIG. 3 (a) and 3 (b) are explanatory diagrams of the pseudo button operation according to the embodiment of the present invention.
  • the fingertip a is the fingertip of the index finger
  • the fingertip b is the fingertip of the thumb.
  • the CPU 51 receives the position of the fingertip a from the motion sensor 600 and displays a cursor at a corresponding position on the screen of the monitor 67.
  • the motion sensor 600 detects that the fingertip a and the fingertip b are present in the captured image and has transitioned to a state in which only the fingertip a is present in the captured image, the motion sensor 600, for example, From the state where the index finger is shown), one finger (thumb) which is not related to the cursor position is folded and only one other finger (index finger) which controls the cursor position is shown.
  • the CPU 51 determines that the button operation has been performed in a pseudo manner, and notifies the CPU 51 that the button operation has been performed in a pseudo manner. Then, CPU51 performs the process according to button operation.
  • the CPU 51 receives the position of the fingertip a from the motion sensor 600 and displays a cursor at a corresponding position on the screen of the monitor 67.
  • the motion sensor 600 detects that the state where only the fingertip a is present in the captured image is changed to a state where the fingertip a and the fingertip b are present in the captured image, the motion sensor 600 does not relate to the position of the cursor, for example. Transition from a state where one finger (thumb) is bent and only one other finger (forefinger) that controls the cursor position is shown to two fingers (thumb and forefinger).
  • the CPU 51 determines that the button operation has been performed in a pseudo manner, and notifies the CPU 51 that the button operation has been performed in a pseudo manner. Then, CPU51 performs the process according to button operation.
  • the CPU 51 receives the position of the midpoint between the position of the fingertip a and the position of the fingertip b from the motion sensor 600 and displays a cursor at a corresponding position on the screen of the monitor 67.
  • the motion sensor 600 calculates the distance between the fingertip a and the fingertip b and detects that the distance is equal to or less than a certain value, that is, the fingertip a and the fingertip b approach each other. Is less than a certain value, it is determined that the user has performed a button operation in a pseudo manner, and the CPU 51 is notified that the button operation has been performed in a pseudo manner. Then, CPU51 performs the process according to button operation.
  • the button operation (a state in which the button is pressed) is performed when it is determined that the button operation is performed in a pseudo manner.
  • a click operation operation of pressing and releasing a button
  • the motion sensor 600 detects a transition from a state in which only the fingertip a is present in the captured image to a state in which the fingertip a and the fingertip b are present in the captured image, It is determined that an operation for releasing the button is performed, and the CPU 51 is notified that an operation for speaking the button is performed.
  • the motion sensor 600 detects that the state in which the fingertip a and the fingertip b exist in the captured image transitions to a state in which only the fingertip a exists in the captured image, It is determined that the operation for releasing the button is performed, and the CPU 51 is notified that the operation for releasing the button is performed.
  • the motion sensor 600 calculates the distance between the fingertip a and the fingertip b, and detects that the distance has exceeded a certain value again after the distance has become a certain value or less. Then, it is determined that the user has performed an operation of releasing the button in a pseudo manner, and notifies the CPU 51 that the operation of releasing the button has been performed in a pseudo manner.
  • “pseudo button operation” is not an operation of an actual button of a device such as a pointing device, but information or an instruction equivalent to the operation of an actual button is given by a gesture in a three-dimensional space. Mean to give to the computer.
  • FIG. 4 is a flowchart showing an example of the flow of image analysis processing by the MCU 3 of FIG.
  • MCU3 binarizes the difference image which the image sensor 5 output in step S1.
  • the MCU 3 extracts the contour of the image of the subject (in this embodiment, a hand) from the binarized difference image.
  • the value J indicates the total number of pixels Pj on the contour line. Further, it is assumed that the contour line extraction process is executed counterclockwise.
  • a well-known algorithm can be used for extracting the contour line. For example, in a method using a mask made up of 3 ⁇ 3 small pixel regions, the mask is sequentially moved to extract the contour line, although the center of the mask is always kept on the contour line.
  • step S5 the MCU 3 calculates the argument ⁇ j of the vector Vj of each pixel Pj on the extracted contour line.
  • FIG. 16 is an explanatory diagram of the deviation angle ⁇ j detected in step S5 of FIG.
  • a vector Vj of the pixel Pj is defined as a vector from the pixel Pj toward the next pixel Pj + 1.
  • the deflection angle ⁇ j of the vector Vj of the pixel Pj is defined as an angle formed by the vector Vj with respect to the vector Vj ⁇ 1 of the pixel Pj ⁇ 1 immediately before the pixel Pj.
  • the sign of the counterclockwise deflection angle ⁇ j is positive, and the sign of the clockwise deflection angle ⁇ j is negative.
  • step S7 the MCU 3 detects the inflection point of the extracted contour line.
  • the inflection point is a point where the direction of the outline changes, and a convex point and a concave point are defined.
  • FIG. 17 is an explanatory diagram of the inflection point detected in step S7 of FIG.
  • inflection points I0 to I8 are given as points at which the direction of the extracted outline 21 changes.
  • Inflection points I0, I2, I4, I6 and I8 are convex points.
  • Inflection points I1, I3, I5 and I7 are concave points.
  • step S9 the MCU 3 determines the shape (goo, choki, par, one finger, indefinite) of the extracted contour line (contour image).
  • step S11 the MCU 3 determines whether or not a pseudo button operation has been performed.
  • step S13 the MCU 3 determines the result of step S1 (the occultation flag described later), the result of step S9 (the center of gravity coordinates of the contour image, the area and shape information (the flag SH described later), the corrected fingertip coordinates, , The midpoint coordinates of the two fingertips) and the result of step S11 (a pseudo button flag or a single click flag and a double click flag described later) are transmitted to the CPU 51.
  • the MCU 3 repeats steps S1 to S13 every time it receives a one-frame difference image from the image sensor 5.
  • FIG. 5 is a flowchart showing an example of the binarization process in step S1 of FIG.
  • MCU 3 assigns 0 to array PD [] [] and variables X, Y, and NA into which values after binarization of each pixel D of the difference image are assigned.
  • the MCU 3 reads the pixel data D of the difference image from the image sensor 5.
  • the resolution of the image sensor 5 is 64 ⁇ 64 pixels.
  • the upper left of the difference image from the image sensor 5 is the origin, the horizontal right direction is the positive X coordinate, and the vertical lower direction is the positive Y coordinate.
  • step S52 the MCU 3 compares the pixel data (luminance value) D with a predetermined threshold value THF.
  • THF threshold value
  • step S54 if the pixel data D is larger than the threshold value THF, the MCU 3 regards the pixel D as a part of the hand image and proceeds to step S56. Otherwise, regards the pixel D as the background. Proceed to step S60.
  • step S56 the MCU 3 assigns 1 to the array [X] [Y].
  • step S58 the MCU 3 increments the counter NA by one. That is, the counter NA indicates the number of arrays [X] [Y] into which 1 is substituted, that is, the number of pixels D that are regarded as a part of the hand image. In other words, the counter NA indicates the number of pixels D constituting the hand image.
  • step S60 the MCU 3 assigns 0 to the array [X] [Y].
  • step S62 the MCU 3 increments the variable X by one.
  • step S64 the MCU 3 determines whether or not the value of the variable X is 64, the process proceeds to step S66 if 64, otherwise the process returns to step S51.
  • step S66 the MCU 3 increments the variable Y by one.
  • step S68 the MCU 3 determines whether or not the value of the variable Y has become 64, the process proceeds to step S70 if it is 64, otherwise the process returns to step S51.
  • step S70 the MCU 3 determines whether or not the value of the counter NA (that is, the size of the hand image) is larger than a predetermined value Ar. If it is larger, the image sensor 5 is covered with the user's hand (occlusion). The process proceeds to step S72, otherwise the process proceeds to step S76. For example, since the total number of pixels is 4096, 3686, which is about 90% thereof, is set as the predetermined value Ar.
  • step S70 the MCU 3 increments the counter p by 1 in step S72.
  • the counter p indicates the number of consecutive positive determinations in step S70.
  • the counter p is set to 0 at the time of system initialization.
  • step S74 the MCU 3 determines whether or not the value of the counter p is larger than the predetermined value Ta. If it is larger, it means that the image sensor 5 is covered with the hand continuously for a predetermined time. Otherwise, go to step S80.
  • step S78 the MCU 3 turns on an occultation flag indicating that the image sensor 5 is covered with a hand continuously for a predetermined time. On the other hand, in step S80, the MCU 3 turns off the occult flag.
  • step S76 the MCU 3 assigns 0 to the counter p, and proceeds to step S80.
  • the MCU 3 sequentially binarizes each pixel D output from the image sensor 5 and assigns it to the array PD [] [].
  • the memory capacity can be reduced by sequentially binarizing the difference image (gray scale) without having the memory 7.
  • the MCU 3 can store the difference image (gray scale) output from the image sensor 5 in the memory 7 and then binarize the processed image, or can directly process it without binarizing.
  • FIG. 6 is a flowchart showing an example of the flow of the inflection point detection process in step S7 of FIG.
  • MCU 3 substitutes 0 for variables DA, ADA, j, and CF [].
  • step S23 the MCU 3 acquires from the memory 7 the deviation angle ⁇ j of the pixel Pj on the contour line detected in step S3 of FIG.
  • step S25 the MCU 3 adds the deviation angle ⁇ j to the current value of the variable DA and substitutes it for the variable DA.
  • step S27 the MCU 3 obtains the absolute value of the variable DA and assigns it to the variable ADA.
  • step S29 the MCU 3 determines whether or not the value of the variable ADA has become 135 degrees. If the value is 135 degrees, the MCU 3 determines that the direction of the contour has changed, regards the pixel Pj as an inflection point, and step S31. Otherwise, go to step S39.
  • step S31 the MCU 3 determines whether or not the sign of the variable DA is positive. If it is positive, the process proceeds to step S33, and if negative, the process proceeds to step S35.
  • step S33 the MCU 3 assigns 01 indicating that the inflection point is a convex point to the convex / concave flag CF [j].
  • step S35 the MCU 3 assigns 10 indicating that the inflection point is a concave point to the convex / concave flag CF [j].
  • step S37 the MCU 3 substitutes 0 for the variable DA.
  • step S39 the MCU 3 increments the variable j by one.
  • FIG. 7 is a flowchart showing an example of the flow of processing for determining the shape of the contour image in step S9 of FIG.
  • the MCU 3 calculates information related to the contour line.
  • the MCU 3 detects a pixel corresponding to the fingertip of the hand from the contour image.
  • the MCU 3 obtains a line segment 23 that connects two pixels located a certain number of pixels Np away from the convex point As, and calculates the length Lv of the perpendicular line 25 drawn from the convex point As to the line segment 23. When the length Lv exceeds the predetermined value CL, the MCU 3 sets the convex point As as a candidate for the fingertip.
  • the MCU 3 determines whether or not the concave point Bt exists on both sides or one side of the convex point As that is a fingertip candidate, and if it exists, regards the convex point As as the fingertip.
  • the MCU 3 calculates the tilt angle ⁇ v necessary for determining “par” and “goo”.
  • the inclination angle ⁇ v is an angle formed by a perpendicular line 25 drawn from the convex point As regarded as the fingertip to the line segment 23 with a line 27 parallel to the X axis of the difference image.
  • step S165 the MCU 3 determines whether or not the shape of the contour image is a “par” hand shape.
  • step S167 the MCU 3 determines whether or not the shape of the contour image is the shape of a hand that is “stiff”.
  • step S169 the MCU 3 determines whether or not the shape of the contour image is a “goo” hand shape.
  • step S171 the MCU 3 determines whether or not the shape of the contour image is the shape of a hand with one finger raised, and returns.
  • FIG. 8 is a flowchart showing an example of the processing flow for calculating the contour information in step S161 of FIG.
  • MCU 3 substitutes 0 for variables XG, YG, and j.
  • the MCU 3 substitutes the variable XG for the value obtained by adding the X coordinate XO [j] of the pixel Pj on the contour line to the current value of the variable XG.
  • the MCU 3 substitutes the variable XG for the value obtained by adding the Y coordinate YO [j] of the pixel Pj on the contour line to the current value of the variable YG.
  • the MCU 3 increments the variable j by one.
  • the MCU 3 determines whether or not the value of the variable j has become the value J. If the value has become the value J, the process proceeds to step S199. Otherwise, the process proceeds to step S193.
  • step S199 the MCU 3 assigns the value obtained by dividing the value of the variable XG by the value J to the variable Xg. Further, the MCU 3 substitutes the value of the variable YG divided by the value J for the variable Yg.
  • the coordinates (Xg, Yg) indicate the barycentric coordinates of the contour image.
  • step S201 the MCU 3 substitutes 0 for the variables j, LS, and L [].
  • step S203 the MCU 3 calculates a distance L [j] between the barycentric coordinates (Xg, Yg) and the coordinates (XO [j], YO [j]) of each pixel Pj on the contour line by the following equation. To do.
  • step S205 the MCU 3 substitutes the value obtained by adding the value of the variable L [j] to the current value of the variable LS for the variable LS.
  • step S207 the MCU 3 increments the variable j by one.
  • step S209 the MCU 3 determines whether or not the value of the variable j has become the value J. If the value has become the value J, the process proceeds to step S211. Otherwise, the process proceeds to step S203.
  • step S211 the MCU 3 calculates the average value AVL of the distance L [j] by dividing the value of the variable LS by the value J.
  • step S213 the MCU 3 counts the contour line and the pixels in the contour line, calculates the area of the contour image, and returns.
  • FIG. 9 is a flowchart showing an example of the processing flow for detecting the fingertip in step S163 of FIG.
  • MCU 3 substitutes 0 for variables j and FP [].
  • step S243 the MCU 3 determines whether or not the flag CF [j] is set to 01 indicating a convex point. If the determination is affirmative, the process proceeds to step S245. If the determination is negative, the process proceeds to step S249.
  • step S245 the MCU 3 determines whether or not there is a pixel in which 10 indicating the concave point is set in the flag CF [j] on both sides or one side of the pixel Pj that is the convex point. If the case pixel Pj is regarded as a fingertip candidate, the process proceeds to step S247, and if not, the process proceeds to step S249. In step S247, the MCU 3 sets 1 indicating that the pixel Pj is a fingertip candidate to the flag FP [j].
  • step S249 the MCU 3 increments the variable j by one.
  • step S251 the MCU 3 determines whether or not the value of the variable j has become the value J. When the value becomes the value J, the MCU 3 proceeds to step S253, otherwise proceeds to step S243.
  • step S253 the MCU 3 substitutes 0 for the variables j, q, TF [], ⁇ v [], XT, YT, Q, and ⁇ v.
  • step S255 the MCU 3 determines whether or not 1 indicating a fingertip candidate is set in the flag FP [j]. If the determination is affirmative, the process proceeds to step S257; otherwise, the process proceeds to step S271.
  • step S257 the MCU 3 calculates the length Lv of the perpendicular 25 drawn from the pixel Pj to the line segment 23 connecting the pixel Pj + Np and the pixel Pj ⁇ Np (see FIG. 17).
  • step S259 the MCU 3 determines whether or not the length Lv exceeds the predetermined value CL. If the length Lv exceeds, the MCU 3 regards the pixel Pj as a fingertip and proceeds to step S261. Otherwise, the process proceeds to step S271.
  • step S261 the MCU 3 sets 1 indicating that the pixel Pj is the fingertip to the fingertip flag TF [j].
  • step S263 the MCU 3 substitutes the X coordinate of the pixel Pj for the variable XT [q]. Further, the MCU 3 substitutes the Y coordinate of the pixel Pj for the variable YT [q].
  • the coordinates (XT [q], YT [q]) are the coordinates of the fingertip.
  • step S265 the MCU 3 calculates the inclination angle ⁇ v of the perpendicular 25 (see FIG. 17).
  • step S267 the MCU 3 substitutes the tilt angle ⁇ v for the variable ⁇ v [q].
  • the tilt angle ⁇ v [q] is the tilt angle of the finger corresponding to the fingertip indicated by the coordinates (XT [q], YT [q]).
  • step S269 the MCU 3 increments the variable q by one.
  • step S271 the MCU 3 increments the variable j by one.
  • step S273 the MCU 3 determines whether or not the value of the variable j has become the value J. If the value has become the value J, the process proceeds to step S275. Otherwise, the process proceeds to step S255.
  • step S275 the MCU 3 assigns the value of the variable q to the variable Q and returns.
  • the value of variable Q represents the number of detected fingertips.
  • FIG. 10 is a flowchart showing an example of a process flow for determining “par” in step S165 of FIG.
  • MCU 3 determines whether or not the value of variable Q (number of fingertips) is 3 or more, the process proceeds to step S303 if it is 3 or more, and otherwise the process returns.
  • the MCU 3 substitutes 0 for the variables q and m.
  • the MCU 3 calculates the absolute value of the difference between the array ⁇ v [q] and the array ⁇ v [q + 1], and substitutes it for the variable ⁇ d.
  • the variable ⁇ d represents the angle formed between adjacent fingers.
  • step S307 the MCU 3 determines whether or not the value of the variable ⁇ d is less than 100 degrees. If the determination is affirmative, the process proceeds to step S309. If the determination is negative, the process proceeds to step S311. In step S309, the MCU 3 increments the variable m by one. In step S311, the MCU 3 increments the variable q by one.
  • step S313 the MCU 3 determines whether or not the value of the variable q has become the value Q. If the value has become the value Q, the process proceeds to step S315. Otherwise, the process proceeds to step S305.
  • step S315 the MCU 3 determines whether the value of the variable m is 6 or less and 3 or more. If the determination is affirmative, the MCU 3 determines that the shape of the hand is “par” and proceeds to step S317. Return in case of judgment.
  • the value of the variable m is the number of occurrences of the case where the angle ⁇ d formed by the adjacent fingers is less than 100 degrees.
  • step S317 the MCU 3 sets the flag SH to 10h indicating “par”, and proceeds to step S11 in FIG.
  • FIG. 11 is a flowchart illustrating an example of a flow of processing for determining “pick” in step S167 of FIG. Referring to FIG. 11, in step S341, MCU 3 proceeds to step S343 if the value of variable Q (number of fingertips) is 2 or 3, and otherwise returns.
  • step S343 the MCU 3 substitutes 0 for the variables q, p, SH, XL, YL, XS, and YS.
  • step S345 the MCU 3 calculates a distance Lgt0 between the center-of-gravity coordinates (Xg, Yg) of the contour image and the fingertip coordinates (XT [q], YT [q]).
  • step S347 the MCU 3 determines whether or not the distance Lgt0 is equal to or greater than the average value AVL (see step S211 in FIG. 8) multiplied by 1.1, that is, the distance Lgt0 is 110% or more of the average value AVL. If the determination is affirmative, the process proceeds to step S349. If the determination is negative, the process proceeds to step S359.
  • step S349 the MCU 3 calculates a distance Lgt1 between the center-of-gravity coordinates (Xg, Yg) of the contour image and the coordinates of the fingertip (XT [q + 1], YT [q + 1]).
  • the fingertip of coordinates (XT [q + 1], YT [q + 1]) is the fingertip next to the fingertip of coordinates (XT [q], YT [q]).
  • step S351 the MCU 3 determines whether or not the distance Lgt1 is greater than or equal to the value AVL multiplied by 1.1, that is, determines whether or not the distance Lgt1 is 110% or more of the average value AVL. In the case of determination, the process proceeds to step S353, and in the case of negative determination, the process proceeds to step S359.
  • step S353 the MCU 3 calculates the absolute value of the difference between the array ⁇ v [q] and the array ⁇ v [q + 1] (that is, the angle formed between the adjacent fingers) and substitutes it in the variable ⁇ d.
  • step S355 the MCU 3 determines whether or not the value of the variable ⁇ d is less than 90 degrees. If the determination is affirmative, the process proceeds to step S357. If the determination is negative, the process proceeds to step S359. In step S357, the MCU 3 increments the variable p by one.
  • step S359 the MCU 3 increments the variable q by one.
  • step S361 the MCU 3 determines whether or not the value of the variable q has become the value Q. If the value has become the value Q, the process proceeds to step S363, otherwise the process proceeds to step S345.
  • step S363 the MCU 3 determines that the shape of the hand is “pick” when the value of the variable p is 1 or 2, proceeds to step S365, and returns otherwise.
  • step S365 the MCU 3 determines whether or not the value of the variable Q is 2. In the case of 2, that is, in the case where two fingers are detected, the process proceeds to step S369, otherwise the process proceeds to step S367.
  • step S367 the MCU 3 sets the flag SH to 21h indicating “pick”, and proceeds to step S11 in FIG. Note that the value 21h indicates that three fingers are detected, but one of them is noise that is not a finger.
  • step S369 the MCU 3 sets the flag SH to 20h indicating “pick”. Note that the value 20h indicates that two fingers are detected and does not include noise as in step S367.
  • step S371 the MCU 3 determines whether or not the distance Lgt0 is greater than the distance Lgt1, that is, determines which of the detected two fingers is longer. If the distance Ltg0 is large, the process proceeds to step S373. Otherwise, the process proceeds to step S375.
  • step S373 the MCU 3 substitutes the coordinates XT [0] and YT [0] for the coordinates XL and YL, respectively. Also, the MCU 3 substitutes coordinates XT [1] and YT [1] for the coordinates XS and YS, respectively. On the other hand, in step S375, the MCU 3 substitutes coordinates XT [1] and YT [1] for the coordinates XL and YL, respectively. Also, the MCU 3 substitutes coordinates XT [0] and YT [0] for the coordinates XS and YS, respectively.
  • the coordinates (XL, YL) are the coordinates of the fingertip of the long finger
  • the coordinates (XS, YS) are the coordinates of the fingertip of the short finger.
  • step S377 the MCU 3 calculates a correction value for each of the coordinates (XL, YL) and the coordinates (XS, YS).
  • step S379 the MCU 3 adds the correction value to the coordinates (XL, YL) to obtain the corrected coordinates.
  • the MCU 3 adds the correction value to the coordinates (XS, YS) to obtain the corrected coordinates.
  • step S381 the MCU 3 calculates the midpoint coordinates of the corrected coordinates of the coordinates (XL, YL) and the corrected coordinates of the coordinates (XS, YS). Then, the MCU 3 proceeds to step S11 in FIG.
  • FIG. 12 is a flowchart showing an example of the flow of processing for determining “go” in step S169 of FIG.
  • the MCU 3 determines whether or not the value of the variable Q (number of fingertips) is 2 or more, and proceeds to step S393 in the case of a positive determination, and in the case of a negative determination. Return.
  • step S393 the MCU 3 substitutes 0 for the variable j.
  • step S395 the MCU 3 determines that the distance L [j] (see step S203 in FIG. 8) is equal to or greater than the average value AVL (see step S211 in FIG. 8) multiplied by 0.6, and the value AVL. Whether or not the distance L [j] is 60% or more of the average value AVL and 140% or less of the average value AVL. If the determination is affirmative, the process proceeds to step S397. If the determination is negative, the process returns.
  • step S397 the MCU 3 increments the variable j by one.
  • step S399 the MCU 3 determines whether or not the value of the variable j has become the value J. If the value J has reached the value J, the hand shape is determined to be “Goo”, and the process proceeds to step S401. Otherwise, the process proceeds to step S395. Proceed to In step S401, the MCU 3 sets the flag SH to 30h indicating “Goo”, and proceeds to step S11 in FIG.
  • FIG. 13 is a flowchart illustrating an example of a process flow for determining one finger of step S171 in FIG.
  • MCU 3 determines whether or not the value of variable Q (number of fingertips) is 1 or less, and proceeds to step S423 in the case of a positive determination, and in the case of a negative determination.
  • the process proceeds to step S447.
  • the MCU 3 sets the flag SH to 00h indicating “indefinite” and returns.
  • step S423 the MCU 3 substitutes 0 for the variables j, s, Dc [], Dca, and Dcm.
  • step S425 the MCU 3 determines whether or not 1 indicating a fingertip candidate (that is, a convex point) is set in the flag FP [j]. If the determination is affirmative, the process proceeds to step S427, otherwise, the step S433. Proceed to
  • step S427 the MCU 3 calculates the distance D between the barycentric coordinates (Xg, Yg) and the convex pixel Pj.
  • step S429 the MCU 3 substitutes the distance D into the array Dc [s].
  • step S431 the MCU 3 increments the variable s by one.
  • step S433 the MCU 3 increments the variable j by one.
  • step S435 the MCU 3 determines whether or not the value of the variable j has become the value J. If the value has become the value J, the process proceeds to step S437. Otherwise, the process proceeds to step S425.
  • step S437 the average value Dca of the distance Dc [s] is calculated. That is, the average value Dca is the average value of the distances from the center of gravity to each convex point.
  • step S439 the maximum value Dcm is detected from the distance Dc [s]. That is, the maximum value Dcm is the maximum of the distances from the center of gravity to each convex point.
  • step S441 the MCU 3 determines whether or not the maximum value Dcm is equal to or greater than a value obtained by multiplying the average value Dca by 1.3. The process proceeds to S443, and in the case of a negative determination, the process proceeds to Step S447.
  • step S443 the MCU 3 sets the flag SH to 40h indicating “a state where one finger is standing”.
  • step S445 the MCU 3 substitutes the X coordinate of the pixel Pj of the convex point corresponding to the maximum value Dcm for the coordinate XH. Further, the MCU 3 substitutes the Y coordinate of the pixel Pj of the convex point corresponding to the maximum value Dcm for the coordinate YH.
  • the coordinates (XH, YH) are the coordinates of one fingertip in a standing state.
  • step S447 the MCU 3 calculates a correction value for the coordinates (XH, YH).
  • step S447 the MCU 3 adds the correction value to the coordinates (XH, YH) to obtain the corrected coordinates. Then, the MCU 3 returns.
  • the coordinates (XL, YL) and (XS, YS) of the pixel indicating the fingertip obtained in steps S373 and S375 of FIG. 11, and the coordinates of the pixel indicating the fingertip obtained in step S445 of FIG. A method of recalculating XH, YH) with high accuracy exceeding the resolution of the image sensor 5 will be described.
  • the coordinates of the pixel P4 indicating the fingertip before recalculation are expressed as coordinates (Xb, Yb).
  • the correction value (Xc, Yc) of the coordinates (Xb, Yb) is obtained as follows.
  • first to fourth examples will be given as correction value calculation methods.
  • FIG. 14A is a flowchart showing a flow of a first example of the fingertip correction value calculation process in step S377 in FIG. 11 and step S447 in FIG.
  • FIG. 14B is a flowchart showing the flow of the second example of the fingertip correction value calculation process in step S377 in FIG. 11 and step S447 in FIG.
  • FIG. 14C is a flowchart showing the flow of the third example of the fingertip correction value calculation process in step S377 in FIG. 11 and step S447 in FIG.
  • FIG. 14D is a flowchart showing the flow of a fourth example of the fingertip correction value calculation process in step S377 in FIG. 11 and step S447 in FIG.
  • FIG. 18 (a) is an explanatory diagram of the fingertip correction value calculation process of FIGS. 14 (a) and 14 (c).
  • FIG. 18B is an explanatory diagram of the fingertip correction value calculation process of FIGS. 14B and 14D.
  • the coordinates (Xb, Yb) of the fingertip pixel P4 before correction (before recalculation) are set as the origin (0, 0).
  • the horizontal right direction is positive on the x axis
  • the vertical downward direction is positive on the y axis.
  • eight pixels P0, P1, P2, P5, P6, P7 and P8 surrounding the fingertip pixel P4 before correction are used.
  • the pixels P0 to P8 have pixel values (that is, luminance values) p0 to p8, respectively.
  • the coordinates of the pixels P1, P7, P3, and P5 on the top, bottom, left, and right of the fingertip pixel P4 at the origin (0, 0) are coordinates (0 , -1), (0, 1), (-1, 0), and (1, 0).
  • the coordinates of the upper left pixel P0, upper right pixel P2, lower left pixel P6, and lower right pixel P8 of the fingertip pixel P4 are coordinates ( ⁇ 2 / 2, ⁇ 2 / 2), ( ⁇ 2 / 2, ⁇ ⁇ 2 / 2), ( ⁇ 2 / 2, ⁇ 2 / 2) and ( ⁇ 2 / 2, / 2).
  • the coordinates of the surrounding pixels P0, P1, P2, P5, P6, P7 and P8 of the fingertip pixel P4 at the origin (0, 0) are , Coordinates (-1, -1), (0, -1), (1, -1), (-1, 0), (1, 0), (-1, 1), (0, 1 ) And (1,1).
  • the MCU 3 calculates the correction value Xc of the X coordinate Xb and the correction value Yc of the Y coordinate Yb by the following equations.
  • the value Cs is a constant.
  • the constant Cs is a value greater than 1.
  • the X coordinate Xf and Y coordinate Yf of the fingertip after correction are as follows.
  • the MCU 3 calculates the correction value Xc of the X coordinate Xb and the correction value Yc of the Y coordinate Yb by the following equations.
  • the value Cs is a constant.
  • the X coordinate Xf and Y coordinate Yf of the fingertip after correction are as follows.
  • the MCU 3 calculates the correction value Xc of the X coordinate Xb and the correction value Yc of the Y coordinate Yb by the following equations.
  • the value pmax indicates the maximum value among the pixel values p0 to p8.
  • the X coordinate Xf and Y coordinate Yf of the fingertip after correction are as follows.
  • the MCU 3 calculates the correction value Xc of the X coordinate Xb and the correction value Yc of the Y coordinate Yb by the following equations.
  • the value pmax indicates the maximum value among the pixel values p0 to p8.
  • the X coordinate Xf and Y coordinate Yf of the fingertip after correction are as follows.
  • the MCU 3 sets the coordinates (XL, YL) and (XS, YS) as the coordinates (Xb, Yb) of the fingertip P4, and sets the correction values. calculate.
  • the correction value is calculated using the coordinates (XH, YH) as the coordinates (Xb, Yb) of the fingertip P4.
  • the coordinate Xb is an integer value because it is obtained in units of pixels. Therefore, by adding the correction value Xc to the coordinate Xb, a coordinate value with decimal point precision can be obtained. These are also true for the Y coordinate.
  • the X coordinate Xb can be corrected to the larger pixel value (luminance value) (depending on the pixel value). Weight).
  • the Y coordinate is also true for the Y coordinate. That is, by obtaining the inflection point from the declination angle ⁇ j, the pixel corresponding to the fingertip is specified from the pixels on the contour of the hand (steps S373 and S375 in FIG. 11 and step S445 in FIG. 13), and the pixel value
  • the coordinates of the fingertip are corrected at a position having a larger pixel value around the pixel specified on the contour line. This is because it is possible to more appropriately specify the fingertip by regarding the position of the tip portion of the image of the finger reflected in the image and having a larger pixel value (luminance value) as the fingertip.
  • the sum D is divided by the maximum value pmax among the pixel values p0 to p8. That is, the divisor is not a fixed value but a variable value. This is because the distance from the image sensor 5 to the hand is not constant. That is, when the distance from the image sensor 5 to the hand is short, the finger appears large in the image, while when the distance from the image sensor 5 to the hand is long, the finger appears small in the image, the correction value This is because Xc is set to an appropriate value according to the distance from the image sensor 5 to the hand. The same applies to the correction value Yc.
  • the divisor when the divisor is a fixed value, if the fixed value is too small, it may be a relatively reasonable value if the distance from the image sensor 5 to the hand is long, but if it is close, the correction value is large. It becomes too much.
  • the divisor when the divisor is a fixed value, if the fixed value is too large, it may be a relatively reasonable value when the distance from the image sensor 5 to the hand is short, but if it is far, it is corrected. The value becomes too small.
  • the pixel value luminance value
  • the environment lighting, outside light, etc.
  • the finger color This is because the contour, the shape of the surface, and the like vary from person to person.
  • an actual human fingertip 30 generally has an arc shape with a certain point being a vertex (referred to as “real vertex”) 32 in plan view.
  • real vertex a vertex
  • the detected fingertip is the actual vertex 32, the left point 34 of the actual vertex 32, or the right point 36.
  • the correction value cannot exceed the range of 9 ⁇ 9 pixels centered on the pixel P4 in FIG.
  • the sum E the same applies to the sum E. Therefore, for example, the corrected position of the real vertex 32 in FIG. 19 is the point 38, the corrected position of the point 34 is the point 40, and the corrected position of the point 36 is the point 42.
  • the corrected fingertip position is different in these three points. If a different part is recognized as a fingertip to detect the same fingertip, the cursor placed at the detected fingertip position is not stable.
  • the sums D and E are calculated with the maximum value pmax in order to make the corrected position as constant as possible, or to keep the difference in the fingertip position in the smallest possible range.
  • the correction value exceeds the range of 9 ⁇ 9 pixels, and the corrected position is gathered near the point 44 in FIG. 19, that is, near the center of the belly of the finger tip 30.
  • the weighting targets of the pixels P0, P2, P6, and P8 are coordinates ( ⁇ 2 / 2, ⁇ 2 / 2), ( ⁇ 2 / 2, ⁇ , respectively. 2/2), ( ⁇ 2 / 2, ⁇ 2 / 2) and ( ⁇ 2 / 2, ⁇ 2 / 2). This is due to the following reason.
  • a / C and B / C are multiplied by a constant Cs. This is the same as the reason that the divisor is not set to the value C and the weighted average is not taken in the fourth example.
  • the correction value is multiplied by a constant Cs in order to make the corrected position as constant as possible, or to keep the difference in the fingertip position in the smallest possible range.
  • the range of 9 ⁇ 9 pixels is exceeded, and the corrected positions are gathered at point 44 in FIG.
  • a / C and B / C can also be used as correction values without multiplying by the constant Cs.
  • the constant Cs is determined by experiments and trial and error.
  • the constant Cs can also be dynamically changed according to the detected finger width.
  • the constant Cs is determined by calculating the width of the finger from the image and multiplying the width by a predetermined number (decimal value).
  • This predetermined number is determined by experiments and trial and error. For example, this predetermined number is 2/3. Note that, for example, a distance between left and right pixels that are a fixed number of pixels away from each other on the left and right of the fingertip pixel before correction is obtained and used as the finger width.
  • the reason why the weighted average is obtained by dividing the sums A and B by the value C is to obtain correction values Xc and Yc with precision having a decimal point.
  • the coordinate Xb is an integer value because it is obtained in units of pixels. Therefore, by adding the correction value Xc to the coordinate Xb, a coordinate value with decimal point precision can be obtained. These are also true for the Y coordinate.
  • the reason for performing weighting by the pixel value is the same as in the fourth example.
  • the reason for taking the weighted average by dividing the sums A and B by the maximum value pmax is to obtain precision correction values Xc and Yc having decimal points.
  • the coordinate Xb is an integer value because it is obtained in units of pixels. Therefore, by adding the correction value Xc to the coordinate Xb, a coordinate value with decimal point precision can be obtained. These are also true for the Y coordinate.
  • the weighting targets of the pixels P0, P2, P6, and P8 are coordinates ( ⁇ 2 / 2, ⁇ 2 / 2), ( ⁇ 2 / 2, ⁇ 2 / 2), and ( ⁇ 2), respectively.
  • / 2, ⁇ 2 / 2) and ( ⁇ 2 / 2, ⁇ 2 / 2) are the same as in the first example.
  • the reason why the pixel value is weighted, the reason why the divisor is a variable value, and the reason why the weighted average is not obtained by dividing by the maximum value pmax are the same as in the fourth example.
  • the MCU 3 sequentially obtains the pixel values p0 to p8 from the image sensor 5 and substitutes them into the calculation formula.
  • the correction value (Xc, Yc) is calculated.
  • the image sensor 5 holds the difference image data for a certain period of time (until the next shooting process) even after outputting the difference image for binarization by the MCU 3, so that the fingertip correction value calculation process Then, necessary pixels can be acquired therefrom.
  • 3 ⁇ 3 pixels (grayscale) are not temporarily stored in the memory 7, but output pixels from the image sensor 5 are sequentially processed, thereby reducing the memory capacity.
  • the difference image output from the image sensor 5 can be stored and processed in the memory 7 as it is, or 3 ⁇ 3 pixels (grayscale) can be once stored in the memory 7 and processed.
  • FIG. 15A is a flowchart showing the flow of the first example of the pseudo button operation determination process in step S11 of FIG. 4 (corresponding to the first example of FIG. 3B).
  • step S621 the MCU 3 turns off a pseudo button flag indicating whether or not a pseudo button operation is performed.
  • step S623 the MCU 3 determines whether or not 40h is set in the current flag SH indicating the shape of the hand, and if 40h is set (that is, the state of “one finger”), the step Proceed to S627, otherwise return.
  • step S627 the MCU 3 determines whether or not 20h is set in the previous flag SH indicating the shape of the hand, and when 20h is set (that is, in the “shrink” state), the process proceeds to step S629. Otherwise, return.
  • step S629 the MCU 3 turns on the pseudo button flag to indicate that the pseudo button operation has been performed.
  • FIG. 15B is a flowchart showing the flow of the second example of the pseudo button operation determination process in step S11 of FIG. 4 (corresponding to the second example of FIG. 3B).
  • step S601 the MCU 3 turns off the pseudo button flag indicating the presence / absence of a pseudo button operation.
  • step S603 the MCU 3 determines whether or not 20h is set in the current flag SH indicating the shape of the hand. If 20h is set (that is, the state of “shrink”), the process proceeds to step S607. Proceed, otherwise return.
  • step S607 the MCU 3 determines whether or not 40h is set in the previous flag SH indicating the shape of the hand. If 40h is set (that is, the state of “one finger”), step S609 is performed. Proceed to, otherwise return. In step S609, the MCU 3 turns on the pseudo button flag to indicate that a pseudo button operation has been performed.
  • FIG. 15C is a flowchart showing the flow of the third example of the pseudo button operation determination process in step S11 of FIG. 4 (corresponding to the third example of FIG. 3B).
  • step S641 the MCU 3 turns off the pseudo button flag indicating whether or not a pseudo button operation has been performed.
  • step S643 the MCU 3 determines whether or not 20h is set in the current flag SH indicating the shape of the hand. If 20h is set (that is, the state of “shrink”), the process proceeds to step S645. Proceed, otherwise return.
  • step S645 the MCU 3 calculates a distance DC between the coordinate of one fingertip after correction and the coordinate of the other fingertip after correction.
  • step S647 the MCU 3 determines whether or not the distance DC is smaller than the certain value CC. If the distance DC is smaller, the MCU 3 determines that one fingertip has approached the other fingertip, and proceeds to step S649. Otherwise, the MCU 3 returns.
  • step S649 the MCU 3 turns on the pseudo button flag to indicate that the pseudo button operation has been performed.
  • the current flag SH is the one frame of image data received from the image sensor 5 this time. It means the flag set based on the above.
  • the previous flag SH means a flag set based on one frame of image data received from the image sensor 5 last time.
  • a click operation (an operation for pressing and releasing a button) is performed when it is determined that a pseudo button operation has been performed (that is, the pseudo button flag is turned on).
  • 4 shows an example of processing when it is assumed that has been performed.
  • FIG. 22A is a flowchart showing the flow of the fourth example of the pseudo button operation determination process in step S11 of FIG. 4 (corresponding to the first example of FIG. 3B).
  • step S701 the MCU 3 determines whether or not a pseudo button flag indicating whether or not a pseudo button operation is performed is on. If it is on, the MCU 3 proceeds to step S709, and if it is off. The process proceeds to step S703. Note that the pseudo button flag is set to off at the time of system initialization.
  • step S703 the MCU 3 determines whether or not the current flag SH indicating the shape of the hand is set to 40h, and if 40h is set (that is, the state of “one finger”), the step Proceed to S705, otherwise return.
  • step S705 the MCU 3 determines whether or not 20h is set in the previous flag SH indicating the shape of the hand. If 20h is set (that is, the state of “shrink”), the process proceeds to step S707. Otherwise, return. In step S707, the MCU 3 turns on the pseudo button flag to indicate that the button has been pseudo-pressed.
  • step S709 the MCU 3 determines whether or not 20h is set in the current flag SH, and when 20h is set (that is, in the “shock” state), the process proceeds to step S711, otherwise Assumes that the button press state is maintained and returns. In step S711, the MCU 3 turns off the pseudo button flag to indicate that the button has been released in a pseudo manner.
  • FIG. 22B is a flowchart showing the flow of the fifth example of the pseudo button operation determination process in step S11 of FIG. 4 (corresponding to the second example of FIG. 3B).
  • step S731 the MCU 3 determines whether or not a pseudo button flag indicating whether or not a pseudo button operation has been performed is on, the process proceeds to step S739 if it is on, and if it is off. The process proceeds to step S733. Note that the pseudo button flag is set to off at the time of system initialization.
  • step S733 the MCU 3 determines whether or not the current flag SH indicating the shape of the hand is set to 20h. If 20h is set (that is, the state of “shrink”), the process proceeds to step S735. Proceed, otherwise return.
  • step S735 the MCU 3 determines whether or not 40h is set in the previous flag SH indicating the shape of the hand. If 40h is set (that is, the state of “one finger”), step S737 is performed. Proceed to, otherwise return. In step S737, the MCU 3 turns on the pseudo button flag to indicate that the button has been pseudo-pressed.
  • step S739 the MCU 3 determines whether or not the current flag SH is set to 40h. If 40h is set (that is, “one finger” state), the process proceeds to step S741. Otherwise, the button press state is assumed to be maintained and the process returns. In step S741, the MCU 3 turns off the pseudo button flag to indicate that the button has been pseudo released.
  • FIG. 22 (c) is a flowchart showing the flow of the sixth example of the pseudo button operation determination process in step S11 of FIG. 4 (corresponding to the third example of FIG. 3 (b)).
  • step S761 the MCU 3 determines whether or not a pseudo button flag indicating the presence or absence of a pseudo button operation is on. If on, the process proceeds to step S771, and if off, The process proceeds to step S763. Note that the pseudo button flag is set to off at the time of system initialization.
  • step S763 the MCU 3 determines whether or not 20h is set in the current flag SH indicating the shape of the hand. If 20h is set (that is, the state of “shrink”), the process proceeds to step S765. Proceed, otherwise return.
  • step S765 the MCU 3 calculates a distance DC between the coordinate of one fingertip after correction and the coordinate of the other fingertip after correction.
  • step S767 the MCU 3 determines whether or not the distance DC is smaller than the certain value CC. If the distance DC is smaller, the MCU 3 determines that one fingertip has approached the other fingertip, and proceeds to step S769, and otherwise returns.
  • step S769 the MCU 3 turns on the pseudo button flag to indicate that the button has been pressed in a pseudo manner.
  • step S771 the MCU 3 determines whether or not 20h is set in the current flag SH. If 20h is set (that is, the state of “pick”), the process proceeds to step S773. Otherwise, the button press state is assumed to be maintained and the process returns.
  • step S773 the MCU 3 calculates the distance DC between the coordinate of one fingertip after correction and the coordinate of the other fingertip after correction.
  • step S775 the MCU 3 determines whether or not the distance DC is equal to or greater than a certain value CC. If it is equal to or greater than CC, the MCU 3 assumes that the button has been released in a pseudo manner, and proceeds to step S777. Otherwise, the button press state is maintained. It is assumed that it has been done and returns. In step S777, the MCU 3 turns off the pseudo button flag to indicate that the button has been pseudo released.
  • FIG. 23A is an explanatory diagram of a fourth example (single click) of the pseudo button operation according to the embodiment of the present invention. Referring to FIG. 23A, when a change in steps S2000 to S2004 is detected within a certain time TC, it is considered that a single click has been performed.
  • a rectangular range (for example, 3 pixels ⁇ 3 pixels) 52 around the latest fingertip 50 is set (step S2000). For example, when there are a predetermined number of fingertips 50 within a certain distance RD from the latest fingertip 50, it is determined that the fingertips 50 are substantially stationary.
  • the fingertip 50 disappears (exits) from the rectangular range 52, and the fingertip 50 does not exist in the rectangular range 52 (step S2002).
  • the fingertip 50 appears (enters) at 52 and the fingertip 50 is present in the rectangular area 52 (step S2004)
  • the total value of the pixel values (luminance values) in the rectangular range 52 is compared with a predetermined threshold, and if the total value exceeds the threshold, it is determined that the fingertip 50 exists in the rectangular range 52, while the total When the value is equal to or smaller than the threshold value, it is determined that the fingertip 50 does not exist in the rectangular range 52.
  • the user bends the third joint (joint of the base) of the index finger, folds the finger from the state where the index finger is extended, and returns to the original state (state where the index finger is extended). It is considered that a single click has been made when making the gesture of returning.
  • the states of the first and second joints are arbitrary.
  • the user bends the second joint of the index finger and folds the finger (the third joint is fixed) from the state in which the index finger is extended, and again the original state (state in which the index finger is extended) ), It is considered that a single click has been made.
  • the state of the first joint is arbitrary.
  • the joint closest to the fingertip is called the first joint
  • the next joint is called the second joint
  • the next joint is called the third joint.
  • FIG. 23B is an explanatory diagram of a fourth example (double click) of the pseudo button operation according to the embodiment of the present invention.
  • a change in steps S2100 to S2108 is detected within a predetermined time TC, it is considered that a double click has been performed.
  • the fixed time TC in this case is the same as the fixed time TC when determining a single click.
  • a rectangular range (for example, 3 pixels ⁇ 3 pixels) 52 around the latest fingertip 50 is set (step S2100).
  • the determination method of the state in which the fingertip 50 is substantially stationary is the same as in the case of single click.
  • the fingertip 50 disappears (exits) from the rectangular range 52, and the fingertip 50 does not exist in the rectangular range 52 (step S2102).
  • the fingertip 50 appears (enters) in 52, the fingertip 50 exists in the rectangular range 52 (step S2104), the fingertip 50 disappears (exits) from the rectangular range 52 again, and the fingertip 50 enters the rectangular range 52.
  • 50 is not present (step S2106), and when the fingertip 50 again appears (enters) in the rectangular area 52 and the fingertip 50 is present in the rectangular area 52 (step S2108), double Assume that a click has been made.
  • the determination of whether or not the fingertip 50 is present in the rectangular area 52 is the same as in the case of single click.
  • double-clicking is executed when the user performs the single-click gesture described above twice.
  • the double click is a single click performed twice, and therefore the folded fingertip returns to almost the same position both times. This point has also been verified by the present inventors. For this reason, it is possible to determine whether double-clicking has been performed stably and reliably, that is, with high reproducibility, by the method described with reference to FIG.
  • step S1200 MCU 3 sets a single click flag that is set to ON when it is determined that a single click has been performed, and a double click flag that is set to ON when it is determined that a double click has been performed. , Turn off.
  • step S1202 the MCU 3 determines whether or not the stay flag is on. If the stay flag is on, the process proceeds to step S1250 in FIG. 25. If the stay flag is off, the process proceeds to step S1204.
  • the stay flag is a flag that is set to ON when it is determined that the fingertip 50 is almost stationary, that is, when the rectangular range 52 in FIGS. 23A and 23B is set. Accordingly, the processing in steps S1204 to S1220 after the negative determination is made in step S1202 is processing for setting the rectangular range 52.
  • the processes in steps S1250 to S1284 after the affirmative determination is made in step S1202 are processes for determining the states of steps S2002, S2004, and S2102 to S2108 in FIGS. 23 (a) and 23 (b). .
  • step S1204 the MCU 3 sets 0 to the variable k.
  • step S1206 the MCU 3 calculates a distance DIS between the latest fingertip 50 and the past fingertip 50.
  • the distance DIS is calculated by the following equation.
  • step S449 of FIG. 13 the coordinates (Xf, Yf) of the corrected fingertip 50 are calculated.
  • the queue is composed of arrays Xf [0] to Xf [9] for substituting X coordinates Xf and arrays Yf [0] to Yf [9] for substituting Y coordinates Yf.
  • the latest coordinates (Xf, Yf) are always stored in the arrays Xf [0] and Yf [0].
  • step S1206 the latest fingertip 50 coordinates (Xf [0], Yf [0]) and (k + 1) past fingertip 50 coordinates (Xf [k + 1], Yf [k + 1])
  • the distance DIS between is calculated.
  • step S1208 the MCU 3 determines whether or not the distance DIS is smaller than the fixed distance RD. If the distance DIS is smaller, the process proceeds to step S1210. Otherwise, the MCU 3 determines that the fingertip 50 is not stationary. Proceed to In step S1210, the MCU 3 increments the variable k by one. In step S1212, the MCU 3 determines whether or not the value of the variable k has become 9, the process proceeds to step S1214 if it has reached 9, otherwise the process returns to step S1206.
  • step S1212 means that all the distances between the latest fingertip 50 and the past nine fingertips 50 are within a certain distance RD. That is, it means that the fingertip 50 is almost stationary. For this reason, in step S1214, the MCU 3 turns on the stay flag. On the other hand, if there is even one past fingertip 50 whose distance DIS is not within the fixed distance RD, it is determined that the fingertip 50 is not stationary. Therefore, in step S1220, the MCU 3 turns off the stay flag and returns.
  • step S1216 following step S1214, the MCU 3 sets a rectangular range 52 centered on the coordinates (Xf [0], Yf [0]) of the latest fingertip 50 (steps S2000 and S2000 in FIG. 23A). This corresponds to step S2100 in FIG.
  • step S1218 the MCU 3 sets the timer TM and returns. This timer TM is for measuring the above-mentioned fixed time TC (see FIGS. 23A and 23B). This fixed time TC is determined by experiments and trial and error.
  • step S1250 the MCU 3 determines whether or not the value of the timer TM has reached a certain time TC. If the certain time TC has been reached, the MCU 3 proceeds to step S1278 and does not reach the certain time. If yes, go to Step S1252.
  • step S1252 the MCU 3 determines whether or not the disappearance flag is on. If the flag is on, the process proceeds to step S1262. If the flag is off, the process proceeds to step S1254.
  • the disappearance flag is a flag that is turned on when the state in which the fingertip 50 is present in the rectangular range 52 is changed to a state in which the fingertip 50 does not exist.
  • step S1254 the MCU 3 determines whether or not the fingertip 50 is not present in the rectangular range 52, returns if it exists, and proceeds to step S1256 if it does not exist.
  • step S1256 the MCU 3 returns with the disappearance flag turned on (corresponding to step S2002 in FIG. 23A and steps S2102 and S2106 in FIG. 23B).
  • step S1262 the MCU 3 determines whether or not the fingertip 50 exists in the rectangular range 52, returns if not, and proceeds to step S1264 if it exists (FIG. 23 (a)). Step S2004 and steps S2104 and S2108 in FIG. 23B).
  • step S1264 the MCU 3 determines whether or not the temporary click flag is on. If the temporary click flag is on, the process proceeds to step S1272, and if it is off, the process proceeds to step S1266.
  • the temporary click flag is a flag that is turned on when the user's gesture satisfies a single click condition (steps S2000 to S2004 in FIG. 23A). However, since the double click includes a single click operation (steps S2100 to S2104 in FIG. 23B), there is a possibility that the double click is performed until a predetermined time TC elapses. For this reason, it is necessary to finally determine whether single-clicking or double-clicking after a certain time TC has elapsed. Therefore, when the single click condition is satisfied, the fact is held until the final decision by the temporary click flag.
  • step S1266 the MCU 3 turns on the temporary click flag because the single click condition is satisfied.
  • step S1268 the MCU 3 turns off the disappearance flag and returns. This is because an affirmative determination is made in step S1262.
  • step S1272 the MCU 3 turns on the double click flag. This is because the change in steps S2106 and S2108 of FIG. 23B is further detected in the state where the temporary click flag is on (positive determination in step S1264, positive determination in step S1252, and step S1262). Affirmative).
  • step S1274 the MCU 3 releases the timer TM.
  • step S1276 the MCU 3 turns off the stay flag, the disappearance flag, and the temporary click flag, and returns. Because double-clicking has been decided, this is the final decision. Note that turning off the stay flag corresponds to releasing the rectangular range 52, that is, resetting the click operation determination.
  • step S1278 the MCU 3 determines whether or not the temporary click flag is on. If the temporary click flag is on, the process proceeds to step S1280. If the temporary click flag is off, the MCU 3 proceeds to step S1282. In step S1280, the MCU 3 turns on the single click flag and proceeds to step S1282.
  • step S1282 the MCU 3 releases the timer TM.
  • step S1284 the MCU 3 turns off the stay flag, the disappearance flag, and the temporary click flag, and returns. Note that turning off the stay flag corresponds to releasing the rectangular range 52, that is, resetting the click operation determination.
  • FIG. 20 is a flowchart showing an example of the flow of event monitoring processing by the window system 400 of FIG.
  • window system 400 checks whether or not an event requested by first application program 100 has occurred, and if so, the process proceeds to step S802, and if it has not occurred The process returns to step S800.
  • the window system 400 notifies the first application program 100 of the occurrence of an event.
  • step S900 the first application program 100 checks whether or not an event occurrence notification has been received from the window system 400. If the notification has been received, the process proceeds to step S902. If not, the first application program 100 proceeds to step S900. Return. In step S902, the first application program 100 executes processing (including window control) according to the event that has occurred.
  • step S804 the window system 400 checks whether or not an event requested by the second application program 100 has occurred. If it has occurred, the window system 400 proceeds to step S806, and if it has not occurred, the window system 400 returns to step S804. In step S806, the window system 400 notifies the second application program 100 of the occurrence of the event.
  • step S1000 the second application program 100 checks whether or not an event occurrence notification has been received from the window system 400. If the notification has been received, the process proceeds to step S1002. If not, the second application program 100 proceeds to step S1000. Return. In step S1002, the second application program 100 executes processing (including window control) according to the event that has occurred.
  • an event occurs for each occurrence of gestures 1 to 13 shown in FIG.
  • the CPU 51 scrolls the screen displayed on the monitor 67 in the horizontal left direction that is the moving direction of the hand.
  • an event occurs when a predetermined hand shape (for example, “Goo”) is detected.
  • a predetermined hand shape for example, “Goo”
  • an event occurs when the hand area exceeds a certain value.
  • an event occurs when the movement trajectory of the hand or fingertip becomes a predetermined trajectory.
  • an event occurs when a certain angle of rotation of the hand occurs.
  • an event occurs when the speed of a hand exceeds a certain value.
  • an event occurs when the acceleration of the hand exceeds a certain value.
  • each application program 100 can execute processing (including window control) according to various events.
  • FIG. 21 is a flowchart showing an example of the flow of cursor control processing by the window system 400 of FIG.
  • window system 400 acquires the coordinates of the user's fingertip from device driver 500.
  • the window system 400 converts the received fingertip coordinates into screen coordinates corresponding to the monitor 67.
  • window system 400 displays a cursor on the coordinates of the fingertip converted to screen coordinates, and proceeds to step S1100.
  • FIG. 26 is an illustration of gestures that can be accepted by the window system 400 of FIG.
  • gesture 1 is an operation of swinging in the horizontal left direction after putting the hand “par”.
  • Gesture 2 is an operation of swinging in the horizontal right direction after putting the hand into a “par”.
  • the gesture 3 is an operation of swinging in the vertical upward direction after putting the hand into “par”.
  • the gesture 4 is an operation of swinging vertically downward after setting the hand to “par”.
  • Gesture 5 is an operation to change the hand from “Goo” to “Chee”.
  • the gesture 6 is an operation of changing the hand from “Goo” to “Par”.
  • the gesture 7 is an operation of changing the hand from “Choki” to “Goo”.
  • the gesture 8 is an operation of changing the hand from “Chi” to “Par”.
  • the gesture 9 is an operation for changing the hand from “par” to “goo”.
  • the gesture 10 is an operation of changing the hand from “par” to “choki”.
  • the gesture 11 is an operation of covering (covering) the image sensor 5 with the hand, that is, the camera.
  • the gesture 12 is an operation of drawing a circle by hand in a clockwise direction.
  • the gesture 13 is an operation of drawing a circle by hand counterclockwise.
  • the window system 400 can detect each of the gestures 1 to 13, recognize each of them as an event occurrence, and notify the requested application program 100.
  • the gestures 1 to 13 are assigned to various keys of the keyboard 71 (for example, tab key, left arrow key, right arrow key, up arrow key, down arrow key, space key, page up key, page down key, escape key, And a Windows (registered trademark) key or the like.
  • keys of the keyboard 71 for example, tab key, left arrow key, right arrow key, up arrow key, down arrow key, space key, page up key, page down key, escape key, And a Windows (registered trademark) key or the like.
  • each gesture 1 to 13 is moved to a shortcut key of the keyboard 71 (for example, Alt key + F4 key (closes the window), Alt key + Esc key (switch between a plurality of applications), Home key (jump to the top), End key ( Jump to end line), F1 key (calls help), Ctrl key + S key (overwrite save), Windows key + R key (execute by specifying a file name), Windows key + M key (minimize all windows), Also, it can be assigned to the Windows key + D key (return all windows to the original size).
  • a shortcut key of the keyboard 71 for example, Alt key + F4 key (closes the window), Alt key + Esc key (switch between a plurality of applications), Home key (jump to the top), End key ( Jump to end line), F1 key (calls help), Ctrl key + S key (overwrite save), Windows key + R key (execute by specifying a file name), Windows key + M key (minimize all windows), Also, it can
  • keys and shortcut keys prepared for the operating system 300 can be assigned to the gestures 1 to 13.
  • keys and shortcut keys prepared for each application program 100 can be assigned to gestures 1 to 13 for each application program 100. That is, the gestures 1 to 13 can be assigned to each application program 100, and the functions executed by the gestures 1 to 13 may be different for each application program 100.
  • the conversion table is a table in which gestures 1 to 13 are associated with keys or shortcut keys.
  • Each gesture 1 to 13 is assigned to various system calls or APIs (for example, browser activation, window maximization, window minimization, etc.) and used to call the corresponding system calls or APIs. You can also.
  • system calls or APIs for example, browser activation, window maximization, window minimization, etc.
  • gestures 1 to 13 can be assigned to various execution files or applications and used to execute the corresponding execution files or applications.
  • keys, shortcut keys, system calls or APIs, and execution files to be assigned to the respective gestures 1 to 13 may be fixedly set or registered (dynamically changed) by the user of the computer system 700. It can also be made possible.
  • FIG. 27 is a flowchart showing an example of the flow of gesture determination processing by the window system 400 of FIG. With reference to FIG. 27, in step S100, window system 400 initializes variables and the like (variables CP, TL, and reception flag described later) necessary for gesture determination processing.
  • variables and the like variables CP, TL, and reception flag described later
  • step S101 the window system 400 substitutes 00h (meaning indefinite) for the flag JF indicating the gesture detected in steps S102 to S105.
  • window system 400 determines whether any of gestures 1 to 4 has been executed. In this case, the window system 400 substitutes 10h for the flag JF when the gesture 1 is detected, substitutes 20h for the flag JF when the gesture 2 is detected, and detects the flag JF when the gesture 3 is detected. Is substituted for 30h, and when gesture 4 is detected, 40h is substituted for flag JF.
  • the window system 400 refers to the current flag SH and the previous flag SH (see FIGS. 10 to 12) and determines whether any of the gestures 5 to 10 has been executed.
  • the window system 400 substitutes 50h for the flag JF when the gesture 5 is detected, substitutes 60h for the flag JF when the gesture 6 is detected, and detects the flag JF when the gesture 7 is detected. Is substituted for 70h, and when gesture 8 is detected, 80h is substituted for flag JF.
  • gesture 9 90h is substituted for flag JF
  • A0h is assigned to flag JF. Is assigned.
  • step S104 the window system 400 refers to the occultation flag (see FIG. 5) and determines whether or not the gesture 11 has been executed. In this case, when the gesture 11 is detected, the window system 400 substitutes B0h for the flag JF.
  • step S105 the window system 400 calculates the movement trajectory of the hand based on the centroid coordinates (Xg, Yg) of the current and past hands, and sets C0h to the flag JF when it is determined that the gesture 12 has been executed.
  • D0h is assigned to the flag JF.
  • step S106 the window system 400 assigns the value of the flag JF to the gesture flag FF, and proceeds to step S101.
  • the window system 400 checks the presence of an event requested by the application program 100 by looking at the gesture flag FF every time the image sensor 5 outputs a difference image of one frame.
  • the window system 400 repeats steps S101 to S106 every time the image sensor 5 outputs a difference image of one frame.
  • processing in FIG. 27 may be performed by a program other than the window system 400.
  • FIG. 28 and FIG. 29 are flowcharts showing an example of the flow of determination processing of gestures 1 to 4 in step S102 of FIG.
  • window system 400 determines whether or not the acceptance flag is on. If off, the process proceeds to step S111. If on, the window system 400 proceeds to step S120 in FIG.
  • the acceptance flag is a flag that is turned on when the shape of the hand is “par” for a certain period of time.
  • step S111 the window system 400 acquires the flag SH.
  • step S112 the window system 400 determines whether or not the value of the flag SH is 10h (the hand shape is par), the process proceeds to step S113 if 10h, otherwise the process proceeds to step S116.
  • step S116 the window system 400 substitutes 0 for the counter CP.
  • the counter CP indicates the number of times that the state where the value of the flag SH is 10h (par state) has occurred continuously.
  • step S113 the window system 400 increments the counter CP by one.
  • step S114 window system 400 determines whether or not the value of counter CP is greater than predetermined value PT, the process proceeds to step S115 if it is greater, otherwise the process proceeds to step S117.
  • step S115 the window system 400 turns on the acceptance flag.
  • step S117 the window system 400 turns off the acceptance flag.
  • window system 400 increments counter TL by one.
  • the counter TL indicates an elapsed time since the reception flag is turned on.
  • the window system 400 determines whether or not the value of the counter TL is greater than the predetermined value LL, the process proceeds to step S124 if it is greater, otherwise the process proceeds to step S128.
  • the window system 400 turns off the acceptance flag.
  • window system 400 assigns 0 to counter TL and returns.
  • step S1208 the window system 400 calculates the velocity Vx in the X direction of the center of gravity (Xg, Yg) of the hand.
  • step S130 the window system 400 determines whether or not the speed Vx is smaller than the predetermined value NS. If the speed Vx is small, the movement in the X direction is regarded as noise (not intended by the user, small hand shake, etc.), and the process proceeds to step S142. Otherwise, the process proceeds to step S132.
  • step S132 the window system 400 calculates an average value VxA of the velocities Vx in the predetermined number of frames fn. In addition, the frame in this case shows the period when the image sensor 5 outputs a difference image.
  • step S134 the window system 400 determines whether or not the average value VxA is larger than the predetermined value THV. If larger, the process proceeds to step S136. Otherwise, the movement in the X direction is regarded as noise (that is, the user does not intend). It is regarded as a movement) and proceeds to step S142.
  • step S134 a relatively large movement that is not intended by the user can be eliminated as noise. That is, when a small movement continues after a large movement, it is more appropriate to judge such a movement as noise. In such a case, since the average value VxA is small, such a movement is excluded as noise. it can.
  • step S136 the window system 400 determines the direction of the speed Vx, and proceeds to step S138 when facing the horizontal left direction, and proceeds to step S140 when facing the horizontal right direction.
  • step S138 the window system 400 assigns 10h indicating the gesture 1 to the flag JF, and then returns.
  • step S140 the window system 400 assigns 20h indicating the gesture 2 to the flag JF and returns.
  • step S142 the window system 400 calculates the velocity Vy in the Y direction of the center of gravity (Xg, Yg) of the hand.
  • step S144 the window system 400 determines whether or not the speed Vy is smaller than the predetermined value NS. If the speed Vy is smaller, the movement in the Y direction is regarded as noise (not intended by the user, a small hand shake, etc.), and the process returns. Otherwise, the process proceeds to step S146.
  • step S146 the window system 400 calculates an average value VyA of the speed Vy in the predetermined number of frames fn. In addition, the frame in this case shows the period when the image sensor 5 outputs a difference image.
  • step S148 the window system 400 determines whether or not the average value VyA is larger than the predetermined value THV, and if it is larger, the process proceeds to step S150. Otherwise, the movement in the Y direction is regarded as noise (that is, the user does not intend). It is considered a movement) and returns. By step S148, a relatively large movement unintended by the user can be eliminated as noise. This is the same as step S134.
  • step S150 the window system 400 determines the direction of the velocity Vy, and proceeds to step S152 if it is directed vertically upward, and proceeds to step S154 if it is directed vertically downward.
  • step S152 the window system 400 assigns 30h indicating the gesture 3 to the flag JF, and then returns.
  • step S154 the window system 400 assigns 20h indicating the gesture 4 to the flag JF and returns.
  • the gesture 1 is recognized when the leftward movement of the center of gravity occurs without providing the reception flag, and that the gesture 2 is recognized when the rightward movement occurs.
  • the swing operation is stopped. In this case, the hand is often shaken in the direction opposite to the original swing direction. In addition, after swinging, the hand may be unconsciously returned (reverse swing).
  • a reverse swing may be detected immediately after it is determined that the hand 1 has moved to the left and gesture 1 has been performed, and this is determined to be gesture 2.
  • the gesture 2 is an input not intended by the user.
  • the horizontal movement gesture (gestures 1 and 2) and the vertical movement gesture (gestures 3 and 4) are selectively determined, and both are not detected. However, both can be determined and both can be detected.
  • each application program such as the application program 100 can control the window assigned to each by the information of the user's hand detected by the motion sensor 600. That is, the user's hand moved in the three-dimensional space can be photographed by the motion sensor 600, and the multi-window can be operated without contact based on the detection result from the photographed image.
  • various inputs can be performed, and a comfortable operability can be provided to the user in the multi-window operation.
  • “various input” means the shape of the hand (goo, choki, par, one finger), the change in the shape of the hand (see FIG. 3B), the area of the hand (the image sensor 5 and Correlation with the distance to the hand) and the position or movement of the fingertip.
  • a contact-type pointing device cannot input all of them.
  • functions equivalent to those of the contact type pointing device can be included. For example, by causing the cursor to follow the movement of the fingertip and making the mouse button operation correspond to a pseudo button operation (see FIG. 3B), functions equivalent to the mouse can be included.
  • the motion sensor 600 functions as a gesture control device and also functions as a pointing device. Therefore, the gesture control function and the pointing device function can be used properly depending on the control contents of the window, and the user operability can be optimized.
  • the motion sensor 600 detects the hand by analyzing the difference image, it is not necessary for the CPU 51 to perform such processing, the processing load can be reduced, and a programmer of a computer program operating on the CPU 51 can There is no need to create a program for detecting the hand, and the burden can be reduced. That is, the motion sensor 600 can be easily mounted on the computer system 700.
  • the window system 400 displays a cursor at a position on the screen of the monitor 67 corresponding to the position of the user's fingertip detected by the motion sensor 600. That is, the user can operate the cursor in a non-contact manner while moving the hand in the three-dimensional space.
  • the window system 400 monitors whether or not an event requested by the application program 100 has occurred based on information on the user's hand detected by the motion sensor 600, and the event has occurred. In this case, the event occurrence is notified to the application program 100 which is the client. Therefore, the application program 100 can be created as an event-driven program, which is suitable for window control.
  • the user can perform a button operation in a pseudo manner simply by changing one finger up to another finger up. .
  • a button operation can be performed in a pseudo manner with a gesture that is easy for the user (first example in FIG. 3B).
  • the cursor can be displayed at the position on the screen corresponding to the fingertip, and pointing and pseudo button operation can be performed with one hand. Yes (first example in FIG. 3B).
  • the user can perform a button operation in a pseudo manner by simply closing another finger and raising one finger from a state where two fingers are raised. Can do.
  • a button operation can be performed in a pseudo manner with a gesture that is easy for the user (second example in FIG. 3B).
  • the cursor can be displayed at the position on the screen corresponding to the fingertip, and pointing and pseudo button operation can be performed with one hand. Yes (second example in FIG. 3B).
  • the user can perform a pseudo button operation simply by bringing the fingertips of two fingers close together. In this way, it is possible to perform a pseudo button operation with a gesture that is easy for the user (third example in FIG. 3B).
  • a cursor can be displayed between two detected fingertips (for example, the middle point), and pointing and pseudo button operations can be performed with one hand (third example in FIG. 3B). .
  • the user simply performs a gesture in which the finger is folded from the state in which the finger is raised in the three-dimensional space, and then returned to the original state.
  • a non-contact click operation can be performed.
  • a click operation can be performed with a gesture that is easy for the user (fourth example in FIG. 23A).
  • the user folds his / her finger from the state where one finger is raised in the three-dimensional space, returns the finger to the original state, and again, the finger again.
  • the contactless double-click operation can be performed only by performing the gesture of returning to the original standing state again, that is, by performing the gesture for single-click operation twice. In this way, a double-click operation can be performed with a gesture that is easy for the user (fourth example in FIG. 23B).
  • Such a double click operation is a single click operation performed twice, and it has been verified by experiments of the present inventor that the folded fingertip returns to almost the same position both times. . For this reason, by detecting such a gesture, it can be determined stably and reliably, that is, with high reproducibility, whether or not a double-click operation has been performed.
  • the MCU 3 performs a click operation (single click or double click) by the user when the movement of the fingertip 50 is within the certain range DIS (positive determination in steps S1208 and S1212 in FIG. 24).
  • the rectangular range 52 is set (step S1216 in FIG. 24), and using this as a trigger, it can be determined whether or not the user has made a gesture corresponding to the click operation. For this reason, it is not always necessary to determine whether or not the user has made the gesture, and the processing load can be reduced.
  • the MCU 3 does not determine that the fingertip 50 has disappeared from the rectangular range 52 within a predetermined time TC after the rectangular range 52 is set (step S1254 in FIG. 25), or the fingertip has appeared in the rectangular range 52. Is not determined (step S1262 in FIG. 25), the stay flag is turned off and the rectangular range 52 is released (step S1284 in FIG. 25).
  • the user when it is not determined that the fingertip 50 has disappeared from the rectangular range 52 within the predetermined time TC, or when it is not determined that the fingertip has appeared in the rectangular range 52, the user performs a click operation (single click or double click). Therefore, it can be determined that the click operation has been performed against the user's intention. That is, in general, a click operation is performed quickly. However, by appropriately setting the predetermined time TC, a motion other than a gesture intended for the click operation can be excluded even if the motion is the same, thereby preventing erroneous determination.
  • a click operation single click or double click
  • an approximate fingertip is determined from the contour (steps S373 and S375 in FIG. 11 and step S445 in FIG. 13), and correction is performed using only the surrounding pixels (FIG. 14 (a) ) To FIG. 14 (d)), the storage capacity for processing can be reduced and the processing speed can be improved.
  • the position of the fingertip can be determined with high precision even when the image sensor 5 has a relatively low resolution.
  • the cursor is displayed at a position corresponding to the fingertip on the screen of the monitor 67 having a resolution higher than that of the image sensor 5, the movement can be made smooth.
  • the corrected fingertip can be determined not at the contour line but at the position inside the finger, and closer to the position recognized by the user as the fingertip.
  • the cursor is displayed at a position on the screen of the monitor 67 corresponding to the fingertip, the user can easily control the cursor with the fingertip.
  • the convex point on the contour of the finger is not recognized as the fingertip, and the center of the finger pad at the tip of the finger is the center of the fingertip. Recognize.
  • the position of the fingertip after correction can be determined to be a constant position or a substantially constant position of the belly of the finger tip, and the fingertip detected in steps S373 and S375 in FIG. 11 and step S445 in FIG. Even when the position of the fingertip is not stable, the corrected fingertip position can be made as constant as possible, or the difference in fingertip position can be kept as small as possible. As a result, when the cursor is displayed at a position on the screen of the monitor 67 corresponding to the fingertip, the cursor can be stabilized.
  • the corrected fingertip can be brought closer to the position that the user recognizes as the fingertip.
  • the cursor is displayed at a position on the screen of the monitor 67 corresponding to the fingertip, it becomes easier for the user to control the cursor with the fingertip.
  • the coordinates of the surrounding pixels (P0, P2, P6, P8) are defined so that the distances between the surrounding pixels (P1, P3, P5, P7) positioned in the vertical direction are equal (FIG. 18A )reference).
  • the CPU 51 can execute information processing using the shape of the subject (goo, choki, par, one finger) as an input.
  • the finger is specified based on the pixel between the fingertip and the web (see steps S257 and S259 in FIG. 9 and FIG. 17), and the finger is not specified by the center of gravity of the contour image.
  • the finger can be specified with high accuracy (FIG. 9), and the shape of the hand can be determined with higher accuracy (FIGS. 10 and 11).
  • the center of gravity of the contour image and the center of gravity of the subject often do not match. In this case, if a finger is specified by the center of gravity, the accuracy of recognition is lowered.
  • the shape of the hand is determined based on the distance from the center of gravity to the pixel corresponding to the fingertip, as well as the angle between the adjacent finger and the finger obtained based on the pixel between the fingertip and the web. Therefore (steps S345 to S351 in FIG. 11), more various hand shapes can be determined (FIG. 11). For example, it can be determined that the shape of the hand is “pick”.
  • the shape of the hand can be determined (FIG. 12) by simple calculation such as obtaining the distance from the center of gravity to the pixel on the contour line (step S203 in FIG. 8). For example, when the distance from the center of gravity to the pixel on the contour line is within a certain range, it can be determined that the shape of the hand is “Goo”.
  • the number of detected fingertips is not determined based only on the result of step S275 in FIG. 9, but the barycentric coordinates (Xg, Yg) and the convex point (FIG. 6) are further determined.
  • step S33 the distance D to the coordinates of the pixel Pj is taken into account (steps S427 and S441 in FIG. 13), and it is determined whether or not only one finger is standing. For this reason, the state where only one finger stands can be detected with higher accuracy.
  • the area of the subject on the image correlates with the distance between the image sensor 5 and the subject. The distance between them can be easily determined.
  • FIG. 30 is a hierarchical diagram of a computer system according to a modification of the embodiment of the present invention.
  • the same referential mark is attached
  • the computer system according to the modification is managed by operating system 300.
  • the window system 400 of the operating system 300 assigns and controls a unique window to each of the plurality of application programs 100 operating in parallel on the operating system 300.
  • the window system 400 controls a cursor displayed on the screen of the monitor 67.
  • the middleware 250 operates on the operating system 300 and provides each application program 100 with a specific function that the operating system 300 does not have.
  • this specific function is a function for controlling the window based on information on the user's hand detected by the motion sensor 600.
  • this specific function is a function for calculating the speed and / or direction based on the position information of the user's hand detected by the motion sensor 600.
  • this specific function is a function for determining whether or not a predetermined locus has been drawn based on the position information of the user's hand detected by the motion sensor 600.
  • this specific function is a function for determining whether or not the hand area has reached a certain value or more.
  • it is a function for calculating the rotation angle of the hand.
  • it is a function for calculating the acceleration of the hand.
  • it is a function for detecting a predetermined change in the shape of the hand (for example, a change from “par” to “goo”).
  • middleware 250 can execute the processes of FIGS. 27 to 29 instead of the window system 400.
  • the middleware 250 can also notify the application program 100 of the results of these functions as the occurrence of an event. Further, the middleware 250 acquires information on the user's hand detected by the motion sensor 600 from the operating system 300.
  • each application program 100 can execute processing according to various inputs or events (including window control).
  • each application program 100 can use the function of the window system 400 via the API 200 (not shown in FIG. 30) and controls the assigned window. This is the same as in FIG. Note that specific functions of the middleware 250 may be provided to each application program 100 via the API 200.
  • the electrical configuration of the computer system according to the modification is the same as that shown in FIGS. 2 (a) and 2 (b). Further, the modified example has the same technical characteristics as the computer system 700 of the above-described embodiment, and thus has the same effect as the computer system 700.
  • the present invention is not limited to the above-described embodiment, and can be implemented in various modes without departing from the gist thereof.
  • the following modifications are possible.
  • the motion sensor 600 is equipped with an infrared light emitting diode 9.
  • the infrared light emitting diode 9 is not essential.
  • the image sensor 5 outputs only the image at the time of exposure, and the MCU 3 processes the image. In this case, the difference process is not executed.
  • the values (Xc, Yc) obtained in the steps of FIGS. 14A to 14D are the correction coordinates (Xf, Yf) themselves, and no addition is necessary.
  • the motion sensor 600 is mounted as a pointing device. However, it can also be used in combination with other pointing devices such as a mouse. Accordingly, the advantages of the motion sensor 600 and other pointing devices such as a mouse can be utilized.
  • the hand information detected by the motion sensor 600 is a hand shape, a change in hand shape, a hand area, a hand movement, a hand movement trajectory, and a fingertip position or movement. It was.
  • hand information detected by the motion sensor 600 is not limited thereto.
  • the user's hand information detected by the motion sensor 600 may be hand movement (eg, hand rotation, fingertip movement), hand speed, and / or hand acceleration.
  • the hand rotation is, for example, an operation of rotating the hand clockwise and / or counterclockwise around the wrist. In this case, for example, the hand is rotated as if it is holding an actual dial.
  • the hand movement, hand position, hand movement, hand movement trajectory, hand speed, and hand acceleration detected by the motion sensor 600 are the hand movement, position, movement, movement trajectory, speed, It is a concept that includes not only the acceleration but also the movement, position, movement, movement locus, speed, and acceleration of the fingertip of the hand.
  • the fingertip is not limited to one finger, and may include a plurality of fingertips.
  • the hand may be one hand or both hands.
  • the shape of the user's hand, the change in the shape of the hand, the area of the hand, the movement of the hand, the position of the hand, the movement of the hand, the movement trajectory of the hand, the speed of the hand, and the acceleration of the hand are collectively referred to as It can also be called a gesture.
  • window system 400 is included in the operating system 300 in FIGS. 1 and 30, it can also be considered as a program operating on the operating system 300.
  • the device driver 500 is not included in the operating system 300, but can be considered as a function included in the operating system 300.
  • the information in the motion sensor 600 can be set so that the CPU 51 recognizes the motion sensor 600 as a mouse. That is, the CPU 51 is made to recognize the motion sensor 600 as a mouse.
  • the movement amount of the fingertip in the horizontal direction (X-axis direction) and the vertical direction (Y-axis direction) corresponds to the movement amount of the mouse in the horizontal direction (X-axis direction) and vertical direction (Y-axis direction), respectively.
  • the pseudo button operation corresponds to pressing of the mouse button.
  • input specific to the motion sensor 600 other than the input operation equivalent to that of the mouse is handled by the middleware 250 according to the modification.
  • the MCU 3 does not determine that the fingertip 50 has appeared in the rectangular range 52 within the predetermined time TC2 after determining that the fingertip 50 has disappeared from the rectangular range 52 (Yes in step S1254), the rectangular range 52 is set. It may be canceled and the single click operation determination may be reset. 25 is the same as FIG. 25 in that the MCU 3 releases the rectangular range 52 when it does not determine that the fingertip 50 has disappeared from the rectangular range 52 within a predetermined time TC after the rectangular range 52 is set.
  • the MCU 3 does not determine that the fingertip 50 has appeared in the rectangular range 52 within the predetermined time TC2, it is considered that the user does not intend to perform the click operation, and the user clicks against the user's intention. It is possible to prevent the operation from being determined. That is, in general, a click operation is performed quickly. However, by appropriately setting the predetermined time TC2, even if the movement is the same, movement other than the gesture intended for the click operation can be excluded, and erroneous determination can be prevented.
  • the double click operation determination is reset (step S1284 in FIG. 25).
  • the MCU 3 does not determine that the fingertip 50 has appeared in the rectangular range 52 within a predetermined time TC3 after determining that the fingertip 50 has disappeared from the rectangular range 52 after the temporary click flag is turned on,
  • the rectangular range 52 may be canceled and the double-click operation determination may be reset.
  • the MCU 3 releases the rectangular range 52 when the MCU 3 does not determine that the fingertip 50 has disappeared from the rectangular range 52 within a predetermined time TC after setting the rectangular range 52 after the temporary click flag is turned on. Is the same as FIG.
  • the determination until the provisional click flag is turned on is the same as in FIG. 25 or the above modification.
  • the MCU 3 does not determine that the fingertip 50 has appeared in the rectangular range 52 within the predetermined time TC3, it is considered that the user does not intend to perform a double-click operation, contrary to the user's intention. It can be determined that a double-click operation has been performed. In other words, in general, a double-click operation is performed quickly, but by setting the predetermined time TC3 appropriately, even if the movement is the same, movements other than the gesture intended for the double-click operation are excluded, and erroneous determination is prevented. it can.
  • the MCU 3 determines that the fingertip 50 has appeared in the rectangular range, that is, if the fingertip 50 does not determine that the fingertip 50 has disappeared from the rectangular range 52 within a predetermined time TC4 after the provisional click flag is turned on, The range 52 may be canceled and the double-click operation determination may be reset.
  • the determination until the temporary click flag is turned on is the same as in FIG. 25 or the above modification.
  • the MCU 3 does not determine that the fingertip 50 has disappeared from the rectangular range 52 within the predetermined time TC4, it is considered that the user does not intend to perform a double-click operation, contrary to the user's intention. It can be determined that a double-click operation has been performed. In other words, in general, the double-click operation is performed quickly, but by setting the predetermined time TC4 appropriately, even if the movement is the same, the movement other than the gesture intended for the double-click operation is excluded to prevent erroneous determination. it can.
  • the MCU 3 does not determine that the fingertip 50 has appeared again in the rectangular area 52 after the disappearance of the fingertip 50 within the predetermined time TC4 after turning on the temporary click flag, the rectangular area 52 is canceled.
  • the double-click operation determination may be reset.
  • the MCU 3 does not determine that the fingertip 50 has appeared in the rectangular range 52 within the predetermined time TC4, it is considered that the user does not intend to perform a double-click operation, contrary to the user's intention. It can be determined that a double-click operation has been performed. In other words, in general, the double-click operation is performed quickly, but by setting the predetermined time TC4 appropriately, even if the movement is the same, the movement other than the gesture intended for the double-click operation is excluded to prevent erroneous determination. it can.
  • the MCU 3 determines that the fingertip 50 has appeared in the rectangular range 52 within the predetermined time TC5 after the disappearance of the fingertip 50 within the predetermined time TC4 after turning on the temporary click flag. If not, the rectangular range 52 can be canceled and the double-click operation determination can be reset.
  • the MCU 3 does not determine that the fingertip 50 has appeared in the rectangular range 52 within the predetermined time TC5
  • a double-click operation is performed quickly, but by setting the predetermined time TC5 appropriately, even if the movement is the same, the movement other than the gesture intended for the double-click operation is excluded to prevent erroneous determination. it can.
  • the predetermined times TC2 to TC5 are determined by experiments and trial and error.
  • Control by gesture is particularly effective for controlling a window displayed by the application program 100 for presentation. This is because, in general, a person who makes a presentation often makes a presentation away from the terminal.
  • the gesture control function and the pointing device function of the motion sensor 600 can be used to control one window (application program 100). Also in this case, the gesture control function and the pointing device function can be used properly according to the control contents, and a comfortable operability can be provided to the user as in the multi-window control.
  • the image sensor 5 generates a difference image.
  • the MCU 3 can also generate a difference image between the infrared light emission image and the non-light emission image.
  • the image sensor 5 and the MCU 3 can also be called a photographing device.
  • the image sensor 5 and the MCU 3 can also be referred to as a photographing device.
  • the CPU 51 can perform all or part of the processing performed by the MCU 3, or conversely, the MCU 3 can perform all or part of the processing performed by the CPU 51.
  • which process is to be performed can be arbitrarily determined according to the specification.
  • the difference image generated by the image sensor 5 may be transferred to the CPU 51, and the CPU 51 may perform image analysis to detect a hand.
  • Processing steps describing a program for causing the MCU 3 to perform various processes do not necessarily have to be processed in time series in the order described in the flowchart, and are executed in parallel or individually. It also includes processing.
  • the means does not necessarily mean a physical means, but includes the case where the function of each means is realized by software. Further, the function of one means may be realized by two or more physical means, or the functions of two or more means may be realized by one physical means.
  • the present invention can be used in the field of pointing devices that perform pointing by displaying a cursor on a display device.
  • the present invention can also be used in the field of image analysis in which a fingertip is detected by image analysis.
  • the present invention can be used in the field of computers that require a pointing device for operating a multi-window.
  • API Application program interface

Abstract

指先50が大体静止した状態になった場合に、最新の指先50を中心とした矩形範囲52を設定する(S2000)。最新の指先50から一定距離RD内に過去所定数分の指先50が存在する場合に、指先50が大体静止した状態であると判断される。矩形範囲52の設定から一定時間TC以内に、矩形範囲52から指先50が消失し、矩形範囲52に指先50が存在しない状態になり(S2002)、そして、再び、矩形範囲52に指先50が出現し、矩形範囲52に指先50が存在する状態になった時に(S2004)、シングルクリックが行なわれたとみなす。

Description

操作判定装置、操作判定方法、及び、操作判定プログラム
 本発明は、ジェスチャにより非接触で機器を操作する際に、クリック操作が行なわれたか否かを判定する操作判定装置及びその関連技術に関する。
 また、本発明は、ジェスチャにより非接触で機器を操作する際に、擬似的にボタン操作が行なわれたか否かを判定する操作判定装置及びその関連技術に関する。
 さらに、本発明は、人の手を撮像して、撮像画像から指先を検出する指先検出装置及びその関連技術に関する。
 さらに、本発明は、三次元空間中の人の手の動きを撮影し、撮影画像を解析して、解析結果をポインティングに利用するコンピュータシステム及びその関連技術に関する。
 特許文献1は、非接触型ポインティングデバイスであるカーソル操作装置を開示する。このカーソル操作装置は、カメラにより三次元空間中のユーザの指先の動きを検出して、その動きにカーソルを追従させ、非接触で機器を操作する。そして、カーソル操作装置は、画面に表示されたボタンの上にカーソルが一定時間滞在すると、クリック操作がなされたと判断し、そのボタンが押下されたとみなす。
 なお、マウスやタッチパッド等、ユーザが接触して操作するポインティングデバイスを、非接触型に対して、接触型ポインティングデバイスと呼ぶ。
特開2004-258837
 しかしながら、ユーザは、クリック操作のために、指先を一定時間静止させなければならず、それを三次元空間中で行なうのは、困難な場合も多い。
 また、カメラによる画像の精度でしか、指先の位置を求めることができない。従って、カメラの画像が低解像度で、カーソルを表示する画面が高解像度である場合、カーソルを滑らかに動かすことができず、不連続な動きになる。
 そこで、本発明は、ユーザにとって容易なジェスチャにより、クリック操作が行なわれたと判定する操作判定装置及びその関連技術を提供することを目的とする。
 本発明の他の目的は、ユーザにとって容易なジェスチャにより、擬似的にボタン操作が行なわれたと判定する操作判定装置及びその関連技術を提供することである。
 本発明のさらに他の目的は、人の指を撮影して得られた低解像度の画像から、高精度で指先の位置を検出することができ、かつ、記憶容量の削減と処理の高速化を図ることができる指先検出装置及びその関連技術を提供することである。
 本発明のさらに他の目的は、マルチウィンドウの操作において、ユーザに快適な操作性を提供できるコンピュータシステム及びその関連技術を提供することである。
 本発明の第1の観点によれば、操作判定装置は、三次元空間中で動かされるユーザの手を撮影する撮影手段と、撮影により得られた画像から、前記ユーザの指先に相当する部分を検出する検出手段と、検出された前記指先に相当する部分を含む所定範囲を設定する設定手段と、前記設定手段が、前記所定範囲を設定した後、前記指先に相当する部分が消失したか否かを判断する第1判断手段と、前記第1判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断する第2判断手段と、前記第2判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、クリック操作が行なわれたと判定する判定手段と、を備える。
 この構成によれば、ユーザは、三次元空間中で、1本指を立てた状態から、その指を折って、再び、元の立てた状態に戻すというジェスチャを行なうだけで、非接触のクリック操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、クリック操作を行なうことができる。
 このような人のジェスチャでは、指が曲げられた後、指先が、ほぼ元の位置に戻ることが、本願発明者の実験により検証されている。このため、このようなジェスチャを検出することにより、クリック操作が行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できる。
 この操作判定装置において、前記設定手段は、検出された前記指先に相当する部分の動きが一定範囲内に収まっている場合に、前記所定範囲を設定する。
 この構成によれば、前記指先に相当する部分の動きが一定範囲内に収まっている場合に、ユーザがクリック操作を行なうことを意図しているとみなし、所定範囲を設定し、これをトリガとして、ユーザがクリック操作に対応するジェスチャを行ったか否かを判定できる。このため、ユーザが当該ジェスチャを行なったか否かを、常に判定する必要がなく、処理負荷を軽減できる。
 上記操作判定装置において、前記設定手段は、前記所定範囲が設定されてから第1所定時間内に、前記第1判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する。
 この構成によれば、第1所定時間内に、第1判断手段が、指先に相当する部分が所定範囲から消失したと判断しない場合、ユーザがクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してクリック操作が行なわれたと判定されることを防止できる。つまり、一般にクリック操作は素早く行なわれるところ、第1所定時間を適切に設定することにより、同一の動きであっても、クリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 この操作判定装置において、前記設定手段は、前記所定範囲が設定されてから前記第1所定時間内に、前記第2判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する。
 この構成によれば、第1所定時間内に、第2判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してクリック操作が行なわれたと判定されることを防止できる。つまり、一般にクリック操作は素早く行なわれるところ、第1所定時間を適切に設定することにより、同一の動きであっても、クリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 また、上記操作判定装置において、前記設定手段は、前記第1判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第2所定時間内に、前記第2判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除することもできる。
 この構成によれば、第2所定時間内に、第2判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してクリック操作が行なわれたと判定されることを防止できる。つまり、一般にクリック操作は素早く行なわれるところ、第2所定時間を適切に設定することにより、同一の動きであっても、クリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 上記操作判定装置は、前記第2判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した後、前記指先に相当する部分が消失したか否かを判断する第3判断手段と、前記第3判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断する第4判断手段と、をさらに備え、前記判定手段は、前記第4判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、ダブルクリック操作が行なわれたと判定する。
 この構成によれば、ユーザは、三次元空間中で、1本指を立てた状態から、その指を折って、再び、元の立てた状態に戻し、さらに、再び、その指を折って、再び、元の立てた状態に戻すというジェスチャを行なうだけで、つまり、上記クリック操作(シングルクリック操作)のためのジェスチャを2回行なうだけで、非接触のダブルクリック操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、ダブルクリック操作を行なうことができる。
 このようなダブルクリック操作は、上記シングルクリック操作を2回行うものであるところ、折り曲げられた指先は、2回とも、ほぼ同じ位置に戻ってくることが、本願発明者の実験により検証されている。このため、このようなジェスチャを検出することにより、ダブルクリック操作が行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できる。
 この操作判定装置において、前記設定手段は、前記所定範囲が設定されてから前記第1所定時間内に、前記第3判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する。
 この構成によれば、第1所定時間内に、第3判断手段が、指先に相当する部分が所定範囲から消失したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第1所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 この操作判定装置において、前記設定手段は、前記所定範囲が設定されてから前記第1所定時間内に、前記第4判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する。
 この構成によれば、第1所定時間内に、第4判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第1所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 また、上記操作判定装置において、前記設定手段は、前記第3判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第3所定時間内に、前記第4判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除することもできる。
 この構成によれば、第3所定時間内に、第4判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第3所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 上記操作判定装置において、前記設定手段は、前記第2判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断してから、第4所定時間内に、前記第3判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する。
 この構成によれば、第4所定時間内に、第3判断手段が、指先に相当する部分が所定範囲から消失したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第4所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 この操作判定装置において、前記設定手段は、前記第4所定時間内に、前記第4判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する。
 この構成によれば、第4所定時間内に、第4判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第4所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 また、上記操作判定装置において、前記設定手段は、前記第3判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第5所定時間内に、前記第4判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除することもできる。
 この構成によれば、第5所定時間内に、第4判断手段が、指先に相当する部分が所定範囲に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、第5所定時間を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 本発明の第2の観点によれば、操作判定装置は、三次元空間中で動かされるユーザの手を撮影する撮影手段と、撮影により得られた画像から、前記ユーザの指に相当する部分を検出する検出手段と、今回前記ユーザの指に相当する部分が1つ検出された場合において、前回前記ユーザの指に相当する部分が2つ検出されていたとき、擬似的にボタン操作が行なわれたと判定する判定手段と、を備える。
 この構成によれば、ユーザは、1本指を立てた状態から、もう一本の指を立てて2本指を立てた状態にするだけで、擬似的にボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる。
 また、擬似的なボタン操作の前後において、常に1本の指は撮影されるので、その指先に対応する画面上の位置にカーソルを表示でき、ポインティングと擬似的なボタン操作を片手で行なうことができる。
 ここで、本明細書及び特許請求の範囲において、「擬似的なボタン操作」とは、ポインティングデバイス等のデバイスの実際のボタンの操作ではないが、実際のボタンを操作する場合と同等の情報ないしは命令を、三次元空間中のジェスチャにより、コンピュータに与えることを意味する。
 本発明の第3の観点によれば、操作判定装置は、三次元空間中で動かされるユーザの手を撮影する撮影手段と、撮影により得られた画像から、前記ユーザの指に相当する部分を検出する検出手段と、今回前記ユーザの指に相当する部分が2つ検出された場合において、前回前記ユーザの指に相当する部分が1つ検出されていたとき、擬似的にボタン操作が行なわれたと判定する判定手段と、を備える。
 この構成によれば、ユーザは、2本指を立てた状態から、もう一本の指を閉じて1本指を立てた状態にするだけで、擬似的にボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる。
 また、擬似的なボタン操作の前後において、常に1本の指は撮影されるので、その指先に対応する画面上の位置にカーソルを表示でき、ポインティングと擬似的なボタン操作を片手で行なうことができる。
 本発明の第4の観点によれば、操作判定装置は、三次元空間中で動かされるユーザの手を撮影する撮影手段と、撮影により得られた画像から、前記ユーザの指先に相当する部分を検出する検出手段と、前記ユーザの指先に相当する部分が2つ検出された場合において、その2点間の距離が所定値より小さい場合に、擬似的にボタンが行なわれたと判定する判定手段と、を備える。
 この構成によれば、ユーザは、2本の指の指先を近づけるだけで、擬似的にボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる。
 また、検出された2つの指先の間(例えば中点)にカーソルを表示することができ、ポインティングと擬似的なボタン操作を片手で行なうことができる。
 本発明の第5の観点によれば、操作判定方法は、三次元空間中で動かされるユーザの手を撮影するステップと、撮影により得られた画像から、前記ユーザの指先に相当する部分を検出するステップと、検出された前記指先に相当する部分を含む所定範囲を設定するステップと、前記所定範囲を設定した後、前記指先に相当する部分が消失したか否かを判断するステップと、消失したか否かを判断する前記ステップが、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断するステップと、出現したか否かを判断する前記ステップが、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、クリック操作が行なわれたと判定するステップと、を含む。
 この構成によれば、上記第1の観点による操作判定装置と同様の効果を奏する。
 本発明の第6の観点によれば、操作判定方法は、三次元空間中で動かされるユーザの手を撮影するステップと、撮影により得られた画像から、前記ユーザの指に相当する部分を検出するステップと、今回前記ユーザの指に相当する部分が1つ検出された場合において、前回前記ユーザの指に相当する部分が2つ検出されていたとき、擬似的にボタン操作が行なわれたと判定するステップと、を含む。
 この構成によれば、上記第2の観点による操作判定装置と同様の効果を奏する。
 本発明の第7の観点によれば、操作判定方法は、三次元空間中で動かされるユーザの手を撮影するステップと、撮影により得られた画像から、前記ユーザの指に相当する部分を検出するステップと、今回前記ユーザの指に相当する部分が2つ検出された場合において、前回前記ユーザの指に相当する部分が1つ検出されていたとき、擬似的にボタン操作が行なわれたと判定するステップと、を含む。
 この構成によれば、上記第3の観点による操作判定装置と同様の効果を奏する。
 本発明の第8の観点によれば、操作判定方法は、三次元空間中で動かされるユーザの手を撮影するステップと、撮影により得られた画像から、前記ユーザの指先に相当する部分を検出するステップと、前記ユーザの指先に相当する部分が2つ検出された場合において、その2点間の距離が所定値より小さい場合に、擬似的にボタン操作が行なわれたと判定するステップと、を含む。
 この構成によれば、上記第4の観点による操作判定装置と同様の効果を奏する。
 本発明の第9の観点によれば、コンピュータプログラムは、上記第5の観点による操作判定方法をコンピュータに実行させる。
 本発明の第10の観点によれば、コンピュータプログラムは、上記第6の観点による操作判定方法をコンピュータに実行させる。
 本発明の第11の観点によれば、コンピュータプログラムは、上記第7の観点による操作判定方法をコンピュータに実行させる。
 本発明の第12の観点によれば、コンピュータプログラムは、上記第8の観点による操作判定方法をコンピュータに実行させる。
 本発明の第13の観点によれば、コンピュータ読み取り可能な記録媒体は、上記第9の観点によるコンピュータプログラムを記録する。
 本発明の第14の観点によれば、コンピュータ読み取り可能な記録媒体は、上記第10の観点によるコンピュータプログラムを記録する。
 本発明の第15の観点によれば、コンピュータ読み取り可能な記録媒体は、上記第11の観点によるコンピュータプログラムを記録する。
 本発明の第16の観点によれば、コンピュータ読み取り可能な記録媒体は、上記第12の観点によるコンピュータプログラムを記録する。
 本発明の第17の観点によれば、指先検出装置は、三次元空間中で動かされるユーザの手を撮影する撮影手段と、撮影により得られた画像から、前記手の像の輪郭を検出する輪郭検出手段と、前記輪郭から、前記手の指先に相当する部分の画素(以下、「指先画素」と呼ぶ。)を検出する指先検出手段と、前記指先画素の周囲の画素(以下、「周囲画素」と呼ぶ。)の画素値及び座標を用いて、前記指先検出手段により検出された前記指先画素の座標を小数点精度で補正する補正手段と、を備える。
 この構成によれば、輪郭から大体の指先を決定し、その周囲画素のみを用いて補正を行なうので、処理のための記憶容量の削減と処理速度の向上を図ることができる。
 また、補正が小数点精度で実行されるので、撮像手段が比較的低解像度であっても、高精度で指先の位置を決定することができる。その結果、撮影手段より高解像度の画面上の、指先に対応する位置にカーソルを表示する場合でも、その動きを滑らかにすることができる。
 さらに、周囲画素の画素値により、補正を行なうので、補正後の指先を、輪郭線上ではなく、指の内部の位置に決定でき、ユーザが指先と認識する位置により近づけることができる。その結果、指先に対応する画面上の位置にカーソルを表示する場合、ユーザにとって、指先によるカーソルの制御が容易になる。なお、一般に、人は、指の腹を向けて、指を動かすときは、指の輪郭線上の凸点を指先と認識せず、指先端部の指の腹(finger pad)の中心を指先と認識するものである。
 この指先検出装置において、前記補正値算出手段は、前記指先画素及び前記周囲画素の画素値を重みとし、前記指先画素及び前記周囲画素の座標の加重平均を算出し、前記指先画素の座標を補正する。
 上記指先検出装置において、前記補正値算出手段は、補正後の指先の位置が、前記周囲画素の範囲を超えるように、前記補正を行う。
 この構成によれば、補正後の指先の位置を指先端部の指の腹の一定位置あるいは略一定位置に決定することができ、輪郭検出手段により検出された指先の位置が安定していない場合でも、補正後の指先の位置を極力一定させ、あるいは、指先の位置の相違を極力小さい範囲に収めることができる。その結果、指先に対応する画面上の位置にカーソルを表示する場合、カーソルを安定化できる。
 また、補正後の指先を、ユーザが指先と認識する位置により一層近づけることができる。その結果、指先に対応する画面上の位置にカーソルを表示する場合、ユーザにとって、指先によるカーソルの制御が一層容易になる。
 上記指先検出装置において、前記補正値算出手段は、前記指先画素及び前記周囲画素の画素値を、前記指先画素及び前記周囲画素の座標への重みとし、重み付けされた前記指先画素及び前記周囲画素の座標の和を算出し、その和を、前記指先画素及び前記周囲画素の画素値のうちの最大値で除することにより、前記指先画素の座標を補正することもできる。
 上記指先検出装置において、前記補正値算出手段は、前記指先画素と前記指先画素の斜め方向に位置する前記周囲画素との間の距離と、前記指先画素と前記指先画素の水平方向又は垂直方向に位置する前記周囲画素との間の距離と、が等しくなるように、前記周囲画素の座標を定義する。
 この構成によれば、画素値を利用するに当って、全周囲画素の画素値が均等に扱われ、方向によって偏りのない補正を行なうことができる。
 本発明の第18の観点によれば、指先検出方法は、三次元空間中で動かされるユーザの手を撮影するステップと、撮影により得られた画像から、前記手の像の輪郭を検出するステップと、前記輪郭から、前記手の指先に相当する部分の画素(以下、「指先画素」と呼ぶ。)を検出するステップと、前記指先画素の周囲の画素(以下、「周囲画素」と呼ぶ。)の画素値及び座標を用いて、前記指先画素を検出する前記ステップにより検出された前記指先画素の座標を小数点精度で補正するステップと、を含む。
 この構成によれば、上記第17の観点による指先検出装置と同様の効果を奏する。
 本発明の第19の観点によれば、コンピュータプログラムは、上記第18の観点による指先検出方法をコンピュータに実行させる。
 本発明の第20の観点によれば、コンピュータ読み取り可能な記録媒体は、上記第19の観点によるコンピュータプログラムを記録する。
 本発明の第21の観点によれば、コンピュータシステムは、並行して動作する複数のアプリケーションプログラムにそれぞれ固有のウィンドウを割り当て制御するウィンドウシステムと、三次元空間中で動かされるユーザの手を撮影し、得られた画像を解析し、前記ユーザの手を検出する、ポインティングデバイスとしてのモーションセンサと、を備え、前記ウィンドウシステムは、前記モーションセンサが検出した前記ユーザの手の情報に基づき前記ウィンドウを制御するための機能を前記各アプリケーションプログラムに提供する。
 この構成によれば、各アプリケーションプログラムは、モーションセンサにより検出されたユーザの手の情報によって、それぞれに割り当てられたウィンドウを制御できる。つまり、三次元空間中で動かされるユーザの手をモーションセンサにより撮影し、撮影画像からの検出結果に基づいて、非接触でマルチウィンドウを操作できる。その結果、接触型ポインティングデバイスを使用する場合と比較して、多彩な入力を行なうことができ、マルチウィンドウの操作において、ユーザに快適な操作性を提供できる。
 「多彩な入力」とは、例えば、手の形状(グー、チョキ、パー、一本指、)、手の形状の変化、手の面積(モーションセンサと手との間の距離に相関)、手の動き(例えば、手の回転、指先の動き)、手の位置、手の移動、手の移動軌跡、手の速度、および、手の加速度、などである。接触型ポインティングデバイスでは、これら全てを入力することはできない。逆に、本発明では、接触型ポインティングデバイスと同等の機能を包含できる。例えば、カーソルを指先の動きに追従させ、かつ、手の形状の所定の変化により、擬似的にボタン操作が行なわれたとみなすことにより、マウスと同等の機能を包含できる。
 このように、モーションセンサは、ジェスチャコントロールデバイスとしても機能するし、ポインティングデバイスとしても機能する。従って、ウィンドウの制御内容によって、ジェスチャコントロール機能とポインティングデバイス機能とを使い分けることができ、ユーザの操作性を最適化できる。
 また、モーションセンサが画像を解析して手を検出するので、このような処理をウィンドウシステムは行なう必要がなく、その処理負荷を軽減でき、また、ウィンドウシステムのプログラマは、手を検出するためのプログラムを作成する必要がなく、その負担を軽減できる。つまり、コンピュータシステムに簡易にモーションセンサを搭載できる。
 本発明の第22の観点によれば、複数のアプリケーションが並行して動作可能なコンピュータシステムであって、前記コンピュータシステム全体を管理するオペレーティングシステムと、三次元空間中で動かされるユーザの手を撮影し、得られた画像を解析し、前記ユーザの手を検出する、ポインティングデバイスとしてのモーションセンサと、前記モーションセンサを制御し、前記モーションセンサから解析結果である前記ユーザの手の情報を受け取って、前記オペレーティングシステムに渡すデバイスドライバと、前記デバイスドライバから受け取った前記ユーザの手の情報に基づく前記オペレーティングシステムの所定機能を前記各アプリケーションプログラムに提供するアプリケーションプログラムインタフェースと、を備え、前記オペレーティングシステムは、並行して動作する前記複数のアプリケーションプログラムにそれぞれ固有のウィンドウを割り当て制御するウィンドウシステムを含み、前記所定機能は、前記ウィンドウを前記モーションセンサが検出した前記ユーザの手の情報に基づき制御するための前記ウィンドウシステムの機能である。
 この構成によれば、上記第21の観点によるコンピュータシステムと同様の技術的特徴を有するので、上記第21の観点によるコンピュータシステムと同様の効果を奏する。
 上記第21及び第22の観点によるコンピュータシステムにおいて、前記ウィンドウシステムは、前記モーションセンサが検出した前記ユーザの手の情報に基づいて、画面上のカーソルを制御する。
 この構成によれば、ユーザは、三次元空間中で手を動かしながら、非接触で、カーソルを操作できる。
 上記第21及び第22の観点によるコンピュータシステムにおいて、前記ウィンドウシステムは、前記モーションセンサが検出した前記ユーザの手の情報に基づいて、前記アプリケーションプログラムから依頼されたイベントが発生したか否かを監視し、前記イベントが発生した場合に、依頼主である前記アプリケーションプログラムに、前記イベントの発生を通知するイベント監視手段を含む。
 この構成によれば、アプリケーションプログラムをイベント駆動型プログラムとして作成することができ、ウィンドウの制御に好適である。
 上記第21及び第22の観点によるコンピュータシステムにおいて、前記モーションセンサによって検出される前記ユーザの手の情報は、前記ユーザの手の形状、手の形状の変化、手の面積、手の動き、手の位置、手の移動、手の移動軌跡、手の速度、および、手の加速度の情報の一部または全部である。
 この構成によれば、接触型ポインティングデバイスを使用する場合と比較して、多彩な入力を行なうことができる。
 ここで、本明細書及び特許請求の範囲において、手の動き、手の位置、手の移動、手の移動軌跡、手の速度、および、手の加速度は、手自体の動き、位置、移動、移動軌跡、速度、および、加速度のみを意味するのではなく、手の指先の動き、位置、移動、移動軌跡、速度、および、加速度を含む概念である。また、この場合、指先は、一本の指に限らず、複数本の指の指先を含んでよい。さらに、手は、片手であってもよいし、両手であってもよい。
 本発明の第23の観点によれば、コンピュータシステムは、並行して動作する複数のアプリケーションプログラムにそれぞれ固有のウィンドウを割り当て制御するウィンドウシステムと、三次元空間中で動かされるユーザの手を撮影し、得られた画像を解析し、前記ユーザの手を検出する、ポインティングデバイスとしてのモーションセンサと、前記モーションセンサが検出した前記ユーザの手の情報に基づき前記ウィンドウを制御するための機能を、前記各アプリケーションプログラムに提供するミドルウェアと、を備える。
 この構成によれば、上記第21の観点によるコンピュータシステムと同様の技術的特徴を有するので、上記第21の観点によるコンピュータシステムと同様の効果を奏する。
 上記第21、第22、及び第23の観点によるコンピュータシステムにおいて、前記モーションセンサは、三次元空間中で動かされる前記ユーザの手に間欠的に光を照射し、照射時及び非照射時で撮影処理を実行し、前記照射時に得られた画像と前記非照射時に得られた画像との差分画像を解析し、前記ユーザの手を検出する。
 この構成によれば、差分をとることにより、背景等のノイズを簡易に除去でき、簡易に被写体(手)の像のみを抽出できる。
 本発明の第24の観点によれば、コンピュータシステムは、並行して動作する複数のアプリケーションプログラムにそれぞれ固有のウィンドウを割り当て制御するウィンドウシステムと、三次元空間中で動かされるユーザの手を撮影する撮影手段と、前記撮影手段により得られた画像を解析して、前記ユーザの手の情報を取得する解析手段と、を備え、前記ウィンドウシステムは、前記解析手段が取得した前記ユーザの手の情報に基づき前記ウィンドウを制御するための機能を前記各アプリケーションプログラムに提供する。
 この構成によれば、各アプリケーションプログラムは、撮影手段及び解析手段により検出されたユーザの手の情報によって、それぞれに割り当てられたウィンドウを制御できる。つまり、三次元空間中で動かされるユーザの手を撮影手段により撮影し、解析手段による撮影画像の解析結果に基づいて、非接触でマルチウィンドウを操作できる。その結果、接触型ポインティングデバイスを使用する場合と比較して、多彩な入力を行なうことができ、マルチウィンドウの操作において、ユーザに快適な操作性を提供できる。
 「多彩な入力」とは、例えば、手の形状(グー、チョキ、パー、一本指、)、手の形状の変化、手の面積(モーションセンサと手との間の距離に相関)、手の動き(例えば、手の回転、指先の動き)、手の位置、手の移動、手の移動軌跡、手の速度、および、手の加速度、などである。接触型ポインティングデバイスでは、これら全てを入力することはできない。逆に、本発明では、接触型ポインティングデバイスと同等の機能を包含できる。例えば、カーソルを指先の動きに追従させ、かつ、手の形状の所定の変化により、擬似的にボタン操作が行なわれたとみなすことにより、マウスと同等の機能を包含できる。
 このように、モーションセンサは、ジェスチャコントロールデバイスとしても機能するし、ポインティングデバイスとしても機能する。従って、ウィンドウの制御内容によって、ジェスチャコントロール機能とポインティングデバイス機能とを使い分けることができ、ユーザの操作性を最適化できる。
 このコンピュータシステムは、三次元空間中で動かされる前記ユーザの手に間欠的に光を照射する発光手段をさらに備え、前記撮影手段は、前記光の照射時及び非照射時で撮影処理を実行し、前記解析手段は、前記照射時に得られた画像と前記非照射時に得られた画像との差分画像を解析し、前記ユーザの手の情報を取得する。
 この構成によれば、差分をとることにより、背景等のノイズを簡易に除去でき、簡易に被写体(手)の像のみを抽出できる。
 本発明の第25の観点によれば、コンピュータシステムは、並行して動作する複数のアプリケーションプログラムにそれぞれ固有のウィンドウを割り当て制御するウィンドウシステムと、三次元空間中で動かされるユーザの手を撮影する撮影手段と、前記撮影手段により得られた画像を解析して、前記ユーザの手の情報を取得するミドルウェアと、を備え、前記ミドルウェアは、前記ユーザの手の情報に基づき前記ウィンドウを制御するための機能を、前記各アプリケーションプログラムに提供する。
 この構成によれば、上記第24の観点によるコンピュータシステムと同様の技術的特徴を有するので、上記第24の観点によるコンピュータシステムと同様の効果を奏する。
 このコンピュータシステムは、三次元空間中で動かされる前記ユーザの手に間欠的に光を照射する発光手段をさらに備え、前記撮影手段は、前記光の照射時及び非照射時で撮影処理を実行し、前記ミドルウェアは、前記照射時に得られた画像と前記非照射時に得られた画像との差分画像を解析し、前記ユーザの手の情報を取得する。
 この構成によれば、差分をとることにより、背景等のノイズを簡易に除去でき、簡易に被写体(手)の像のみを抽出できる。
 本発明の第26の観点によれば、ウィンドウ制御方法は、コンピュータが、並行して動作する複数のアプリケーションプログラムにそれぞれ固有のウィンドウを割り当て制御するステップと、前記コンピュータが、三次元空間中で動かされるユーザの手を撮影し、得られた画像を解析し、前記ユーザの手を検出する、ポインティングデバイスとしてのモーションセンサが検出した前記ユーザの手の情報に基づき前記ウィンドウを制御するための機能を前記各アプリケーションプログラムに提供するステップと、を含む。
 この構成によれば、上記第21の観点によるコンピュータシステムと同様の効果を奏する。
 本発明の第27の観点によれば、ウィンドウ制御方法は、複数のアプリケーションが並行して動作可能なコンピュータが実行するウィンドウ制御方法であって、前記コンピュータが、並行して動作する前記複数のアプリケーションプログラムにそれぞれ固有のウィンドウを割り当て制御するステップと、前記コンピュータが、三次元空間中で動かされるユーザの手を撮影し、得られた画像を解析し、前記ユーザの手を検出する、ポインティングデバイスとしてのモーションセンサを制御し、前記モーションセンサから解析結果である前記ユーザの手の情報を受け取って、オペレーティングシステムに渡すステップと、前記コンピュータが、前記ユーザの手の情報に基づく前記オペレーティングシステムの所定機能を前記各アプリケーションプログラムに提供するステップと、を含み、前記所定機能は、前記ウィンドウを前記モーションセンサが検出した前記ユーザの手の情報に基づき制御するための機能である。
 この構成によれば、上記第22の観点によるコンピュータシステムと同様の効果を奏する。
 本発明の第28の観点によれば、ウィンドウ制御方法は、コンピュータが、並行して動作する複数のアプリケーションプログラムにそれぞれ固有のウィンドウを割り当て制御するステップと、前記コンピュータが、三次元空間中で動かされるユーザの手を撮影する撮影手段により得られた画像を解析して、前記ユーザの手の情報を取得するステップと、前記コンピュータが、前記ユーザの手の情報に基づき前記ウィンドウを制御するための機能を前記各アプリケーションプログラムに提供するステップと、を含む。
 この構成によれば、上記第24の観点によるコンピュータシステムと同様の効果を奏する。
 本発明の第29の観点によれば、コンピュータプログラムは、上記第26の観点によるウィンドウ制御方法をコンピュータに実行させる。
 本発明の第30の観点によれば、コンピュータプログラムは、上記第27の観点によるウィンドウ制御方法をコンピュータに実行させる。
 本発明の第31の観点によれば、コンピュータプログラムは、上記第28の観点によるウィンドウ制御方法をコンピュータに実行させる。
 本発明の第32の観点によれば、コンピュータ読み取り可能な記録媒体は、上記第29の観点によるコンピュータプログラムを記録する。
 本発明の第33の観点によれば、コンピュータ読み取り可能な記録媒体は、上記第30の観点によるコンピュータプログラムを記録する。
 本発明の第34の観点によれば、コンピュータ読み取り可能な記録媒体は、上記第31の観点によるコンピュータプログラムを記録する。
 本発明の新規な特徴は、特許請求の範囲に記載されている。しかしながら、発明そのもの及びその他の特徴と効果は、添付図面を参照して具体的な実施例の詳細な説明を読むことにより容易に理解される。
本発明の実施の形態によるコンピュータシステム700の階層図である。 (a)本発明の実施の形態によるコンピュータシステム700の電気的構成を示す図である。(b)図2(a)のモーションセンサ600の電気的構成を示す図である。 (a)本発明の実施の形態による擬似ボタン操作の説明図である。(b)本発明の実施の形態による擬似ボタン操作の第1~第3の例の説明図である。 図2のMCU3による画像解析処理の流れの一例を示すフローチャートである。 図4のステップS1の2値化処理の流れの一例を示すフローチャートである。 図4のステップS7の変曲点の検出処理の流れの一例を示すフローチャートである。 図4のステップS9の輪郭画像の形状を判定する処理の流れの一例を示すフローチャートである。 図7のステップS161の輪郭情報を算出する処理の流れの一例を示すフローチャートである。 図7のステップS163の指先を検出する処理の流れの一例を示すフローチャートである。 図7のステップS165の「パー」を判定する処理の流れの一例を示すフローチャートである。 図7のステップS167の「チョキ」を判定する処理の流れの一例を示すフローチャートである。 図7のステップS169の「グー」を判定する処理の流れの一例を示すフローチャートである。 図7のステップS171の一本指を判定する処理の流れの一例を示すフローチャートである。 (a)図11のステップS377及び図13のステップS447の指先補正値計算処理の第1の例の流れを示すフローチャートである。(b)図11のステップS377及び図13のステップS447の指先補正値計算処理の第2の例の流れを示すフローチャートである。(c)図11のステップS377及び図13のステップS447の指先補正値計算処理の第3の例の流れを示すフローチャートである。(d)図11のステップS377及び図13のステップS447の指先補正値計算処理の第4の例の流れを示すフローチャートである。 (a)図4のステップS11の擬似ボタン操作判定処理の第1の例の流れを示すフローチャートである。(b)図4のステップS11の擬似ボタン操作判定処理の第2の例の流れを示すフローチャートである。(c)図4のステップS11の擬似ボタン操作判定処理の第3の例の流れを示すフローチャートである。 図4のステップS5で検出される偏角θjの説明図である。 図4のステップS7で検出される変曲点及び図7のステップS163で検出される指先の説明図である。 (a)図14(a)及び図14(c)の指先補正値計算処理の説明図である。(b)図14(b)及び図14(d)の指先補正値計算処理の説明図である。 指先補正値計算処理における除数の説明図である。 図1のウィンドウシステム400によるイベント監視処理の流れの一例を示すフローチャートである。 図1のウィンドウシステム400によるカーソル制御処理の流れの一例を示すフローチャートである。 (a)図4のステップS11の擬似ボタン操作判定処理の第4の例の流れを示すフローチャートである。(b)図4のステップS11の擬似ボタン操作判定処理の第5の例の流れを示すフローチャートである。(c)図4のステップS11の擬似ボタン操作判定処理の第6の例の流れを示すフローチャートである。 (a)本発明の実施の形態による擬似ボタン操作の第4の例(シングルクリック)の説明図である。(b)本発明の実施の形態による擬似ボタン操作の第4の例(ダブルクリック)の説明図である。 図4のステップS11の擬似ボタン操作判定処理の第7の例の流れの一部を示すフローチャートである。 図4のステップS11の擬似ボタン操作判定処理の第7の例の流れの他の一部を示すフローチャートである。 図1のウィンドウシステム400が受け付け可能なジェスチャの例示図である。 図1のウィンドウシステム400によるジェスチャ判定処理の流れの一例を示すフローチャートである。 図27のステップS102のジェスチャ1~4の判定処理の流れの一部の一例を示すフローチャートである。 図27のステップS102のジェスチャ1~4の判定処理の流れの他の一部の一例を示すフローチャートである。 本発明の実施の形態の変形例によるコンピュータシステムの階層図である。
 以下、本発明の実施の形態について、図面を参照しながら説明する。なお、図中、同一または相当部分については同一の参照符号を付してその説明を援用する。また、本明細書において、数字の後尾に付した「h」は、16進数であることを示す。
 まず、本発明の実施の形態の具体的な説明の前に、その理解を容易にするための説明を行う。
 マイクロソフトコーポレーションが提供するオペレーティングシステムであるWindows(登録商標)は、並行して動作する複数のアプリケーションそれぞれに固有のウィンドウを割り当て画面出力を多重化するウィンドウシステムを搭載する。各アプリケーションプログラムは、ウィンドウシステムの機能を利用して、それぞれに割り当てられたウィンドウを制御する。
 ユーザは、マウス等のポインティングデバイスを操作し、ウィンドウシステムを介して、同一画面に表示された複数のウィンドウ(マルチウィンドウ)を操作する。つまり、ウィンドウシステムは、ユーザが操作するポインティングデバイスの情報に基づいて、ユーザによるウィンドウの操作を検出し、依頼先のアプリケーションに通知する。アプリケーションプログラムは、その通知を受けて、自分に割り当てられたウィンドウを制御する。
 しかしながら、マウス等の接触型ポインティングデバイスにより、マルチウィンドウを操作することは、ユーザに対して、必ずしも快適な操作性を提供しない。なぜなら、接触型ポインティングデバイスでは、ユーザの操作が限定的だからである。例えば、マウスの場合、マウスの移動とマウスボタンの操作しかできない。
 そこで、本発明の実施の形態では、マルチウィンドウの操作において、ユーザに快適な操作性を提供できるコンピュータシステムを提供する。また、このコンピュータシステムが第1及び第2操作判定装置並びに指先検出装置としての機能を有することも適宜説明する。第1操作判定装置は、ユーザにとって容易なジェスチャにより、クリック操作が行なわれたと判定する。第2操作判定装置は、ユーザにとって容易なジェスチャにより、擬似的にボタン操作が行なわれたと判定する。指先検出装置は、人の指を撮影して得られた低解像度の画像から、高精度で指先の位置を検出することができ、かつ、記憶容量の削減と処理の高速化を図ることができる。
 図1は、本発明の実施の形態によるコンピュータシステム700の階層図である。図1を参照して、このコンピュータシステム700は、オペレーティングシステム300により管理される。オペレーティングシステム300は、ハードウェアを抽象化したインタフェースをアプリケーションプログラム100に提供するソフトウェアである。ハードウェアの抽象化とは、ハードウェアの統一的で単純化された利用方法を提供することである。また、オペレーティングシステム300は、プロセス管理やメモリ管理を行い、ファイルシステムを有し、グラフィカルユーザインタフェース(GUI)や通信機能等を提供する。
 オペレーティングシステム300は、その機能の一つとしてウィンドウシステム400を含む。ウィンドウシステム400は、オペレーティングシステム300上で並行して動作する複数のアプリケーションプログラム100にそれぞれ固有のウィンドウを割り当て制御する。これらの複数のウィンドウ(マルチウィンドウ)は、後述するモニタ67の画面上に表示される。また、ウィンドウシステム400は、モニタ67の画面に表示するカーソルを制御する。
 アプリケーションプログラム100は、オペレーティングシステム300上で動作し、コンピュータシステム700の利用者がコンピュータシステム700上で実行したい作業を実施する機能を直接的に有するソフトウェアである。
 アプリケーションプログラムインタフェース(API)200は、各アプリケーションプログラム100からオペレーティングシステムの各種機能を呼び出すためのインタフェースである。API200は、アプリケーションプログラム100から呼び出すことができるオペレーティングシステム300の機能と定義することもできる。なお、APIはシステムコールと呼ばれることもある。
 従って、各アプリケーションプログラム100は、API200を介して、オペレーティングシステム300の各種機能を利用することができる。例えば、各アプリケーションプログラム100は、API200を介して、ウィンドウシステム400を利用することができる。
 一方、ポインティングデバイスとしてのモーションセンサ600は、デバイスドライバ500により制御される。モーションセンサ600は、後述するイメージセンサ5を備えており、イメージセンサ5により、ユーザの手を撮影し、その画像を解析して、解析結果をデバイスドライバ500に出力する。
 デバイスドライバ500は、オペレーティングシステム300の環境下で動作し、モーションセンサ600から受け取った解析結果を、オペレーティングシステム300に渡す。
 オペレーティングシステム300は、モーションセンサ600の解析結果に基づく各種機能を、API200を介して、各アプリケーションプログラム100に提供することができる。例えば、各アプリケーションプログラム100は、API200を介して、モーションセンサ600の解析結果に基づくウィンドウシステム400の機能を利用することができる。
 図2(a)は、本発明の実施の形態によるコンピュータシステム700の電気的構成を示す図である。図2(a)を参照して、コンピュータシステム700は、コンピュータ50、モニタ67、スピーカ69、及び、キーボード71を含む。コンピュータ50は、CPU(中央演算処理装置)51、メインメモリ53、チップセット55、GPU(グラフィックスプロセシングユニット)57、SPU(サウンドプロセシングユニット)59、HDD(ハードディスクドライブ)61、ドライブ63、通信部65、及びモーションセンサ600を含む。
 CPU51は、HDD61に格納されたコンピュータプログラムを実行して各種演算を行う。メインメモリ53は、CPU51から直接読み書きが行われる高速のメモリである。GPU57は、グラフィックス処理を実行し、モニタ67に映像信号を与える。モニタ67は与えられた映像信号に応じて映像を表示する。SPU59は、サウンド処理を実行し、スピーカ69に音声信号を与える。スピーカ69は与えられた音声信号に応じて音声を出力する。HDD61は、コンピュータプログラム及びデータを格納するための補助記憶装置である。ドライブ63は、リムーバブル記録媒体75からデータを読み込んだり、書き込んだりする装置である。通信部65は、ネットワークへの接続を司るLANカードやUSBコントローラなどを含み(図示せず)、通信を制御する。
 CPU51、GPU57、SPU59、HDD61、ドライブ63、通信部65、キーボード71、及びモーションセンサ600といった機能ユニットは、チップセット55に接続される。チップセット55は、これに接続される機能ユニット間のデータの受け渡しを管理する。
 HDD61は、図1のアプリケーションプログラム100、API200、オペレーティングシステム300、ウィンドウシステム400、及び、デバイスドライバ500を格納する。CPU51は、これらのプログラムを、メインメモリ53にロードし、実行する。そして、CPU51は、実行結果を、モニタ67やスピーカ69に出力し、あるいは、HDD61やメインメモリ53に格納する。
 なお、図1のアプリケーションプログラム100、API200、オペレーティングシステム300、ウィンドウシステム400、及び、デバイスドライバ500は、リムーバブル記録媒体75からHDD61に格納されてもよいし、あるいは、ネットワーク経由でHDD61に格納されてもよい。リムーバブル記録媒体75は、例えば、CD(CD-ROM、Video-CDを含む)やDVD(DVD-Video、DVD-ROM、DVD-RAMを含む)等の光ディスク、半導体メモリを搭載したメモリカード・メモリカートリッジ・USBメモリ、光磁気ディスク、磁気テープ、及び/又は、フレキシブルディスク等である。
 図2(b)は、図2(a)のモーションセンサ600の電気的構成を示す図である。図2(b)を参照して、このモーションセンサ600は、MCU(Micro Controler Unit)3、イメージセンサ5、及び赤外発光ダイオード9を含む。MCU3は、メモリ7を含む。イメージセンサ5は、カラー及びグレースケールのいずれでも使用でき、また、その画素数も任意にものを使用できるが、本実施の形態では、グレースケールで、64×64画素の比較的低解像度のものを使用する。赤外発光ダイオード9は、赤外光を発光する。また、イメージセンサ5としては、CMOSイメージセンサやCCDイメージセンサ等を採用できる。
 MCU3のメモリ7は、RAM、ROM、及びフラッシュメモリ等の半導体メモリであり、プログラム格納領域、データ格納領域、作業領域、及び一時格納領域等として利用される。MCU3は、メモリ7に格納されたプログラムに従って、後述のフローチャートで示される各種処理を実行する。なお、仕様に応じて、記録媒体として、メモリ7の他、CD(CD-ROM、Video-CDを含む)やDVD(DVD-Video、DVD-ROM、DVD-RAMを含む)等の光ディスク、半導体メモリを搭載したメモリカード・メモリカートリッジ・USBメモリ、ハードディスク、光磁気ディスク、磁気テープ、及び、フレキシブルディスク等を、MCU3に接続することもできる。そして、これらにプログラムやデータなどを格納することもできる。
 MCU3は、メモリ7に格納されたプログラムに従って、イメージセンサ5を制御する。イメージセンサ5は、MCU3の制御の下、赤外発光ダイオード9を間欠的に駆動し、三次元空間中で動かされる被写体(本実施の形態では人の手)に赤外光を間欠的に照射する。イメージセンサ5は、赤外光照射時及び非照射時の双方において、撮影処理を実行し、赤外光照射時画像と非照射時画像との差分画像を生成して、MCU3に出力する。差分をとることにより、背景等のノイズを簡易に除去でき、簡易に被写体の像のみを抽出できる。
 MCU3は、メモリ7に格納されたプログラムに従って、イメージセンサ5から受け取った差分画像を解析して、ユーザの手を検出して、その形状、面積、重心位置、及び、指先位置、並びに、擬似的なボタン操作の有無の情報等を、チップセット55を介して、CPU51に与える。すると、CPU51は、モーションセンサ600の解析結果である手の情報に基づき、各種処理を実行する。
 図3(a)及び図3(b)は、本発明の実施の形態による擬似ボタン操作の説明図である。図3(a)を参照して、モーションセンサ600は、ユーザ(人)の手を撮影し、得られた画像を解析することによって、指先a及びbの位置を求める。この例では、指先aは、人差し指の指先であり、指先bは、親指の指先である。
 図3(b)を参照して、第1の例では、CPU51は、モーションセンサ600から指先aの位置を受け取って、モニタ67の画面上の対応する位置にカーソルを表示する。また、モーションセンサ600は、撮影画像中に指先aと指先bとが存在する状態から、撮影画像中に指先aのみが存在する状態へ遷移したことを検出すると、例えば、二本の指(親指及び人差し指)が写っている状態から、カーソルの位置に関係ない一本の指(親指)が折り曲げられ、カーソルの位置を制御する他の一本の指(人差し指)のみが写っている状態に遷移したことを検出すると、ユーザが擬似的にボタン操作を行なったと判定し、擬似的にボタン操作が行なわれたことをCPU51に通知する。すると、CPU51は、ボタン操作に応じた処理を実行する。
 第2の例では、CPU51は、モーションセンサ600から指先aの位置を受け取って、モニタ67の画面上の対応する位置にカーソルを表示する。また、モーションセンサ600は、撮影画像中に指先aのみが存在する状態から、撮影画像中に指先aと指先bとが存在する状態へ遷移したことを検出すると、例えば、カーソルの位置に関係ない一本の指(親指)が折り曲げられ、カーソルの位置を制御する他の一本の指(人差し指)のみが写っている状態から、二本の指(親指及び人差し指)が写っている状態に遷移したことを検出すると、ユーザが擬似的にボタン操作を行なったと判定し、擬似的にボタン操作が行なわれたことをCPU51に通知する。すると、CPU51は、ボタン操作に応じた処理を実行する。
 第3の例では、CPU51は、モーションセンサ600から指先aの位置と指先bの位置との中点の位置を受け取って、モニタ67の画面上の対応する位置にカーソルを表示する。また、モーションセンサ600は、指先aと指先bとの間の距離を算出して、その距離が一定値以下になったことを検出すると、つまり、指先aと指先bとが近づいて、その距離が一定値以下になると、ユーザが擬似的にボタン操作を行なったと判定し、擬似的にボタン操作が行なわれたことをCPU51に通知する。すると、CPU51は、ボタン操作に応じた処理を実行する。
 ここで、上記第1~第3の例において、擬似的にボタン操作が行われたと判定されたことを、ボタンのプレス操作(ボタンを押したままの状態)が行なわれたとみなすこともできるし、あるいは、クリック操作(ボタンを押下して放す操作)が行なわれたとみなすこともできる。
 なお、擬似的にボタン操作が行われたと判定されたことを、ボタンのプレス操作が行なわれたとみなす場合、ボタンを放したとみなす操作は、次のようにして判定される。
 第1の例では、モーションセンサ600は、撮影画像中に指先aのみが存在する状態から、撮影画像中に指先aと指先bとが存在する状態へ遷移したことを検出すると、ユーザが擬似的にボタンを放す操作を行なったと判定し、擬似的にボタンを話す操作が行なわれたことをCPU51に通知する。
 第2の例では、モーションセンサ600は、撮影画像中に指先aと指先bとが存在する状態から、撮影画像中に指先aのみが存在する状態へ遷移したことを検出すると、ユーザが擬似的にボタンを放す操作を行なったと判定し、擬似的にボタンを放す操作が行なわれたことをCPU51に通知する。
 第3の例では、モーションセンサ600は、指先aと指先bとの間の距離を算出して、その距離が一定値以下になった後、再び、その距離が一定値を超えたことを検出すると、ユーザが擬似的にボタンを放す操作を行なったと判定し、擬似的にボタンを放す操作が行なわれたことをCPU51に通知する。
 ここで、「擬似的なボタン操作」とは、ポインティングデバイス等のデバイスの実際のボタンの操作ではないが、実際のボタンを操作する場合と同等の情報ないしは命令を、三次元空間中のジェスチャにより、コンピュータに与えることを意味する。
 次に、フローチャートを用いてモーションセンサ600のMCU3の処理の詳細を説明する。
 図4は、図2のMCU3による画像解析処理の流れの一例を示すフローチャートである。図4を参照して、ステップS1にて、MCU3は、イメージセンサ5が出力した差分画像を2値化する。ステップS3にて、MCU3は、2値化された差分画像から被写体(本実施の形態では手)の像の輪郭線を抽出する。この処理では、輪郭線上の各画素Pj(j=0~J-1)の座標(XO[j],YO[j])を求める。
 ここで、本実施の形態では、値Jは、輪郭線上の画素Pjの総数を示す。また、反時計回りに輪郭線の抽出処理が実行されるものとする。
 輪郭線を抽出するためのアルゴリズムは、周知のものを使用できる。例えば、3×3の小画素領域からなるマスクを用いる方法で、このマスクの中心を輪郭線上にたえずおきならが、順次、マスクを移動して、輪郭線を抽出する。
 ステップS5にて、MCU3は、抽出した輪郭線上の各画素PjのベクトルVjの偏角θjを算出する。
 図16は、図4のステップS5で検出される偏角θjの説明図である。図6を参照して、今、被写体の輪郭線上の3つの画素Pj-1,Pj,及びPj+1に注目する。また、輪郭線を反時計回りにスキャンするものとする。画素PjのベクトルVjは、画素Pjから次の画素Pj+1に向かうベクトルとして定義される。画素PjのベクトルVjの偏角θjは、画素Pjの1つ前の画素Pj-1のベクトルVj-1に対してベクトルVjがなす角度として定義される。反時計回りの偏角θjの符号は正であり、時計回りの偏角θjの符号は負である。
 図4に戻って、ステップS7にて、MCU3は、抽出した輪郭線の変曲点を検出する。変曲点は、輪郭線の向きが変化する点であり、凸点と凹点とが定義される。
 図17は、図4のステップS7で検出される変曲点の説明図である。図17を参照して、抽出した輪郭線21の向きが変化する点として、変曲点I0~I8が挙げられる。変曲点I0,I2,I4,I6及びI8は凸点である。変曲点I1,I3,I5及びI7は凹点である。
 図4に戻って、ステップS9にて、MCU3は、抽出した輪郭線(輪郭画像)の形状(グー、チョキ、パー、一本指、不定)を判定する。ステップS11にて、MCU3は、擬似的なボタン操作が行なわれたか否かを判定する。ステップS13にて、MCU3は、ステップS1の結果(後述の掩蔽フラグ)、ステップS9の結果(輪郭画像の重心座標、面積、形状の情報(後述のフラグSH)、補正後の指先の座標、並びに、二つの指先の中点座標)、及びステップS11の結果(後述の擬似ボタンフラグないしはシングルクリックフラグ及びダブルクリックフラグ)をCPU51に送信する。なお、MCU3は、イメージセンサ5から1フレームの差分画像を受け取るたびに、ステップS1~S13を繰り返す。
 図5は、図4のステップS1の2値化処理の流れの一例を示すフローチャートである。図5を参照して、ステップS50にて、MCU3は、差分画像の各画素Dの2値化後の値を代入する配列PD[][]並びに変数X,Y及びNAに0を代入する。ステップS51にて、MCU3は、イメージセンサ5から、差分画像の画素データDをリードする。なお、イメージセンサ5の解像度は64×64画素とする。また、イメージセンサ5からの差分画像の左上を原点とし、水平右方向をX座標の正、垂直下方向をY座標の正とする。そして、イメージセンサ5は、Y=0の行から、Xをインクリメントしながら、X=63まで、順次画素データDを出力する。そして、X=63の画素データDを出力した後、Yを1つインクリメントし、Y=1の行から、Xをインクリメントしながら、X=63まで、順次画素データDを出力する。イメージセンサ5は、このような処理をY=63まで行ない、差分画像の全画素Dを出力する。
 ステップS52にて、MCU3は、画素データ(輝度値)Dと所定の閾値THFとを比較する。そして、ステップS54にて、MCU3は、画素データDが閾値THFより大きい場合、その画素Dは手の像の一部であるとみなしステップS56に進み、それ以外はその画素Dは背景とみなしてステップS60に進む。ステップS56では、MCU3は、配列[X][Y]に1を代入する。そして、ステップS58にて、MCU3は、カウンタNAを1つインクリメントする。すなわち、カウンタNAは、1が代入された配列[X][Y]の数、つまり、手の像の一部とみなされた画素Dの数を示す。さらに言い換えると、カウンタNAは、手の像を構成する画素Dの数を示す。一方、ステップS60では、MCU3は、配列[X][Y]に0を代入する。
 ステップS62では、MCU3は、変数Xを1つインクリメントする。ステップS64にて、MCU3は、変数Xの値が64か否かを判断し、64の場合ステップS66に進み、それ以外はステップS51に戻る。ステップS66にて、MCU3は、変数Yを1つインクリメントする。ステップS68にて、MCU3は、変数Yの値が64になったか否かを判断し、64の場合ステップS70に進み、それ以外はステップS51に戻る。
 ステップS70にて、MCU3は、カウンタNAの値(つまり手の像の大きさ)が、所定値Arより大きいか否かを判断し、大きい場合イメージセンサ5がユーザの手で覆われた(掩蔽された)とみなしてステップS72に進み、それ以外はステップS76に進む。例えば、全画素数が、4096であるので、その約90%である3686を所定値Arとする。
 ステップS70で肯定判断の後、ステップS72にて、MCU3は、カウンタpを1つインクリメントする。カウンタpは、ステップS70の肯定判断の連続回数を示す。なお、カウンタpはシステム初期化時に0にセットされる。ステップS74にて、MCU3は、カウンタpの値が所定値Taより大きいか否かを判断し、大きい場合、所定時間連続してイメージセンサ5が手で覆われたことを意味するのでステップS78に進み、それ以外はステップS80に進む。ステップS78にて、MCU3は、所定時間連続してイメージセンサ5が手で覆われたこと示す掩蔽フラグをオンにする。一方、ステップS80では、MCU3は、掩蔽フラグをオフにする。
 ステップS70で否定判断の後、ステップS76にて、MCU3は、カウンタpに0を代入して、ステップS80に進む。
 以上のように、MCU3は、イメージセンサ5が出力する各画素Dを順次2値化して配列PD[][]に代入する。このように、差分画像(グレースケール)をメモリ7に持つことなく順次2値化することによりメモリ容量を削減できる。もちろん、MCU3は、イメージセンサ5が出力した差分画像(グレースケール)を一旦メモリ7に格納した後に、2値化することもできるし、あるいは、2値化せずにそのまま処理することもできる。
 図6は、図4のステップS7の変曲点の検出処理の流れの一例を示すフローチャートである。図6を参照して、ステップS21にて、MCU3は、変数DA,ADA,j,及びCF[]に0を代入する。ステップS23にて、MCU3は、図4のステップS3で検出された輪郭線上の画素Pjの偏角θjをメモリ7から取得する。ステップS25にて、MCU3は、変数DAの現在の値に偏角θjを加算して、変数DAに代入する。ステップS27にて、MCU3は、変数DAの絶対値を求めて、変数ADAに代入する。
 ステップS29にて、MCU3は、変数ADAの値が135度になったか否かを判断し、135度の場合輪郭線の向きが変わったと判断して、画素Pjを変曲点とみなしてステップS31に進み、それ以外はステップS39に進む。ステップS31では、MCU3は、変数DAの符号が正か否かを判断し、正の場合ステップS33に進み、負の場合ステップS35に進む。ステップS33では、MCU3は、凸凹フラグCF[j]に、変曲点が凸点であることを示す01を代入する。一方、ステップS35では、MCU3は、凸凹フラグCF[j]に、変曲点が凹点であることを示す10を代入する。
 ステップS37にて、MCU3は、変数DAに0を代入する。ステップS39にて、MCU3は、変数jを1つインクリメントする。ステップS41にて、MCU3は、変数jの値が、値Jと等しくなったか否かを判断し、j=Jの場合リターンし、それ以外はステップS23に進む。
 図7は、図4のステップS9の輪郭画像の形状を判定する処理の流れの一例を示すフローチャートである。図7を参照して、ステップS161にて、MCU3は、輪郭線に関する情報を算出する。ステップS163にて、MCU3は、輪郭画像から手の指先に相当する画素を検出する。
 再び、図17を参照して、凸点I0,I2,I4,I6及びI8を総称して、凸点As(s=0,1,…,S)と表記し、凹点I1,I3,I5及びI7を総称して、凹点Bt(t=0,1,…,T)と表記する。MCU3は、凸点Asから一定画素数Npだけ離れて位置する2つの画素を結ぶ線分23を求め、凸点Asから線分23に下ろした垂線25の長さLvを算出する。MCU3は、長さLvが、所定値CLを超えている場合に、その凸点Asを指先の候補とする。
 そして、MCU3は、指先の候補とした凸点Asの両側又は一方側に凹点Btが存在するか否かを判断し、存在する場合、その凸点Asを指先とみなす。
 また、MCU3は、「パー」及び「グー」を判定するのに必要な傾角θvを算出する。傾角θvは、指先とみなされた凸点Asから線分23に下ろした垂線25が、差分画像のX軸と平行な線27となす角である。
 図7に戻って、ステップS165にて、MCU3は、輪郭画像の形状が「パー」をした手の形状であるか否かを判定する。ステップS167にて、MCU3は、輪郭画像の形状が「チョキ」をした手の形状であるか否かを判定する。ステップS169にて、MCU3は、輪郭画像の形状が「グー」をした手の形状であるか否かを判定する。ステップS171にて、MCU3は、輪郭画像の形状が一本指を立てた手の形状であるか否かを判定してリターンする。
 図8は、図7のステップS161の輪郭情報を算出する処理の流れの一例を示すフローチャートである。図8を参照して、ステップS191にて、MCU3は、変数XG,YG及びjに0を代入する。ステップS193にて、MCU3は、変数XGの現在の値に輪郭線上の画素PjのX座標XO[j]を加算したものを、変数XGに代入する。また、MCU3は、変数YGの現在の値に輪郭線上の画素PjのY座標YO[j]を加算したものを、変数XGに代入する。ステップS195にて、MCU3は、変数jを1つインクリメントする。ステップS197にて、MCU3は、変数jの値が値Jになったか否かを判断し、値Jになった場合ステップS199に進み、それ以外はステップS193に進む。
 ステップS199にて、MCU3は、変数XGの値を値Jで除したものを、変数Xgに代入する。また、MCU3は、変数YGの値を値Jで除したものを、変数Ygに代入する。座標(Xg,Yg)は、輪郭画像の重心座標を示す。
 ステップS201にて、MCU3は、変数j,LS及びL[]に0を代入する。ステップS203にて、MCU3は、次式により、重心座標(Xg,Yg)と輪郭線上の各画素Pjの座標(XO[j],YO[j])との間の距離L[j]を算出する。
 L[j]←√((Xg-XO[j])+(Yg-YO[j])
 ステップS205にて、MCU3は、変数LSの現在の値に変数L[j]の値を加算したものを、変数LSに代入する。ステップS207にて、MCU3は、変数jを1つインクリメントする。ステップS209にて、MCU3は、変数jの値が値Jになったか否かを判断し、値Jになった場合ステップS211に進み、それ以外はステップS203に進む。
 ステップS211にて、MCU3は、変数LSの値を値Jで除することにより、距離L[j]の平均値AVLを算出する。ステップS213にて、MCU3は、輪郭線及び輪郭線内の画素を計数して、輪郭画像の面積を算出してリターンする。
 図9は、図7のステップS163の指先を検出する処理の流れの一例を示すフローチャートである。図9を参照して、ステップS241にて、MCU3は、変数j及びFP[]に0を代入する。ステップS243にて、MCU3は、フラグCF[j]が凸点を示す01にセットされているか否かを判断し、肯定的判断の場合ステップS245に進み、否定的判断の場合ステップS249に進む。
 ステップS245にて、MCU3は、凸点である画素Pjの両側又は一方側に、フラグCF[j]に凹点を示す10がセットされている画素が存在するか否かを判断し、存在する場合画素Pjを指先候補とみなしてステップS247に進み、存在しない場合ステップS249に進む。ステップS247にて、MCU3は、フラグFP[j]に画素Pjが指先候補であることを示す1をセットする。
 ステップS249にて、MCU3は、変数jを1つインクリメントする。ステップS251にて、MCU3は、変数jの値が値Jになったか否かを判断し、値Jになった場合ステップS253に進み、それ以外はステップS243に進む。
 ステップS253にて、MCU3は、変数j,q,TF[],θv[],XT,YT,Q及びθvに0を代入する。ステップS255にて、MCU3は、フラグFP[j]に指先候補を示す1がセットされているか否かを判断し、肯定的判断の場合ステップS257に進み、それ以外はステップS271に進む。
 ステップS257にて、MCU3は、画素Pj+Npと画素Pj-Npとを結ぶ線分23に画素Pjから下ろした垂線25の長さLvを算出する(図17参照)。ステップS259にて、MCU3は、長さLvが所定値CLを超えているか否かを判断し、超えている場合画素Pjを指先とみなしてステップS261に進み、それ以外はステップS271に進む。
 ステップS261にて、MCU3は、指先フラグTF[j]に画素Pjが指先であることを示す1をセットする。ステップS263にて、MCU3は、変数XT[q]に画素PjのX座標を代入する。また、MCU3は、変数YT[q]に画素PjのY座標を代入する。座標(XT[q],YT[q])は、指先の座標である。ステップS265にて、MCU3は、垂線25の傾角θvを算出する(図17参照)。ステップS267にて、MCU3は、変数θv[q]に傾角θvを代入する。傾角θv[q]は、座標(XT[q],YT[q])で示される指先に対応する指の傾角である。ステップS269にて、MCU3は、変数qを1つインクリメントする。
 ステップS271にて、MCU3は、変数jを1つインクリメントする。ステップS273にて、MCU3は、変数jの値が値Jになったか否かを判断し、値Jになった場合ステップS275に進み、それ以外はステップS255に進む。ステップS275にて、MCU3は、変数Qに変数qの値を代入してリターンする。変数Qの値は、検出された指先の数を表す。
 図10は、図7のステップS165の「パー」を判定する処理の流れの一例を示すフローチャートである。図4を参照して、ステップS301にて、MCU3は、変数Qの値(指先の数)が3以上か否かを判断し、3以上の場合ステップS303に進み、それ以外はリターンする。ステップS303にて、MCU3は、変数q及びmに0を代入する。ステップS305にて、MCU3は、配列θv[q]と配列θv[q+1]との差の絶対値を算出し、変数θdに代入する。変数θdは、隣り合う指と指とがなす角度を表す。
 ステップS307にて、MCU3は、変数θdの値が100度未満か否かを判断し、肯定的判断の場合ステップS309に進み、否定的判断の場合ステップS311に進む。ステップS309にて、MCU3は、変数mを1つインクリメントする。ステップS311にて、MCU3は、変数qを1つインクリメントする。
 ステップS313にて、MCU3は、変数qの値が値Qになったか否かを判断し、値Qになった場合ステップS315に進み、それ以外はステップS305に進む。
 ステップS315では、MCU3は、変数mの値が、6以下3以上であるか否かを判断し、肯定的判断の場合手の形状が「パー」であると判断してステップS317に進み、否定的判断の場合リターンする。変数mの値は、隣り合う指と指とがなす角度θdが100度未満のケースの発生回数である。ステップS317では、MCU3は、フラグSHを「パー」を示す10hにセットして、図4のステップS11に進む。
 図11は、図7のステップS167の「チョキ」を判定する処理の流れの一例を示すフローチャートである。図11を参照して、ステップS341にて、MCU3は、変数Qの値(指先の数)が2又は3の場合ステップS343に進み、それ以外はリターンする。
 ステップS343にて、MCU3は、変数q,p,SH,XL,YL,XS及びYSに0を代入する。ステップS345にて、MCU3は、輪郭画像の重心座標(Xg,Yg)と指先の座標(XT[q],YT[q])との間の距離Lgt0を算出する。ステップS347にて、MCU3は、距離Lgt0が平均値AVL(図8のステップS211参照)に1.1を乗じたもの以上か否かを判断し、つまり、距離Lgt0が平均値AVLの110%以上か否かを判断し、肯定的判断の場合ステップS349に進み、否定的判断の場合ステップS359に進む。
 ステップS349にて、MCU3は、輪郭画像の重心座標(Xg,Yg)と指先の座標(XT[q+1],YT[q+1])との間の距離Lgt1を算出する。座標(XT[q+1],YT[q+1])の指先は、座標(XT[q],YT[q])の指先の隣の指先である。ステップS351にて、MCU3は、距離Lgt1が値AVLに1.1を乗じたもの以上か否かを判断し、つまり、距離Lgt1が平均値AVLの110%以上か否かを判断し、肯定的判断の場合ステップS353に進み、否定的判断の場合ステップS359に進む。
 ステップS353では、MCU3は、配列θv[q]と配列θv[q+1]との差の絶対値(つまり、隣あう指と指とがなす角度)を算出し、変数θdに代入する。ステップS355にて、MCU3は、変数θdの値が90度未満か否かを判断し、肯定的判断の場合ステップS357に進み、否定的判断の場合ステップS359に進む。ステップS357にて、MCU3は、変数pを1つインクリメントする。
 ステップS359にて、MCU3は、変数qを1つインクリメントする。ステップS361にて、MCU3は、変数qの値が値Qになったか否かを判断し、値Qになった場合ステップS363に進み、それ以外はステップS345に進む。ステップS363にて、MCU3は、変数pの値が1又は2の場合手の形状が「チョキ」と判断してステップS365に進み、それ以外はリターンする。
 ステップS365にて、MCU3は、変数Qの値が2か否かを判断し、2の場合、つまり、検出された指が2本の場合、ステップS369に進み、それ以外はステップS367に進む。ステップS367では、MCU3は、フラグSHを「チョキ」を示す21hにセットして、図4のステップS11に進む。なお、値21hは、3本の指が検出されたことになっているが、そのうち1本は指ではないノイズであることを示している。
 ステップS369では、MCU3は、フラグSHを「チョキ」を示す20hにセットする。なお、値20hは、2本の指が検出され、ステップS367のようなノイズを含まないことを示している。ステップS371にて、MCU3は、距離Lgt0が距離Lgt1より大きいか否かを判断し、つまり、検出された2本の指のどちらが長いか否かを判断し、距離Ltg0が大きい場合ステップS373に進み、それ以外はステップS375に進む。
 ステップS373では、MCU3は、座標XL及びYLにそれぞれ座標XT[0]及びYT[0]を代入する。また、MCU3は、座標XS及びYSにそれぞれ座標XT[1]及びYT[1]を代入する。一方、ステップS375では、MCU3は、座標XL及びYLにそれぞれ座標XT[1]及びYT[1]を代入する。また、MCU3は、座標XS及びYSにそれぞれ座標XT[0]及びYT[0]を代入する。ここで、座標(XL,YL)は、長い指の指先の座標であり、座標(XS,YS)は、短い指の指先の座標である。
 ステップS377にて、MCU3は、座標(XL,YL)及び座標(XS,YS)のそれぞれに対して、補正値を算出する。ステップS379にて、MCU3は、座標(XL,YL)に、その補正値を加算して、補正後座標を求める。また、MCU3は、座標(XS,YS)に、その補正値を加算して、補正後座標を求める。ステップS381にて、MCU3は、座標(XL,YL)の補正後座標と座標(XS,YS)の補正後座標との中点座標を算出する。そして、MCU3は、図4のステップS11に進む。
 図12は、図7のステップS169の「グー」を判定する処理の流れの一例を示すフローチャートである。図12を参照して、ステップS391にて、MCU3は、変数Qの値(指先の数)が2以上か否かを判断して、肯定的判断の場合ステップS393に進み、否定的判断の場合リターンする。
 ステップS393にて、MCU3は、変数jに0を代入する。ステップS395にて、MCU3は、距離L[j](図8のステップS203参照)が、平均値AVL(図8のステップS211参照)に0.6を乗じたもの以上であり、かつ、値AVLに1.4を乗じたもの以下であるか否かを判断し、つまり、距離L[j]が、平均値AVLの60%以上であり、かつ、平均値AVLの140%以下であるか否かを判断し、肯定的判断の場合ステップS397に進み、否定的判断の場合リターンする。
 ステップS397にて、MCU3は、変数jを1つインクリメントする。ステップS399にて、MCU3は、変数jの値が値Jになったか否かを判断し、値Jになった場合手の形状が「グー」と判断しステップS401に進み、それ以外はステップS395に進む。ステップS401にて、MCU3は、フラグSHを「グー」を示す30hにセットして、図4のステップS11に進む。
 図13は、図7のステップS171の一本指を判定する処理の流れの一例を示すフローチャートである。図13を参照して、ステップS421にて、MCU3は、変数Qの値(指先の数)が1以下か否かを判断して、肯定的判断の場合ステップS423に進み、否定的判断の場合ステップS447に進む。ステップS447では、MCU3は、フラグSHを「不定」を示す00hにセットしてリターンする。
 一方、ステップS423では、MCU3は、変数j,s,Dc[],Dca及びDcmに0を代入する。ステップS425にて、MCU3は、フラグFP[j]に指先候補(つまり凸点)を示す1がセットされているか否かを判断し、肯定的判断の場合ステップS427に進み、それ以外はステップS433に進む。
 ステップS427では、MCU3は、重心座標(Xg,Yg)と凸点の画素Pjとの間の距離Dを算出する。ステップS429にて、MCU3は、配列Dc[s]に距離Dを代入する。ステップS431にて、MCU3は、変数sを1つインクリメントする。ステップS433にて、MCU3は、変数jを1つインクリメントする。ステップS435にて、MCU3は、変数jの値が値Jになったか否かを判断し、値Jになった場合ステップS437に進み、それ以外はステップS425に進む。
 ステップS437にて、距離Dc[s]の平均値Dcaを算出する。つまり、平均値Dcaは、重心から各凸点までの距離の平均値である。ステップS439にて、距離Dc[s]から、最大値Dcmを検出する。つまり、最大値Dcmは、重心から各凸点までの距離のうち、最大のものである。ステップS441にて、MCU3は、最大値Dcmが、平均値Dcaに1.3を乗じた値以上か否かを判断し、肯定判断の場合一本の指が立った状態であるとみなしてステップS443に進み、否定判断の場合ステップS447に進む。
 ステップS443では、MCU3は、フラグSHを「1本の指が立った状態」を示す40hにセットする。ステップS445では、MCU3は、座標XHに、最大値Dcmに対応する凸点の画素PjのX座標を代入する。また、MCU3は、座標YHに、最大値Dcmに対応する凸点の画素PjのY座標を代入する。座標(XH,YH)は、立った状態の1本指の指先の座標である。ステップS447にて、MCU3は、座標(XH,YH)の補正値を計算する。ステップS447にて、MCU3は、座標(XH,YH)に、その補正値を加算し、補正後座標を求める。そして、MCU3は、リターンする。
 さて、次に、図11のステップS373及びS375で求めた指先を示す画素の座標(XL,YL)及び(XS,YS)、並びに、図13のステップS445で求めた指先を示す画素の座標(XH,YH)を、イメージセンサ5の解像度を超える高精度で再計算する方法を説明する。以下では、再計算前の指先を示す画素P4の座標を、座標(Xb,Yb)と表記する。そして、下記のようにして、座標(Xb,Yb)の補正値(Xc,Yc)を求める。本実施の形態では、補正値の算出方法として、第1~第4の例を挙げる。
 図14(a)は、図11のステップS377及び図13のステップS447の指先補正値計算処理の第1の例の流れを示すフローチャートである。図14(b)は、図11のステップS377及び図13のステップS447の指先補正値計算処理の第2の例の流れを示すフローチャートである。図14(c)は、図11のステップS377及び図13のステップS447の指先補正値計算処理の第3の例の流れを示すフローチャートである。図14(d)は、図11のステップS377及び図13のステップS447の指先補正値計算処理の第4の例の流れを示すフローチャートである。
 図18(a)は、図14(a)及び図14(c)の指先補正値計算処理の説明図である。図18(b)は、図14(b)及び図14(d)の指先補正値計算処理の説明図である。
 図18(a)及び図18(b)を参照して、補正前(再計算前)の指先画素P4の座標(Xb,Yb)を原点(0,0)とする。図中、水平右方向をx軸の正とし、垂直下方向をy軸の正とする。そして、補正前の指先画素P4を取り囲む8個の画素P0,P1,P2,P5,P6,P7及びP8を利用する。また、画素P0~P8は、それぞれ、画素値(つまり輝度値)p0~p8を有する。
 図18(a)に示すように、第1及び第3の例では、原点(0,0)の指先画素P4の上下左右の画素P1,P7,P3及びP5の座標は、それぞれ、座標(0,-1),(0,1),(-1,0)及び(1,0)である。また、指先画素P4の左上画素P0、右上画素P2、左下画素P6及び右下画素P8の座標は、それぞれ、座標(-√2/2,-√2/2),(√2/2,-√2/2),(-√2/2,√2/2)及び(√2/2,√2/2)である。
 一方、図18(b)に示すように、第2及び第4の例では、原点(0,0)の指先画素P4の周囲画素P0,P1,P2,P5,P6,P7及びP8の座標は、それぞれ、座標(-1,-1)、(0,-1)、(1,-1)、(-1,0)、(1,0)、(-1,1)、(0,1)及び(1,1)である。
 なお、下記の数式中シンボル“*”及び“/”は、それぞれ、乗算及び除算を示す。
 図14(a)を参照して、第1の例では、ステップS361及びS363にて、MCU3は、次式により、X座標Xbの補正値Xc及びY座標Ybの補正値Ycを算出する。値Csは定数である。定数Csは1より大きい値である。
Xc=(A/C)*Cs
Yc=(B/C)*Cs
A=-R*p0+0*p1+R*p2+(-1)*p3+0*p4+1*p5+(-R)*p6+0*p7+R*p8
B=-R*p0+(-1)*p1+(-R)*p2+0*p3+0*p4+0*p5+R*p6+1*p7+R*p8
C=p0+p1+p2+P3+p4+p5+p6+p7+p8
R=√2/2
 よって、補正後の指先のX座標Xf及びY座標Yfは、次のようになる。
Xf=Xb+Xc
Yf=Yb+Yc
 図14(b)を参照して、第2の例では、ステップS371及びS373にて、MCU3は、次式により、X座標Xbの補正値Xc及びY座標Ybの補正値Ycを算出する。値Csは定数である。
Xc=(D/C)*Cs
Yc=(E/C)*Cs
D=-1*p0+0*p1+1*p2+(-1)*p3+0*p4+1*p5+(-1)*p6+0*p7+1*p8
E=-1*p0+(-1)*p1+(-1)*p2+0*p3+0*p4+0*p5+1*p6+1*p7+1*p8
C=p0+p1+p2+P3+p4+p5+p6+p7+p8
 よって、補正後の指先のX座標Xf及びY座標Yfは、次のようになる。
Xf=Xb+Xc
Yf=Yb+Yc
 図14(c)を参照して、第3の例では、ステップS381及びS383にて、MCU3は、次式により、X座標Xbの補正値Xc及びY座標Ybの補正値Ycを算出する。値pmaxは、画素値p0~p8のうちの最大値を示す。
Xc=A/pmax
Yc=B/pmax
A=-R*p0+0*p1+R*p2+(-1)*p3+0*p4+1*p5+(-R)*p6+0*p7+R*p8
B=-R*p0+(-1)*p1+(-R)*p2+0*p3+0*p4+0*p5+R*p6+1*p7+R*p8
R=√2/2
 よって、補正後の指先のX座標Xf及びY座標Yfは、次のようになる。
Xf=Xb+Xc
Yf=Yb+Yc
 図14(d)を参照して、第4の例では、ステップS391及びS393にて、MCU3は、次式により、X座標Xbの補正値Xc及びY座標Ybの補正値Ycを算出する。値pmaxは、画素値p0~p8のうちの最大値を示す。
Xc=D/pmax
Yc=E/pmax
D=-1*p0+0*p1+1*p2+(-1)*p3+0*p4+1*p5+(-1)*p6+0*p7+1*p8
E=-1*p0+(-1)*p1+(-1)*p2+0*p3+0*p4+0*p5+1*p6+1*p7+1*p8
 よって、補正後の指先のX座標Xf及びY座標Yfは、次のようになる。
Xf=Xb+Xc
Yf=Yb+Yc
 ここで、図11のステップS377の指先補正値算出処理では、MCU3は、座標(XL,YL)及び(XS,YS)のそれぞれを指先P4の座標(Xb,Yb)として、それぞれの補正値を算出する。また、図13のステップS447の指先補正値算出処理では、座標(XH,YH)を指先P4の座標(Xb,Yb)として、その補正値を算出する。
 図18(b)を参照しながら、上記第4の例について補足説明する。
 第4の例の上記式では、指先画素P4並びに周囲画素P0,P1,P2,P5,P6,P7及びP8の座標(0,0)、(-1,-1)、(0,-1)、(1,-1)、(-1,0)、(1,0)、(-1,1)、(0,1)及び(1,1)に、対応する画素値p4,p0,p1,p2,P3,p5,p6,p7及びp8で重み付けをし、それらの和Dが算出される。そして、和Dを値pmaxで除することにより、補正値Xcを求める。
 このようにして、小数点を持った精度の補正値Xcが得られる。なお、座標Xbは、画素単位で求められるので、整数値である。従って、座標Xbに補正値Xcを加えることにより、小数点精度の座標値を得ることができる。これらのことは同様にY座標についても言える。
 また、画素値による重み付けを行うことにより得られた補正値Xcを、補正前のX座標Xbに加えることにより、画素値(輝度値)の大きい側に、X座標Xbを補正できる(画素値による重み付け)。このことは同様にY座標についても言える。つまり、偏角θjから変曲点を求めることによって、手の輪郭線上の画素から、指先に相当する画素を特定し(図11のステップS373及びS375並びに図13のステップS445)、さらに、画素値を加味することによって、輪郭線上で特定された画素の周囲で、より画素値の大きい位置に、指先の座標を補正している。なぜなら、画像に写り込んだ指の像のうち、その先端部分であって、さらに、画素値(輝度値)の大きい位置を、指先とみなすことにより、より適切に指先を特定できるからである。
 さらに、和Dを、画素値p0~p8のうちの最大値pmaxで除している。つまり、除数を、固定値とするのではなく、変動値としている。これは、イメージセンサ5から手までの距離は、一定ではないからである。つまり、イメージセンサ5から手までの距離が近い場合は、画像に指は大きく写り込み、一方、イメージセンサ5から手までの距離が遠い場合は、画像には指は小さく写り込むので、補正値Xcを、イメージセンサ5から手までの遠近に応じて、適切な値に設定するためである。補正値Ycについても同様である。
 例えば、除数を固定値とする場合、その固定値が小さすぎると、イメージセンサ5から手までの距離が遠い場合は比較的妥当な値になるかもしれないが、近い場合は、補正値が大きくなりすぎてしまう。また、逆に、除数を固定値とする場合、その固定値が大きすぎると、イメージセンサ5から手までの距離が近い場合は比較的妥当な値になるかもしれないが、遠い場合は、補正値が小さくなりすぎてしまう。また、イメージセンサ5から手までの距離が遠い場合と近い場合の双方に適切な除数を、固定値として設定することは困難である。なぜなら、同じ距離で同じ指を撮影する場合であっても、イメージセンサ5が設置される環境(照明や外光など)によって、画素値(輝度値)は異なってくるし、また、指の色彩、輪郭、及び表面の形状等も人によって異なるからである。
 また、値C(=p0+p1+p2+P3+p4+p5+p6+p7+p8)で除することにより、加重平均をとることもできる。しかし、次の理由により、除数は、値Cではなく、最大値pmaxとするほうが好ましい。
 図19を参照して、一般的に、実際の人間の指先30は、平面視において、ある点を頂点(「実頂点」と呼ぶ。)32として、円弧状となっている。一方、本実施の形態のように、比較的低解像度の画像から指の輪郭を検出し、指先を決定する場合、常に実頂点32を指先として検出することは困難である。従って、検出される指先は、実頂点32であったり、実頂点32の左の点34になったり、右の点36になったりする。
 この場合、和Dを値Cで除して補正値とすると、その補正値は、図18(b)の画素P4を中心とした9×9画素の範囲を超えることができない。和Eについても同様である。このため、例えば、図19の実頂点32の補正後の位置は点38、点34の補正後の位置は点40、点36の補正後の位置は点42となる。このように、補正後の指先の位置は、これら3つの点で異なっている。同じ指先を検出するのに、異なった部分を指先と認識したのでは、検出された指先位置に配置されるカーソルが安定しない。
 そこで、輪郭から求めた指先が、一定していな場合でも、補正後の位置を極力一定させるため、あるいは、指先の位置の相違を極力小さい範囲に収めるため、最大値pmaxで和D及びEを除して、補正値を、9×9画素の範囲を越えるようにし、補正後の位置が、図19の点44、つまり、指先端部30の腹の中心付近に集まるようにした。
 図18(a)を参照しながら、上記第1の例について補足説明する。この例では、第4の例と異なり、画素P0,P2,P6及びP8の重み付けの対象を、それぞれ、座標(-√2/2,-√2/2),(√2/2,-√2/2),(-√2/2,√2/2)及び(√2/2,√2/2)とした。これは次の理由による。
 補正前の指先画素P4の中心からの距離を、全周囲画素で同じ値として、画素値を重みとするに当って、全画素値を均等に扱うためである。例えば、画素P4と画素P5との間の距離は「1」であるが、画素P2の座標を(1,-1)として計算すると、画素P4と画素P2との間の距離は、「√2」となってしまい、周囲画素の位置によって不均衡が発生する。補正前の指先画素P4の中心からの距離を、全周囲画素で同じ値とすることにより、補正値を方向によって偏りのないものとすることができる。
 また、この例では、A/C及びB/Cに定数Csを乗じている。これは、第4の例で、除数を値Cとせず、加重平均をとらなかった理由と同じである。つまり、輪郭から求めた指先が、一定していな場合でも、補正後の位置を極力一定させるため、あるいは、指先の位置の相違を極力小さい範囲に収めるため、定数Csを乗じて、補正値を、9×9画素の範囲を越えるようにし、補正後の位置が、図19の点44に集まるようにしたのである。なお、定数Csを乗ずることなしにA/C及びB/Cを補正値とすることもできる。
 ここで、定数Csは、実験及び試行錯誤等により決定される。また、定数Csを、検出された指の幅に応じて動的に変更することもできる。例えば、画像から指の幅を算出し、その幅に所定数(小数値)を乗じることにより、定数Csを決定する。この所定数は、実験及び試行錯誤等により決定される。例えばこの所定数は2/3である。なお、例えば、補正前の指先画素の左右それぞれに一定画素数離れた左右の画素間の距離を求め、それを指の幅とする。
 また、和A及びBをそれぞれ値Cで除して加重平均をとるのは、小数点を持った精度の補正値Xc及びYcを得るためである。なお、座標Xbは、画素単位で求められるので、整数値である。従って、座標Xbに補正値Xcを加えることにより、小数点精度の座標値を得ることができる。これらのことは同様にY座標についても言える。
 さらに、画素値による重み付けを行う理由は、第4の例と同様である。
 上記第2の例について補足説明する。定数Csを乗じる理由、加重平均をとる理由、及び、画素値による重み付けを行なう理由は、第1の例と同じである。
 上記第3の例について補足説明する。和A及びBをそれぞれ最大値pmaxで除して加重平均をとるのは、小数点を持った精度の補正値Xc及びYcを得るためである。なお、座標Xbは、画素単位で求められるので、整数値である。従って、座標Xbに補正値Xcを加えることにより、小数点精度の座標値を得ることができる。これらのことは同様にY座標についても言える。
 また、画素P0,P2,P6及びP8の重み付けの対象を、それぞれ、座標(-√2/2,-√2/2),(√2/2,-√2/2),(-√2/2,√2/2)及び(√2/2,√2/2)とした理由は、第1の例と同じである。
 さらに、画素値による重み付けを行う理由、除数を変動値とした理由、及び、最大値pmaxで除し加重平均をとらない理由は、第4の例と同様である。
 ここで、図14(a)~図14(d)に示す指先補正値計算処理を実行する場合は、MCU3は、画素値p0~p8を、イメージセンサ5から順次取得し、計算式に代入して、補正値(Xc,Yc)を算出する。なお、イメージセンサ5は、MCU3による2値化のために差分画像を出力した後でも、一定時間は(次の撮影処理までは)、差分画像データを保持しているので、指先補正値計算処理では、そこから必要な画素を取得することができる。このように、3×3画素(グレースケール)を一旦メモリ7に格納するのではなく、イメージセンサ5からの出力画素を順次処理しており、これにより、メモリ容量を削減できる。もちろん、イメージセンサ5が出力した差分画像をそのままメモリ7に格納して処理したり、あるいは、3×3画素(グレースケール)を一旦メモリ7に格納して処理することもできる。
 図15(a)は、図4のステップS11の擬似ボタン操作判定処理の第1の例の流れを示すフローチャートである(図3(b)の第1の例に対応)。図15(a)を参照して、ステップS621にて、MCU3は、擬似的なボタン操作の有無を示す擬似ボタンフラグをオフにする。ステップS623にて、MCU3は、手の形状を示す今回のフラグSHに40hがセットされているか否かを判断し、40hがセットされている場合(つまり、「1本指」の状態)、ステップS627に進み、それ以外はリターンする。
 ステップS627では、MCU3は、手の形状を示す前回のフラグSHに20hがセットされているか否かを判断し、20hがセットされている場合(つまり、「チョキ」の状態)、ステップS629に進み、それ以外はリターンする。ステップS629では、MCU3は、擬似的なボタン操作が行なわれたことを示すため、擬似ボタンフラグをオンにする。
 図15(b)は、図4のステップS11の擬似ボタン操作判定処理の第2の例の流れを示すフローチャートである(図3(b)の第2の例に対応)。図15(b)を参照して、ステップS601にて、MCU3は、擬似的なボタン操作の有無を示す擬似ボタンフラグをオフにする。ステップS603にて、MCU3は、手の形状を示す今回のフラグSHに20hがセットされているか否かを判断し、20hがセットされている場合(つまり、「チョキ」の状態)、ステップS607に進み、それ以外はリターンする。
 ステップS607では、MCU3は、手の形状を示す前回のフラグSHに40hがセットされているか否かを判断し、40hがセットされている場合(つまり、「1本指」の状態)、ステップS609に進み、それ以外はリターンする。ステップS609では、MCU3は、擬似的なボタン操作が行なわれたことを示すため、擬似ボタンフラグをオンにする。
 図15(c)は、図4のステップS11の擬似ボタン操作判定処理の第3の例の流れを示すフローチャートである(図3(b)の第3の例に対応)。図15(c)を参照して、ステップS641にて、MCU3は、擬似的なボタン操作の有無を示す擬似ボタンフラグをオフにする。ステップS643にて、MCU3は、手の形状を示す今回のフラグSHに20hがセットされているか否かを判断し、20hがセットされている場合(つまり、「チョキ」の状態)、ステップS645に進み、それ以外はリターンする。
 ステップS645では、MCU3は、補正後の一方の指先の座標と、補正後の他方の指先の座標と、の間の距離DCを算出する。ステップS647にて、MCU3は、距離DCが一定値CCより小さいか否かを判断し、小さい場合一方指先が他方指先に近づいたと判断してステップS649に進み、それ以外はリターンする。ステップS649にて、MCU3は、擬似的なボタン操作が行なわれたことを示すため、擬似ボタンフラグをオンにする。
 ここで、図15(a)~図15(c)及び後述の図22(a)~図22(c)において、今回のフラグSHとは、イメージセンサ5から今回受け取った1フレームの画像データに基づき設定されたフラグを意味する。また、前回のフラグSHとは、イメージセンサ5から前回受け取った1フレームの画像データに基づき設定されたフラグを意味する。
 また、図15(a)~図15(c)は、擬似的にボタン操作が行われたと判定されたこと(つまり、擬似ボタンフラグのオン)を、クリック操作(ボタンを押下して放す操作)が行なわれたとみなす場合の処理例を示している。
 次に、図22(a)~図22(c)を参照して、擬似的にボタン操作が行われたと判定されたこと(つまり、擬似ボタンフラグのオン)を、ボタンのプレス操作(ボタンを押したままの状態)が行なわれたとみなす処理例を説明する。なお、擬似ボタンフラグのオフは、ボタンを放した状態とみなされる。
 図22(a)は、図4のステップS11の擬似ボタン操作判定処理の第4の例の流れを示すフローチャートである(図3(b)の第1の例に対応)。図22(a)を参照して、ステップS701にて、MCU3は、擬似的なボタン操作の有無を示す擬似ボタンフラグがオンか否かを判断し、オンの場合ステップS709に進み、オフの場合ステップS703に進む。なお、擬似ボタンフラグは、システム初期化時にオフにセットされるものとする。
 ステップS703にて、MCU3は、手の形状を示す今回のフラグSHに40hがセットされているか否かを判断し、40hがセットされている場合(つまり、「1本指」の状態)、ステップS705に進み、それ以外はリターンする。
 ステップS705では、MCU3は、手の形状を示す前回のフラグSHに20hがセットされているか否かを判断し、20hがセットされている場合(つまり、「チョキ」の状態)、ステップS707に進み、それ以外はリターンする。ステップS707では、MCU3は、擬似的にボタンがプレスされたことを示すため、擬似ボタンフラグをオンにする。
 一方、ステップS709では、MCU3は、今回のフラグSHに20hがセットされているか否かを判断し、20hがセットされている場合(つまり、「チョキ」の状態)、ステップS711に進み、それ以外はボタンプレスの状態が維持されているとみなしリターンする。ステップS711では、MCU3は、擬似的にボタンが放されたことを示すため、擬似ボタンフラグをオフにする。
 図22(b)は、図4のステップS11の擬似ボタン操作判定処理の第5の例の流れを示すフローチャートである(図3(b)の第2の例に対応)。図22(b)を参照して、ステップS731にて、MCU3は、擬似的なボタン操作の有無を示す擬似ボタンフラグがオンか否かを判断し、オンの場合ステップS739に進み、オフの場合ステップS733に進む。なお、擬似ボタンフラグは、システム初期化時にオフにセットされるものとする。
 ステップS733にて、MCU3は、手の形状を示す今回のフラグSHに20hがセットされているか否かを判断し、20hがセットされている場合(つまり、「チョキ」の状態)、ステップS735に進み、それ以外はリターンする。
 ステップS735では、MCU3は、手の形状を示す前回のフラグSHに40hがセットされているか否かを判断し、40hがセットされている場合(つまり、「1本指」の状態)、ステップS737に進み、それ以外はリターンする。ステップS737では、MCU3は、擬似的にボタンがプレスされたことを示すため、擬似ボタンフラグをオンにする。
 一方、ステップS739では、MCU3は、今回のフラグSHに40hがセットされているか否かを判断し、40hがセットされている場合(つまり、「一本指」の状態)、ステップS741に進み、それ以外はボタンプレスの状態が維持されているとみなしリターンする。ステップS741では、MCU3は、擬似的にボタンが放されたことを示すため、擬似ボタンフラグをオフにする。
 図22(c)は、図4のステップS11の擬似ボタン操作判定処理の第6の例の流れを示すフローチャートである(図3(b)の第3の例に対応)。図22(c)を参照して、ステップS761にて、MCU3は、擬似的なボタン操作の有無を示す擬似ボタンフラグがオンか否かを判断し、オンの場合ステップS771に進み、オフの場合ステップS763に進む。なお、擬似ボタンフラグは、システム初期化時にオフにセットされるものとする。
 ステップS763にて、MCU3は、手の形状を示す今回のフラグSHに20hがセットされているか否かを判断し、20hがセットされている場合(つまり、「チョキ」の状態)、ステップS765に進み、それ以外はリターンする。
 ステップS765では、MCU3は、補正後の一方の指先の座標と、補正後の他方の指先の座標と、の間の距離DCを算出する。ステップS767にて、MCU3は、距離DCが一定値CCより小さいか否かを判断し、小さい場合一方指先が他方指先に近づいたと判断してステップS769に進み、それ以外はリターンする。ステップS769にて、MCU3は、擬似的にボタンのプレスが行なわれたことを示すため、擬似ボタンフラグをオンにする。
 一方、ステップS771にて、MCU3は、今回のフラグSHに20hがセットされているか否かを判断し、20hがセットされている場合(つまり、「チョキ」の状態)、ステップS773に進み、それ以外はボタンプレスの状態が維持されているとみなしリターンする。
 ステップS773では、MCU3は、補正後の一方の指先の座標と、補正後の他方の指先の座標と、の間の距離DCを算出する。ステップS775にて、MCU3は、距離DCが一定値CC以上か否かを判断し、CC以上の場合擬似的にボタンが放されたとみなしてステップS777に進み、それ以外はボタンプレスの状態が維持されているとみなしリターンする。ステップS777にて、MCU3は、擬似的にボタンが放されたことを示すため、擬似ボタンフラグをオフにする。
 ところで、上記では、図3(b)を参照して、擬似ボタン操作の第1~第3の例を説明した。以下では、擬似ボタン操作の第4の例を説明する。この第4の例では、シングルクリック及びダブルクリックの判定を行なう。
 図23(a)は、本発明の実施の形態による擬似ボタン操作の第4の例(シングルクリック)の説明図である。図23(a)を参照して、一定時間TC以内に、ステップS2000~S2004の変化が検出された場合に、シングルクリックが行なわれたとみなす。
 具体的には、指先50が大体静止した状態になった場合に、最新の指先50を中心とした矩形範囲(例えば3画素×3画素)52を設定する(ステップS2000)。例えば、最新の指先50から一定距離RD内に過去所定数分の指先50が存在する場合に、指先50が大体静止した状態であると判断される。
 この矩形範囲52の設定から一定時間TC以内に、矩形範囲52から指先50が消失し(出て)、矩形範囲52に指先50が存在しない状態になり(ステップS2002)、そして、再び、矩形範囲52に指先50が出現し(入って)、矩形範囲52に指先50が存在する状態になった時に(ステップS2004)、シングルクリックが行なわれたとみなす。例えば、矩形範囲52内の画素値(輝度値)の合計値を、所定の閾値と比較して、合計値が閾値を超えていれば矩形範囲52に指先50が存在すると判断し、一方、合計値が閾値以下の場合に矩形範囲52に指先50が存在しないと判断する。
 なお、例えば、ユーザが、一定時間TC以内に、人差し指を伸ばした状態から、人差し指の第3関節(付け根の関節)を曲げて指を折り、再び、元の状態(人差し指を伸ばした状態)に戻すというジェスチャを行なった時に、シングルクリックが行なわれたとみなされる。この場合、第1及び第2関節の状態は任意である。また、例えば、ユーザが、一定時間TC以内に、人差し指を伸ばした状態から、人差し指の第2関節を曲げて指を折り(第3関節は固定)、再び、元の状態(人差し指を伸ばした状態)に戻すというジェスチャを行なった時に、シングルクリックが行なわれたとみなされる。この場合、第1関節の状態は任意である。ここで、指先に一番近い関節を第1関節、その次の関節を第2関節、さらにその次の関節を第3関節と呼んでいる。
 この例のような人のジェスチャでは、指が曲げられた後、指先が、ほぼ元の位置に戻ることが、本願発明者の実験により検証されている。このため、図23(a)で説明した手法により、シングルクリックが行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できるのである。
 図23(b)は、本発明の実施の形態による擬似ボタン操作の第4の例(ダブルクリック)の説明図である。図23(b)を参照して、一定時間TC以内に、ステップS2100~S2108の変化が検出された場合に、ダブルクリックが行なわれたとみなす。この場合の一定時間TCは、シングルクリックを判定するときの一定時間TCと同じである。
 具体的には、指先50が大体静止した状態になった場合に、最新の指先50を中心とした矩形範囲(例えば3画素×3画素)52を設定する(ステップS2100)。指先50が大体静止した状態の判断方法は、シングルクリックの場合と同じである。
 この矩形範囲52の設定から一定時間TC以内に、矩形範囲52から指先50が消失し(出て)、矩形範囲52に指先50が存在しない状態になり(ステップS2102)、そして、再び、矩形範囲52に指先50が出現し(入って)、矩形範囲52に指先50が存在する状態になり(ステップS2104)、再び、矩形範囲52から指先50が消失し(出て)、矩形範囲52に指先50が存在しない状態になり(ステップS2106)、そして、再び、矩形範囲52に指先50が出現し(入って)、矩形範囲52に指先50が存在する状態になった時に(ステップS2108)、ダブルクリックが行なわれたとみなす。矩形範囲52に指先50が存在するか否かの判断は、シングルクリックの場合と同じである。
 なお、ダブルクリックは、上記のシングルクリックのジェスチャをユーザが2回行なうことで実行される。また、ダブルクリックは、シングルクリックを2回行なうものであり、それ故、折り曲げられた指先は、2回とも、ほぼ同じ位置に戻ってくる。この点も本願発明者により検証されている。このため、図23(b)で説明した手法により、ダブルクリックが行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できるのである。
 図24及び図25は、図4のステップS11の擬似ボタン操作判定処理の第7の例の流れを示すフローチャートである(図23(a)及び図23(b)の第4の例に対応)。図24を参照して、ステップS1200にて、MCU3は、シングルクリックが行なわれたとみなす時にオンにセットされるシングルクリックフラグと、ダブルクリックが行なわれたとみなす時にオンにセットされるダブルクリックフラグと、をオフにする。
 ステップS1202にて、MCU3は、滞在フラグがオンか否かを判断し、オンの場合図25のステップS1250に進み、オフの場合ステップS1204に進む。滞在フラグは、指先50が大体静止した状態になったと判断された時に、つまり、図23(a)及び図23(b)の矩形範囲52が設定された時にオンにセットされるフラグである。従って、ステップS1202で否定判断がされた後のステップS1204~S1220の処理は、矩形範囲52を設定するための処理である。一方、ステップS1202で肯定判断がされた後のステップS1250~S1284の処理は、図23(a)及び図23(b)のステップS2002,S2004,S2102~S2108の状態を判断するための処理である。
 ステップS1204にて、MCU3は、変数kに0をセットする。ステップS1206にて、MCU3は、最新の指先50と、過去の指先50と、の間の距離DISを算出する。距離DISは次式により算出される。
DIS=√(XD+YD
XD=Xf[0]-Xf[k+1]
YD=Yf[0]-Yf[k+1]
 ここで、図13のステップS449では、補正後の指先50の座標(Xf,Yf)を計算する。この場合、補正後の指先50の座標(Xf,Yf)は、キューに格納され、現在及び過去の計N個のデータが保存される(Nは2以上の整数。本実施の形態ではN=10)。キューは、X座標Xfを代入する配列Xf[0]~Xf[9]及びY座標Yfを代入する配列Yf[0]~Yf[9]により構成される。配列Xf[0]及びYf[0]に常に最新の座標(Xf,Yf)が格納される。
 従って、ステップS1206では、最新の指先50の座標(Xf[0],Yf[0])と、それより(k+1)個だけ過去の指先50の座標(Xf[k+1],Yf[k+1])と、の間の距離DISが計算される。
 そして、ステップS1208にて、MCU3は、距離DISが、一定距離RDより小さいか否かを判断し、小さい場合ステップS1210に進み、それ以外は指先50が静止した状態にないと判断してステップS1220に進む。ステップS1210にて、MCU3は、変数kを1つインクリメントする。ステップS1212にて、MCU3は、変数kの値が9になったか否かを判断し、9になった場合ステップS1214に進み、それ以外はステップS1206に戻る。
 ステップS1212でk=9が判断されたことは、最新の指先50と過去9個の指先50それぞれとの間の距離全てが、一定距離RD内に存在することを意味する。つまり、指先50が大体静止した状態にあることを意味する。このため、ステップS1214では、MCU3は、滞在フラグをオンにする。一方、距離DISが一定距離RD内にない過去の指先50が1つでも存在する場合は、指先50が静止した状態にないと判断する。このため、ステップS1220では、MCU3は、滞在フラグをオフにしてリターンする。
 ステップS1214の次のステップS1216にて、MCU3は、最新の指先50の座標(Xf[0],Yf[0])を中心とした矩形範囲52を設定する(図23(a)のステップS2000及び図23(b)のステップS2100に相当)。そして、ステップS1218にて、MCU3は、タイマTMをセットしてリターンする。このタイマTMは、上記一定時間TC(図23(a)及び図23(b)参照)を計測するためのものである。この一定時間TCは、実験及び試行錯誤等により、決定される。
 図25を参照して、ステップS1250にて、MCU3は、タイマTMの値が一定時間TCになったか否かを判断し、一定時間TCになった場合ステップS1278に進み、一定時間になっていない場合ステップS1252に進む。
 ステップS1252にて、MCU3は、消失フラグがオンか否かを判断し、オンの場合ステップS1262に進み、オフの場合ステップS1254に進む。消失フラグは、矩形範囲52に指先50が存在する状態から存在しない状態に変化したときにオンにされるフラグである。
 ステップS1254では、MCU3は、矩形範囲52に指先50が不存在か否かを判断し、存在する場合リターンし、不存在の場合ステップS1256に進む。ステップS1256にて、MCU3は、消失フラグをオンにしてリターンする(図23(a)のステップS2002並びに図23(b)のステップS2102及びS2106に相当)。
 消失フラグがオンの場合、ステップS1262にて、MCU3は、矩形範囲52に指先50が存在するか否かを判断し、存在しない場合リターンし、存在する場合ステップS1264に進む(図23(a)のステップS2004並びに図23(b)のステップS2104及びS2108に相当)。
 ステップS1264では、MCU3は、仮クリックフラグがオンか否かを判断し、オンの場合ステップS1272に進み、オフの場合ステップS1266に進む。仮クリックフラグは、ユーザのジェスチャがシングルクリックの条件(図23(a)のステップS2000~S2004)を満たしたときにオンにされるフラグである。ただし、ダブルクリックはシングルクリックの動作を含むので(図23(b)のステップS2100~S2104)、一定時間TCが経過するまでは、ダブルクリックが行なわれる可能性もある。このため、一定時間TCの経過後に、シングルクリックかダブルクリックかを最終決定する必要がある。それ故、シングルクリックの条件が満たされた時、仮クリックフラグにより、最終決定まで、その事実を保持しておくのである。
 ステップS1266では、MCU3は、シングルクリックの条件が満足されたので、仮クリックフラグをオンにする。そして、ステップS1268にて、MCU3は、消失フラグをオフにしてリターンする。なぜなら、ステップS1262で肯定判断がされているからである。
 一方、ステップS1272にて、MCU3は、ダブルクリックフラグをオンにする。なぜなら、仮クリックフラグがオンである状態において、さらに、図23(b)のステップS2106,S2108の変化が検出されたからである(ステップS1264にて肯定判断、ステップS1252にて肯定判断、ステップS1262にて肯定判断)。ステップS1274にて、MCU3は、タイマTMを解除する。ステップS1276にて、MCU3は、滞在フラグ、消失フラグ及び仮クリックフラグをオフにしてリターンする。なぜなら、ダブルクリックが決定されているため、これが最終決定だからである。なお、滞在フラグのオフは、矩形範囲52の解除、つまり、クリック操作判定のリセットに相当する。
 さて、ステップS1250にて肯定判断がされた後、MCU3は、最終決定を行なうべく、ステップS1278に進む。ステップS1278にて、MCU3は、仮クリックフラグがオンか否かを判断し、オンの場合ステップS1280に進み、オフの場合シングルクリックもダブルクリックも行なわれていないためステップS1282に進む。ステップS1280では、MCU3は、シングルクリックフラグをオンにしてステップS1282に進む。
 ステップS1282にて、MCU3は、タイマTMを解除する。ステップS1284にて、MCU3は、滞在フラグ、消失フラグ及び仮クリックフラグをオフにしてリターンする。なお、滞在フラグのオフは、矩形範囲52の解除、つまり、クリック操作判定のリセットに相当する。
 なお、シングルクリックフラグ及びダブルクリックフラグは、図4のステップS13にて、コンピュータ11に送信される。
 図20は、図1のウィンドウシステム400によるイベント監視処理の流れの一例を示すフローチャートである。図20を参照して、ステップS800にて、ウィンドウシステム400は、第1アプリケーションプログラム100から依頼されたイベントが発生したか否かをチェックし、発生した場合ステップS802に進み、発生していない場合ステップS800に戻る。ステップS802では、ウィンドウシステム400は、イベントの発生を第1アプリケーションプログラム100に通知する。
 一方、ステップS900にて、第1アプリケーションプログラム100は、ウィンドウシステム400からイベント発生の通知を受けたか否かをチェックし、通知を受けた場合ステップS902に進み、通知を受けていない場合ステップS900に戻る。ステップS902では、第1アプリケーションプログラム100は、発生したイベントに応じた処理(ウィンドウの制御を含む。)を実行する。
 また、ステップS804にて、ウィンドウシステム400は、第2アプリケーションプログラム100から依頼されたイベントが発生したか否かをチェックし、発生した場合ステップS806に進み、発生していない場合ステップS804に戻る。ステップS806では、ウィンドウシステム400は、イベントの発生を第2アプリケーションプログラム100に通知する。
 一方、ステップS1000にて、第2アプリケーションプログラム100は、ウィンドウシステム400からイベント発生の通知を受けたか否かをチェックし、通知を受けた場合ステップS1002に進み、通知を受けていない場合ステップS1000に戻る。ステップS1002では、第2アプリケーションプログラム100は、発生したイベントに応じた処理(ウィンドウの制御を含む。)を実行する。
 なお、ステップS802及びS806の通知は、第1及び第2アプリケーションプログラム100に対して、API200を介して行なわれる。
 ここで、イベントの例を幾つか挙げる。例えば、アプリケーションプログラム100が制御するウィンドウに設けられたボタン上にカーソルが位置し、かつ、擬似的にボタン操作が行なわれた場合に、つまり、ウィンドウ中のボタンが押下された場合に、イベントが発生する。CPU51は、ボタン押下に応じた処理を実行する。
 例えば、後述する図26に示すジェスチャ1~13のそれぞれの発生に対して、イベントが発生する。この場合、例えば、ジェスチャ1によりイベントが発生した場合、CPU51は、手の移動方向である水平左方向に、モニタ67に表示された画面をスクロールする。
 例えば、所定の手の形状(例えば、「グー」)が検出された場合にイベントが発生する。例えば、手の面積が一定値以上になったらイベントが発生する。例えば、手又は指先の移動軌跡が所定軌跡になった場合にイベントが発生する。例えば、手の一定角度の回転が発生したらイベントが発生する。例えば、手の速度が一定値以上になったらイベントが発生する。例えば、手の加速度が一定値以上になったらイベントが発生する。
 以上のように、本実施の形態では、マウス等の接触型ポインティングデバイスで生成できるイベントはもちろん、接触型ポインティングデバイスでは生成することができないイベントをも生成できる。従って、各アプリケーションプログラム100は、多彩なイベントに応じた処理(ウィンドウの制御を含む。)を実行することができる。
 図21は、図1のウィンドウシステム400によるカーソル制御処理の流れの一例を示すフローチャートである。図21を参照して、ステップS1100にて、ウィンドウシステム400は、デバイスドライバ500からユーザの指先の座標を取得する。ステップS1102にて、ウィンドウシステム400は、受け取った指先の座標を、モニタ67に応じたスクリーン座標に変換する。ステップS1104にて、ウィンドウシステム400は、スクリーン座標に変換された指先の座標上にカーソルを表示し、ステップS1100に進む。
 図26は、図1のウィンドウシステム400が受け付け可能なジェスチャの例示図である。図26を参照して、ジェスチャ1は、手を「パー」にした後、水平左方向へスイングする動作である。ジェスチャ2は、手を「パー」にした後、水平右方向へスイングする動作である。ジェスチャ3は、手を「パー」にした後、垂直上方向へスイングする動作である。ジェスチャ4は、手を「パー」にした後、垂直下方向へスイングする動作である。
 ジェスチャ5は、手を「グー」から「チョキ」に変化させる動作である。ジェスチャ6は、手を「グー」から「パー」に変化させる動作である。ジェスチャ7は、手を「チョキ」から「グー」に変化させる動作である。ジェスチャ8は、手を「チョキ」から「パー」に変化させる動作である。ジェスチャ9は、手を「パー」から「グー」に変化させる動作である。ジェスチャ10は、手を「パー」から「チョキ」に変化させる動作である。
 ジェスチャ11は、手でイメージセンサ5、つまり、カメラを覆う(掩蔽する)動作である。ジェスチャ12は、時計回りに、手で円を描く動作である。ジェスチャ13は、反時計回りに、手で円を描く動作である。
 ウィンドウシステム400は、各ジェスチャ1~13を検出し、それぞれをイベントの発生として認識し、依頼先のアプリケーションプログラム100に通知することができる。
 ここで、各ジェスチャ1~13を、キーボード71の各種キー(例えば、タブキー、左方向キー、右方向キー、上方向キー、下方向キー、スペースキー、ページアップキー、ページダウンキー、エスケープキー、及び、Windows(登録商標)キーなど)に割り当てることもできる。
 また、各ジェスチャ1~13を、キーボード71のショートカットキー(例えば、Altキー+F4キー(ウィンドウを閉じる)、Altキー+Escキー(複数のアプリケーションの切り替え)、Homeキー(先頭にジャンプ)、Endキー(末行にジャンプ)、F1キー(ヘルプを呼び出す)、Ctrlキー+Sキー(上書き保存)、Windowsキー+Rキー(ファイル名を指定して実行)、Windowsキー+Mキー(すべてのウィンドウを最小化)、及び、Windowsキー+Dキー(すべてのウィンドウを元のサイズに戻す)など)に割り当てることもできる。
 なお、オペレーティングシステム300のために用意されたキー及びショートカットキーを、ジェスチャ1~13に割り当てることができる。また、アプリケーションプログラム100ごとに用意されたキー及びショートカットキーを、アプリケーションプログラム100ごとにジェスチャ1~13に割り当てることもできる。つまり、アプリケーションプログラム100ごとにジェスチャ1~13を割り当てることができ、ジェスチャ1~13により実行される機能は、アプリケーションプログラム100ごとに異なってもよい。
 また、複数のアプリケーションプログラム100が起動している場合に、フォアグラウンド(最前面)のウィンドウに対応するアプリケーションプログラム100を認識して、そのアプリケーションプログラム100のために用意されたキー及びショートカットキーが割り当てられたジェスチャ1~13を有効とすることもできる。
 なお、ジェスチャ1~13にキーやショートカットキーが割り当てられる場合は、ジェスチャの検出が、それに割り当てられたキーないしはショートカットキーの押下に相当する。アプリケーションプログラム100が、あるキーないしはショートカットキーの押下というイベントの発生通知をウィンドウシステム400に依頼している場合、例えば、ウィンドウシステム400は、変換テーブルを参照して、検出されたジェスチャが、依頼されたキーないしはショートカットキーが割り当てられたものか否かを判断し、イベントの発生をアプリケーションプログラム100に通知する。変換テーブルは、ジェスチャ1~13と、キーないしはショートカットキーと、を関連付けたテーブルである。
 また、各ジェスチャ1~13を、各種システムコールないしはAPI(例えば、ブラウザの起動、ウィンドウの最大化、及び、ウィンドウの最小化など)に割り当て、対応するシステムコールないしはAPIを呼び出すために利用することもできる。
 さらに、各ジェスチャ1~13を各種実行ファイルないしはアプリケーションに割り当て、対応する実行ファイルないしはアプリケーションを実行するために利用することもできる。
 ここで、各ジェスチャ1~13に割り当てるキー、ショートカットキー、システムコールないしはAPI、及び、実行ファイルは、固定的に設定されていてもよいし、コンピュータシステム700のユーザによって登録(動的に変更)できるようにすることもできる。
 図27は、図1のウィンドウシステム400によるジェスチャ判定処理の流れの一例を示すフローチャートである。図27を参照して、ステップS100にて、ウィンドウシステム400は、ジェスチャ判定処理で必要な変数等(後述の変数CP,TL、及び、受付フラグ等)を初期化する。
 ステップS101にて、ウィンドウシステム400は、ステップS102~S105で検出されたジェスチャを示すフラグJFに00h(不定を意味)を代入する。ステップS102にて、ウィンドウシステム400は、ジェスチャ1~4のいずれかが実行されたか否かを判断する。この場合、ウィンドウシステム400は、ジェスチャ1が検出されたとき、フラグJFに10hを代入し、ジェスチャ2が検出されたとき、フラグJFに20hを代入し、ジェスチャ3が検出されたとき、フラグJFに30hを代入し、ジェスチャ4が検出されたとき、フラグJFに40hを代入する。
 ステップS103にて、ウィンドウシステム400は、今回のフラグSH及び前回のフラグSHを参照して(図10~図12参照)、ジェスチャ5~10のいずれかが実行されたか否かを判断する。この場合、ウィンドウシステム400は、ジェスチャ5が検出されたとき、フラグJFに50hを代入し、ジェスチャ6が検出されたとき、フラグJFに60hを代入し、ジェスチャ7が検出されたとき、フラグJFに70hを代入し、ジェスチャ8が検出されたとき、フラグJFに80hを代入し、ジェスチャ9が検出されたとき、フラグJFに90hを代入し、ジェスチャ10が検出されたとき、フラグJFにA0hを代入する。
 ステップS104にて、ウィンドウシステム400は、掩蔽フラグを参照して(図5参照)、ジェスチャ11が実行されたか否かを判断する。この場合、ウィンドウシステム400は、ジェスチャ11が検出されたとき、フラグJFにB0hを代入する。
 ステップS105にて、ウィンドウシステム400は、現在及び過去の手の重心座標(Xg,Yg)に基づいて、手の移動軌跡を算出し、ジェスチャ12が実行されたと判断したときはフラグJFにC0hを代入し、ジェスチャ13が実行されたと判断したときはフラグJFにD0hを代入する。
 ステップS106にて、ウィンドウシステム400は、フラグJFの値を、ジェスチャフラグFFに代入して、ステップS101に進む。ウィンドウシステム400は、イメージセンサ5が1フレームの差分画像を出力するたびに、ジェスチャフラグFFを見て、アプリケーションプログラム100から依頼されたイベントの発生の有無を確認する。なお、ウィンドウシステム400は、イメージセンサ5が1フレームの差分画像を出力するたびに、ステップS101~S106を繰り返す。
 なお、図27の処理は、ウィンドウシステム400以外のプログラムが行ってもよい。
 図28及び図29は、図27のステップS102のジェスチャ1~4の判定処理の流れの一例を示すフローチャートである。図28を参照して、ステップS110にて、ウィンドウシステム400は、受付フラグがオンか否かを判断し、オフの場合ステップS111に進み、オンの場合図29のステップS120に進む。受付フラグは、手の形状が一定時間連続して「パー」であるときにオンにされるフラグである。
 ステップS111にて、ウィンドウシステム400は、フラグSHを取得する。ステップS112にて、ウィンドウシステム400は、フラグSHの値が10h(手の形状がパー)か否かを判断し、10hの場合ステップS113に進み、それ以外はステップS116に進む。ステップS116では、ウィンドウシステム400は、カウンタCPに0を代入する。カウンタCPは、フラグSHの値が10hである状態(パーの状態)が連続して発生した回数を示す。
 一方、ステップS113では、ウィンドウシステム400は、カウンタCPを1つインクリメントする。ステップS114にて、ウィンドウシステム400は、カウンタCPの値が所定値PTより大きいか否かを判断し、大きい場合ステップS115に進み、それ以外はステップS117に進む。ステップS115では、ウィンドウシステム400は受付フラグをオンにする。一方、ステップS117では、ウィンドウシステム400は、受付フラグをオフにする。
 図29を参照して、図28のステップS110での肯定判断の後、ステップS120では、ウィンドウシステム400は、カウンタTLを1つインクリメントする。カウンタTLは、受付フラグがオンになってからの経過時間を示す。ステップS122にて、ウィンドウシステム400は、カウンタTLの値が所定値LLより大きいか否かを判断し、大きい場合ステップS124に進み、それ以外はステップS128に進む。ステップS124では、ウィンドウシステム400は、受付フラグをオフにする。ステップS126にて、ウィンドウシステム400は、カウンタTLに0を代入してリターンする。
 一方、ステップS122で否定判断の後、ステップS128にて、ウィンドウシステム400は、手の重心(Xg,Yg)のX方向の速度Vxを算出する。ステップS130にて、ウィンドウシステム400は、速度Vxが所定値NSより小さいか否かを判断し、小さい場合X方向の動きはノイズ(ユーザが意図しない、手の小さなぶれ等)とみなしステップS142に進み、それ以外はステップS132に進む。ステップS132にて、ウィンドウシステム400は、所定フレーム数fnにおける速度Vxの平均値VxAを算出する。なお、この場合のフレームは、イメージセンサ5が差分画像を出力する周期を示す。
 ステップS134にて、ウィンドウシステム400は、平均値VxAが所定値THVより大きいか否かを判断し、大きい場合ステップS136に進み、それ以外はX方向の動きはノイズとみなし(つまりユーザが意図しない動きとみなし)ステップS142に進む。ステップS134によって、ユーザが意図しない比較的大きな動きをノイズとして排除できる。つまり、大きな動きの後、小さな動きが続く場合、このような動きはノイズと判断するほうが適切であるところ、このような場合は、平均値VxAが小さくなるので、このような動きをノイズとして排除できる。
 ステップS136では、ウィンドウシステム400は、速度Vxの方向を判断し、水平左方向を向いている場合ステップS138に進み、水平右方向を向いている場合ステップS140に進む。
 ステップS138では、ウィンドウシステム400は、フラグJFに、ジェスチャ1を示す10hを代入してリターンする。一方、ステップS140では、ウィンドウシステム400は、フラグJFに、ジェスチャ2を示す20hを代入してリターンする。
 さて、ステップS142にて、ウィンドウシステム400は、手の重心(Xg,Yg)のY方向の速度Vyを算出する。ステップS144にて、ウィンドウシステム400は、速度Vyが所定値NSより小さいか否かを判断し、小さい場合Y方向の動きはノイズ(ユーザが意図しない、手の小さなぶれ等)とみなしリターンし、それ以外はステップS146に進む。ステップS146にて、ウィンドウシステム400は、所定フレーム数fnにおける速度Vyの平均値VyAを算出する。なお、この場合のフレームは、イメージセンサ5が差分画像を出力する周期を示す。
 ステップS148にて、ウィンドウシステム400は、平均値VyAが所定値THVより大きいか否かを判断し、大きい場合ステップS150に進み、それ以外はY方向の動きはノイズとみなし(つまりユーザが意図しない動きとみなし)リターンする。ステップS148によって、ユーザが意図しない比較的大きな動きをノイズとして排除できる。この点はステップS134と同様である。ステップS150では、ウィンドウシステム400は、速度Vyの方向を判断し、垂直上方向を向いている場合ステップS152に進み、垂直下方向を向いている場合ステップS154に進む。
 ステップS152では、ウィンドウシステム400は、フラグJFに、ジェスチャ3を示す30hを代入してリターンする。一方、ステップS154では、ウィンドウシステム400は、フラグJFに、ジェスチャ4を示す20hを代入してリターンする。
 上記のように、受付フラグがオンになった後、つまり、「パー」の状態が一定時間継続した後、手の重心の左移動、右移動、上移動、及び下移動を判断する。これにより、ユーザが意図しない動きが有効なジェスチャと認識されるのを防止できる。
 例えば、受付フラグを設けずに、重心の左移動が発生したときに、ジェスチャ1が行われたと認識し、右移動が発生したときに、ジェスチャ2が行われたと認識することを想定する。一般に、手をスイングする際、ある程度移動したら、スイング動作を停止するところ、それによって、手がぶれることも多い。この場合、本来のスイング方向と逆方向に手がぶれることも多い。また、スイング後に、無意識に手を元に戻す(逆スイングする)こともある。
 従って、手が左移動してジェスチャ1が行われたと判断した後、すぐに、逆方向のスイングが検出されることもあり、それがジェスチャ2と判断されてしまう。この場合、ジェスチャ2は、ユーザが意図しない入力である。
 本実施の形態のように、ユーザが、「パー」の状態を一定時間継続させて、特定のジェスチャを行う意思表示を行なった後、特定のジェスチャ(手の移動)の有無を判断すれば、このような逆方向のスイングが有効なジェスチャと判断されることはない。
 なお、図29では、水平移動のジェスチャ(ジェスチャ1,2)と垂直移動のジェスチャ(ジェスチャ3,4)とを選択的に判断し、双方が検出されることはなかった。ただし、双方を判断して、双方を検出することもできる。
 さて、以上のように、本実施の形態によれば、アプリケーションプログラム100等の各アプリケーションプログラムは、モーションセンサ600により検出されたユーザの手の情報によって、それぞれに割り当てられたウィンドウを制御できる。つまり、三次元空間中で動かされるユーザの手をモーションセンサ600により撮影し、撮影画像からの検出結果に基づいて、非接触でマルチウィンドウを操作できる。その結果、接触型ポインティングデバイスを使用する場合と比較して、多彩な入力を行なうことができ、マルチウィンドウの操作において、ユーザに快適な操作性を提供できる。
 「多彩な入力」とは、上記例では、手の形状(グー、チョキ、パー、一本指、)、手の形状の変化(図3(b)参照)、手の面積(イメージセンサ5と手との間の距離に相関)、及び、指先の位置ないしは移動である。接触型ポインティングデバイスでは、これら全てを入力することはできない。逆に、本実施の形態では、接触型ポインティングデバイスと同等の機能を包含できる。例えば、カーソルを指先の動きに追従させ、かつ、マウスボタンの操作を擬似的なボタン操作に対応させることにより(図3(b)参照)、マウスと同等の機能を包含できる。
 このように、モーションセンサ600は、ジェスチャコントロールデバイスとしても機能するし、ポインティングデバイスとしても機能する。従って、ウィンドウの制御内容によって、ジェスチャコントロール機能とポインティングデバイス機能とを使い分けることができ、ユーザの操作性を最適化できる。
 また、モーションセンサ600が差分画像を解析して手を検出するので、このような処理をCPU51は行なう必要がなく、その処理負荷を軽減でき、また、CPU51上で動作するコンピュータプログラムのプログラマは、手を検出するためのプログラムを作成する必要がなく、その負担を軽減できる。つまり、コンピュータシステム700に簡易にモーションセンサ600を搭載できる。
 また、本実施の形態では、ウィンドウシステム400は、モーションセンサ600が検出したユーザの指先の位置に対応するモニタ67の画面上の位置にカーソルを表示する。つまり、ユーザは、三次元空間中で手を動かしながら、非接触で、カーソルを操作できる。
 さらに、本実施の形態では、ウィンドウシステム400は、モーションセンサ600が検出したユーザの手の情報に基づいて、アプリケーションプログラム100から依頼されたイベントが発生したか否かを監視し、イベントが発生した場合に、依頼主であるアプリケーションプログラム100に、イベントの発生を通知する。従って、アプリケーションプログラム100をイベント駆動型プログラムとして作成することができ、ウィンドウの制御に好適である。
 さらに、本実施の形態では、ユーザは、1本指を立てた状態から、もう一本の指を立てて2本指を立てた状態にするだけで、擬似的にボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる(図3(b)の第1の例)。
 また、擬似的なボタン操作の前後において、常に1本の指は撮影されるので、その指先に対応する画面上の位置にカーソルを表示でき、ポインティングと擬似的なボタン操作を片手で行なうことができる(図3(b)の第1の例)。
 また、本実施の形態によれば、ユーザは、2本指を立てた状態から、もう一本の指を閉じて1本指を立てた状態にするだけで、擬似的にボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる(図3(b)の第2の例)。
 また、擬似的なボタン操作の前後において、常に1本の指は撮影されるので、その指先に対応する画面上の位置にカーソルを表示でき、ポインティングと擬似的なボタン操作を片手で行なうことができる(図3(b)の第2の例)。
 さらに、本実施の形態によれば、ユーザは、2本の指の指先を近づけるだけで、擬似的にボタン操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、擬似的にボタン操作を行なうことができる(図3(b)の第3の例)。
 また、検出された2つの指先の間(例えば中点)にカーソルを表示することができ、ポインティングと擬似的なボタン操作を片手で行なうことができる(図3(b)の第3の例)。
 さらに、本実施の形態によれば、ユーザは、三次元空間中で、1本指を立てた状態から、その指を折って、再び、元の立てた状態に戻すというジェスチャを行なうだけで、非接触のクリック操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、クリック操作を行なうことができる(図23(a)の第4の例)。
 このような人のジェスチャでは、指が曲げられた後、指先が、ほぼ元の位置に戻ることが、本願発明者の実験により検証されている。このため、このようなジェスチャを検出することにより、クリック操作が行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できる。
 さらに、本実施の形態によれば、ユーザは、三次元空間中で、1本指を立てた状態から、その指を折って、再び、元の立てた状態に戻し、さらに、再び、その指を折って、再び、元の立てた状態に戻すというジェスチャを行なうだけで、つまり、シングルクリック操作のためのジェスチャを2回行なうだけで、非接触のダブルクリック操作を行なうことができる。このように、ユーザにとって容易なジェスチャにより、ダブルクリック操作を行なうことができる(図23(b)の第4の例)。
 このようなダブルクリック操作は、シングルクリック操作を2回行うものであるところ、折り曲げられた指先は、2回とも、ほぼ同じ位置に戻ってくることが、本願発明者の実験により検証されている。このため、このようなジェスチャを検出することにより、ダブルクリック操作が行なわれたか否かを、安定して、かつ、確実に、つまり、高い再現性をもって、判断できる。
 また、本実施の形態では、MCU3は、指先50の動きが一定範囲DIS内に収まっている場合に(図24のステップS1208及びS1212で肯定判断)、ユーザがクリック操作(シングルクリック又はダブルクリック)を行なうことを意図しているとみなし、矩形範囲52を設定し(図24のステップS1216)、これをトリガとして、ユーザがクリック操作に対応するジェスチャを行ったか否かを判定できる。このため、ユーザが当該ジェスチャを行なったか否かを、常に判定する必要がなく、処理負荷を軽減できる。
 さらに、MCU3は、矩形範囲52が設定されてから所定時間TC内に、指先50が矩形範囲52から消失したと判断しない場合(図25のステップS1254)、又は、矩形範囲52に指先が出現したと判断しない場合(図25のステップS1262)、滞在フラグをオフにして、矩形範囲52を解除する(図25のステップS1284)。
 このように、所定時間TC内に、指先50が矩形範囲52から消失したと判断しない場合、又は、矩形範囲52に指先が出現したと判断しない場合、ユーザがクリック操作(シングルクリック又はダブルクリック)を行なうことを意図していないとみなして、ユーザの意図に反してクリック操作が行なわれたと判定されることを防止できる。つまり、一般にクリック操作は素早く行なわれるところ、所定時間TCを適切に設定することにより、同一の動きであっても、クリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 さらに、本実施の形態によれば、輪郭から大体の指先を決定し(図11のステップS373,S375、図13のステップS445)、その周囲画素のみを用いて補正を行なうので(図14(a)~図14(d))、処理のための記憶容量の削減と処理速度の向上を図ることができる。
 また、補正が小数点精度で実行されるので、イメージセンサ5が比較的低解像度であっても、高精度で指先の位置を決定することができる。その結果、イメージセンサ5より高解像度のモニタ67の画面上の、指先に対応する位置にカーソルを表示する場合でも、その動きを滑らかにすることができる。
 さらに、周囲画素の画素値により、補正を行なうので、補正後の指先を、輪郭線上ではなく、指の内部の位置に決定でき、ユーザが指先と認識する位置により近づけることができる。その結果、指先に対応するモニタ67の画面上の位置にカーソルを表示する場合、ユーザにとって、指先によるカーソルの制御が容易になる。なお、一般に、人は、指の腹を向けて、指を動かすときは、指の輪郭線上の凸点を指先と認識せず、指先端部の指の腹(finger pad)の中心を指先と認識するものである。
 さらに、本実施の形態では、補正後の指先の位置が、周囲画素の範囲(9×9画素の範囲)を超えるように、補正を行う。このため、補正後の指先の位置を指先端部の指の腹の一定位置あるいは略一定位置に決定することができ、図11のステップS373,S375、及び図13のステップS445により検出された指先の位置が安定していない場合でも、補正後の指先の位置を極力一定させ、あるいは、指先の位置の相違を極力小さい範囲に収めることができる。その結果、指先に対応するモニタ67の画面上の位置にカーソルを表示する場合、カーソルを安定化できる。
 また、補正後の指先を、ユーザが指先と認識する位置により一層近づけることができる。その結果、指先に対応するモニタ67の画面上の位置にカーソルを表示する場合、ユーザにとって、指先によるカーソルの制御が一層容易になる。
 さらに、本実施の形態では、指先画素P4と指先画素P4の斜め方向に位置する周囲画素(P0,P2,P6,P8)との間の距離と、指先画素P4と指先画素P4の水平方向又は垂直方向に位置する周囲画素(P1,P3,P5,P7)との間の距離と、が等しくなるように、周囲画素(P0,P2,P6,P8)の座標を定義する(図18(a)参照)。その結果、重みとして画素値を利用するに当って、全周囲画素の画素値が均等に扱われ、方向によって偏りのない補正を行なうことができる。
 さらに、本実施の形態によれば、CPU51は、被写体の形状(グー、チョキ、パー、1本指)を入力とした情報処理を実行することができる。
 さらに、本実施の形態によれば、指先と水かきとの間の画素に基づいて指を特定し(図9のステップS257及びS259、図17参照)、輪郭画像の重心により指を特定しないので、重心により指を特定する場合と比較して、精度良く指を特定でき(図9)、ひいてはより精度良く手の形状を判定できる(図10、図11)。一般に、輪郭画像の重心と、被写体の重心と、は一致しない場合も多く、この場合に、重心により指を特定すると、認識の精度が低くなる。
 また、指先と水かきとの間の画素に基づいて得られた、隣り合う指と指とがなす角度だけでなく、重心から指先に相当する画素までの距離に基づいて、手の形状を判断するので(図11のステップS345~S351)、より多様な手の形状を判定できる(図11)。例えば、手の形状が「チョキ」であることを判定できる。
 また、重心から輪郭線上の画素までの距離を求めるといった簡単な計算で(図8のステップS203)、手の形状を判定できる(図12)。例えば、重心から輪郭線上の画素までの距離が、一定範囲内の場合に、手の形状が「グー」であることを判定できる。
 さらに、本実施の形態によれば、図9のステップS275の結果だけに基づいて、検出された指先の数を判断するのではなく、さらに、重心座標(Xg,Yg)と凸点(図6のステップS33)の画素Pjの座標との間の距離Dを加味して(図13のステップS427,S441)、指が1本だけ立っている状態か否かを判定する。このため、より精度よく、指が1本だけ立っている状態を検出できる。
 さらに、本実施の形態によれば、画像上の被写体の面積は(図8のステップS213)、イメージセンサ5と被写体との間の距離に相関するので、面積により、イメージセンサ5と被写体との間の距離を容易に判断できる。
 図30は、本発明の実施の形態の変形例によるコンピュータシステムの階層図である。なお、図1と同様の部分については、同じ参照符号を付して適宜説明を省略する。図30を参照して、変形例によるコンピュータシステムは、オペレーティングシステム300により管理される。オペレーティングシステム300のウィンドウシステム400は、オペレーティングシステム300上で並行して動作する複数のアプリケーションプログラム100にそれぞれ固有のウィンドウを割り当て制御する。また、ウィンドウシステム400は、モニタ67の画面に表示するカーソルを制御する。
 ミドルウェア250は、オペレーティングシステム300上で動作し、オペレーティングシステム300にない特定の機能を、各アプリケーションプログラム100に提供する。例えば、この特定の機能は、モーションセンサ600が検出したユーザの手の情報に基づきウィンドウを制御するための機能である。より具体的な例を挙げると、この特定の機能は、モーションセンサ600が検出したユーザの手の位置情報に基づき、速度及び/又は方向を算出する機能である。例えば、この特定の機能は、モーションセンサ600が検出したユーザの手の位置情報に基づき、所定の軌跡を描いたか否かを判断する機能である。例えば、この特定の機能は、手の面積が一定値以上になったか否かを判断する機能である。例えば、手の回転角度を算出する機能である。例えば、手の加速度を算出する機能である。例えば、手の形状の所定の変化(例えば「パー」から「グー」への変化)を検出する機能である。
 また、ミドルウェア250は、ウィンドウシステム400の代わりに、図27~図29の処理を実行することもできる。
 なお、ミドルウェア250は、これら機能の結果をイベントの発生として、アプリケーションプログラム100に通知することもできる。また、ミドルウェア250は、オペレーティングシステム300から、モーションセンサ600が検出したユーザの手の情報を取得する。
 以上のように、変形例では、マウス等の接触型ポインティングデバイスで入力できる操作又はイベントはもちろん、接触型ポインティングデバイスでは入力することができない操作又はイベントをも入力できる。従って、各アプリケーションプログラム100は、多彩な入力又はイベントに応じた処理(ウィンドウの制御を含む。)を実行することができる。
 また、各アプリケーションプログラム100は、API200(図30では図示省略)を介して、ウィンドウシステム400の機能を利用でき、割り当てられたウィンドウを制御する。この点は、図1の場合と同じである。なお、ミドルウェア250の特定の機能は、API200を介して、各アプリケーションプログラム100に提供されてもよい。
 なお、変形例によるコンピュータシステムの電気的構成は、図2(a)及び図2(b)に示したものと同じである。また、変形例は、上記実施の形態のコンピュータシステム700と同様の技術的特徴を有するので、コンピュータシステム700と同様の効果を有する。
 なお、本発明は、上記の実施の形態に限られるものではなく、その要旨を逸脱しない範囲で種々の態様において実施することが可能であり、例えば、以下のような変形も可能である。
 (1)上記では、「グー」、「チョキ」、「パー」、及び「1本指」の形状を認識したが、これに限定されない。
 (2)モーションセンサ600は、赤外発光ダイオード9を搭載した。しかし、赤外発光ダイオード9は必須ではない。赤外発光ダイオード9を搭載しない場合、イメージセンサ5は、露光時画像のみを出力し、MCU3は、その画像を処理する。この場合、差分処理は実行されない。
 (3)上記では、指先画素P4を原点(0,0)として、周囲画素の座標値を設定し、補正値(Xc,Yc)を算出し、それを指先画素P4の座標(Xb,Yb)に加算することで、補正座標(Xf,Yf)を得た(図18(a)及び図18(b))。ただし、図14の第1~第4の例の各式で使用する座標の原点は、これに限定されない。例えば、図11のステップS373,S375、及び図13のステップS445で求められた座標を、そのまま、指先画素P4の座標として使用して、周囲画素の座標を定め、補正座標(Xf,Yf)を求めることもできる。この場合は、図14(a)~図14(d)の各ステップで得られた値(Xc,Yc)が、補正座標(Xf,Yf)そのものであり、加算は不要である。
 (4)上記では、ポインティングデバイスとして、モーションセンサ600のみを搭載した。ただし、マウス等の他のポインティングデバイスと併用することもできる。これにより、モーションセンサ600及びマウス等の他のポインティングデバイスのそれぞれの利点を活かすことができる。
 (5)上記例では、モーションセンサ600が検出する手の情報は、手の形状、手の形状の変化、手の面積、手の移動、手の移動軌跡、及び、指先の位置ないしは移動であった。ただし、モーションセンサ600が検出する手の情報は、これらに限定されない。例えば、モーションセンサ600によって検出されるユーザの手の情報は、手の動き(例えば、手の回転、指先の動き)、手の速度、及び/又は、手の加速度であってもよい。手の回転とは、例えば、手首を軸として、時計回り及び/又は反時計回りに、手を回転させる動作である。この場合、例えば、あたかも実際のダイヤルを握っているかのような手をして、手を回転させる。
 また、モーションセンサ600が検出する手の動き、手の位置、手の移動、手の移動軌跡、手の速度、および、手の加速度は、手自体の動き、位置、移動、移動軌跡、速度、および、加速度のみを意味するのではなく、手の指先の動き、位置、移動、移動軌跡、速度、および、加速度を含む概念である。また、この場合、指先は、一本の指に限らず、複数本の指の指先を含んでよい。さらに、手は、片手であってもよいし、両手であってもよい。
 なお、ユーザの手の形状、手の形状の変化、手の面積、手の動き、手の位置、手の移動、手の移動軌跡、手の速度、および、手の加速度は、総称して、ジェスチャと呼ぶこともできる。
 (6)図1及び図30では、ウィンドウシステム400は、オペレーティングシステム300に含まれていたが、オペレーティングシステム300上で動作するプログラムと考えることもできる。また、デバイスドライバ500は、オペレーティングシステム300に含まれていないが、オペレーティングシステム300に含まれる機能と考えることもできる。
 (7)CPU51が、モーションセンサ600をマウスとして認識するように、モーションセンサ600内の情報設定を行なうこともできる。つまり、CPU51に、モーションセンサ600をマウスとして認識させるのである。この場合、指先の水平方向(X軸方向)及び垂直方向(Y軸方向)の移動量が、それぞれ、マウスの水平方向(X軸方向)及び垂直方向(Y軸方向)の移動量に対応し、擬似的なボタン操作が、マウスボタンの押下に対応する。この場合は、マウスと同等の入力操作以外の、モーションセンサ600特有の入力に関しては、変形例によるミドルウェア250により対応する。
 (8)図23(a)の第4の例では、所定時間TC内に、シングルクリック操作に対応するジェスチャが検出されない場合は、矩形範囲52が解除されシングルクリック操作判定がリセットされた(図25のステップS1284)。
 ただし、MCU3が、指先50が矩形範囲52から消失したと判断した後(ステップS1254で肯定判断)の所定時間TC2内に、指先50が矩形範囲52に出現したと判断しない場合、矩形範囲52を解除し、シングルクリック操作判定をリセットしてもよい。なお、MCU3が、矩形範囲52設定後所定時間TC内に、指先50が矩形範囲52から消失したと判断しない場合に、矩形範囲52を解除する点は、図25と同じである。
 このように、所定時間TC2内に、MCU3が、指先50が矩形範囲52に出現したと判断しない場合、ユーザがクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してクリック操作が行なわれたと判定されることを防止できる。つまり、一般にクリック操作は素早く行なわれるところ、所定時間TC2を適切に設定することにより、同一の動きであっても、クリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 また、図23(b)の第4の例では、所定時間TC内に、ダブルクリック操作に対応するジェスチャが検出されない場合は、ダブルクリック操作判定がリセットされた(図25のステップS1284)。
 ただし、仮クリックフラグがオンになった後において、MCU3が、指先50が矩形範囲52から消失したと判断した後の所定時間TC3内に、指先50が矩形範囲52に出現したと判断しない場合、矩形範囲52を解除し、ダブルクリック操作判定をリセットしてもよい。なお、仮クリックフラグがオンになった後において、MCU3が、矩形範囲52の設定後所定時間TC内に、指先50が矩形範囲52から消失したと判断しない場合に、矩形範囲52を解除する点は、図25と同じである。また、仮クリックフラグがオンになるまでの判定(シングルクリックの判定)は図25又は上記変形と同じである。
 このように、所定時間TC3内に、MCU3が、指先50が矩形範囲52に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、所定時間TC3を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 また、MCU3が、指先50が矩形範囲に出現したと判断してから、つまり、仮クリックフラグをオンにしてから所定時間TC4内に、指先50が矩形範囲52から消失したと判断しない場合、矩形範囲52を解除し、ダブルクリック操作判定をリセットしてもよい。なお、仮クリックフラグがオンになるまでの判定(シングルクリックの判定)は図25又は上記変形と同じである。
 このように、所定時間TC4内に、MCU3が、指先50が矩形範囲52から消失したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、所定時間TC4を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 さらに、この場合、MCU3が、仮クリックフラグをオンにしてから所定時間TC4内に、指先50の消失の後、再び指先50が矩形範囲52に出現したと判断しない場合、矩形範囲52を解除し、ダブルクリック操作判定をリセットしてもよい。
 このように、所定時間TC4内に、MCU3が、指先50が矩形範囲52に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、所定時間TC4を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 また、このような判定に代えて、MCU3が、仮クリックフラグをオンにしてから所定時間TC4内の指先50の消失の後の所定時間TC5内に、指先50が矩形範囲52に出現したと判断しない場合、矩形範囲52を解除し、ダブルクリック操作判定をリセットすることもできる。
 このように、所定時間TC5内に、MCU3が、指先50が矩形範囲52に出現したと判断しない場合、ユーザがダブルクリック操作を行なうことを意図していないとみなして、ユーザの意図に反してダブルクリック操作が行なわれたと判定されることを防止できる。つまり、一般にダブルクリック操作は素早く行なわれるところ、所定時間TC5を適切に設定することにより、同一の動きであっても、ダブルクリック操作を意図したジェスチャ以外の動きを除外して、誤判定を防止できる。
 ここで、上記の所定時間TC2~TC5は、実験及び試行錯誤等により決定される。
 (9)ジェスチャによるコントロールは、特に、プレゼンテーション用のアプリケーションプログラム100が表示するウィンドウのコントロールに有効である。なぜなら、一般に、プレゼンテーションを行う人は、端末から離れてプレゼンテーションを行う場合も多いからである。
 (10)上記では、モーションセンサ600によるマルチウィンドウの制御に焦点を当てて説明した。ただし、本発明が、マルチウィンドウの制御に限定されないことは言うまでもない。つまり、モーションセンサ600のジェスチャコントロール機能とポインティングデバイス機能とを、1つのウィンドウ(アプリケーションプログラム100)を制御するために使用することもできる。この場合も、ジェスチャコントロール機能とポインティングデバイス機能とを制御内容に応じて使い分けて、マルチウィンドウの制御と同様に、ユーザに快適な操作性を提供できる。
 (11)上記では、イメージセンサ5が差分画像を生成した。ただし、MCU3が、赤外光発光時画像と非発光時画像との差分画像を生成することもできる。この場合、イメージセンサ5及びMCU3を、撮影装置と呼ぶこともできる。もちろん、上記実施の形態において、イメージセンサ5及びMCU3を、撮影装置と呼ぶこともできる。
 (12)MCU3が行なう処理の全部又は一部をCPU51が行なうこともできるし、逆に、CPU51が行なう処理の全部又は一部をMCU3が行うこともできる。要するに、どちらがどの処理を行なうかは、仕様に応じて、任意に決定できる。例えば、イメージセンサ5が生成した差分画像を、CPU51に渡し、CPU51が、画像解析を行って、手の検出等を行ってもよい。
 (13)MCU3に各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、また、並列的あるいは個別に実行される処理も含むものである。
 (14)本明細書及び請求の範囲において、手段とは必ずしも物理的手段を意味するものではなく、各手段の機能がソフトウェアによって実現される場合も含む。さらに、1つの手段の機能が2つ以上の物理的手段により実現されても、もしくは2つ以上の手段の機能が1つの物理的手段により実現されてもよい。
 本発明は、表示装置にカーソルを表示してポインティングを行なうポインティングデバイスの分野に利用可能である。
 また、本発明は、画像解析により指先を検出する画像解析の分野に利用可能である。
 さらに、本発明は、マルチウィンドウを操作するためのポインティングデバイスを必要とするコンピュータの分野に利用可能である。
3…MCU、5…イメージセンサ、7…メモリ、9…赤外発光ダイオード、50…コンピュータ、51…CPU、53…メインメモリ、55…チップセット、57…GPU、59…SPU、61…HDD、63…ドライブ、65…通信部、67…モニタ、69…スピーカ、71…キーボード、75…リムーバブル記録媒体、100…アプリケーションプログラム、200…アプリケーションプログラムインタフェース(API)、250…ミドルウェア、300…オペレーティングシステム、400…ウィンドウシステム、500…デバイスドライバ、600…モーションセンサ。
 以上、本発明を実施例により詳細に説明したが、当業者にとっては、本発明が本願中に説明した実施例に限定されるものではないということは明らかである。本発明は、特許請求の範囲の記載により定まる本発明の趣旨及び範囲を逸脱することなく修正及び変更態様として実施することができる。

Claims (23)

  1.  三次元空間中で動かされるユーザの手を撮影する撮影手段と、
     撮影により得られた画像から、前記ユーザの指先に相当する部分を検出する検出手段と、
     検出された前記指先に相当する部分を含む所定範囲を設定する設定手段と、
     前記設定手段が、前記所定範囲を設定した後、前記指先に相当する部分が消失したか否かを判断する第1判断手段と、
     前記第1判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断する第2判断手段と、
     前記第2判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、クリック操作が行なわれたと判定する判定手段と、を備える操作判定装置。
  2.  前記設定手段は、検出された前記指先に相当する部分の動きが一定範囲内に収まっている場合に、前記所定範囲を設定する、請求項1記載の操作判定装置。
     この構成によれば、前記指先に相当する部分の動きが一定範囲内に収まっている場合に、ユーザがクリック操作を行なうことを意図しているとみなし、所定範囲を設定し、これをトリガとして、ユーザがクリック操作に対応するジェスチャを行ったか否かを判定できる。このため、ユーザが当該ジェスチャを行なったか否かを、常に判定する必要がなく、処理負荷を軽減できる。
  3.  前記設定手段は、前記所定範囲が設定されてから第1所定時間内に、前記第1判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する、請求項1又は2記載の操作判定装置。
  4.  前記設定手段は、前記所定範囲が設定されてから前記第1所定時間内に、前記第2判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項3記載の操作判定装置。
  5.  前記設定手段は、前記第1判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第2所定時間内に、前記第2判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項3記載の操作判定装置。
  6.  前記第2判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した後、前記指先に相当する部分が消失したか否かを判断する第3判断手段と、
     前記第3判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断する第4判断手段と、をさらに備え、
     前記判定手段は、前記第4判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、ダブルクリック操作が行なわれたと判定する、請求項1又は2記載の操作判定装置。
  7.  前記設定手段は、前記所定範囲が設定されてから前記第1所定時間内に、前記第3判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する、請求項6記載の操作判定装置。
  8.  前記設定手段は、前記所定範囲が設定されてから前記第1所定時間内に、前記第4判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項7記載の操作判定装置。
  9.  前記設定手段は、前記第3判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第3所定時間内に、前記第4判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項7記載の操作判定装置。
  10.  前記設定手段は、前記第2判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断してから、第4所定時間内に、前記第3判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断しない場合、前記所定範囲を解除する、請求項6記載の操作判定装置。
  11.  前記設定手段は、前記第4所定時間内に、前記第4判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項10記載の操作判定装置。
  12.  前記設定手段は、前記第3判断手段が、前記指先に相当する部分が前記所定範囲から消失したと判断した後、第5所定時間内に、前記第4判断手段が、前記指先に相当する部分が前記所定範囲に出現したと判断しない場合、前記所定範囲を解除する、請求項10記載の操作判定装置。
  13.  三次元空間中で動かされるユーザの手を撮影する撮影手段と、
     撮影により得られた画像から、前記ユーザの指に相当する部分を検出する検出手段と、
     今回前記ユーザの指に相当する部分が1つ検出された場合において、前回前記ユーザの指に相当する部分が2つ検出されていたとき、擬似的にボタン操作が行なわれたと判定する判定手段と、を備える操作判定装置。
  14.  三次元空間中で動かされるユーザの手を撮影する撮影手段と、
     撮影により得られた画像から、前記ユーザの指に相当する部分を検出する検出手段と、
     今回前記ユーザの指に相当する部分が2つ検出された場合において、前回前記ユーザの指に相当する部分が1つ検出されていたとき、擬似的にボタン操作が行なわれたと判定する判定手段と、を備える操作判定装置。
  15.  三次元空間中で動かされるユーザの手を撮影する撮影手段と、
     撮影により得られた画像から、前記ユーザの指先に相当する部分を検出する検出手段と、
     前記ユーザの指先に相当する部分が2つ検出された場合において、その2点間の距離が所定値より小さい場合に、擬似的にボタンが行なわれたと判定する判定手段と、を備える操作判定装置。
  16.  三次元空間中で動かされるユーザの手を撮影するステップと、
     撮影により得られた画像から、前記ユーザの指先に相当する部分を検出するステップと、
     検出された前記指先に相当する部分を含む所定範囲を設定するステップと、
     前記所定範囲を設定した後、前記指先に相当する部分が消失したか否かを判断するステップと、
     消失したか否かを判断する前記ステップが、前記指先に相当する部分が前記所定範囲から消失したと判断した後、前記指先に相当する部分が前記所定範囲に出現したか否かを判断するステップと、
     出現したか否かを判断する前記ステップが、前記指先に相当する部分が前記所定範囲に出現したと判断した場合に、クリック操作が行なわれたと判定するステップと、を含む操作判定方法。
  17.  三次元空間中で動かされるユーザの手を撮影するステップと、
     撮影により得られた画像から、前記ユーザの指に相当する部分を検出するステップと、
     今回前記ユーザの指に相当する部分が1つ検出された場合において、前回前記ユーザの指に相当する部分が2つ検出されていたとき、擬似的にボタン操作が行なわれたと判定するステップと、を含む操作判定方法。
  18.  三次元空間中で動かされるユーザの手を撮影するステップと、
     撮影により得られた画像から、前記ユーザの指に相当する部分を検出するステップと、
     今回前記ユーザの指に相当する部分が2つ検出された場合において、前回前記ユーザの指に相当する部分が1つ検出されていたとき、擬似的にボタン操作が行なわれたと判定するステップと、を含む操作判定方法。
  19.  三次元空間中で動かされるユーザの手を撮影するステップと、
     撮影により得られた画像から、前記ユーザの指先に相当する部分を検出するステップと、
     前記ユーザの指先に相当する部分が2つ検出された場合において、その2点間の距離が所定値より小さい場合に、擬似的にボタン操作が行なわれたと判定するステップと、を含む操作判定方法。
  20.  請求項16記載の操作判定方法をコンピュータに実行させるためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
  21.  請求項17記載の操作判定方法をコンピュータに実行させるためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
  22.  請求項18記載の操作判定方法をコンピュータに実行させるためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
  23.  請求項19記載の操作判定方法をコンピュータに実行させるためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体。
PCT/JP2011/069719 2010-09-01 2011-08-31 操作判定装置、操作判定方法、及び、操作判定プログラム WO2012029833A1 (ja)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
JP2010-195766 2010-09-01
JP2010195766 2010-09-01
JP2010195535 2010-09-01
JP2010-195535 2010-09-01
JP2010-203748 2010-09-10
JP2010203730A JP2012073658A (ja) 2010-09-01 2010-09-10 コンピュータシステム
JP2010-203730 2010-09-10
JP2010203748A JP2012073659A (ja) 2010-09-01 2010-09-10 操作判定装置、指先検出装置、操作判定方法、指先検出方法、操作判定プログラム、及び、指先検出プログラム

Publications (1)

Publication Number Publication Date
WO2012029833A1 true WO2012029833A1 (ja) 2012-03-08

Family

ID=45772911

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/069719 WO2012029833A1 (ja) 2010-09-01 2011-08-31 操作判定装置、操作判定方法、及び、操作判定プログラム

Country Status (1)

Country Link
WO (1) WO2012029833A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013200815A (ja) * 2012-03-26 2013-10-03 Yahoo Japan Corp 操作入力装置、操作入力方法、及び、プログラム
JP2013200784A (ja) * 2012-03-26 2013-10-03 Yahoo Japan Corp 操作入力装置、操作入力方法およびプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09146708A (ja) * 1995-11-09 1997-06-06 Internatl Business Mach Corp <Ibm> タッチパネルの駆動方法及びタッチ入力方法
JP2001228971A (ja) * 2000-02-15 2001-08-24 Newcom:Kk 複数の指示部位で操作可能なタッチパネルシステム
JP2002290529A (ja) * 2001-03-28 2002-10-04 Matsushita Electric Ind Co Ltd 携帯通信端末、情報表示装置、制御入力装置および制御入力方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09146708A (ja) * 1995-11-09 1997-06-06 Internatl Business Mach Corp <Ibm> タッチパネルの駆動方法及びタッチ入力方法
JP2001228971A (ja) * 2000-02-15 2001-08-24 Newcom:Kk 複数の指示部位で操作可能なタッチパネルシステム
JP2002290529A (ja) * 2001-03-28 2002-10-04 Matsushita Electric Ind Co Ltd 携帯通信端末、情報表示装置、制御入力装置および制御入力方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013200815A (ja) * 2012-03-26 2013-10-03 Yahoo Japan Corp 操作入力装置、操作入力方法、及び、プログラム
JP2013200784A (ja) * 2012-03-26 2013-10-03 Yahoo Japan Corp 操作入力装置、操作入力方法およびプログラム

Similar Documents

Publication Publication Date Title
JP2012073658A (ja) コンピュータシステム
US20210263593A1 (en) Hand gesture input for wearable system
US9218121B2 (en) Apparatus and method recognizing touch gesture
US8963963B2 (en) Video-based image control system
JP5275978B2 (ja) データ処理の制御
US6176782B1 (en) Motion-based command generation technology
US6624833B1 (en) Gesture-based input interface system with shadow detection
JP3114813B2 (ja) 情報入力方法
US20030048280A1 (en) Interactive environment using computer vision and touchscreens
EP2463751A2 (en) Gesture recognition apparatus, gesture recognition method, control program, and recording medium
JP2012073659A (ja) 操作判定装置、指先検出装置、操作判定方法、指先検出方法、操作判定プログラム、及び、指先検出プログラム
EP2613281A1 (en) Manipulation of virtual objects using enhanced interactive system
Leibe et al. Toward spontaneous interaction with the perceptive workbench
CN109550247A (zh) 游戏中虚拟场景调整方法、装置、电子设备及存储介质
CN108776544B (zh) 增强现实中的交互方法及装置、存储介质、电子设备
JP2011043876A (ja) 画像表示装置
CN107577415A (zh) 触摸操作响应方法及装置
CN107608550A (zh) 触摸操作响应方法及装置
CN112424739A (zh) 程序、电子装置和方法
CN107608551A (zh) 触摸操作响应方法及装置
WO2012015395A1 (en) System and method for remote touch detection
Osunkoya et al. Gesture-based human-computer-interaction using Kinect for windows mouse control and powerpoint presentation
WO2012029833A1 (ja) 操作判定装置、操作判定方法、及び、操作判定プログラム
JP2002055781A (ja) 情報処理装置及びその制御方法、コンピュータ可読メモリ
US20140111551A1 (en) Information-processing device, storage medium, information-processing method, and information-processing system

Legal Events

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

Ref document number: 11821848

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11821848

Country of ref document: EP

Kind code of ref document: A1