# Patent

## Title
System and method for gesture interface control

## Abstract

A method is provided in one example and includes generating a histogram associated with at least one object; receiving image data; comparing the image data to the histogram in order to determine if at least a portion of the image data corresponds to the histogram; identifying a pose associated with the object; and triggering an electronic command associated with the pose. In more particular embodiments, the image data is evaluated in order to analyze sequences of poses associated with a gesture that signals the electronic command to be performed.

## Background
TECHNICAL FIELD
This disclosure relates in general to the field of communications and, more particularly, to controlling a computer interface through gestures.
BACKGROUND
As a general proposition, hand gestures are natural, intuitive human communication tools. Human machine interfaces are growing in importance, as machines proliferate and as human-machine interaction becomes more sophisticated. Human-machine interaction protocols have been plagued by significant constraints, have been limited to lower dimensionality (e.g., in comparison to lifelike 3D), and have been rooted in mechanical instruments (e.g., keyboards and mice) that seem antiquated. While touch surfaces and trackpad devices have shown promise, hand gesture interfaces have simply not evolved. Optimizing and integrating hand gestures into 21st-century communication technology creates a significant challenge for system designers, device manufacturers, and engineering specialists alike.



BRIEF DESCRIPTION OF THE DRAWINGS
To provide a more complete understanding of the present disclosure and features and advantages thereof, reference is made to the following description, taken in conjunction with the accompanying figures, wherein like reference numerals represent like parts, in which:
FIG. 1 is a simplified schematic diagram illustrating a system for evaluating gesture activity in a videoconferencing environment in accordance with one embodiment of the present disclosure;
FIG. 2 is a simplified schematic diagram illustrating an image depicting specific areas to be analyzed in accordance with one embodiment of the present disclosure;
FIG. 3 is a simplified schematic diagram of an enlarged view of a hand from FIG. 2;
FIG. 4 is a simplified command/action chart to be utilized in accordance with one embodiment of the present disclosure; and
FIG. 5 is a simplified flow diagram illustrating potential operations associated with one embodiment of the present disclosure.



DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS OVERVIEW
A method is provided in one example and includes generating a histogram associated with at least one object; receiving image data; comparing the image data to the histogram in order to determine if at least a portion of the image data corresponds to the histogram; identifying a pose associated with the object; and triggering an electronic command associated with the pose. In more particular embodiments, the image data is evaluated in order to analyze sequences of poses associated with a gesture that signals the electronic command to be performed.
In specific implementations, a convexity analysis is used to determine the pose associated with the object. The object can be indicative of a hand of an individual participating in a communication session, and a geometric determination can be made about which portions of the image data reflect the hand. The geometric determination includes identifying contiguous regions of skin associated with the individual and included within the image data. In other implementations, the generating includes using a stencil that coincides with the object, and Hue-Saturation-Value (HSV) tuples of stencil regions are included within the histogram. In one example, three objects are identified within the image data, where a middle object of the three objects is eliminated and the remaining objects are evaluated with reference to the histogram.
Example Embodiments
Turning to FIG. 1, FIG. 1 is a simplified schematic diagram illustrating a system 10 for evaluating hand gestures to facilitate videoconferencing activities in accordance with one embodiment of the present disclosure. In a particular implementation, system 10 is representative of an architecture for conducting a videoconference over a network, where system 10 can interpret gestures made by individuals via a gesture interface control. System 10 includes two distinct communication systems that are represented as endpoints 12 and 13, which are provisioned in different geographic locations in this example. Endpoint 12 may include a display 14, a plurality of speakers 15, a camera element 16, and a video processing unit 17.
Endpoint 13 may similarly include a display 24, a plurality of speakers 25, a camera element 26, and a video processing unit 27. Additionally, each of endpoints 12 and 13 may include (or be coupled to) a respective server 20, 22, where servers 20, 22 foster communications over a network 18 between endpoints 12, 13. Each video processing unit 17, 27 may further include a respective processor 30a, 30b, a respective memory element 32a, 32b, a respective video encoder 34a, 34b, and a respective gesture module 36a, 36b. The function and operation of these elements is discussed in detail below.
In the context of a videoconference involving a participant 19 (present at endpoint 12) and a participant 29 (present at endpoint 13), either (or both) participant 19, 29 may seek to control computer functions via video processing unit 17, 27. As each participant 19 and 29 motions or moves, camera elements 16, 26 suitably capture these movements as video images to be interpreted. For example, each video processing unit 17, 27 is configured to evaluate the video images to determine if any commands have been issued by participant 19, 29. If commands have not been issued, then the video data would simply propagate along its intended path, and be delivered to the counterparty of this videoconference.
Before detailing additional capabilities of system 10, it is important understand (more generally) how gesture-based systems can optimize computer interactions. The goal of gesture recognition is to interpret human gestures via mathematical paradigms. Gestures can originate from any bodily motion or state; however, for purposes of convenience, many gestures can originate from the face or the hand. Gesture recognition can be seen as a way for computers to begin to understand human body language. Therefore, gesture recognition can be used as a framework for building a richer bridge between machines and humans. This stands in contrast to primitive text user interfaces or even graphical user interfaces, which confine the majority of the functional inputs to keyboard strikes and mouse clicks. Proper gesture recognition enables humans to interface with a machine and to interact naturally without leveraging mechanical devices. Using the concept of gesture recognition, it is possible to automatically direct computers to respond to commands. These gesture activities can make a conventional input device (e.g., a mouse or a keyboard) redundant.
Turning to the problematic issues present in many gesture and/or motion interface controls, typical hand gesture interfaces require specialized apparel (e.g., gloves, sleeves, or other transducers) to be worn by the user seeking to issue commands to an interface. More specifically, many interfaces force a participant to wear proprietary gear to enable hand pose recognition activities. Other systems may utilize a scheme for cursor movement based on the region of the video image in which a single bare hand is detected (at a range of up to a few feet). This would (theoretically) allow a participant to interact with computers in a crude manner; however, such architectures lack the robustness and intelligence to fully support intuitive, multifaceted interfaces that engender a full immersion of the user (seamlessly) into a machine environment.
In accordance with the teachings of the present disclosure, system 10 employs a gesture interface control methodology that effectively addresses the aforementioned issues. The components and protocols of system 10 can be configured to determine which commands a user is issuing by monitoring the positions of the user's hands. In particular configurations, there are three significant aspects of the protocol implemented by system 10, which collectively overcome problems that plague gesture control systems generally.
First, system 10 is configured to utilize any existing camera setup (e.g., a webcam, a laptop, a Telepresence setup, etc.) at any appropriate distance (e.g., ten feet or more) with an appropriate field of view. There is no need for specialized cameras or for high-performance video equipment to achieve the interpretation/recognition activities discussed herein. Hence, system 10 can provide an elegant solution that does not require the purchase of new audiovisual (AV) equipment.
Second, system 10 is configured to identify, track, and analyze data from one or more objects (e.g., the hand(s), the head, the face, the arms, etc.) and, further, to gather image data associated with each object. In one example embodiment, the objects tracked, identified, and analyzed by system 10 could be two bare hands and the related image data could be associated with each hand's current pose. As used herein in this Specification, the term ‘pose’ is meant to encompass any type of positioning, shaping, or current state of the object. Third, system 10 can utilize a robust and extendible library of electronic commands to facilitate control over all computer functionalities, over specifically designated functionalities, over proprietary functionalities, etc. This includes electronic commands within individual applications, software, hardware, soft buttons, etc. Hence, the components and protocols offer an individual a wide variety of different commands, which can maximize the user's control over the system.
Logistically, system 10 is configured to enable rich, multi-hand gesture interfaces with bare hands against arbitrary backgrounds. This can occur without the need for anything other than ambient visible light and a video camera. Moreover, an interpretation of precise hand poses offers a higher-fidelity control than other systems that bluntly attempt to interpret body positioning. System 10 is also readily tunable: allowing for a variety of settings with busy backgrounds in natural visible light. Before detailing additional operations associated with the present disclosure, some preliminary information is provided about the corresponding infrastructure of FIG. 1.
Displays 14, 24 are screens at which video data can be rendered for one or more end users. Note that as used herein in this Specification, the term ‘display’ is meant to connote any element that is capable of delivering image data (inclusive of video information), text, sound, audiovisual data, etc. to an end user. This would necessarily be inclusive of any panel, plasma element, television (which may be high-definition), monitor, computer interface, screen, Telepresence devices (inclusive of Telepresence boards, panels, screens, surfaces, etc.), or any other suitable element that is capable of delivering/rendering/projecting such information.
Speakers 15, 25 and camera elements 16, 26 are generally mounted around respective displays 14, 24. Camera elements 16, 26 could be wireless cameras, high-definition cameras, standard cameras, a webcam type of camera, or any other suitable camera device configured to capture image data. Similarly, any suitable audio reception mechanism can be provided to capture audio data at each location. In terms of their physical deployment, in one particular implementation, camera elements 16, 26 are digital cameras, which are mounted on the top (and at the center of) displays 14, 24. One camera can be mounted on each respective display 14, 24. Other camera arrangements and camera positioning are certainly within the broad scope of the present disclosure.
A respective participant 19, 29 may reside at each location for which a respective endpoint 12, 13 is provisioned. Endpoints 12 and 13 are representative of devices that can be used to facilitate data propagation. In one particular example, endpoints 12 and 13 represent videoconferencing endpoints, which can be used by individuals for virtually any communication purpose. It should be noted, however, that the broad term ‘endpoint’ can be inclusive of devices used to initiate a communication, such as any type of computer, a personal digital assistant (PDA), a laptop or electronic notebook, a cellular telephone, an iPhone, an IP phone, an iPad, a Google Droid, or any other device, component, element, or object capable of initiating or facilitating voice, audio, video, media, or data exchanges within system 10. Hence, video processing unit 17 can be readily provisioned in any such endpoint. Endpoints 12 and 13 may also be inclusive of a suitable interface to the human user, such as a microphone, a display, a keyboard or other terminal equipment. Endpoints 12 and 13 may also be any device that seeks to initiate a communication on behalf of another entity or element, such as a program, a database, or any other component, device, element, or object capable of initiating an exchange within system 10. Data, as used herein in this document, refers to any type of numeric, voice, video, media, or script data, or any type of source or object code, or any other suitable information in any appropriate format that may be communicated from one point to another.
Each endpoint 12, 13 can also be configured to include a receiving module, a transmitting module, a processor, a memory, a network interface, a call initiation and acceptance facility such as a dial pad, one or more speakers, one or more displays, etc. Any one or more of these items may be consolidated, combined, or eliminated entirely, or varied considerably, where those modifications may be made based on particular communication needs. In other embodiments, these audio and/or video features may be provided externally to these elements or included in some other proprietary device to achieve their intended functionality. Note that in one example, each endpoint 12, 13 can have internal structures (e.g., a processor, a memory element, a network interface, etc.) to facilitate the operations described herein. In still other embodiments, each endpoint 12, 13 may include any suitable algorithms, hardware, software, components, modules, interfaces, or objects that facilitate the operations thereof.
In regards to a physical infrastructure, camera element 16 can be configured to fasten to any edge (e.g., a top edge) of display 14 (e.g., a flat-screen high-definition (HD) television). Camera element 16 can be included as part of an integrated component (i.e., a single component, a proprietary element, a set-top box, etc.) that could include speakers 15 (e.g., an array microphone). Thus, all of these elements (camera element 16, speakers 15, etc.) can be combined and/or be suitably consolidated into an integrated component that rests on (or that is fixed to, or that is positioned near) display 14. Alternatively, each of these elements are separate devices that can be coupled (or simply interact with each other), and can be adequately positioned in any appropriate fashion.
Camera element 16 may interact with (or be inclusive of) devices used to initiate a communication for a video session, such as a switch, a proprietary endpoint, a microphone, a dial pad, a bridge, a telephone, a computer, or any other device, component, element, or object capable of initiating video, voice, audio, media, or data exchanges within system 10. Camera element 16 can also be configured to include a receiving module, a transmitting module, a processor, a memory, a network interface, a call initiation and acceptance facility such as a dial pad, one or more displays, etc. Any one or more of these items may be consolidated, combined, eliminated entirely, or varied considerably and those modifications may be made based on particular communication needs.
Camera element 16 can include a high-performance lens and an optical zoom, where camera element 16 is capable of performing panning and tilting operations. The video and the audio streams can be sent from camera element 16 to server 20, where they are mixed into a HDMI (High-Definition Multimedia Interface) stream. In certain implementations, camera element 16 can be provisioned as a light sensor such that the architecture can detect whether the shutter of the camera is open or closed (or whether the shutter is partially open.) An application program interface (API) can be used to control the operations of camera element 16. Likewise, camera element 26 may be configured to resemble any of the embodiments described with reference to camera element 16.
Network 18 represents a series of points or nodes of interconnected communication paths for receiving and transmitting packets of information that propagate through system 10. Network 18 offers a communicative interface between any of the nodes of FIG. 1, and may be any local area network (LAN), wireless local area network (WLAN), metropolitan area network (MAN), wide area network (WAN), virtual private network (VPN), Intranet, Extranet, or any other appropriate architecture or system that facilitates communications in a network environment. Note that in using network 18, system 10 may include a configuration capable of transmission control protocol/internet protocol (TCP/IP) communications for the transmission and/or reception of packets in a network. System 10 may also operate in conjunction with a user datagram protocol/IP (UDP/IP) or any other suitable protocol, where appropriate and based on particular needs.
Video processing units 17, 27 are video elements configured to evaluate video data and make determinations as to which (if any) commands are being issued by participants 19, 29. As used herein in this Specification, the term ‘video element’ is meant to encompass any suitable unit, module, software, hardware, server, program, application, application program interface (API), proxy, processor, field programmable gate array (FPGA), erasable programmable read only memory (EPROM), electrically erasable programmable ROM (EEPROM), application specific integrated circuit (ASIC), digital signal processor (DSP), or any other suitable device, component, element, or object configured to process video data. This video element may include any suitable hardware, software, components, modules, interfaces, or objects that facilitate the operations thereof. This may be inclusive of appropriate algorithms and communication protocols that allow for the effective exchange (reception and/or transmission) of data or information.
In one example implementation, video processing units 17, 27 include software (e.g., as part of gesture modules 36a-b respectively) to achieve the gesture interface control operations, as outlined herein in this document. In other embodiments, this feature may be provided externally to any of the aforementioned elements, or included in some other video element or endpoint (either of which may be proprietary) to achieve this intended functionality. Alternatively, several elements may include software (or reciprocating software) that can coordinate in order to achieve the operations, as outlined herein. In still other embodiments, any of the devices of the illustrated FIGURES may include any suitable algorithms, hardware, software, components, modules, interfaces, or objects that facilitate these skip coding management operations, as disclosed herein.
In operation, video processing unit 17 is configured to receive information from camera element 16 via some connection, which may attach to an integrated device (e.g., a set-top box, a proprietary box, etc.) that can sit atop a display. Video processing unit 17 may also be configured to control compression activities, or additional processing associated with data received from the cameras. Alternatively, a physically separate device can perform this additional processing before image data is sent to its next intended destination. Video processing unit 17 can also be configured to store, aggregate, process, export, and/or otherwise maintain image data and logs in any appropriate format, where these activities can involve processor 30a and memory element 32a. In certain example implementations, video processing unit 17 and server 20 are network elements that facilitate data flow between an endpoint and a given network. Similarly, video processing unit 27 and server 22 are network elements that facilitate a data flow in the other direction: toward its counterparty (e.g., endpoint 14). As used herein in this Specification, the term ‘network element’ is meant to encompass routers, switches, gateways, bridges, loadbalancers, firewalls, servers, processors, modules, or any other suitable device, component, element, or object operable to exchange information in a network environment. This includes proprietary elements equally, which can be provisioned with particular features to satisfy a unique scenario or a distinct environment.
Video processing unit 17 may interface with camera element 16 through any appropriate connection (which may be wireless), or via one or more cables or wires that allow for the propagation of signals between these two elements. These devices can also receive signals from an intermediary device, a remote control, etc., where the signals may leverage infrared, Bluetooth, WiFi, electromagnetic waves generally, or any other suitable transmission protocol for communicating data (e.g., potentially over a network) from one element to another. Virtually any control path can be leveraged in order to deliver information between video processing unit 17 and camera element 16. Transmissions between these two sets of devices can be bidirectional in certain embodiments such that the devices can interact with each other (e.g., dynamically, real-time, etc.). This would allow the devices to acknowledge transmissions from each other and offer feedback, where appropriate. Any of these devices can be consolidated with each other, or operate independently based on particular configuration needs. For example, a single box may encompass audio and video reception capabilities (e.g., a set-top box that includes the camera and microphone components for capturing video and audio data respectively).
Turning to FIGS. 2-3, FIGS. 2-3 are simplified schematic diagrams illustrating representative images associated with a participant making gestures during a video session. For example, the gestures could be captured by video processing units 17, 27 during a videoconference, where that information can be captured from any suitable video input, link, or feed captured by system 10. In this particular image of FIG. 2, a user 50 is shown motioning his hands 51. Additionally, system 10 is capturing bodily motion, and any features or characteristics associated with the user's head 53. In the particular examples of FIG. 2-3, there are various data analysis regions being targeted for image data capture. Accordingly, FIGS. 2-3 include a convex hull 52, a contour 54, a pose 56, a foreshortened bounding box 58, a convexity defect 62, a polar angle 64, an axis of the forearm 66, and a horizontal axis 68.
In operational terms, the overall image of FIG. 2 can be analyzed in a series of steps to determine pose 56 (open or closed) of each hand 51. This recognition process intelligently recognizes hand poses (e.g., the positions and the shapes of the hands in the image, which can be captured at various distances (at least ten feet and beyond)). The parameters of the protocol can be tuned to optimize the precision of the recognition in any number of environments (e.g., including those in which the background contains objects with color and texture similar to the skin imagery). The protocol further includes appropriate calibration mechanisms to recognize skin (e.g., on the hand, on the face, etc.) across a diverse human population.
Referring now to FIG. 4, FIG. 4 is a simplified table 69 illustrating example hand combinations/command responses that may be programmed for use in system 10. In this particular configuration, each of the participants' hands is evaluated in order to determine whether they are attempting to issue a command. Circles are filled-in to connote when certain bodily motions are occurring (e.g., the participants' hands are closed). In response to these hand gestures being determined, the system would associate the hand gesture with a command and automatically trigger an appropriate response. For example, the system can respond by mimicking mouse commands, zooming the video, rotating/tilting camera equipment, terminating a call, opening a document, editing a document, passing the ball in a WebEx conference, sharing information using any suitable technology, etc.
In one particular example implementation, the protocol could define n^h combinations of hand poses for each video frame, where n is the number of pose types to be classified, and h is the maximum number of hands in the scene. In such an example, n=2 (open and closed), h=2 (right and left hand 51 of single user 50), and there could be four combinations of hand poses per video frame. The paradigm can assign machine actions based on a sequence of m consecutive pose combinations (video frames): allowing for n^(h*m) distinct gesture interpretations. In this example, m=2 (that is only considering the current and the immediately prior video frame), giving 2^(2*2)=16 distinct gesture interpretations. The case of n=2, h=2, m=2 is perhaps the most intuitive and enables many multi-touch gestures, such as pinch, zoom, rotate, click, drag, etc. However, the case of n^(h*m) provides an even larger set of possibilities for a nearly unlimited gesture grammar architecture, enabling more sophisticated interactions such as twisting along an arbitrary axis of rotation, hitting with variable momentum, etc. The n^(h*m) combinations can be readily translated into machine instructions.
It is imperative to note that table 69 is only representative of one possible example of the programming options for interpreting hand gestures, and triggering an appropriate response. Additionally, there could be a significantly larger volume of hand gestures provisioned within the architecture. It should similarly be noted that although the current discussions and flows have focused on specific hand signals that indicate commands, system 10 and its teachings are readily applicable to emotion recognition. In those applications, the same type of analysis discussed previously would occur, where the focus would be on the face in order to discern commands. Moreover, system 10 can easily be programmed to interpret sign language. System 10 can also be used to identify and recognize posture, gait, proxemics, and common human behaviors. For example, a user slouching during a conference could signal a command to be issued to play a sound, to play video (e.g., some type of animation), etc. In other instances, eye gaze metrics could be tracked in order to issue a command. Again, the focus in such applications would (accordingly) be on the ocular regions of a participant's face. Using the collected video information, commands can readily be executed for the particular session being conducted. Video game technology could readily adopt any of the teachings being discussed herein, where the focus of these applications may be extended to work with the torso, the legs and feet, etc. being used in the course of the video game.
FIG. 5 is a simplified flowchart illustrating one example flow associated with evaluating gestures in an electronic environment. Initially, the flow can begin at operation 70, where a skin histogram is captured for each new subject. This can occur through a calibration process in the first few seconds of initial use. User 50 can be prompted by an interface, or through video processing unit 17 to position his hands 51 so that they coincide with stencils in the video frame that is monitoring the subject. Subsequently, the Hue-Saturation-Value (HSV) tuples of the stencil regions are added to the histogram. The histogram can then be used to identify the probability that each pixel of an image belongs to hand 51. After calibration has been completed, hand pose recognitions would be executed on a continuous basis for each frame of video captured. This is reflected operation 72.
In operation 74, a video frame can be translated to the HSV color space. Operation 76 computes the backspace of the video frame in the HSV space that is based on the skin histogram computed in operation 70. Furthermore, the protocol identifies the likely regions of the hand skin in the video frame, in accordance with the histogram. Then, in operation 78, a tunable threshold can be applied to filter all but the most likely hand regions in the video frame. At operation 80, erosion is applied a tunable number of times to eliminate noise (e.g., any small clusters of hand colored pixels not belonging to hands in the video frame). Dilation is applied in operation 82 (e.g., a tunable number of times) to accentuate the larger clusters of probable hand skin images in the video frame.
Subsequently, in operation 84, outer contours of the resulting clusters are computed and the largest three contours (e.g., by area of their bounding box) are retained for further analysis. In this particular example, these are most likely depicting the left and right hands 51 and face 53, as previously discussed with reference to FIG. 2. The middle of the three objects can be immediately removed, as this represents face 51. However, the protocol is intelligent enough to be applied to situations where only hands 51 are present (e.g., from the perspective of a wearable computer) by retaining only the largest two contours.
At operation 86, convex hull 52 is computed for left and right hands 51, showing the convexity of contours 54. Bounding box rectangles (not shown) of each convex hull 52 can be computed, where each bounding box takes a rectangular shape corresponding to the size of each convex hull 52. At operation 88, bounding box rectangles are foreshortened (e.g., by a tunable amount) along the axis of the forearm to focus on the hand region and, thereby, create the foreshortened bounding box 58. Note that these activities fully support gesture recognition for users wearing either long or short sleeves. Heuristics can readily be employed to determine which end of the bounding box represents hand 51. For example, in the case of hand 51 on the left of the image, if the long axis of the bounding box makes polar angle 64 between 50-degrees and 180-degrees, the upper end of the bounding box is assumed to be the hand. Additionally, if the long axis makes polar angle 64 of between 0-degrees and 50-degrees, the lower end of the bounding box can be assumed to be the hand.
The center of foreshortened bounding box 58 can be taken as the position of the hand pose at operation 90, where the convexity defects that lie within the foreshortened bounding box can be computed. The convexity defects can be analyzed to determine the type of pose. In this example, two types of poses have been implemented: open and closed. This generally provides a rich set of gestural inputs; however, the methods in this example are applicable to any number of poses that can be defined by conducting an analysis of the convexity defects. For example, if the defect were large enough (as measured by a tunable parameter) and in the correct orientation, the pose would be classified as open, otherwise the pose would be classified as closed.
Once the pose has been classified, a smoothing algorithm can be applied at operation 92 to eliminate noise from the video frames that present low-quality data (e.g., if hand 51 is moving too rapidly for camera element 16, 26 to record data sharply). Smoothing can include several steps. For example, an initial step can be associated with discarding selected objects (e.g., a hand has been detected in a position that would imply that hand 51 has moved too quickly (as measured by a tunable parameter) to represent a natural movement between frames (likely indicating a false identification)). In such a case, the associated pose would be discarded. Additionally, the pose type classification (e.g., open or closed) can be changed if a certain number of consecutive poses of the new type have been classified. For example, to change the reported pose type from open to closed, a (tunable) number of closed poses were probably detected in a row. Returning to the flow of FIG. 5, the appropriate hand pose position and the pose classification can be reported for command processing at operation 94. In general terms, the determination of an action at operation 94 can employ a paradigm for interpreting hand gestures that is simple, intuitive, and flexible to accommodate particular user needs, or specific interface scenarios.
It is imperative to note that the arrangements of FIGS. 1-5 are simply being used for discussion purposes, where various alternatives and modifications to such arrangements would be within the scope of the present disclosure. Along similar lines, the processing and memory allocations of FIGS. 1-5 may be shared by other components, consolidated, or otherwise distributed across different devices. Such modifications may be based on particular videoconferencing needs, specific environments, etc.
Note that in certain example implementations, the gesture interpretation functions outlined herein may be implemented by logic encoded in one or more tangible media (e.g., embedded logic provided in an application specific integrated circuit [ASIC], digital signal processor [DSP] instructions, software [potentially inclusive of object code and source code] to be executed by a processor, or any other similar machine, etc.). In some of these instances, a memory element [as shown in FIG. 1] can store data used for the gesture interpretation operations described herein (e.g., skin detection, pose detection, etc.). This includes the memory element being able to store software, logic, code, or processor instructions that are executed to carry out the activities described in this Specification. A processor can execute any type of instructions associated with the data to achieve the operations detailed herein in this Specification. In one example, the processor [as shown in FIG. 1] could transform an element or an article (e.g., data) from one state or thing to another state or thing. In another example, the camera enhancement activities outlined herein may be implemented with fixed logic or programmable logic (e.g., software/computer instructions executed by a processor) and the elements identified herein could be some type of a programmable processor, programmable digital logic (e.g., FPGA, an erasable programmable read only memory (EPROM), (EEPROM)), or an ASIC that includes digital logic, software, code, electronic instructions, or any suitable combination thereof.
Note that the equipment of FIG. 1 may share (or coordinate) certain processing operations. Using a similar rationale, their respective memory elements may store, maintain, and/or update data in any number of possible manners. In a general sense, the arrangements depicted in the preceding FIGURES may be more logical in their representations, whereas a physical architecture may include various permutations/combinations/hybrids of these elements. In one example implementation, camera element 16, 26 may include software (e.g., as part of, or in cooperation with, the video processing units discussed (such as image processors, EEPROMs, DSPs, FPGAs, etc.)) to achieve the gesture interpretation operations, as outlined herein in this document. In other embodiments, these features may be provided externally to any of the aforementioned elements (e.g., included in server 20), or included in some other device to achieve these functionalities. Alternatively, several elements may include software (or reciprocating software) that can coordinate in order to achieve the gesture interpretation, as outlined herein. In still other embodiments, any of the devices of the FIGURES may include any suitable algorithms, hardware, software, components, modules, interfaces, or objects that facilitate these camera enhancement operations.
All of the aforementioned devices may further keep information in any suitable memory element (e.g., random access memory (RAM), ROM, EPROM, EEPROM, ASIC, etc.), software, hardware, or in any other suitable component, device, element, or object where appropriate and based on particular needs. Any of the memory items discussed herein (e.g., database, table, key, queue, etc.) should be construed as being encompassed within the broad term ‘memory element.’ Similarly, any of the potential processing elements, modules, and machines described in this Specification should be construed as being encompassed within the broad term ‘processor.’ Camera element 16, 26 and/or server 20, 22 can also include suitable interfaces for receiving, transmitting, and/or otherwise communicating data or information in a network environment.
Note that with the examples provided herein, interaction may be described in terms of two, three, or four elements. However, this has been done for purposes of clarity and example only. In certain cases, it may be easier to describe one or more of the functionalities of a given set of flows by only referencing a limited number of elements. It should be appreciated that system 10 (and its teachings) are readily scalable and can accommodate a large number of components, as well as more complicated/sophisticated arrangements and configurations. Accordingly, the examples provided should not limit the scope or inhibit the broad teachings of system 10 as potentially applied to a myriad of other architectures.
It is also important to note that the steps in the preceding flow diagrams illustrate only some of the possible signaling scenarios and patterns that may be executed by, or within, system 10. Some of these steps may be deleted or removed where appropriate, or these steps may be modified or changed considerably without departing from the scope of the present disclosure. In addition, a number of these operations have been described as being executed concurrently with, or in parallel to, one or more additional operations. However, the timing of these operations may be altered considerably. The preceding operational flows have been offered for purposes of example and discussion. Substantial flexibility is provided by system 10 in that any suitable arrangements, chronologies, configurations, and timing mechanisms may be provided without departing from the teachings of the present disclosure.
Although the present disclosure has been described in detail with reference to particular arrangements and configurations, these example configurations and arrangements may be changed significantly without departing from the scope of the present disclosure. For example, although the present disclosure has been described with reference to particular communication exchanges involving certain server components, system 10 may be applicable to other protocols and arrangements (e.g., those involving any type of videoconferencing scenarios). Additionally, although camera elements 16, 26 have been described as being mounted in a particular fashion, camera elements 16, 26 could be mounted in any suitable manner in order to suitably capture video images. Other configurations could include suitable wall mountings, aisle mountings, furniture mountings, cabinet mountings, upright (standing) assemblies, etc., or arrangements in which cameras would be appropriately spaced or positioned to perform its functions.
Furthermore, the users described herein are simply individuals within the proximity, or within the field of view, of display 14. Audience members can be persons engaged in a videoconference involving other individuals at a remote site. Audience members can be associated with video game scenarios, corporate scenarios, consumer scenarios, residential scenarios, etc. or associated with any other suitable environment to which system 10 may be applicable.
Additionally, system 10 can involve different types of counterparties, where there can be asymmetry in the technologies being employed by the individuals. For example, one user may be using a laptop, while another user is using the architecture of system 10. Similarly, a smartphone could be used as one individual endpoint, while another user uses the architecture of system 10. Also, Webcams can readily be used in conjunction with system 10. Along similar lines, multiparty calls can readily be achieved using the teachings of the present disclosure. Moreover, although system 10 has been illustrated with reference to particular elements and operations that facilitate the communication process, these elements and operations may be replaced by any suitable architecture or process that achieves the intended functionality of system 10.
Additionally, although the previous discussions have focused on videoconferencing associated with particular types of endpoints, handheld devices that employ video applications could readily adopt the teachings of the present disclosure. For example, iPhones, iPads, Google Droids, personal computing applications (i.e., desktop video solutions), etc. can use the gesture interface control detailed above. Any communication system or device that processes and/or receives video data would be amenable to the gesture interfacing features discussed herein. Numerous other changes, substitutions, variations, alterations, and modifications may be ascertained to one skilled in the art and it is intended that the present disclosure encompass all such changes, substitutions, variations, alterations, and modifications as falling within the scope of the appended claims.

