For a detailed description of exemplary embodiments of the invention, reference will now be made to the accompanying drawings in which:
Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, computer companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect, direct, optical or wireless electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, through an indirect electrical connection via other devices and connections, through an optical electrical connection, or through a wireless electrical connection.
The embodiments disclosed herein relate to a special effect in which a reflected version of an input image is generated.
In at least one embodiment of the invention, the mechanism that takes an input image and permits a user to generate a reflected version of that input image is provided in an image acquisition device such as a digital camera.
The fixed non-volatile storage 104 comprises software 108 that is executed by processor 102. Storage 104 is fixed in that, in at least some embodiments, storage 104 is not readily removable from the camera 100 by a user. Non-volatile storage 106, however, is removable. In some embodiments, non-volatile storage 106 comprises a removable storage device such as Secure Digital (SD) card, Compact Flash card, etc. on which images captured by the image capture module 120 are stored. The software 108 causes the processor 102 to perform various actions. Such actions include, for example, activating the image capture module 120 to acquire an image per user input via one or more of the input controls 126, causing the previously captured images that are stored on the removable non-volatile storage 106 to be viewed on display 130, and performing the methods described herein to generate a reflected image.
The method for generating a reflected image described herein can be implemented in software. In other embodiments, hardware or a combination of hardware and software are possible as well to implement the method. For software-based implementations, the software can be stored on any of a variety of storage media such as volatile memory (e.g., random access memory), non-volatile storage such as fixed non-volatile storage 114 (or a hard disk drive, compact disc read only memory (CD ROM), etc.), and combinations thereof.
Volatile storage 114 comprises random access memory (RAM) in accordance with at least some embodiments of the invention. Volatile storage 114 is used as a temporary scratchpad memory for the processor to use while executing software 108. Further, in some embodiments an image to be processed for reflection first is copied from non-volatile storage 106 to volatile storage 114 and the copy of the image on the non-volatile storage 106 is then processed. Following generation of the reflected image, which is stored on the volatile storage 114, the reflected image is copied to non-volatile storage 106.
Method 200 processes an input image to generate an inverted version of at least a portion of that image. The input image may be an image acquired using the image capture module 120 of camera 100 or the input image may have been acquired or generated via another mechanism in the past. The image may have been acquired or generated by a variety of sources.
While viewing, on display 130, the image to which the user desires to apply the reflective effect, at 202 (
The reflection effect permits a user to select a portion of the input image. In the embodiments disclosed herein, the selected portion comprises a rectangular portion of the input image. In at least some embodiments, the rectangular portion has a width that is one-half of the width of the input image and has a height that is one-half of the input image's height (i.e., one-quarter of the input image). The width and height of the images and image portions are measured in terms of number of pixels defining the images and portions. The selected one-half width, one-half height portion is then inverted as described below to create the reflected image.
The input image in at least some embodiments is stored on removable non-volatile storage 106. Accessing data in volatile memory 114, however, is generally faster than accessing data from the removable non-volatile storage 106. Accordingly, at 204 the image is copied from removable non-volatile storage 106 to a first buffer 115 in volatile memory 114 for further processing therefrom. At 206, a second buffer 117 is created in the volatile memory 114 into which the reflected image is stored. The first and second buffers are of the same or comparable size.
At 208, the user presses the left/right/up down cursor segments 126b-126e to select the one-half width, one-half height portion of the input image for inverting. In accordance with at least some embodiments, 25 different image portions are selectable by the user-five along a horizontal axis and five along a vertical axis.
By pressing the left/right/up down cursor segments 126b-126e, any one of the 25 possible image portions can be selected. In some embodiments, the user, however, is not presented with a direct visual indication as to which center point the user has selected. In some such embodiments, the initial default image portion is portion 242 which is centered about outermost point 251. From there, the user can change the selected center point up, down, left and right. Each time the user selects a new center point and corresponding image portion, method 200 processes the selected portion to apply the reflected effect as explained below. The camera 100 is generally able to apply the reflected effect fast enough (in less than about one second in some embodiments) so that the user can promptly see the result of the effect.
In other embodiments, the user is shown a graphical image of a box on the display 130, the box corresponding to one of the 25 possible portions. The user can move the box around on the screen by selecting different center points via cursor control 126a. The user will then select the Menu/OK button 126f once the desired box location is selected to have the reflected effect applied.
The example described below assumes the user has selected image portion 244 centered about point 253 (
At 212, the image portion 244 in the upper left-hand quadrant of the second buffer is inverted about an edge 260 of portion 244. The edge 260 represents, in at least some embodiments, the bottom edge of image portion 244. Inverting the image portion 244 about edge 260 results in image portion 244 being copied into the lower left-hand quadrant of the second buffer while at the same time inverting the image about horizontal edge 260. The result of the inversion is illustrated in
At 214, the two left-hand image portions, representing the initial portion 244 and the inverted image portion 244a, are inverted about an edge 262. The edge 262 represents, in at least some embodiments, the right-hand vertical edge of image portions 244 and 244a. Edge 262 is orthogonal to edge 260 in this example, although in other examples, the two edges need not be orthogonal to one another. Inverting the image portions 244, 244a about edge 262 results in image portions 244b and 244c as shown in
The reflective effect has been applied to the image copied to the first buffer 115 at 204. In some embodiments, the image may have been the “full” image acquired by the image capture module 120. In a camera having a resolution of, six megapixels, for example, the full image would comprise 6,000,000 pixels of image data. Processing that much data, however, may take more time than a user of the camera 100 is willing to wait. The display 130 of the camera has a lower resolution than the resolution of the image capture module 120. For example, the display 130 may have a resolution of 320×240 pixels (76,800 pixels of image data). The full image is down-sampled to show the image on display 130. In the embodiment of
Each time the user presses the left, right, up, or down arrow cursor segments 126b-126e (of
At any time while viewing a reflected image, the user can press the Menu/OK button 126f, as determined at 216 in
In accordance with another embodiment of the invention, the image portion being reflected is offset before the two inversion actions 212 and 214 (and corresponding inversion actions for the full image) are applied. The option for implementing this feature is selectable by a user via input controls 126. The user can specify the amount of offset via the input controls 126. The effect may be to move the image left or right or up or down as desired.
In some embodiments, the initial image portion is inverted about two axes. In other embodiments, the image portion can be inverted about only a single axis (e.g., a horizontal axis, a vertical axis, or an axis at another angle), or about more than two axes.
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.