The present invention relates to media objects, and more particularly to editing media objects.
Users often edit digital photographs or videos. In general, the process is as follows. The user opens a digital photograph. The user then has the ability to apply various edits to the photograph. These edits include changing the colors, changing the texture, making corrections, actually editing the photograph, or making other changes. As the user applies each change, the photograph changes. Some editing tools permit the user to undo each of the edits that have been applied.
A method and apparatus for providing images associated with each of a series of edits applied to a media object.
The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
The method and apparatus to provide visual feedback for each of a series of edits of a media object is described.
Copy logic 120 generates one or more copies of the media object selected for editing. Editing logic 130 then enables the user to perform any available editing functions. Editing functions for photographs, for example, can include color changes, rotation, cropping, red eye removal, texture changes, and any other editing that can be implemented. Multi-edit logic 135 enables the editing logic 130 to generate multiple edits. For example, a multi-edit may be to crop an image in various ways, for example to the various photograph sizes. Another multi-edit may be to change the color tones in various ways. Another multi-edit may be to generate an image with each of the available textures. The multi-edit logic 135 automatically generates multiple versions of the media object, each with a different edit applied.
Display logic 140 adds the edited copy or copies of the media objects to the series of media objects that make up the edits that have been applied to date. In one embodiment, the series starts with a current media object, and is added to each time a new edit is applied.
In one embodiment, the series is displayed in a stack. A stack is a collection of objects laid on top of each other. In one embodiment, the stack makes visible at least a small portion of each of the objects within the stack. The term “heap” may be used, in one embodiment, to refer to a collection of stacks. In one embodiment, the heap makes visible at least a small portion of each stack within the heap. In one embodiment, the stacking logic 145 is implemented as described in co-pending application Ser. No. ______ (docket number 6783.P058), filed on the same date as the present application may be used to generate the stack.
Forking logic 150 enables the system to edit an image in the series that is not the current image. If the user selects a non-current image to edit, forking logic 150 creates a different fork, using the selected non-current image as the “original image.” In one embodiment, “forks” may be shown as different stacks. In another embodiment, forks may be shown as a series of images, as illustrated in
Delete logic 160 enables a user to delete one or more media objects from the series. Purge logic 170 removes the edits associated with those images from the series. This is explained in more detail below with respect to
At block 210, the original image is displayed. In one embodiment, the original image may be a current image in a stack. In another embodiment, the user selects a single image to serve as the “original image.” The “top” image which is the result of all foregoing edits is labeled the “current image.” In another embodiment, at block 215, the process determines whether there are any current entries in the edit stack. In one embodiment, the user opens an existing edit stack for editing. If there are entries in the edit stack, at block 217, the process places the entry from the edit stack on the current stack (initially, on the original image). The process then returns to block 215. This process is iterated until all of the entries from the edit stack have been placed on the current stack. The process then continues to block 220, to enable further editing by the user.
At block 220, the process determines whether the user performed an edit. In one embodiment, the user indicates that he or she wishes to perform an edit by clicking an “Edit” button or similarly interacting with the system.
If the user selected editing, the process continues to block 225. Otherwise, the process continues to block 250.
At block 225, the process determines whether the user is editing the current image. In one embodiment, the user may choose to make alterations to an image at any point in the series. In one embodiment, a parallel fork is created, at block 230, if the user chooses to edit an image that is not the current image. In another embodiment, the system may delete all media objects which are in front of the media object selected for editing. The process then returns to block 235.
For example, there are media objects 1, 2, 3, and 4 in that order, with 1 being the original image and 4 being the current image. In one embodiment, when the user selects media object 3, a new media object 3′ is created with these edits. Thus, two “current” images exist which may be edited, 3′ and 4. In another embodiment, when the user selects media object 3, media object 4 is deleted & a new media object 4′ is created, with the newly applied edits.
If the user is editing the current image, at block 225, the process continues directly to block 235.
At block 235, the system creates a copy of the media object. At bock 240, the user can apply edits to the copy of the media object. At block 245, the edited media object is placed on top of the series, and designated the “current image.” The process then continues to block 250.
At block 250, the process determines whether the user selected an image deletion. If the user deleted an image, the process continues to block 255. At block 255, the deleted image is removed from the series. At block 260, the process determines whether the deleted image was the current image. If so, the process continues to block 270. If the deleted image was not the current image, at block 265 the edits associated with the deleted image are removed. As shown in FIGS. 3A-D, in one embodiment, each subsequent media object in the series includes all foregoing edits. Thus, if the user deletes image 3, then image 4 is modified to remove the effects of the edit associated with image 3. The process then returns to block 270.
At block 270, the process determines whether the user selected a multi-edit. If so, the process continues to block 275. At block 275, the process generates multiple versions of the media object, each with a different edit applied. For example, the user may select the edit “multi-edit textures.” The system may in response generate four images, each having a different texture applied to them. These images, at block 280, are placed on the stack.
The process then returns to block 220, to enable user to perform further edits. In one embodiment, the user may terminate the process at any time by selecting “end editing” or a similar function.
Note that while
In one embodiment, the user may select “spectrum edit” for certain editing formats, such as applying filters. The system then automatically applies filters at various strengths, and places all of the variations on the stack. In one embodiment, the system may apply four strengths of the filter. The user then may click through the filtered versions on the stack, delete any he or she does not wish to save, and have the original, as well as all of the various filter strengths available.
In one embodiment, filters may be applied serially. This is shown in
If the user then deletes the media object which applied the black & white filter (i.e. media object #2320), the resultant media object (formerly media object #4340, but now media object #3360) is a cropped reversed media object that is no longer black & white.
At some point, after the generation of Cropped (#3), the user decides to edit the B&W image (#2). The user flips B&W (#2), generating Flipped (#2B). There are now two parallel forks, as can be seen. In one embodiment, the user may apply the same edits. In one embodiment, the system may automatically generate the edits downtread from the selected object.
The user may, in one embodiment, generate more forks, by selecting the edit of any of the images except the two Current Images, which would continue Fork one or Fork two.
The data processing system illustrated in
The system may further be coupled to a display device 470, such as a cathode ray tube (CRT) or a liquid crystal display (LCD) coupled to bus 415 through bus 465 for displaying information to a computer user. An alphanumeric input device 475, including alphanumeric and other keys, may also be coupled to bus 415 through bus 465 for communicating information and command selections to processor 410. An additional user input device is cursor control device 480, such as a mouse, a trackball, stylus, or cursor direction keys coupled to bus 415 through bus 465 for communicating direction information and command selections to processor 410, and for controlling cursor movement on display device 470.
Another device, which may optionally be coupled to computer system 400, is a communication device 490 for accessing other nodes of a distributed system via a network. The communication device 490 may include any of a number of commercially available networking peripheral devices such as those used for coupling to an Ethernet, token ring, Internet, or wide area network. The communication device 490 may further be a null-modem connection, or any other mechanism that provides connectivity between the computer system 400 and the outside world. Note that any or all of the components of this system illustrated in
It will be appreciated by those of ordinary skill in the art that any configuration of the system may be used for various purposes according to the particular implementation. The control logic or software implementing the present invention can be stored in main memory 450, mass storage device 425, or other storage medium locally or remotely accessible to processor 410.
It will be apparent to those of ordinary skill in the art that the system, method, and process described herein can be implemented as software stored in main memory 450 or read only memory 420 and executed by processor 410. This control logic or software may also be resident on an article of manufacture comprising a computer readable medium having computer readable program code embodied therein and being readable by the mass storage device 425 and for causing the processor 410 to operate in accordance with the methods and teachings herein.
The present invention may also be embodied in a handheld or portable device containing a subset of the computer hardware components described above. For example, the handheld device may be configured to contain only the bus 415, the processor 410, and memory 450 and/or 425. The handheld device may also be configured to include a set of buttons or input signaling components with which a user may select from a set of available options. The handheld device may also be configured to include an output apparatus such as a liquid crystal display (LCD) or display element matrix for displaying information to a user of the handheld device. Conventional methods may be used to implement such a handheld device. The implementation of the present invention for such a device would be apparent to one of ordinary skill in the art given the disclosure of the present invention as provided herein.
The present invention may also be embodied in a special purpose appliance including a subset of the computer hardware components described above. For example, the appliance may include a processor 410, a data storage device 425, a bus 415, and memory 450, and only rudimentary communications mechanisms, such as a small touch-screen that permits the user to communicate in a basic manner with the device. In general, the more special-purpose the device is, the fewer of the elements need be present for the device to function. In some devices, communications with the user may be through a touch-based screen, or similar mechanism.
It will be appreciated by those of ordinary skill in the art that any configuration of the system may be used for various purposes according to the particular implementation. The control logic or software implementing the present invention can be stored on any machine-readable medium locally or remotely accessible to processor 410. A machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g. a computer). For example, a machine readable medium includes read-only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, electrical, optical, acoustical or other forms of propagated signals (e.g. carrier waves, infrared signals, digital signals, etc.).
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
The present application claims the benefit of U.S. Provisional Patent Application Ser. No. 60/562,351, filed Apr. 14, 2004, and incorporates that application by reference.
Number | Date | Country | |
---|---|---|---|
60562351 | Apr 2004 | US |