## Claims

1. A method, comprising:
generating a histogram of a hand associated with a user of a system, wherein the system responds to system interface electronic commands issued by the user using the hand;
receiving image data;
comparing the image data to the histogram using a tunable process to identify a cluster of hand colored pixels that are most likely a hand region in the image data;
computing an outer contour of the cluster of hand colored pixels to identify a portion of the image data that reflects the hand;
computing a convex hull for the hand reflected in the identified portion of the image data, wherein the convex hull shows a convexity of contours of the hand;
computing a foreshortened bounding box of the convex hull that includes the hand reflected in the identified portion of the image data;
analyzing convexity defects associated with the hand within the foreshortened bounding box to identify a pose associated with the hand reflected in the portion of the image data; and
if the pose is associated with a system interface electronic command, triggering the system interface electronic command associated with the pose, such that the system performs a function specified by the user.

2. The method of claim 1, wherein the image data is evaluated in order to analyze sequences of poses associated with a gesture that signals the system interface electronic command to be performed.

3. The method of claim 1, wherein analyzing the convexity defects includes designating a center of the foreshortened bounding box as a position of a pose of the hand.

4. The method of claim 1, wherein computing the foreshortened bounding box includes foreshortening a bounding box along an axis of a forearm to focus on the hand reflected in the identified portion of the image data, wherein a polar angle with a long axis of the bounding box is evaluated to determine which end of the bounding box represents the hand.

