Multi-finger touch adaptations for medical imaging systems

Systems, methods and articles of manufacture are disclosed for presenting image slices in a windowing environment based on multi-touch user input, the image slices generated by an imaging system. A series of image slices may be provided that represent a view of an object. A gesture may be defined based on at least a count of fingers represented in multi-touch user input. Further, the defined gesture may be associated with a corresponding action for manipulating an image slice. Multi-touch user input may be received. Upon determining that the received multi-touch user input includes the defined gesture, the corresponding action may be performed on an image slice of the series to generate a resultant image slice. The resultant image slice may be output via an output device.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The field of the invention relates to presenting images. More specifically, the field of the invention relates to presenting images in a windowing environment based on multi-touch user input, the images generated by a medical imaging system.

2. Description of the Related Art

Windowing environments are common in the medical field. Such environments facilitate medical analysis via displaying medical images side by side on a large screen. Medical imaging systems may include scanners (such as computed tomography (CT) scanners and magnetic resonance imaging (MRI) scanners) which provide views inside a body. These views may be organized into a stack or series of visual “slices” (i.e., image slices). Trained individuals analyze the stack of image slices by scrolling back and forth in the stack. In addition, many image manipulations aid in the analysis of the image slices, such as changing the brightness and contrast, combining slices in various ways (e.g., maximum intensity projection (MIP), and automatic edge detection and object identification.

SUMMARY OF THE INVENTION

One embodiment of the invention includes a method for presenting image slices in a windowing environment based on multi-touch user input, the image slices generated by an imaging system, the method comprising configuring one or more processors to perform an operation. The operation may generally include providing a series of image slices representing a view of an object; defining a gesture based on at least a count of fingers represented in multi-touch user input; associating the defined gesture with a corresponding action for manipulating an image slice; receiving multi-touch user input; upon determining that the received multi-touch user input includes the defined gesture, performing the corresponding action on an image slice of the series to generate a resultant image slice; and outputting the resultant image slice via an output device.

Another embodiment of the invention includes a computer readable storage medium containing a program which, when executed, performs an operation for presenting image slices in a windowing environment based on multi-touch user input, the image slices generated by an imaging system. The operation may generally include providing a series of image slices representing a view of an object; defining a gesture based on at least a count of fingers represented in multi-touch user input; associating the defined gesture with a corresponding action for manipulating an image slice; receiving multi-touch user input; upon determining that the received multi-touch user input includes the defined gesture, performing the corresponding action on an image slice of the series to generate a resultant image slice; and outputting the resultant image slice via an output device.

Still another embodiment of the invention includes a system having a processor and a memory containing a program, which when executed by the processor is configured to perform an operation for presenting image slices in a windowing environment based on multi-touch user input, the image slices generated by an imaging system. The operation may generally include providing a series of image slices representing a view of an object; defining a gesture based on at least a count of fingers represented in multi-touch user input; associating the defined gesture with a corresponding action for manipulating an image slice; receiving multi-touch user input; upon determining that the received multi-touch user input includes the defined gesture, performing the corresponding action on an image slice of the series to generate a resultant image slice; and outputting the resultant image slice via an output device.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Embodiments of the present invention generally provide for the presentation of image slices in a windowing environment based on multi-touch user input. The image slices may be generated by a medical imaging system, for example. Image selection and manipulation are facilitated by multi-touch user input.

FIG. 1is a block diagram illustrating a system100for presenting images in a multi-touch windowing environment, the images generated by a medical imaging system, according to one embodiment of the invention. The networked system100includes a computer102. The computer102may be connected to other computers via a network130. In general, the network130may be a telecommunications network and/or a wide area network (WAN). In a particular embodiment, the network130is the Internet.

The computer102generally includes a processor104connected via a bus112to a memory106, a network interface device110, a storage108, an input device114, and an output device116. The computer102is generally under the control of an operating system (not shown). Examples of operating systems include UNIX, versions of the Microsoft Windows® operating system, and distributions of the Linux® operating system. (Note: Linux is at trademark of Linus Torvalds in the United States and other countries.) More generally, any operating system supporting the functions disclosed herein may be used.

The memory106may be a random access memory. While the memory106is shown as a single entity, it should be understood that the memory106may in fact comprise a plurality of modules, and that the memory106may exist at multiple levels, from high speed registers and caches to lower speed but larger DRAM chips.

The network interface device110may be any entry/exit device configured to allow network communications between the computer102and the server132via the network130. For example, the network interface device110may be a network adapter or other network interface card (NIC).

The storage108may be a hard disk drive storage device. Although the storage108is shown as a single unit, the storage108may be a combination of fixed and/or removable storage devices, such as fixed disc drives, floppy disc drives, tape drives, removable memory cards, or optical storage. The storage108may also include network-attached storage. The memory106and the storage108may be part of one virtual address space spanning multiple primary and secondary storage devices.

The input device114may be any device for providing multi-touch input to the computer102. A multi-touch input device may include a touch screen or touchpad (and any accompanying software) that recognizes multiple simultaneous touch points (e.g., from a human hand) on the touch screen or on the touchpad. In contrast, a conventional touch screen or touchpad only recognizes a single touch point and thus cannot provide multi-touch input to the computer102.

The output device116may be any device for providing output to a user of the computer102. For example, the output device116may be any conventional display screen or set of speakers, along with their respective interface cards, i.e., video cards and sound cards (not shown). Although shown separately from the input device114, the output device116and input device114may be combined. For example, a display screen with an integrated touch screen (or touch pad) or a display with an integrated keyboard may be used.

As shown, the memory106of the computer102includes an image presenter150. Further, the storage108of the computer102includes actions152, images154, gestures156, and modes158.FIGS. 2 through 6and associated descriptions detail the structure and operation of the image presenter150running on the computer102.

FIGS. 7A-7Cillustrate selecting scrolling modes using multi-touch input, according to one embodiment of the invention. In one embodiment, a user may select from a predefined set of scrolling modes. For example, a predefined set of scrolling modes may include (i) a “fine” scrolling mode for scrolling an image five pixels at a time and (ii) a “coarse” scrolling mode for scrolling an image ten pixels at a time.

A user may implicitly select a scrolling mode, according to one embodiment. For example, a user may scroll an image finely using a single finger (i.e., a user may implicitly select the fine scrolling mode by scrolling using a single finger on the input device114). Alternatively, a user may scroll an image coarsely using a three fingers (i.e., a user may implicitly select the coarse scrolling mode by scrolling an image using three fingers on the input device114).

Further, a user may select a scrolling mode using a thumb position on the input device114, according to one embodiment. Each scrolling mode of the predefined set of scrolling modes may be associated with a predefined thumb position. The predefined thumb position may be a position relative to other fingers on the input device114. For example, a thumb position under the fingers may be associated with the coarse scrolling mode. Further, a thumb position not under the fingers may be associated with the fine scrolling mode.

FIG. 7Aillustrates a user scrolling with fingers708on the input device114. In this particular example, the user's thumb706is positioned away from (i.e., not under) the fingers708. That is, the image presenter150may select the fine scrolling mode based on the user's thumb position being away from the fingers708. The user may then scroll an image finely using the fingers708.

LikeFIG. 7A,FIG. 7Billustrates a user scrolling with fingers708on the input device114. In this particular example, however, the user's thumb706is positioned under the fingers708. In this case, the image presenter150may select the coarse scrolling mode based on the user's thumb position being under the fingers708. The user may then scroll an image coarsely using the fingers708.

Further, a user may select a scrolling mode using a thumb gesture on the input device114, according to one embodiment. For example, the user may toggle through a plurality of scrolling modes using a single thumb gesture (e.g., a thumb swipe) on the input device114. Selecting scrolling modes via a gesture is further described below in conjunction with Table VIII.

FIG. 7Cillustrates a user scrolling with fingers708on the input device114. In this particular example, the user is performing a thumb swipe on the input device114. The image presenter150may toggle the scrolling mode based on the thumb swipe. For example, suppose the current (i.e., active) scrolling mode is the fine scrolling mode. The user may scroll an image finely using the fingers708on the input device114. The user may also swipe the thumb706to toggle the scrolling mode. That is, the image presenter150may change the scrolling mode from the fine scrolling mode to the coarse scrolling mode in response to a thumb swipe. Subsequently, the user may scroll the image coarsely using the fingers708on the input device114. Selecting scrolling modes via a toggle is further described below in conjunction with Table IX.

FIG. 2is a block diagram illustrating a functional view200of the image presenter150ofFIG. 1, according to one embodiment of the invention. As shown, the image presenter150includes an action manager210, an image manager220, an input manager230, a mode manager240, and a presentation manager250.

The image presenter may receive multi-touch user input for performing an action on the image slices. The image presenter may identify a number (or count) of fingers represented in the received multi-touch user input. Further, the image presenter may perform an action on (i.e., manipulate) the image slices based on the identified number of fingers to generate resultant image slices. The identified number of fingers may also determine an image slice on which to perform the action. Further, an action may be defined by one or more attributes. The image presenter may modify an attribute of an action based on the received multi-touch user input. The image presenter may also define modes (i.e., modes of image manipulation) that provide default values for attributes. Further, the image presenter may output the resultant image slices to a user via an output device. Taken together, a user may use multi-touch input to perform an action on an image slice without having to separately or individually select one or more of an image slice, an action, an attribute, and a mode.

In one embodiment, the image manager selects one or more images on which to perform an action from a plurality of images based on input received from the input manager. The plurality of images may be one or more series of image “slices.” For example, each series may represent a view of a human body, the view being provided by scanners of a medical imaging system. Examples of scanners include computed tomography (CT) scanners, magnetic resonance imaging (MRI) scanners, etc. Further, each image may be an image slice from the one or more series of image slices.

More generally, the “body” or “subject” represented by the images may be any variety of living or non-living material. Thus, images of a part of a human body are merely illustrative, and are not intended to be limiting of the invention. For example, the images may be of any living organism, such as an animal. Further, while embodiments are described herein with reference to images generated by scanners of a medical imaging system, those skilled in the art will recognize that embodiments of the invention may be adapted to support other imaging applications. For example, the plurality of images may include planar slice views of a 3D depiction of a mechanical system, such as an automobile or a truck engine. As another example, the plurality of images may include planar slice views of a 3D depiction of an architectural system, such as a 3D rendering of a building.

In one embodiment, the action manager210defines a plurality of actions152which may be performed on one or more of the plurality of images154. The plurality of actions152may be any action for manipulating output of images in a windowing environment via the output device116. That is, the action manager210may manipulate a copy of the images residing in the memory106rather than the images located in the storage108, according to one embodiment. Table I shows illustrative actions:

TABLE IAction examplesIncrease/decrease brightness of an imageIncrease/decrease contrast of an imageIncrease/decrease zoom of an imageScroll image up/down/left/rightMove to a next/previous imageCombine two imagesPerform edge detection and/or object identification in an imageLink two images

As shown, the actions152may include adjusting brightness of an image, adjusting contrast of an image, adjusting zoom of an image, scrolling an image, flipping to another image, combining two images, performing edge detection, performing object identification, linking two images (i.e., for a later action to be performed simultaneously on linked images), etc. Adjusting brightness of an image may include increasing or decreasing brightness of the image. Adjusting contrast of an image may include increasing or decreasing contrast of the image. Further, a user may scroll an image in a direction. The direction may include up, down, left, right, or any direction determined from user input received via the input device114. The user may also move to a next or previous image of a series of images (e.g., a series of image slices of a view representing of a human body, the view being provided by a scanner of a medical imaging system). In addition, the user may combine two images via any technique such as maximum intensity projection (MIP), subtraction, etc. That is, a user may create a third image based on (i.e., by combining) a first image and second image. For example, the third image may highlight differences between the first image and the second image. A user may also perform edge detection and/or object identification in an image. For example, a user may detect edges or identify objects (e.g., tissue, bone, etc.) in an image slice.

In one embodiment, the input manager230receives user input via the input device114. Further, the input manager230defines a plurality of gestures156. Each gesture156represents a discrete input from the user via the input device114. That is, the user inputs a gesture156on a multi-touch input device114. Further, each gesture156may include any number of fingers (from one or both hands) detectable by the input device114. A finger refers to any digit on a human hand (e.g., thumb, index finger, middle finger, ring finger, little finger).

A gesture may be defined by a spatial positioning of fingers. For example, a first gesture may be defined as any three fingers positioned on the multi-touch input device114. Further, a gesture may be defined by a relative positioning of fingers. For example, a second gesture may be defined as any three fingers positioned on the multi-touch device, such that each finger is spaced at least two inches apart from the other fingers on the multi-touch input device114. Further still, a gesture may be defined by temporal positioning (i.e., movement) of fingers. For example, a third gesture may be defined as any three fingers swiping upwards on the multi-touch input device114. Table II shows illustrative gestures:

TABLE IIGesture examplesA number of fingers tapping simultaneouslyA number of fingers tapping in a specific sequenceA number of fingers fixed on the input deviceA number of fingers fixed in a predefined relative configuration onthe input deviceA number of fingers swiping in a direction (right/left, up/down,up-left, etc.)A number of fingers twisting in an orientation (clockwise,counterclockwise, etc.)A number of fingers making a grasping motionA number of fingers making a sprawling motionAny combination of the above gestures

As shown, the gestures156may include a number of fingers tapping simultaneously (e.g., three fingers tapping simultaneously), a number of fingers tapping in a specific sequence (e.g., three fingers tapping in succession such as thumb, index finger and middle finger), a number of fingers fixed on the input device (e.g., three fingers fixed on the input device), a number of fingers fixed in a predefined relative configuration on the input device (e.g., three fingers fixed at positions spaced at least two inches apart from one another on the input device), a number of fingers swiping in a direction (e.g., for a predefined distance, such as a quarter-inch), a number of fingers twisting in an orientation (e.g., clockwise, counterclockwise), a number of fingers making a grasping motion, a number of fingers making a sprawling motion, or any combination thereof.

The input manager230may also associate each gesture156with a corresponding action152, according to one embodiment. Table III shows illustrative gesture associations:

In this specific example, the input manager230associates a gesture156of “two fingers swiping up” with an action152for increasing brightness. That is, a user may swipe two fingers upwards on the input device114to increase brightness of an image slice154. Further, the input manager230associates a gesture156of “two fingers swiping down” with an action152for decreasing brightness. That is, a user may swipe two fingers downwards on the input device114to decrease brightness of the image slice154. Further, the input manager230associates a gesture156of “three fingers swiping up” with an action152for increasing contrast. That is, a user may swipe three fingers upwards on the input device114to increase contrast of the image slice154. Further, the input manager230associates a gesture156of “three fingers swiping down” with an action152for decreasing contrast. That is, a user may swipe three fingers downwards on the input device114to decrease contrast. Taken together, the user may manipulate output of an image slice154by swiping two fingers for adjusting brightness of the image slice154and by swiping three fingers for adjusting contrast of the image slice154.

The input manager230may also associate a gesture with a target image on which the associated action is to be performed. Table IV shows illustrative gesture associations that include target images:

TABLE IVGesture association example - target imageGestureAssociated action and target imageOne finger swiping upScroll first displayed image upwardsOne finger swiping downScroll first displayed image downwardsTwo fingers swiping upScroll second displayed image upwardsTwo fingers swiping downScroll second displayed image downwardsThree fingers swiping upScroll third displayed image upwardsThree fingers swiping downScroll third displayed image downwardsFour fingers swiping upScroll all displayed images upwardsFour fingers swiping downScroll all displayed images downwards

In this specific example, the input manager230associates a gesture156of “swiping up” with an action152of “scrolling an image upwards.” Further, the input manager230associates a gesture156of “swiping down” with an action152of “scrolling an image downwards.” In addition, the input manager230may associate each gesture156with a target image based on a number of fingers of user input received via the input device114. That is, suppose the image presenter250outputs three image slices side by side via the output device116. In this specific example, one finger selects a first displayed image; two fingers select a second displayed image; three fingers select a third displayed image; and four fingers select all displayed images (i.e., three images in this case). For example, a user may scroll the first displayed image upwards by swiping a single finger up via the input device114. If the user swipes two fingers up via the input device114, the image presenter250scrolls the second displayed image upwards (instead of scrolling the first displayed image upwards).

In one embodiment, each action152may include one or more attributes (or parameters). Performance of an action may be defined by one or more attributes. That is, an attribute may specify a manner in which an associated action is to be performed. Table V shows an illustrative attribute for an action:

For example, a “scrolling” action152may include an associated “precision” attribute. The precision attribute determines how finely or coarsely to scroll an image slice154. For example, scrolling finely may be defined as scrolling five pixels at a time, while scrolling coarsely may be defined as scrolling ten pixels at a time. In one embodiment, the action manager210may adjust an attribute based on user input. Table VI shows an illustrative attribute that is based on user input:

TABLE VIScrolling example - precision is based on user inputActionGestureScroll finelySwipe two fingers slowly in a desired directionScroll coarselySwipe two fingers quickly in a desired direction

As shown, a user may swipe two fingers slowly in a desired direction to scroll an image slice finely in the desired direction. Further, a user may swipe two fingers quickly in a desired direction to scroll an image slice coarsely in the desired direction. Taken together, a rate of movement associated with a gesture affects the precision attribute of the scrolling action.

In one embodiment, the mode manager240defines a plurality of modes158. Each mode158specifies one or more default attributes for an action152. Table VII shows illustrative modes:

As shown, the mode manager240defines two modes158for scrolling: a fine scrolling mode and a coarse scrolling mode. Further, the mode manager240defines two modes158for moving to a next or previous image: a fine flipping mode (e.g., 1 image slice at a time) or a coarse flipping mode (e.g., 3 image slices at a time). The mode manager240also defines two modes158for combining image slices: a subtraction mode and a maximum intensity projection (MIP) mode. For example, a user may use subtraction mode to combine two images to generate a new image. In subtraction mode, each pixel of the new image may be the difference of corresponding pixels of the two images (e.g., a pixel of the first image minus a corresponding pixel of the second image). Further, a user may also use maximum intensity projection to combine two or more images to generate a new image. In maximum intensity projection mode, each pixel of the new image may be the maximum (i.e., brightest) value of corresponding pixels of the two or more images. Other modes for combining image slices are broadly contemplated.

In addition, the mode manager240defines two modes for performing edge detection: using a search-based algorithm or a zero-crossing based algorithm. A search-based algorithm computes a measure of edge strength using a first-order derivative of pixel intensity and searches for local directional maxima of the computed edge strength. A zero-crossing based algorithm uses a second-order derivative of pixel intensity (i.e., rate of change of pixel intensity) and searches for zero-crossings (i.e., points where a function crosses an axis). Other algorithms for performing edge detection are broadly contemplated.

The mode manager240specifies a default attribute (such as “coarse”) for an action (such as “scrolling”). Although embodiments herein are described with reference to a mode manager240that defines modes in pairs, those skilled in the art will recognize that any number of modes may be supported by embodiments of the invention. For example, the mode manager240may define a “Medium scrolling” mode for Table VII.

The mode manager240may also associate each mode158with a gesture156. That is, a user may input a gesture156to select an associated mode158. Table VIII shows illustrative modes with associated gestures:

TABLE VIIIScrolling mode example - thumb positionModeGestureFine scrolling modeThumb position under other fingersCoarse scrolling modeThumb position not under other fingers

In this specific example, the mode manager240associates a fine scrolling mode with a gesture that includes a thumb positioned under other fingers. For example, a user may finely scroll an image slice154down by swiping fingers downward with a thumb at a position under the fingers. Further, the mode manager240associates a coarse scrolling mode with a gesture that includes a thumb positioned other than under other fingers. For example, a user may coarsely scroll an image slice154down by swiping fingers downward with a thumb at a position other than under the fingers. Taken together, the user may modify the precision attribute of the scrolling action using a thumb position on the input device114.

In addition, the mode manager240may also associate a plurality of modes158with a single gesture, thereby creating (for two modes) a mode toggle or (for three or more modes) a mode cycle. That is, a user may toggle between two modes using a mode toggle, and cycle between three or more modes using a mode cycle. Table IX shows an illustrative mode toggle:

In this specific example, the mode manager240associates both the fine scrolling mode and the coarse scrolling mode with a gesture of a thumb swipe, thereby creating a toggle for the scrolling action. That is, a thumb swipe need not be used for scrolling, but may merely be used for specifying a scrolling mode (e.g., fine or coarse). A user may then scroll (e.g., finely or coarsely) using fingers. Further, the mode manager240specifies the fine scrolling mode as a default mode. For example, a user may finely scroll an image slice154up based on a default mode by swiping fingers upward. If a user performs a thumb swipe on the input device114, the mode manager240“toggles” the scrolling mode, thereby selecting the coarse scrolling mode. At this point, a user may coarsely scroll an image slice154up by swiping fingers upward. If a user performs a second thumb swipe on the input device114, the mode manager240toggles the scroll mode again, thereby re-selecting (i.e., reverting to) the fine scrolling mode. At this point, a user may once again finely scroll an image slice154up by swiping fingers upward.

In one embodiment, the presentation manager250outputs an image slice154to a user via the output device116. The image slice154may include an image slice that results from performing an action152on an image slice154. For example, the presentation manager250may output an image slice154that results from performing any of the actions of Table II. The presentation manager250is further discussed below in conjunction withFIG. 3.

FIG. 3is a flowchart depicting a method300for presenting images154in a windowing environment based on multi-touch input, the images154generated by a medical imaging system, according to one embodiment of the invention. The method300may be performed by the image presenter150ofFIG. 1. The steps of the method300are described in conjunction with the action example of Table I and with the gesture association examples of Tables III and IV.

As shown, the method300begins at step310, where the image manager220provides a plurality of image slices154. For example, the image manager220may provide image slices from an MRI scan of a human body. At step320, the image manager220may receive user input for performing an action152on one or more image slices from the plurality of image slices154. For example, the image manager220may receive user input for performing an action from Table I, III, or IV.

At step330, the input manager230provides a number of fingers of the received user input. In one embodiment, the input manager230may receive a number of fingers from the input device114. Alternatively, the input manager230may also receive the number of fingers from device drivers, an operating system, a window manager, or an application executing on the computer102. In another embodiment, the input manager230may also determine the number of fingers based on the user input received from the input device114. For example, absolute coordinates of five touch points may be mapped to five fingers according to an anatomy of a human hand.

At step340, the action manager210performs an action152based on the number of fingers to generate resultant image slices. For example, the action manager210may perform an associated action from Table III or Table IV to generate resultant image slices. In one embodiment, the image slices154are modified by performing the associated action, and the resultant image slices are stored in the storage108. In another embodiment, only a copy of the image slices154existing in the memory106may be modified by performing the associated action. That is, the associated action may be performed on image slices154merely for output purposes; the image slices154in storage108are not modified. At step350, the presentation manager250outputs the resultant image slices to the user via the output device116. After step350, the method300terminates.

FIG. 4is a flowchart depicting a method400for selecting a scrolling mode, according to one embodiment of the invention. The method400may be performed by the image presenter150ofFIG. 1. The steps of the method400are described in conjunction with the mode example of Table VII and with the scrolling mode examples of Tables VIII and IX. Further, those skilled in the art will recognize that the method400is exemplary and is not intended to be limiting of the invention. For example, selecting modes158other than scrolling modes (such as any mode158of Table VII) is broadly contemplated.

As shown, the method400begins at step410, where the mode manager240defines a plurality of modes158. In this particular example, the mode manager240defines a plurality of scrolling modes, such as the scrolling modes of Table VII. Further, the mode manager240may associate each mode158with user input. For example the mode manager240may associate each mode158with a gesture156of Table VIII or IX.

At step420, the mode manager240selects a scrolling mode based on user input. For example, the mode manager240receives a gesture156(provided by the input manager230) and selects a mode158of Table VIII or IX corresponding to the received gesture156. Step420is further described below in conjunction withFIGS. 5-6. At step430, the action manager210performs an action based on user input and the selected scrolling mode. For example, if the coarse scrolling mode of FIG. IX is selected, the action manager210may scroll an image slice154coarsely based on user input (e.g., a gesture of Table IV). After step430, the method400terminates.

FIG. 5is a flowchart depicting a method500for selecting a scrolling mode based on a thumb position, according to one embodiment of the invention. The method500may be performed by the image presenter150ofFIG. 1. The steps of method500correspond to step420ofFIG. 4and are described in conjunction with the scrolling mode example of Table VIII. Further, those skilled in the art will recognize that the method500is exemplary and is not intended to be limiting of the invention. For example, selecting modes158other than scrolling modes (such as any mode158of Table VII) is broadly contemplated. Further, selecting a mode158based on user input other than a thumb position is broadly contemplated.

As shown, the method500begins at step510, where the mode manager240defines two thumb positions for selecting a scrolling mode. For example, the mode manager240defines two thumb positions of Table VIII. At step520, the input manager230determines a thumb position from user input. For example, the input manager230may determine a thumb position that is under other fingers of the user input. At step530, the mode manager240determines whether the thumb position matches a first defined thumb position (e.g., the first gesture of Table VIII). If so, the method500proceeds to step535, where the mode manager240selects a scrolling mode corresponding to the first defined thumb position. For example, if the mode manager240detects a thumb position that is under other fingers, the mode manager240may select a fine scrolling mode, according to Table VIII. After step535, the method500terminates.

If the thumb position does not match a first defined thumb position, the method500proceeds to step540, where the mode manager240determines whether the thumb position matches a second defined thumb position (e.g., the second gesture of Table VIII). For example, if the mode manager240detects a thumb position that is not under other fingers, the mode manager240may select a coarse scrolling mode, according to Table VIII. After step535or step540, the method500terminates.

FIG. 6is a flowchart depicting a method600for selecting a scrolling mode based on a thumb gesture, according to one embodiment of the invention. The method600may be performed by the image presenter150ofFIG. 1. The steps of method600correspond to step420ofFIG. 4and are described in conjunction with the scrolling mode example of Table IX. Further, those skilled in the art will recognize that the method600is exemplary and is not intended to be limiting of the invention. For example, selecting modes158other than scrolling modes (such as any mode158of Table VII) is broadly contemplated. Selecting a mode158based on user input other than a thumb gesture is also broadly contemplated.

As shown, the method600begins at step610, where the mode manager240defines a thumb gesture for changing scrolling modes. For example, the mode manager240defines a thumb gesture of Table IX. At step620, the input manager230detects a thumb gesture from user input. For example, the input manager230may detect a thumb swipe from the user input. At step630, the mode manager240determines whether the thumb gesture matches the defined thumb gesture (e.g., the gesture of Table IX). If not, the method600terminates.

However, if the mode manager240determines that the thumb gesture matches the defined thumb gesture, the method600proceeds to step640, where the mode manager240determines whether a fine scrolling mode is currently selected. If so, the method600proceeds to step645, where the mode manager240selects a coarse scrolling mode, thereby “toggling” scrolling modes (e.g., of Table IX). After step645, the method600terminates.

If the mode manager240determines that a fine scrolling mode is not currently selected, the method600proceeds to step650, where the mode manager240determines whether a coarse scrolling mode is currently selected. If so, the method600proceeds to step655, where the mode manager240selects a fine scrolling mode, thereby toggling scrolling modes (e.g., of Table IX). After step655or step650, the method600terminates.

Of course, the embodiments described herein are intended to be illustrative and not limiting of the invention, and other embodiments are broadly contemplated. Those skilled in the art will recognize, for example, that embodiments of the invention may be adapted to support other images (i.e., images other than image slices), actions, gestures, attributes, and modes. Further, multi-touch input from more than one hand may be supported by embodiments of the invention. For example, the image presenter may receive a gesture of three fingers with a right hand on a first image and three fingers with a left hand on a second image. In response to the gesture, the image presenter may perform an associated action of linking the first image and the second image for combined scrolling. In addition, sequences of gestures may be supported by embodiments of the invention. For example, the image presenter may receive three sequential gestures for linking three images for combined scrolling. The three sequential gestures may include three fingers on a first image, followed by three fingers on a second image, followed by three fingers on a third image (regardless of a right hand or a left hand).

Advantageously, embodiments of the invention present image slices in a windowing environment based on multi-touch user input, the image slices generated by an imaging system. In one embodiment, an image presenter may receive multi-touch user input for performing an action on the image slices. The image presenter may identify a number of fingers of the received multi-touch user input. Further, the image presenter may perform an action on the image slices based on the identified number of fingers to generate resultant image slices. The identified number of fingers may determine an image slice on which to perform the action. Further, behavior of an action may be defined by one or more attributes. The image presenter may modify an attribute based on the received multi-touch user input. Moreover, the image presenter may define modes that provide default values for attributes. The image presenter may also output the resultant image slices to a user via an output device. Taken together, a user may use multi-touch input to perform an action on an image slice without having to separately or individually select one or more of an image slice, an action, an attribute, and a mode. Further, a user may more efficiently navigate through image slices of a stack.