5. The method of claim 1, wherein comparing the image data to the histogram using a tunable process to identify a cluster of hand colored pixels that are most likely the hand region includes:
translating the image data to Hue-Saturation-Value (HSV) color space;
determining backspace of the image data in HSV color space based on the captured histogram to identify likely hand regions in the image data; and
performing a tunable filtering process, a tunable erosion process, and a tunable dilation process to identify the most likely hand region in the image data from the likely hand regions.

6. The method of claim 1, wherein generating includes prompting the user to position the hand such that a stencil coincides with the hand, and adding Hue-Saturation-Value (HSV) tuples of stencil regions to the histogram.

7. The method of claim 1, wherein analyzing the convexity defects associated with the hand within the foreshortened bounding box to identify the pose associated with the hand reflected in the portion of the image data includes comparing the convexity defects to a tunable parameter.

8. Logic encoded in one or more non-transitory tangible media that includes code for execution and when executed by a processor is operable to perform operations comprising:
generating a histogram of a hand associated with a user of a system, wherein the system responds to system interface electronic commands issued by the user using the hand;
receiving image data;
comparing the image data to the histogram using a tunable process to identify a cluster of hand colored pixels that are most likely a hand region in the image data;
computing an outer contour of the cluster of hand colored pixels to identify a portion of the image data that reflects the hand;
computing a convex hull for the hand reflected in the identified portion of the image data, wherein the convex hull shows a convexity of contours of the hand;
computing a foreshortened bounding box of the convex hull that includes the hand reflected in the identified portion of the image data;
analyzing convexity defects associated with the hand within the foreshortened bounding box to identify a pose associated with the hand reflected in the portion of the image data; and
if the pose is associated with a system interface electronic command, triggering the system interface electronic command associated with the pose, such that the system performs a function specified by the user.

9. The logic of claim 8, wherein the image data is evaluated in order to analyze sequences of poses associated with a gesture that signals the system interface electronic command to be performed.

10. The logic of claim 8, wherein analyzing the convexity defects includes designating a center of the foreshortened bounding box as a position of a pose of the hand.

11. The logic of claim 8, wherein computing the foreshortened bounding box includes foreshortening a bounding box along an axis of a forearm to focus on the hand reflected in the identified portion of the image data, wherein a polar angle with a long axis of the bounding box is evaluated to determine which end of the bounding box represents the hand.

12. The logic of claim 11, wherein comparing the image data to the histogram using a tunable process to identify a cluster of hand colored pixels that are most likely the hand region includes:
translating the image data to Hue-Saturation-Value (HSV) color space;
determining backspace of the image data in HSV color space based on the captured histogram to identify likely hand regions in the image data; and
performing a tunable filtering process, a tunable erosion process, and a tunable dilation process to identify the most likely hand region in the image data from the likely hand regions.

13. The logic of claim 8, wherein the generating includes prompting the user to position the hand such that a stencil coincides with the hand, and adding Hue-Saturation-Value (HSV) tuples of stencil regions to the histogram.

14. The logic of claim 8, analyzing the convexity defects associated with the hand within the foreshortened bounding box to identify the pose associated with the hand reflected in the portion of the image data includes comparing the convexity defects to a tunable parameter.

15. An apparatus, comprising:
a memory element configured to store data; and
a processor operable to execute instructions associated with the data, wherein the processor and the memory element cooperate such that the apparatus is configured to:
generate a histogram of a hand associated with a user of a system, wherein the system responds to system interface electronic commands issued by the user using the hand;
receive image data;
compare the image data to the histogram using a tunable process to identify a cluster of hand colored pixels that are most likely a hand region in the image data;
compute an outer contour of the cluster of hand colored pixels to identify a portion of the image data that reflects the hand;
compute a convex hull for the hand reflected in the identified portion of the image data, wherein the convex hull shows a convexity of contours of the hand;
compute a foreshortened bounding box of the convex hull that includes the hand reflected in the identified portion of the image data;
analyze convexity defects associated with the hand within the foreshortened bounding box to identify a pose associated with the hand reflected in the portion of the image data; and
if the pose is associated with a system interface electronic command, trigger the system interface electronic command associated with the pose, such that the system performs a function specified by the user.

16. The apparatus of claim 15, wherein the image data is evaluated in order to analyze sequences of poses associated with a gesture that signals the system interface electronic command to be performed.

17. The apparatus of claim 15, wherein analyzing the convexity defects includes designating a center of the foreshortened bounding box as a position of a pose of the hand.

18. The apparatus of claim 15, wherein computing the foreshortened bounding box includes foreshortening a bounding box along an axis of a forearm to focus on the hand reflected in the identified portion of the image data, wherein a polar angle with a long axis of the bounding box is evaluated to determine which end of the bounding box represents the hand.

19. The apparatus of claim 18, wherein comparing the image data to the histogram using a tunable process to identify a cluster of hand colored pixels that are most likely the hand region includes:
translating the image data to Hue-Saturation-Value (HSV) color space;
determining backspace of the image data in HSV color space based on the captured histogram to identify likely hand regions in the image data; and
performing a tunable filtering process, a tunable erosion process, and a tunable dilation process to identify the most likely hand region in the image data from the likely hand regions.

20. The apparatus of claim 15, further comprising:
a camera element configured to receive the image data, wherein the camera element is coupled to a display configured to render images during a communication session.