PATENT DOCUMENT

Publication Number: US-9092893-B2
Application Number: US-201414586274-A
Country: US
Kind Code: B2

Title: Method and interface for converting images to grayscale

Abstract:
A method and apparatus for generating a grayscale image. The method and apparatus receive a single value. From the single value, the method and apparatus generate a set of grayscale weighting values. The method and apparatus generate the grayscale based on a color image and the set of grayscale weighting values. By limiting the number of values to a single value, the method and apparatus prevents a user from arbitrarily selecting a number of possible weighting values which could result in a grayscale image that is too dim or too bright. This single control method and apparatus quickly and efficiently produces a grayscale image that is neither too bright nor too dim.

Claims:
What is claimed is: 
     
       1. A non-transitory machine readable medium storing a program which when executed by at least one processing unit provides a graphical user interface (GUI) for generating a grayscale image, the GUI comprising:
 an image display area for displaying an image; and 
 a grayscale weight selection tool comprising a plurality of thumbnnails displaying a plurality of thumbnail grayscale versions of an image displayed in the image display area, each displayed thumbnail grayscale version demonstrating an application of a different particular setting of the grayscale weight selection tool to the image, the grayscale weight selection tool for receiving a selection of a location within one of the thumbnails that corresponds to a grayscale setting for the displayed image, wherein each thumbnail grayscale version of the image covers a plurality of locations corresponding to a plurality of grayscale settings including the particular setting demonstrated by the thumbnail. 
 
     
     
       2. The non-transitory machine readable medium of  claim 1 , wherein the grayscale weight selection tool is a slider tool. 
     
     
       3. The non-transitory machine readable medium of  claim 1 , wherein a location along a center of a particular thumbnail grayscale version corresponds to the grayscale setting demonstrated by the thumbnail grayscale version. 
     
     
       4. The non-transitory machine readable medium of  claim 1 , wherein the grayscale weight selection tool further comprises a set of selectable UI items. 
     
     
       5. The non-transitory machine readable medium of  claim 4 , wherein the selectable UI items are for applying at least one of a vignette effect, a sepia effect, and a grain effect to a grayscale version of the displayed image. 
     
     
       6. The non-transitory machine readable medium of  claim 4 , wherein the grayscale weight selection tool displays the set of selectable UI items only after a location within one of the thumbnails has been selected. 
     
     
       7. The non-transitory machine readable medium of  claim 1 , wherein the GUI further comprises an indicator that is displayed after at least one image editing effect has been applied to the displayed image. 
     
     
       8. A non-transitory machine readable medium storing a program which when executed by at least one processing unit adjusts digital images, the program comprising sets of instructions for:
 displaying an image in an image display area; 
 displaying a grayscale weight selection tool comprising a plurality of thumbnails displaying a plurality of thumbnail grayscale versions of the displayed image, each thumbnail grayscale version demonstrating an application of a different particular setting of the grayscale weight selection tool to the image; 
 receiving a selection of a location within one of the thumbnails that corresponds to a grayscale setting for the displayed image, wherein each thumbnail grayscale version of the image covers a plurality of locations corresponding to a plurality of grayscale settings including the particular setting demonstrated by the thumbnail; and 
 displaying a grayscale version of the image in the image display area, the grayscale version of the image based on the selected grayscale setting. 
 
     
     
       9. The non-transitory machine readable medium of  claim 8 , wherein the grayscale weight selection tool is a slider tool. 
     
     
       10. The non-transitory machine readable medium of  claim 8 , wherein a location along a center of a particular thumbnail grayscale version corresponds to the grayscale setting demonstrated by the thumbnail grayscale version. 
     
     
       11. The non-transitory machine readable medium of  claim 8 , wherein the program further comprises sets of instructions for:
 displaying a set of selectable UI items as part of the grayscale weight selection tool; 
 receiving a selection of one of the UI items; and 
 applying an effect based on the selection of the UI item to a grayscale version of the displayed image. 
 
     
     
       12. The non-transitory machine readable medium of  claim 11 , wherein the set of instructions for displaying the set of selectable UI items comprises a set of instructions to display the set of selectable UI items only after said receiving the selection of the location. 
     
     
       13. A method of adjusting digital images on an electronic device, the method comprising:
 displaying an image in an image display area; 
 displaying a grayscale weight selection tool comprising a plurality of thumbnails displaying a plurality of thumbnail grayscale versions of the displayed image, each thumbnail grayscale version demonstrating the application of a different particular setting of the grayscale weight selection tool to the image; 
 receiving a selection of a location within one of the thumbnails that corresponds to a grayscale setting for the displayed image, wherein each thumbnail grayscale version of the image covers a plurality of locations corresponding to a plurality of grayscale settings including the particular setting demonstrated by the thumbnail; and 
 displaying a grayscale version of the image in the image display are, the grayscale version of the image based on the selected grayscale setting. 
 
     
     
       14. The method of  claim 13 , wherein the grayscale weight selection tool is a slider tool. 
     
     
       15. The method of  claim 13 , wherein a location along a center of a particular thumbnail grayscale version corresponds to the grayscale setting demonstrated by the thumbnail grayscale version. 
     
     
       16. The method of  claim 13  further comprising:
 displaying a set of selectable UI items as part of the grayscale weight selection tool; 
 receiving a selection of one of the UI items; and 
 applying an effect based on the selection of the UI item to a grayscale version of the displayed image. 
 
     
     
       17. The method of  claim 16 , wherein the applied effect comprises one of a vignette effect, a sepia effect, and a grain effect. 
     
     
       18. The method of  claim 16 , wherein displaying the set of selectable UI items comprises displaying the set of selectable UI items only after said receiving the selection of the location. 
     
     
       19. The method of  claim 13  further comprising displaying an indicator to indicate that at least one image editing effect has been applied to the displayed image. 
     
     
       20. The method of  claim 13 , wherein the grayscale setting value is a single value that determines grayscale weights for a plurality of color channels in the image.

Description:
CLAIM OF BENEFIT TO PRIOR APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 13/629,549, now published as U.S. Publication 2013/0236091. U.S. patent application Ser. No. 13/629,549 claims the benefit of U.S. Provisional Patent Application 61/607,524 entitled “Method and Interface for Converting Images to Grayscale,” filed Mar. 6, 2012 and U.S. Provisional Patent Application 61/607,574 entitled “Media Editing Application with Robust Tools,” filed Mar. 6, 2012. The contents of U.S. Publication 2013/0236091 as well as U.S. Provisional Patent Applications 61/607,524 and 61/607,574 are incorporated herein by reference. 
    
    
     BACKGROUND 
     Digital images can be color (e.g., made up of red, green, and blue components) or black and white (e.g., grayscale). Many image editing applications have the ability to convert color images to black and white (grayscale) images. Such image editing applications generate a luminance (or brightness) for each pixel based on a weighted sum of the levels of green, blue, and red in the pixel. However, most of these applications have pre-set weights for their conversion functions. Such applications do not provide an option for the user to alter the weights for the conversion functions. Some image editing applications do allow the user to adjust the weights for conversion functions. However, such prior art image editing applications give the user too many options by allowing any of the weights to be set independently. The results of setting all three weights to arbitrary levels are often poor. Therefore, there is a need in the art for an image editing application that gives a user some control over grayscale conversion, but constrains the weighting to values that produce acceptable results. 
     BRIEF SUMMARY 
     Some embodiments described herein provide an image editing application that receives a color image and a setting on a grayscale conversion control. The setting provides a single value which is then used to determine weighting values for converting the color image to grayscale. In some embodiments, the weighting values are determined by applying the single value to a parameterized path in a color space (e.g., YIQ color space) to determine a particular point in that color space. This particular point is then converted to weighting values appropriate to the color space of the original image. For example, red, green, and blue weighting values (w r , w g , and w b ) are generated to convert an original image that uses an RGB color space. In some embodiments, the image editing applications generate these weighting values by using a transformation matrix between the color space with the parameterized path and the RGB color space. 
     The total weight (sum of the three weights) of w r , w g , and w b  varies at different points along the parameterized path in some embodiments. If the total weight is large, most images will become brighter during the conversion to grayscale. If the total weight is small, most images will become darker during the conversion to grayscale. To reduce the effects of brightening or darkening during conversions, the image editing application of some embodiments normalizes the weighting values. In other embodiments, the image editing application partially normalizes the weights to reduce, but not eliminate, the changes in overall brightness during different conversions at different settings. 
     The weighting values are then applied to the original color image (e.g., an RGB color image) to convert the color image to a grayscale image. In contrast to prior art image editing applications (with multiple controls for adjusting grayscale images), the image editing applications of some embodiments provide a single control for adjusting grayscale images. By limiting the number of controls to one control, the application of some embodiments prevents a user from arbitrarily selecting a number of possible weighting values which could result in a grayscale image that is too dim or too bright. Using this single control method, the application quickly and efficiently produces a grayscale image that is neither too bright nor too dim. 
     The preceding Summary is intended to serve as a brief introduction to some embodiments described herein. It is not meant to be an introduction or overview of all inventive subject matter disclosed in this document. The Detailed Description that follows and the Drawings that are referred to in the Detailed Description will further describe the embodiments described in the Summary as well as other embodiments. Accordingly, to understand all the embodiments described by this document, a full review of the Summary, Detailed Description and the Drawings is needed. Moreover, the claimed subject matters are not to be limited by the illustrative details in the Summary, Detailed Description and the Drawings, but rather are to be defined by the appended claims, because the claimed subject matters can be embodied in other specific forms without departing from the spirit of the subject matters. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The novel features of the invention are set forth in the appended claims. However, for purpose of explanation, several embodiments of the invention are set forth in the following figures. 
         FIG. 1  illustrates a prior art image editing application with a three-control, adjustable grayscale converter. 
         FIG. 2  illustrates an image editing application with a single-control, adjustable grayscale converter. 
         FIG. 3  conceptually illustrates a process of some embodiments for grayscale conversion based on a single control value. 
         FIG. 4A  conceptually illustrates a process of some embodiments for generating a grayscale image based on a single control value. 
         FIG. 4B  conceptually illustrates a process of some embodiments for generating a grayscale image based on a single control value with normalization operations. 
         FIG. 5  conceptually illustrates a parameterized path used for converting a single value into chroma values in YIQ color space. 
         FIG. 6  illustrates an image editing application performing grayscale conversions using a circular parameterized path. 
         FIG. 7  illustrates grayscale conversions of multiple embodiments with multiple normalization levels. 
         FIG. 8  illustrates an image editing application performing grayscale conversions using a different circular parameterized path. 
         FIG. 9  illustrates an image editing application performing grayscale conversions using an arbitrary parameterized path. 
         FIG. 10  illustrates actual grayscale conversions in one embodiment. 
         FIG. 11  conceptually illustrates a software architecture of an image editing application of some embodiments. 
         FIG. 12A  illustrates a grayscale selection control of some embodiments. 
         FIG. 12B  conceptually illustrates another continuous thumbnail slider control of some embodiments. 
         FIG. 13  illustrates a detailed view of a GUI of some embodiments for viewing, editing, and organizing images. 
         FIG. 14  conceptually illustrates a data structure for an image as stored by the application of some embodiments. 
         FIG. 15  illustrates an architecture of a mobile computing device of some embodiments. 
         FIG. 16  conceptually illustrates an electronic system with which some embodiments are implemented. 
     
    
    
     DETAILED DESCRIPTION 
     In the following detailed description of the invention, numerous details, examples, and embodiments of the invention are set forth and described. However, it will be clear and apparent to one skilled in the art that the invention is not limited to the embodiments set forth and that the invention may be practiced without some of the specific details and examples discussed. 
     I. Introduction 
     In a color image, the qualities (including the color and brightness) of each pixel can be represented as a three dimensional vector (r, g, b). The vector describes the red (r), blue (b), and green (g) components of the pixel. An image that is stored based on pixels that use an RGB encoding scheme can be referred to as an RGB image. A pixel in an RGB original color image can be converted to a grayscale pixel in a grayscale image by using a function of the r, g, and b components of the pixel to determine a quality of the gray pixel (e.g., the luminance) as shown in equation (1).
 
luminance= f (( r,g,b ))  (1)
 
     The function used by some embodiments for determining the luminance of a gray pixel based on the red, blue, and green levels of a color pixel is the dot product of the color vector (r, g, b) and a weighting vector (w r , w g , w b ) as shown in equation (2). The weighting vector (w r , w g , w b ) is a vector composed of three weighting values, each of which corresponds to one of the colors in the color vector.
 
luminance=( w   r   ,w   g   ,w   b )·( r,g,b )= w   r   r+w   g   g+w   b   b   (2)
 
     As can be seen in equation (2) there are three color components (r, g, and b) as well as three weighting values, w r , w g , and w b . As mentioned above, each weighting value corresponds to one color component. The w r  value corresponds to the red (r) component of the pixels. The w g  value corresponds to the green (g) component of the pixels and the w b  value corresponds to the blue (b) component of the pixels. 
     Herein, the figures are described using component (r, g, and b) values that vary between 0 and 1. A pixel lacks a particular color when the corresponding color component&#39;s value is 0 for the pixel. A pixel includes a maximum value of a particular color when the corresponding color component&#39;s value is 1 for the pixel. A pixel with a value of (1, 0, 0) is as bright a red as possible. Similarly, a pixel with a value of (0, 1, 0) is as bright a green as possible and a pixel with a value of (0, 0, 1) is as bright a blue as possible. All other colors can be represented as combinations of blue, green and red. For example the brightest white pixel has a value of (1, 1, 1), the brightest yellow pixel has a value of (1, 1, 0), and a black pixel has a value of (0, 0, 0). 
     One of ordinary skill in the art will understand that although RGB color space is used herein as the color space of the original image, other color spaces of the original image are possible within the scope of the invention. Such other color spaces would have their own weighting values, grayscale conversion formulae, and conversions between the parameterized path color space and the color space of the image. 
     The described luminance values, herein, vary from 0 (black) to 1 (white). However, one of ordinary skill in the art will understand that the scales used for measuring these quantities are arbitrary and that other scales could be used within the scope of the invention. For example, color components and/or luminance in some embodiments could range from 0 to 255 or between any two values. Similarly, one of ordinary skill in the art will understand that the grayscales of some embodiments may be calculated in luma rather than luminance, and that the image editing applications of some embodiments may calculate how dark pixels are rather than how light they are. 
     As described herein, individual weighting values (w r , w g , or w b ) can be positive or negative. In some embodiments (e.g., embodiments where one or more weighting values are negative), pixels with a calculated luminance less than or equal to zero are converted to black pixels (luminance of 0) in the grayscale image. In some embodiments, when one or more weighting values are positive, such that the calculated luminance of a pixel is greater than or equal to 1, the pixel is converted to a white pixel (luminance of 1) in the grayscale image. Pixels with a calculated luminance value between 0 and 1 are converted to gray pixels in the grayscale image. In some embodiments, higher luminance values between the 0 (black) and 1 (white) values represent lighter shades of gray while lower luminance values represent darker shades of gray. In some embodiments, the values of the luminance are not capped. In other embodiments, the values of luminance are not capped while the image is being edited, but are capped when the image is saved in a format with a limited luminance range. 
     In some prior art image editing applications, the weighting values (w r , w g , and w b ) are fixed constants. That is, in such applications the user has no control over the weighting values and can decide only whether to convert a color image to grayscale or not. In other prior art image editing applications, the weighting values can be set independently with separate controls for each weighting value. Weighting values are sometimes called “weights”, or “grayscale weighting sets” (or by their component names, red weighting value or red weight, green weighting value or green weight, etc.).  FIG. 1  illustrates a prior art image editing application with a three-control, adjustable grayscale converter. The application allows a user to convert a color image to a grayscale image by adjusting the weighting of each color component independently.  FIG. 1  includes application interface  100 , grayscale controls  110 A-C, original image  120  with red hair  122 , blue sky  124 , and green shirt  126 , grayscale image  130  with gray hair  132 , gray sky  134 , and gray shirt  136 . 
     Application interface  100  represents the user interface of a prior art image editing application. As described above with regard to equation (2), the luminance of a pixel in the grayscale image is determined by a weighted sum of the color components of the corresponding pixel in the original color image. The weights in the weighted sum are set by the controls. Grayscale control  110 A controls w r , the weighting of the red component of each color pixel when generating the corresponding grayscale pixel. Grayscale control  110 B controls w g , the weighting of the green component of each color pixel when generating the corresponding grayscale pixel. Grayscale control  110 C controls w b , the weighting of the blue component of each color pixel when generating the corresponding grayscale pixel. Original image  120  is a stylized color image of a person. The stylized image has multiple sections with pixels of different colors. The original image  120  has a section of primarily red pixels that make up the red hair  122  of the person. The original image  120  has a section of primarily blue pixels that make up the blue sky  124  of the background of the person. The original image  120  also has a section of primarily green pixels that make up the green shirt  126  of the person. Grayscale image  130  is a black, white, and gray representation of the original color image  120 . Accordingly, the gray hair  132  in the grayscale image  130 , corresponds to red hair  122  in the color image  120 . The gray sky  134  in the grayscale image  130  corresponds to blue sky  124  in the color image  120 . Gray shirt  136  in grayscale image  130  corresponds to green shirt  126  in the color image. 
     As previously mentioned, the prior art image editing application  100  is an image editor with three controls  110 A- 110 C. Each control separately determines how much influence its corresponding color component of the color image  120  will have on the grayscale image  130 . In some prior art image editing applications one or more weighting values can be set to either a positive or a negative value. In such embodiments, when a weight is set to be in a positive range (e.g., 50%), the higher the corresponding component value (r, g, or b) of a pixel is, the more it adds to the luminance of the corresponding grayscale pixel. Conversely, for a component with a weight set to be in a negative range (e.g., −30%), the higher the corresponding component value of a pixel is, the more it subtracts from the luminance of the corresponding grayscale pixel. In  FIG. 1 , the weighting values are shown as part of the slider controls and are all positive (i.e., w r =30%, w g =59%, and w b =11%). Accordingly, grayscale pixels corresponding to red pixels, green pixels, and blue pixels will all have luminance above zero (i.e., they will be gray, not black). Therefore all the pixels in areas  132 ,  134 , and  136  of grayscale image  130  (corresponding to areas  122 ,  124 , and  126  of original image  120 , respectively) have luminosities above zero. 
     In the illustrated prior art image editing application, the three independent slider controls have many settings at which the grayscale image is too bright (i.e., the aggregate weight is too high) and many settings at which the grayscale image is too dim (i.e., the aggregate weight is low or negative). Another disadvantage of having three separate controls is that the grayscale converter of the prior art is somewhat redundant with other controls (e.g., bright and contrast controls). 
     In the sections below, Section II describes image editing applications of some embodiments with a single control for affecting conversions of color images to grayscale images. Then, Section III describes how color space parameterization is used to affect conversions of color images to grayscale images. Next, Section IV describes normalization of color weighting values. Section V then describes the effects of alternate parameterized paths of some embodiments on conversion of color images to grayscale images. Section VI describes the conversion of multi-component pixels in color images to grayscale pixels in grayscale images. Section VII next describes a software architecture of the image editing applications of some embodiments. Section VIII describes a graphical user interface of some embodiments. Section IX then describes more generally an image viewing, editing, and organization application. Finally, Section X describes some examples of electronic systems on which the image editing applications of some embodiments run. 
     II. Single Control Value Grayscale Conversion 
     While the prior art applications offer either zero adjustability of the grayscale conversion or three independently adjustable weighting values, the image editing applications of some embodiments described herein provide a single control for adjusting a grayscale conversion.  FIG. 2  illustrates such a single control for adjusting a grayscale conversion. In particular,  FIG. 2  illustrates how moving a slider control and changing the color component values affects a grayscale conversion of a color image.  FIG. 2  includes image editing application  200  in four stages  201 ,  202 ,  203 , and  204 , color image  210 , effect selector  215 , grayscale images  220 ,  230 , and  240 , and slider control  225 . 
     Stage  201  represents the state of an image editing application  200  of some embodiments before the grayscale converter is activated. Effect selector  215  activates the grayscale conversion tool of the application  200 . Stage  202  represents the state of the application  200  after the grayscale converter is activated, but with the slider control  225  in a default (center) position. Slider control  225  controls the grayscale conversion effect. Stages  203  and  204  represent the states of application  200  after slider control  225  has been moved to the right or left, respectively. Color image  210  is an original image which will be converted to grayscale by application  200 . Grayscale images  220 ,  230 , and  240  are images generated by application  200  according to the position of slider control  225 . 
     The first stage  201  shows the application prior to the activation of the grayscale control. At this stage  201 , the original image  210  is still shown in color. The control  215  activates the grayscale converter when it is selected. Selection of control  215  can be by various means including, but not limited to, clicking with a cursor controller, performing a gesture at a location on a device having a touch or near touch sensitive screen, or using a keyboard. In some embodiments, a user may select a location by tapping or placing a finger at the location. In other embodiments, other gestures may be performed to select a location. 
     The second stage  202  shows the state of the application just after the grayscale converter has been activated. In this stage, a default value of the grayscale conversion is used. In the illustrated embodiment, the default value is represented by a slider control  225  set to the center of the available scale of values. One of ordinary skill in the art will understand that other embodiments can use different default values. Because the grayscale converter has been activated, a grayscale image  220  has taken the place of original image  210 . In the illustrated embodiment, for the default value of the slider control, all three weighting values are positive. Therefore, pixels corresponding to each of the colors in the original image  210  have positive luminance values in the converted grayscale image  220 . Even though the illustrated embodiment is displaying the grayscale image  220  in the place of original image  210 , in some embodiments, a copy of the original image  210  is stored in memory to provide a basis for assorted grayscale converter settings. 
     In the third stage  203 , the slider control  225  has been moved to the right of center. In the illustrated embodiment, the position of the slider control in stage  203  corresponds to a negative value for the green weighting value. Accordingly, the area of image  230  that corresponds to the green shirt of original image  210  is black. In the third stage  203 , the slider control position also corresponds to positive values for the red and blue weighting values. These values are also high enough to display gray pixels (rather than black pixels) in place of the blue and red pixels of the original color image  210 . 
     In the fourth stage  204 , the slider control  225  has been moved to the left of center. In the illustrated embodiment, the position of the slider control in stage  204  corresponds to a negative value for the red weighting value. Accordingly, the area of image  240  that corresponds to the red hair of original image  210  is black. In the fourth stage  204 , the slider control position also corresponds to positive values for the green and blue weighting values. These values are also high enough to display gray pixels (rather than black pixels) in place of the green and blue pixels of the original color image  210 . By limiting the controls to one slider control, the application of some embodiments prevents a user from arbitrarily selecting a number of possible weighting values which could result in a grayscale image that is too dim or too bright. 
     The image editing application illustrated in  FIG. 2  applies a process of some embodiments for generating grayscale images from color images.  FIG. 3  conceptually illustrates such a process for grayscale conversion based on a single control value in some embodiments.  FIG. 3  is described in relation to  FIG. 2 . 
     Process  300  begins by retrieving (at  310 ) a color image, such as image  210  of  FIG. 2 . In some embodiments, the color image can be retrieved from a memory storage (e.g., a non-volatile memory such as a hard disk, flash memory, etc. or a volatile memory such as RAM). The color image of some embodiments can be the result of the application of previous filters, image editing tools and special effects to an earlier version of the image. The retrieved color image is not always displayed visually. For example, in the image editing applications of some embodiments, once the grayscale image converter has been activated, the color image is stored in memory while the current grayscale version of the image is displayed visually. As stages  202 - 204  of  FIG. 2  show, the color image  210  is used to generate the various grayscale images  220 - 240 , but is not itself displayed in those stages  202 - 204 . 
     Next, the process  300  receives (at  320 ) a single value for grayscale conversion. In some embodiments, this single value is received from a slider control setting (e.g., from a user setting slider control  225  of  FIG. 2 ). However, in other embodiments, the single value can be received from other types of controls. The process  300  then generates (at  330 ) a grayscale image based on the original color image and the single value. This is shown in  FIG. 2  as each of the images  220 ,  230 , and  240  is generated based on image  210  and a single value (set by the respective slider control settings in stages  202 - 204 ). This process  300 , with a single value for grayscale conversion, allows the user some control over the conversion without overwhelming the user with too many options. 
     III. Color Space Parameterization 
       FIG. 3  illustrates the general process of some embodiments for converting a color image to grayscale based on a single value.  FIG. 4A  conceptually illustrates a particular, more detailed, process  400  of some embodiments for generating a grayscale image based on a single value. Process  400  will be described in relation to FIGS.  2  and  5 - 7 . The process  400  begins, like the process  300 , by retrieving (at  410 ) a color image (as shown in stage  201  of  FIG. 2 ). The process  400  then receives (at  420 ) a single value (as shown in stage  202  of  FIG. 2 ). 
     The process converts (at  430 ) the control setting to chroma values (e.g., I and Q values) using a parameterized path in a color space (e.g., YIQ color space). More details of using parameterized paths will now be described by reference to  FIG. 5 , before returning to  FIG. 4A .  FIG. 5  conceptually illustrates a parameterized path used for converting a single value received from the user into chroma values in YIQ color space. In some embodiments, the path is a closed, circular path.  FIG. 5  includes graph  500  with I-axis  510 , Q-axis  520 , and parameterized path  530 . 
     Graph  500  represents the plane Y=0.5 in the YIQ color space. I-axis  510  represents the set of values in the plane  500  for which the value of Q is zero. Q-axis  520  represents the set of values in the plane  500  for which the value of I is zero. Parameterized path  530  represents a set of points in the plane  500  that correspond to various settings of the slider control  225  (as shown in  FIG. 2 ). 
     The parameterized path  530  in YIQ color space can be represented by equation (3), below:
 
( Y,I,Q )(slider)=(0.5,0.7*sin(slider*2π),0.7*cos(slider*2π))  (3)
 
     In the above equation (3), (Y, I, Q) is a vector in YIQ color space pointing to a location on the parameterized path  530  and “slider” represents the single value provided by the slider control. The specific location on the path is determined by the slider control value (not shown). In some embodiments, the slider control value ranges from 0 to 1. In the parameterized path  530 , a slider control value of 0 corresponds to an I value of 0 and a Q value of 0.7, while a slider control value of 0.5 (halfway between the extremes) corresponds to an I value of 0 and a Q value of −0.7. One of ordinary skill in the art will understand that in the parameterized path represented by equation (3), at each endpoint of the path (when the slider control value is 0 or 1), the I and Q components are identical, at the top of the path (Q=0.7, I=0). Therefore, for embodiments using equation (3), the extreme ends of the slider control produce results that are identical to each other. Equation (3) traces out a circle in YIQ color space with a radius of 0.7. The Y value for each point on the parameterized path of equation (3) is 0.5. In some embodiments other radii are used instead of 0.7, and/or other Y values are used instead of 0.5. Furthermore, in some embodiments one or more controls are provided to adjust the radius, the Y value, or both. 
     After the process  400  generates the Y, I, and Q values, the process  400  then converts (at  440 ) the color space (e.g., YIQ color space) values to RGB weighting values (i.e., w r , w g , and w b ). In some embodiments, the conversion from YIQ color space values to RGB weighting values is performed using a transformation from YIQ color space to RGB color space, such as with the equations (4A), (4B), and (4C).
 
 w   r   =Y+ 0.956296* I+ 0.621024* Q   (4A)
 
 w   g   =Y− 0.272122* I− 0.647381* Q   (4B)
 
 w   b   =Y− 1.10699* I+ 1.70461* Q   (4C)
 
     In the above equations (4A)-(4C), Y=0.5 (in accord with the Y-coordinate of the parameterized path) and the values of I and Q are set by applying the slider control value to equation (3), above. One of ordinary skill in the art will understand that in some embodiments, different transformation matrixes from YIQ color space are used. Furthermore, in some embodiments entirely different color spaces are used for the parameterized path such as HSV, YUV, YPbPr and/or YCbCr color spaces, or any other color spaces. The image editing applications of such embodiments may employ appropriate formulae to transform values from the color spaces they use to RGB weighting values. 
     The process  400  then generates (at  450 ) a grayscale image based on the weighting values.  FIG. 6  illustrates an image editing application performing grayscale conversions using the circular parameterized path of  FIG. 5 . Some sets of weighting values (w r , w g , and w b ) generated in operation  440  are illustrated in  FIG. 6  along with grayscale conversions based on each set of weighting values. The weighting values for each grayscale image are set according to a position on the parameterized path. Each position is determined by a slider control  625 .  FIG. 6  includes an image editing application  600  at stages  601 ,  602 , and  603 , grayscale images  610 ,  620 , and  630 , slider control  625 , sets of weighting values  640 ,  650 , and  660 , and selected points  642 ,  652 , and  662 . Image  610  includes gray shirt  612  and gray hair  614 . Image  620  includes gray hair  622 , gray sky  624 , and gray shirt  626 . Image  630  includes gray hair  632 , gray sky  634 , and gray shirt  636 . 
     Stage  601  shows the image editing application of some embodiments in a default state of the grayscale conversion, with the slider control  625  at point B, halfway between the extreme points (A and C). Stages  602  and  603  show the application of some embodiments in which the slider control  625  has been moved to extreme points A and C respectively. Each set of weighting values  640 ,  650 , and  660  determines how a color image  210  (shown in  FIG. 2 ) will be converted to a grayscale image (grayscale images  610 ,  620 , and  630 , respectively). Selected points  642 ,  652 , and  662  represent the points on the plane  500  (as shown in  FIG. 6 ) corresponding to the location of slider control  625  (i.e., B, A, and C) in stages  601 - 603 . Gray shirt  612  and gray hair  614  show how green and red pixels, respectively, are transformed by the weighting values  640 . Gray hair  622 , gray sky  624 , and gray shirt  626  show how red, blue, and green pixels, respectively, are transformed by the weighting values  650 . Gray hair  632 , gray sky  634 , and gray shirt  636  show how red and blue pixels are affected by the weighting values  660 . 
     In stage  601 , the green weighting value is almost 1, the red weighting value is very small (about 0.065) and the blue weighting value is negative. Because the green weighting value is so large (almost 1) any green pixels in the original image  210  will result in relatively bright corresponding pixels in the grayscale image  610 . This is shown in equations (2), repeated below, and (5A)-(5C), also below:
 
luminance=( w   r   ,w   g   ,w   b )·( r,g,b )= w   r   r+w   g   g+w   b   b   (2)
 
     Where equation 2 is the previously provided general equation for calculating grayscale luminance based on weighting values. When the weighting values w r , w g , and w b  have the specific values show in weighting values  640  in  FIG. 6 , the equation becomes:
 
luminance=0.065* r+ 0.953* g− 0.693 *b   (5A)
 
     In the case of the shirt in original color image  210 , all the pixels are green with no red or blue component. That is, the red and blue component values of the pixels that make up the shirt are both zero, while the green component values are various large values (different values for different pixels of the shirt) which are therefore still represented by the variable “g”. Therefore the equation becomes:
 
luminance=0.065*0+0.953* g− 0.693*0  (5B)
 
     When the zero values are factored into the equation, the equation for the pixels of the shirt reduces to:
 
luminance=0.953 *g   (5C)
 
     The multiplier of 0.953 is high, and for the shirt the values of g are high. Accordingly, the shirt is bright gray in grayscale image  610 . In contrast, the relatively low red weighting value (about 0.065) is applied to the red hair in image  210 . The low red weighting value results in the red hair in the color image  210  being converted to dim gray hair  614  in the grayscale image  610 . As the blue weighting value is a negative number, the calculated luminance of the grayscale image pixels corresponding to the blue pixels of the sky in image  210  will be negative as shown in equation (6), below:
 
luminance= w   b   *b&lt; 0 if  w   b &lt;0  (6)
 
     In the above equation (6), w b  is the weighting factor for blue components of pixels and b is the blue component of the pixel (b ranges from 0 to 1). As previously mentioned, a calculated luminance less than zero results in a black pixel (because the luminance is set equal to 0) in the grayscale image. Therefore the blue sky in the color image  210  has been converted to black in image  610 . 
     The original image  210  has pixels that are either all blue, all green, or all red with no mixed colors. However in an image with pixels of mixed colors (e.g., any pixel that has more than one positive component), the weighting values w r , w g , and w b  are applied separately to each component (r, g, and b) before the values are added to each other, to perform equation (2). 
     In the set of weighting values  640 , w g  is positive. Accordingly (if both other component values are constant), the larger the green component value of a pixel is, the brighter (higher luminance) the corresponding pixel in the grayscale image will be. In the set of weighting values  640 , w b  is negative. Therefore (if both other component values are constant), the larger the blue component of a pixel is, the dimmer (lower luminance) the corresponding pixel in the grayscale image will be. That is, a pixel with a low green value (g) and a large blue value (b) will be converted to a dark (or black) pixel in the grayscale image. The pixel is black because the negative blue weighting combined with the large blue value overwhelms the positive green weighting combined with the low green value. In contrast, a pixel with a large green value (g) and a small blue value (b) will result in a bright pixel in the grayscale image. The pixel is bright because the negative blue weighting combined with the small blue value is overwhelmed by the positive green weighting combined with the high green value. Because the red weighting value w r  is small in weighting values  640 , the red component of a pixel would have a small effect on the brightness and/or darkness of the corresponding grayscale pixel. 
     The slider control  625  in stage  602  is set to point A (a 0 value for the slider control of these embodiments). As a result of this setting, in the parameterized path  530 , the red weighting value (w r ) of weighting values  650 , is almost 1. Therefore, bright red pixels in the original image  210  correspond to bright pixels in the grayscale image  620 . 
     In this stage  602 , the blue weighting value is greater than 1. Therefore the product of the blue weighting value (w b ) and the blue component of a blue pixel in the color image  210  is much greater than the component value in the original color image ( 210 ). Accordingly the blue pixels in the original image  210  correspond to pixels in the grayscale image  620  that are very bright (e.g., brighter than the original blue pixels). Similar to the red weighting value in stage  601 , the green weighting value in stage  602  is very small. Therefore, the product of the green weighing value (w g ) and the green component values (g) will be small. Accordingly, the green shirt from original image  210  is converted to a very dim gray shirt  626  in stage  602 . 
     Stages  602  and  603  demonstrate that the endpoints of the slider control settings generate identical grayscale images. In stage  603 , the slider control is at C (value 1), while in stage  602  the slider control is at A (value 0). Even though the slider controls are at completely opposite positions in stages  602  and  603 , the selected points  652  and  662  are at the same location in the YIQ color space. The matching of the locations of the selected points  652  and  662  occurs because the path is circular, so the start and end of the path is the same. That is, in the equation (3) (which is repeated below), a slider control value of 0 creates the same results as a slider control value of 1.
 
( Y,I,Q )(slider)=(0.5,0.7*sin(slider*2π),0.7*cos(slider*2π))  (3)
 
     In the above equation, “slider” represents the value set by the slider control and (Y,I,Q) is a vector in YIQ color space. The identical points in YIQ space result in sets of weighting values  650  and  660  which are identical to each other. The identical weighting values and identical original image  210  lead to identical grayscale images  620  and  630 . 
     IV. Normalization 
     One significant difference between stage  601  and stages  602  and  603  is that the image  610  is significantly darker than images  620  and  630 . Image  610  is darker because the sum of the weighting values  640  (used to generate image  610 ) is much lower than the sum of the weighting values  650  or  660  (used to generate images  620  and  630 ). Specifically, the weighting values used to generate image  610  sum to about 0.33. Each set of weighting values used to generate images  620  and  630  sums to about 2.67, a number over 8 times greater than the sum of the weighting values used to generate image  610 . 
     The image editing applications of some embodiments perform normalization operations to reduce the disparity in brightness between different conversions at different slider control settings. The image editing application illustrated in  FIG. 6  does not perform such operations. As a result, the level of brightness of each grayscale image is very different at different slider control  625  settings. In order to reduce such disparity in the difference of brightness levels, the image editing applications of some embodiments use additional operations, such as the normalizing operations shown in  FIG. 4B .  FIG. 4B  conceptually illustrates a process  455  of some embodiments for generating a grayscale image based on a single control value with normalization operations. The process  455  illustrated in  FIG. 4B  performs the same operations  410 - 440  as the process  400  illustrated in  FIG. 4A . However, after generating a set of weighting values in operation  440 , process  455  normalizes (at  460 ) the weighting values. Some embodiments use equations (7A)-(7C) to generate the normalized weighting values.
 
 w   rn   =w   r /( w   r   +w   g   +w   b )  (7A)
 
 w   gn   =w   g /( w   r   +w   g   +w   b )  (7B)
 
 w   bn   =w   b /( w   r   +w   g   +w   b )  (7C)
 
     In the above equations (7A)-(7C), w rn  is the normalized red weighting value, w gn  is the normalized green weighting value, and w bn  is the normalized blue weighting value. Equations (7A)-(7C) ensure that the normalized weighting values sum to 1, regardless of the initial values. This reduces the disparity in average brightness in the grayscale images at different settings. 
     One of ordinary skill in the art will realize that other formulae can be used to reduce the disparity of brightness levels. For example, in some embodiments, the image editing application performs alternate calculations to normalize the weighting values. In the image editing applications of some such embodiments, these weighting values are divided by the length of a weighting vector with values w r , w g , and w b .
 
 w   rn   =w   r /( w   r ^2+ w   g ^2+ w   b ^2)^0.5  (8A)
 
 w   gn   =w   g /( w   r ^2+ w   g ^2+ w   b ^2)^0.5  (8B)
 
 w   bn   =w   b /( w   r ^2+ w   g ^2+ w   b ^2)^0.5  (8C)
 
     In the above equations (8A)-(8C) w rn  is the normalized red weighting value, w gn  is the normalized green weighting value, and w bn  is the normalized blue weighting value. Dividing by the length of the weighting vector generates a normalized weighting vector (w rn , w gn , w bn ) with a length of 1, rather than a normalized weighting vector the components of which sum to 1 (as is generated by equations (7A)-(7C)). 
     Normalized weighting values may reduce the visual impact of different settings. Therefore, to allow for some disparity in the average brightness at different settings, the image editing applications of some embodiments generate (at  470 ) a weighted average of the normalized and unnormalized weighting values. This weighted average is referred to herein as “partially normalized” weighting values. Some embodiments use equations (9A)-(9C) to generate partially normalized weighting values.
 
 w   rpn   =k*w   rn +(1− k )* w   r   (9A)
 
 w   gpn   =k*w   gn +(1− k )* w   g   (9B)
 
 w   bpn   =k*w   bn +(1− k )* w   b   (9C)
 
     In the above equations (9A)-(9C), w rn  is the normalized red weighting value, w gn  is the normalized green weighting value, w bn  is the normalized blue weighting value, w rpn  is the partially normalized red weighting value, w gpn  is the partially normalized green weighting value, w bpn  is the partially normalized blue weighting value, and k is a constant. In some embodiments k is between 0.6 and 0.7 (e.g., k is ⅔ in some embodiments). Embodiments that generate partially normalized weighting values then generate (at  480 ) a grayscale image based on the original color image (e.g., image  210 ) and the partially normalized weighting values. 
     Partially normalized weighting values generated in operation  470  are in some ways superior to fully normalized weighting values generated in operation  460 . For example, partially normalized weighting values allow some variation in brightness levels of grayscale images generated at different settings without allowing excessive variation. However, one of ordinary skill in the art will understand that some image editing applications that are still within the scope of the invention do not perform operation  470  and instead proceed to generate (at  480 ) the grayscale image based on the normalized weighting values generated in operation  460 . 
       FIG. 7  illustrates grayscale conversions performed by multiple image editing applications of different embodiments with different normalization levels. Each grayscale conversion uses the same slider control settings and parameterized path, but different levels of normalization.  FIG. 7  includes applications  710 ,  720 , and  730 , grayscale images  712 ,  722 ,  732 , and slider controls  718 ,  728 ,  738 . Grayscale image  712  includes gray shirt  714  and gray sky  716 . Grayscale image  722  includes gray shirt  724  and gray sky  726 . Grayscale image  732  includes gray shirt  734  and gray sky  736 . Applications  710 ,  720 , and  730  are applications of separate embodiments that differ by the extent to which they apply normalization to grayscale weighting values. Grayscale images  712 ,  722 , and  732  show the effects of the different levels of normalization on grayscale images. The slider controls  718 ,  728 , and  738  show the settings of the different applications for which the value of the grayscale conversion setting is the same. The gray shirts  714 ,  724 , and  734  show the effects of the normalization on the green pixels of an original image  210  (not shown). Similarly, the gray skies  716 ,  726 , and  736  show the effects of normalization on the blue pixels of the original image  210 . 
     For the non-normalized grayscale image of  FIG. 7 , the sum of the weighting values is a positive value less than 1. Thus the normalization of the weighting values divides the weighting values by a number less than 1. Dividing the weighting values by a number less than 1 results in an increase in the weighting values during the normalization process. The image  712  is generated with unnormalized weighting values and the image  722  is generated with the normalized weighting values. Accordingly, as  FIG. 7  shows, full normalization of weighting values results in the image  722  being lighter than the image  712  generated without normalizing the weighting values. This can be seen by comparing the brightness of either the gray shirts  714  and  724  or the brightness of the gray skies  716  and  726 . The increase of the weighting values caused by the normalization increases the brightness of both the gray shirt  724  and the gray sky  726 . 
     The image  732  is generated with partially normalized weighting values. Because the weighting values used to generate the image are a weighted average of the normalized and unnormalized weighting values, the image  732  is of an intermediate brightness between the brightness of the two images  712  and  722 . This can be seen by comparing the brightness of the gray shirts  714 ,  724 , and  734  or the brightness of the gray skies  716 ,  726 , and  736 . The increase of the weighting values caused by the normalization increases the brightness of both the gray shirt  734  and the gray sky  736  above the brightness of the gray shirt  714  and the gray sky  716 . However for partial normalization the increase in brightness of the gray shirt  734  and the gray sky  736  is less than the increase in brightness for the gray shirt  724  and the gray sky  726 . 
     The slider controls  718 ,  728 , and  738  are all set to the same slider control value and the same parameterization path (not shown) is used for the applications  710 ,  720 , and  730  of the three different embodiments. Accordingly, the differences in the brightness of the images are entirely due to the different normalization level of each image. 
     V. Alternate Parameterized Paths 
     As described above, the image editing applications of some embodiments use equation (3) to generate YIQ color space values from slider control values. However, other embodiments use other equations to generate their YIQ color space values. For example, some embodiments use a parameterized path similar to the parameterized path defined by equation (3), but with a different starting/ending point. Such a parameterized path is generated by equation (10), below:
 
( Y,I,Q )(slider)=(0.5,0.7*sin(slider*2π−π/2),0.7*cos(slider*2π−π/2))  (10)
 
     As was the case with equation (3), in equation (10), (Y, I, Q) is a vector in YIQ color space, and “slider” represents the value set by the slider control. Equation (10) yields different YIQ values for the same slider settings as equation (3). 
       FIG. 8  illustrates an image editing application performing grayscale conversions using the circular parameterized path defined by equation (10). The parameterized values for this path are offset compared to that of  FIG. 6  and the weighting values are partially normalized.  FIG. 8  includes application  800  at stages  801 ,  802 , and  803 , grayscale images  810 ,  820 , and  830 , slider control  825 , weighting values  840 ,  850 , and  860 , selected points  842 ,  852 , and  862 , and parameterized path  870 . Image  810  includes gray hair  812  and gray shirt  814 . Image  820  includes gray shirt  822  and gray sky  824 . Image  830  includes gray shirt  832  and gray sky  834 . 
     Stage  801  shows the application of this embodiment in the default state of grayscale conversion. The parameterized path  870 , along with the slider control  825  position is used to determine the selected point  842 . Selected point  842  identifies the location in the I-Q plane corresponding to slider control position B. The weighting values  840  determine the effects of various color components of original image  210  (of  FIG. 2 ) on the grayscale image  810 . Grayscale image  810  is a converted version of image  210 . Gray hair  812  corresponds to the red hair in image  210 . Similarly, gray shirt  814  corresponds to the green shirt in image  210 . 
     Stages  802  and  803  show the state of the application when the slider control  825  is set to extreme points A and C, respectively. Selected points  852  and  862  identify the location in the I-Q plane corresponding to slider control positions A and C. The weighting values  850  and  860  determine the effects of various color components of original image  210  (not shown) on the grayscale images  820  and  830 . Grayscale images  820  and  830  are converted versions of image  210 . Gray skies  824  and  834  correspond to the blue sky in image  210 . Similarly, gray shirts  822  and  832  correspond to the green shirt in image  210 . 
     The application  800  uses partially normalized weighting values such as those generated by equations (9A)-(9C) with a k value of ⅔. The partially normalized weighting values  850 , and  860  both include low values for w gpn , high values for w bpn  and negative values for w rpn . Accordingly, red pixels in the original image  210  correspond to black pixels in the images  820  and  830 , while the blue pixels from the original image  210  correspond to relatively bright pixels in the images  820  and  830  and the green pixels from the original image  210  correspond to relatively dim pixels in the images  820  and  830 . 
     In the illustrated embodiment, the default setting for the slider control is shown in stage  801 . The slider control value (0.5) is the same in this stage as the slider control value in stage  601  of  FIG. 6 . However, because the embodiments of these figures use different parameterized paths, selected point  842  of this embodiment is different from selected point  642  of the embodiment illustrated in  FIG. 6 . One advantage of the parameterized path  870  over parameterized path  530  is that the default slider control value (0.5, i.e., point B) for parameterized path  870  generates a large red weighting value, which tends to improve representations of skin tones (e.g., faces) in real photographic images. This is not shown in the stylized images herein, because the face in the color image  210  of  FIG. 2  has color values of (0, 0, 0) (e.g., zero red, blue, and green values). Therefore, the faces in the grayscale image have a luminance of 0. 
       FIGS. 5 ,  6 , and  8  illustrate embodiments that use circular parameterized paths. However, one of ordinary skill in the art will understand that non-circular parameterized paths are also possible within the scope of some embodiments. In fact, some embodiments can use any arbitrarily defined parameterized paths through the colorspace.  FIG. 9  illustrates an image editing application performing grayscale conversions using an arbitrary parameterized path through the I-Q plane with Y equal to 0.5. The path in this figure is still in the same plane as the circular paths of the previous figures. However, in other embodiments, the path may be in a plane with a different Y value, or even path through multiple Y values. The arbitrary path of this figure is open, so the endpoints are not congruent with each other.  FIG. 9  includes application  900  at stages  901 ,  902 , and  903 , grayscale images  910 ,  920 , and  930 , slider control  925 , sets of weighting values  940 ,  950 , and  960 , selected points  942 ,  952 , and  962 , and parameterized path  970  on plane  500 . Grayscale image  910  includes gray hair  912  and gray sky  914 . Grayscale image  920  includes gray hair  922  and gray shirt  924 . Grayscale image  930  includes gray sky  932  and gray shirt  934 . 
     Stages  901 ,  902 , and  903  show the application with various settings of slider control  925 . Grayscale images  910 ,  920 , and  930  represent different grayscale conversions of image  210  (of  FIG. 2 ). Parameterized path  970  represents a different parameterization than those shown in  FIGS. 5-8 . Specifically, parameterized path  970  is an open path with separated end points. Selected points  942 ,  952 , and  962  show the locations in the I-Q plane that correspond to the respective slider control values in stages  901 - 903 . The sets of weighting values  940 ,  950 , and  960  determine the effects of various color components of original image  210  on the grayscale images  910 ,  920  and  930 . Gray hair  912  and gray sky  914  are the grayscale equivalents in image  910  of the red hair and blue sky in image  210 . Gray hair  922  and gray shirt  924  are the grayscale equivalents in image  920  of the red hair and green shirt in image  210 . Gray sky  932  and gray shirt  934  are the grayscale equivalents of the blue sky and green shirt in image  210 . 
     Image editing application  900  differs from image editing application  800  of  FIG. 8  in that the parameterized paths are different for the different applications. However, both applications  900  and  800  perform the same partial normalization on their respective weighting values once they are generated. 
     Stage  901  shows the image editing application  900  with slider control  925  at setting A (with a value of zero), which generates image  910 . The selected point  942  of the parameterized path  970  is at the beginning of the parameterized path  970 . The grayscale image  910  is based on a conversion of image  210  of  FIG. 2 . This setting of the slider control leads to a set of weighting values  940  with a high value for blue weighting, medium value for red weighting, and negative value for green weighting. Accordingly, grayscale image  910  has a light gray sky  914 , medium gray hair  912 , and the pixels corresponding to the shirt in image  210  are black. 
     Stage  902  shows the image editing application  900  with slider control  925  at setting B (with a value of 0.5), which generates image  920 . The selected point  952  of the parameterized path  970  is at a middle point of the parameterized path  970 . The grayscale image  920  is also based on a conversion of image  210 . This setting of the slider control leads to a set of weighting values  950  with a high value for red weighting, medium value for green weighting, and negative value for blue weighting. Accordingly, grayscale image  920  has light gray hair  922  and medium green shirt  924 , and the pixels corresponding to the sky in image  210  are black. 
     Stage  903  shows the image editing application  900  with slider control  925  at setting C (with a value of 1), which generates image  930 . In the previous figures, with their circular parameterized paths  530  (of  FIG. 5) and 870  (of  FIG. 8 ), the set of weighting values was the same for point A as for point C. However parameterized path  970  is not circular. Therefore, the selected point  962  of the parameterized path  970  is at an opposite end point of the parameterized path  970  from previously selected point  942 . The grayscale image  930  is also based on a conversion of image  210 . This setting of the slider control leads to a set of weighting values  960  with a medium-high value for blue weighting, medium value for green weighting, and negative value for red weighting. Accordingly, grayscale image  930  has gray sky  932  and medium green shirt  934 , and the pixels corresponding to the hair in image  210  are black. 
     As mentioned above, the path  970  is not a closed path and the end points (selected points  942  and  962 ) are not identical to each other as was the case with parameterized paths  530  and  870 . Therefore the sets of weighting values  940  and  960  are not the same as each other as was the case with the sets of weighting values corresponding to the endpoints of slider controls  625  (i.e., sets of weighting values  650  and  660 ) and  825  (i.e., sets of weighting values  850  and  860 ). Furthermore, because the image editing application of this embodiment uses a different parameterized path from paths  530  (of  FIG. 5) and 870  (of  FIG. 8 ), the weighting values generated by the image editing application  900  for the same slider control settings (A, B, and C) are different from the weighting values generated by the other image editing applications (illustrated in  FIGS. 6 and 8 ) with the same slider control settings. 
     Although the parameterized path of  FIG. 9  is not circular, it is approximately circular. Some embodiments use parameterized paths that even more closely approximate a circle (e.g., a spiral path with endpoints that are close to each other but not congruent). However, some embodiments use parameterized paths that are not approximately circular. Furthermore, some embodiments use parameterized paths that are not limited to a single plane in a color space. 
     VI. Conversion of Multi-component Pixels 
     For ease of description, the preceding figures illustrated grayscale conversions based on converting pixels of image  210  (of  FIG. 2 ). Each of the pixels in image  210  was all red, all blue, or all green. However, grayscale conversion by the illustrated embodiments also works on images that have pixels with multiple color components (which is the case with a typical photograph).  FIG. 10  illustrates grayscale conversions by an image editing applications of an embodiment. The images include a color image and three images converted to grayscale based on three different settings of a single grayscale conversion control.  FIG. 10  includes images  1010 ,  1020 ,  1030 , and  1040  in stages  1001 - 1004  and slider control  1025 . Image  1010  includes poster  1012  and car  1014 . Image  1020  includes poster  1022  and car  1024 . Image  1030  includes poster  1032  and car  1034 . Image  1040  includes poster  1042  and car  1044 . The posters  1012 ,  1022 ,  1032 , and  1042  all correspond to each other in their respective images. The cars  1014 ,  1024 ,  1034 , and  1044  all correspond to each other in their respective images. 
     In the first stage  1001 , image  1010  is a color image with multiple elements. Included in those elements are a poster  1012  and a car  1014 . The poster  1012  includes, in red letters on a white background, the word “heart” in capital letters. The car  1014  is red against a shadowed (almost black) background. The following stages  1002 - 1004  show different grayscale versions of the image  1010  corresponding to different settings of slider control  1025 . In each of the stages  1002 - 1004 , some of the elements visible in the image  1010  are emphasized in the converted grayscale images  1020 - 1040 . Similarly, some of the elements visible in the image  1010  are deemphasized in the converted grayscale images  1020 - 1040 . 
     In stage  1002 , the slider control  1025  is set to a value of 0.5. The image editing application of the embodiment illustrated in  FIG. 10  uses the parameterized path of equation (10). The slider control value of 0.5 generates a partially normalized red weighting value (w rpn ) that is large and positive, a partially normalized green weighting value (w gpn ) that is small and positive and a partially normalized blue weighting value (w bpn ) that is small and negative. The partially normalized weighting values will be referred to as “weighting values” for the sake of brevity. 
     Turning back briefly to stage  1001 , in color image  1010 , the white pixels in the background of the poster  1012  contain a high amount of each component (for example the brightest possible white pixel has a value of 1 for each component). Because of the positive red and green weighting values (w rpn  and w gpn ) in stage  1002 , the large red and green components of the white pixels tend to make the corresponding pixels bright in grayscale image  1020 . Because of the negative blue weighting value in stage  1002 , the large blue component of the white pixels tends to make the corresponding pixels in grayscale pixel dimmer. However, the blue weighting value (w bpn ) is a small negative number in stage  1002 . In contrast, the red weighting value (w rpn ) is a large positive number in stage  1002 . Accordingly, the large red component of each white pixel of image  1010 , makes the corresponding pixel in grayscale image  1020  bright, while the blue component of the white pixels only slightly lowers that brightness of the corresponding grayscale pixel. Therefore the white pixels in the original image have bright corresponding pixels in the grayscale image. 
     Similarly, the high positive red weighting value (w rpn ) of stage  1002  applies to the red pixels of the word “heart” in the original image. Therefore the corresponding pixels in grayscale image  1020  are bright. As the figure shows in stage  1002 , the red lettering is brightened to about the same luminance as the white background. In grayscale image  1020 , the lettering (now white) cannot be easily read against the white background. Therefore, in poster  1022 , the word “heart” has almost disappeared. 
     In contrast, the car  1014  in color image  1010  is red against a dark background. The dark background of car  1014  leads to a similarly dark background for corresponding car  1024  in stage  1002 . As previously described, the red weighting value in stage  1002  is positive and large. Accordingly, in stage  1002 , the pixels of car  1024  are bright because they correspond to the pixels of red car  1014  from stage  1001 . 
     The slider control  1025  value in stage  1003  is set to about 0.75. When this setting is applied by the image editing application to the equations described with respect to stage  1002 , the red weighting value (w rpn ) is set to a medium level. In stage  1003 , the converted white pixels outshine the converted red pixels. Therefore it is easier to read the word “heart” on the poster  1032 . Similarly, the car  1034  has dimmed slightly against the background as compared to stage  1002 . 
     Finally, in stage  1004 , the slider control  1025  is set at about 0.25. In this stage, the red weighting value is very low, so the red letters of the word “heart” in poster  1042  show up as dark pixels against a light background. Because the letters of the word “heart” are dark against a light background, the word is very easy to see in this stage  1004 . This shows that when a colored item is against a light background in an original color image, the contrast between the color and the background can be enhanced by setting a low weighting value for the color component (or components) that is highest for the item. The car  1044  is similarly dimmed compared to the cars  1024  and  1034  in stages  1002  and  1003 . Because the car  1044  is a dim car against a dim background it is difficult to see in this stage  1004 . This shows that when a colored item is against a dark background in an original color image, the contrast between the color and the background can be enhanced by setting a high weighting value for the color component (or components) that is highest for the item. Depending on whether the user wanted to emphasize the car or the wording on the poster, the user would use different settings of slider control  1025 . The ability to emphasize different features of an image at different slider control settings is one advantage of some embodiments. 
     VII. Software Architecture 
     In some embodiments, the processes described above are implemented as software running on a particular machine, such as a computer or a handheld device, or stored in a machine-readable medium.  FIG. 11  conceptually illustrates part of the software architecture of an image editing application  1100  of some embodiments. In some embodiments, the image editing application is a stand-alone application or is integrated into another application, while in other embodiments the application might be implemented within an operating system. Furthermore, in some embodiments, the application is provided as part of a server-based solution. In some such embodiments, the application is provided via a thin client. That is, the application runs on a server while a user interacts with the application via a separate machine remote from the server. In other such embodiments, the application is provided via a thick client. That is, the application is distributed from the server to the client machine and runs on the client machine. 
     The architecture is simplified to represent the portion of the image editing application that performs the color image to grayscale image conversion in some embodiments.  FIG. 11  includes software architecture diagram  1100 , control receiver  1110 , parameterized path calculator  1120 , weighting calculator  1130 , weighting normalizer  1140 , grayscale generator  1150 , grayscale image storage  1160 , image display module  1170 , and original image storage  1180 . 
     The control receiver  1110  receives slider control values. The parameterized path calculator  1120  converts slider control values to values in the YIQ color space. The RGB weighting calculator  1130  converts YIQ values to RGB weights. The weighting normalizer  1140  normalizes RGB weighting values. In some embodiments the weighting normalizer  1140  fully normalizes the RGB weighting values, while in other embodiments the weighting normalizer  1140  partially normalizes the RGB weighting values. Image editing applications of some embodiments do not include a weighting normalizer module, as described in detail in section IV, above. The grayscale generator  1150  takes color images and converts them to grayscale images according to a given set of RGB weighting values. The grayscale image storage  1160  stores grayscale images. The image display module  1170  displays images to a user. The original image storage  1180  stores a color image. 
     In operation, the original image storage  1180  contains an original color image. The image editing application of some embodiments retrieves the image or tags the image as soon as the grayscale converter is activated. When the grayscale converter is activated, the control receiver  1110  receives a slider control setting either from a user or from an internal default value. In the grayscale conversion tool of some embodiments, only one value at a time can be set. For ease of description, the value is described herein as a slider control value. However, in the image editing applications of some embodiments the control receiver receives other types of settings, either instead of or in addition to slider control settings. For example, in some embodiments the control receiver receives a numerical value typed in on a keyboard, or a setting on a dial or a wheel control tool. 
     In the image editing applications of some embodiments, any time a new value is received (e.g., from a slider control), the control receiver passes the value on to the parameterized path calculator  1120 . The parameterized path calculator then applies the received single value to the parameterized path equation (e.g., equation (3) or equation (10)). The parameterized path equation produces a set of values in YIQ color space in some embodiments. One of ordinary skill in the art will understand that the scope of the invention is not limited to conversions into YIQ color space, but that in other embodiments, the parameterized path produces values in YUV color space, HSV color space, RGB color space, or any other color space. In some embodiments in which the parameterized path is in a non-RGB color space the values calculated from the parameterized path are then converted into weighting values in RGB color space by an RGB weighting calculator  1130 . One of ordinary skill in the art will understand that embodiments in which the parameterized path is already in RGB color space do not require the parameterized path calculator  1120  and RGB weighting calculator  1130  as separate modules, because the parameterized path in applications of such embodiments already produces RGB values. 
     As previously described, some embodiments normalize the weighting values, while other embodiments do not. Some embodiments that normalize the weighting values use a weighting normalizer  1140  to convert the original RGB values to normalized or partially normalized values. The RGB weighting values (whether normalized or not) are passed to the grayscale generator  1150 . The grayscale generator  1150  converts the tagged/retrieved color image from original image storage  1180  to a grayscale image on a pixel by pixel basis (e.g., by applying equation (2) to each pixel). One of ordinary skill in the art will understand that the grayscale generator of other embodiments may use other equations besides equation (2) to generate the grayscale image. The image is then stored in some type of memory by grayscale image storage  1160  and displayed by the image display modules  1170 . In some embodiments the storage  1160  is a drive of some kind, in other embodiments the storage  1160  is a computer memory (e.g., video memory of a display device controller). In some embodiments, the storage  1160  is the same as original image storage  1180   
     The software architecture diagram of  FIG. 11  is provided to conceptually illustrate some embodiments. One of ordinary skill in the art will realize that some embodiments use different modular setups that may combine multiple functions into one module though the figure shows multiple modules, and/or may split up functions that the figure ascribes to a single module into multiple modules. For example, in some embodiments, the parameterized path calculator  1120  is part of a larger calculator module that takes in a single value and outputs RGB weights. In some such embodiments, such a calculator module includes a particular color space-to-RGB weighting calculator. Furthermore some such embodiments do and some embodiments don&#39;t use weighting normalizers  1140 . Embodiments that do use weighting normalizers  1140  use them either as part of the calculator module or separately. As another example, some embodiments combine the control receiver and the image display module into a larger UI module that receives input from a user and outputs displays of interface tools and images. 
     VIII. GUI 
       FIG. 12A  illustrates a graphical user interface (GUI)  1200  of an image editing application of some embodiments. The GUI allows a user to activate and control a grayscale conversion tool. The GUI is presented in four stages  1201 - 1204 . The GUI includes special effect button  1210 , display area  1215 , effects control fan  1225 , grayscale conversion selector  1220 , thumbnail control bar  1240 , and slider control  1245 . In the first stage  1201 , the GUI  1200  is displaying image  1217  in display area  1215 . Image  1217  is a color image. Also in stage  1201 , a user activates special effect button  1210  (e.g., with a finger tap, or other gesture on a touch sensitive screen or near a near touch sensitive screen). Special effect button  1210  activates effects control fan  1225 . 
     The second stage  1202  shows the effects control fan  1225  open/fanned out, and overlaid upon the image  1217 . In some embodiments the effects control fan manifests in the open position. In other embodiments, the effects control fan  1225  manifests folded at the bottom of the screen, then unfolds upward. In still other embodiments, the effects control fan  1225  manifests folded up vertically, then unfolds downward. The effects control fan enables a user to select between various different special effects (e.g., a grayscale effect, a non-photorealistic effect, various gradient effects, etc.). One of the effects accessible through the effects control fan  1225  is a grayscale conversion selector  1220 . The grayscale conversion selector  1220  is selected by a user in the third stage  1203  (e.g., by a finger gesture on a device having a touch sensitive or near touch sensitive screen). 
     The selection of the grayscale conversion selector  1220  in third stage  1203  causes the effects control fan  1225  to be replaced in the display by the thumbnail control bar  1240 . The selection also causes color image  1217  to be replaced by grayscale image  1247 . In some embodiments the replacement of the effects control fan  1225  is performed by the effects control fan  1225  vanishing and the thumbnail control bar  1240  appearing in its place. In some embodiments, the effects control fan folds down first before vanishing. The thumbnail control bar  1240  of some embodiments displays multiple thumbnail images and a slider control  1245 . The slider control  1245  can be moved along the thumbnail control bar  1240 . Moving the slider control  1245  to different positions along the thumbnail control bar  1240  provides different grayscale conversion settings to the image editing application. 
     In some embodiments, each of the thumbnail images indicates what the grayscale image would look like at some setting of the slider control  1245  within the area covered by that thumbnail image. That is, the thumbnails are preview images of the effect performed by that section of the slider control. Moving the slider control  1245  to a different thumbnail or to another part of the same thumbnail will cause the image to change as has been described in relation to the previous figures. In the image editing applications of some embodiments, moving the slider control  1245  to the center of a thumbnail on thumbnail control bar  1240  will generate a full sized grayscale image matching that thumbnail. For example, the image  1247  matches the thumbnail on which slider control  1245  is centered. In image editing applications of other embodiments, moving the slider control  1245  to the left or right side of the thumbnail will generate a full sized grayscale image matching that thumbnail. In image editing applications of still other embodiments, the thumbnail represents the effect of moving the slider control somewhere else within the thumbnail. 
       FIG. 12B  conceptually illustrates another continuous thumbnail slider control  1280  of some embodiments and using the thumbnail slider control  1280  to apply multiple effects to an image. In particular,  FIG. 12B  illustrates GUI  1250  at three different stages  1255 - 1265  of applying multiple effects to an image being edited. 
     The first stage  1255  of the GUI  1250  is similar to the fourth stage  1204  illustrated in  FIG. 12A  except the effects control fan  1225  in  FIG. 12B  includes a set of thumbnail slider controls instead of the slider controls being separate from the control fan as shown in stage  1204  of  FIG. 12A . As shown in  FIG. 12B , a user has activated the effects control fan  1225  (e.g., by selecting the special effect button  1210 , or UI item  1262 ), as indicated by the highlighting of the special effect button  1210 . In addition, the user has selected a thumbnail slider control  1280  of the effects control fan  1225  (e.g., by touching the thumbnail slider control  1280  when the set of thumbnail slider controls of the effects control fan  1225  were fanned out). 
     As shown, the thumbnail slider control  1280  includes a selectable sliding region  1286 , a set of thumbnail images  1281 - 1285  located at different positions along the selectable sliding region  1286 , and a set of selectable UI items  1287 - 1289 . The sliding region  1286  is for applying different extents of a grayscale effect associated with the thumbnail slider control  1280  to the image being edited (the image  1267  in this example). Different locations along the horizontal axis of the sliding region  1286  are for applying different grayscale effects to the image being edited. 
     As shown, each of the thumbnail images  1281 - 1285  displays a thumbnail image of the image  1267  as modified by a grayscale effect associated with the thumbnail slider control  1280  applied to the thumbnail image. In this example, the location in the middle of each thumbnail image in the selectable sliding region  1286  corresponds to the extent of the effect that is applied to the thumbnail image. This way, each of the thumbnail images  1281 - 1285  provide the user with a visual indication of the effect that would be applied to the image being edited if the user selected the middle of that thumbnail. Different embodiments use different locations in the selectable sliding region  1286  relative to the thumbnail images  1281 - 1285  to correspond to the extent of the effect that is applied to the thumbnail images. For instance, some embodiments may use the location near the left of each thumbnail image in the selectable sliding region  1286  to correspond to the extent of the effect that is applied to the thumbnail image. 
     The set of selectable UI items  1287 - 1289  are for applying different effects to the image being edited after an effect is applied to the image using the sliding region  1286 . In some embodiments, set of selectable UI items  1287 - 1289  may be used to apply the different effects to the image without having applied effects to the image using the sliding region  1286 . Examples of effects include a vignette effect, a sepia effect, a grain effect (i.e., an effect that adds a grainy look to the image), or any other effect for modifying the appearance of the image. While first stage  1255  shows the GUI  1250  displaying the set of UI items  1287 - 1289 , the application of some embodiments provides the UI items  1287 - 1289  after an effect has been applied using the sliding region  1286 . 
     The second stage  1260  illustrates the GUI  1250  after a location on the sliding region  1286  of the thumbnail slider control  1280  is selected. Here, the user has selected a location near the thumbnail image  1282  to apply the effect associated with the thumbnail slider control  1280  to the image  1267 . When a location of the sliding region  1286  is selected, the image editing application displays an indicator  1290  that indicates the selected location and highlights the thumbnail closest to the location. As shown, the user has selected a location near the thumbnail image  1282 . When the application receives the selection of this location, the application highlights the thumbnail image  1282  and applies the effect that corresponds with the selected location to the image  1267 . As shown in the second stage  1260 , the effect applied to the image  1267  is similar to the effect applied to the thumbnail image  1282 . In the image editing application of this embodiment, when an effect is applied to the image  1267  the application displays an indicator above the special effect button  1210 . In stage  1260 , this occurs when the application receives the selection of thumbnail image  1282 . The indicator, as shown in stages  1260  and  1265  indicates that at least one effect has been applied to the image  1267 . 
     The third stage  1265  of the GUI  1250  illustrates that the user has selected one of the selectable UI items for applying and additional effect to the image begin edited. As shown, the user has selected the UI item  1287  (e.g., by touching the UI item  1287 ) to apply a vignette effect to the image  1267 . The third stage  1265  also shows that the vignette effect applied to the image as indicated by a darkening of the area around the border of the image  1267 . One of ordinary skill in the art will understand that sliders such as described above can be used for the grayscale effects described herein, but also for other effects. Furthermore, one of ordinary skill in the art will understand that vignette, grain, and sepia controls can be used in conjunction with, even on the same blade of the control fan  1225  as a slider that controls grayscale conversion or on the blades of other sliders that control other effects. 
     IX. Image Viewing, Editing, and Organization Application 
     The above-described figures illustrated various examples of the GUI of an image viewing, editing, and organization application of some embodiments.  FIG. 13  illustrates a detailed view of a GUI  1300  of some embodiments for viewing, editing, and organizing images. The GUI  1300  will be described in part by reference to  FIG. 14 , which conceptually illustrates a data structure  1400  for an image as stored by the application of some embodiments. 
     The data structure  1400  includes an image ID  1405 , image data  1410 , edit instructions  1415 , cached versions  1440  of the image, and any additional data  1450  for the image. The image ID  1405  is a unique identifier for the image, which in some embodiments is used by the collection data structures to refer to the images stored in the collection. The image data  1410  is the actual full-size pixel data for displaying the image (e.g., a series of color-space channel values for each pixel in the image or an encoded version thereof). In some embodiments, this data may be stored in a database of the image viewing, editing, and organization application, or may be stored with the data of another application on the same device. In some embodiments, this additional application is another image organization application that operates on the device, on top of which the image viewing, editing, and organization operates. 
     Thus, the data structure may store a pointer to the local file associated with the application or an ID that can be used to query the database of another application. In some embodiments, once the application uses the image in a journal or makes an edit to the image, the application automatically makes a local copy of the image file that contains the image data. 
     The edit instructions  1415  include information regarding any edits the user has applied to the image. In this manner, the application stores the image in a non-destructive format, such that the application can easily revert from an edited version of the image to the original at any time. For instance, the user can apply a grayscale effect to the image, leave the application, and then reopen the application and remove the effect at another time. The edits stored in these instructions may be crops and rotations, full-image exposure and color adjustments, localized adjustments, and special effects, as well as other edits that affect the pixels of the image. Some embodiments store these editing instructions in a particular order, so that users can view different versions of the image with only certain sets of edits applied. 
     In some embodiments, the edit instructions  1415  are implemented as a list  1460  of edit operations. The list  1460  includes edit operations such as edits  1461 ,  1462 ,  1463 , and  1465 . Each edit operation in the list  1460  specifies the necessary parameters for carrying out the edit operation. For example, the edit operation  1465  in the list  1460  specifies an edit to the image that applies a grayscale effect with grayscale selection parameter as set by the slider value. 
     In some embodiments, the list  1460  records the sequence of edit operations undertaken by the user in order to create the final edited image. In some embodiments, the list  1460  stores the edit instructions in the order that the image editing application applies the edits to the image in order to generate an output image for display, as some embodiments define a particular order for the different possible edits provided by the application. For example, some embodiments define the grayscale effect as one of the edit operations that are to be applied later than other edit operations such as crop and rotation, full-image exposure, and color adjustment. The list  1460  of some of these embodiments would store the edit instruction for the grayscale effect in a position (i.e., edit  1465 ) that would be applied later than some of the other edit operations (e.g., edits  1461 - 1463 ). 
     The cached image versions  1440  store versions of the image that are commonly accessed and displayed, so that the application does not need to repeatedly generate these images from the full-size image data  1410 . For instance, the application will often store a thumbnail for the image as well as a display resolution version (e.g., a version tailored for the image display area). The application of some embodiments generates a new thumbnail for an image each time an edit is applied, replacing the previous thumbnail. Some embodiments store multiple display resolution versions including the original image and one or more edited versions of the image. In some embodiments, the grayscale thumbnails in the slider  1240  are generated off the cached thumbnail image. 
     Finally, the image data structure  1400  includes additional data  1450  that the application might store with an image (e.g., locations and sizes of faces, etc.). In some embodiments, the additional data can include Exchangeable image file format (Exif) data, caption data, shared image data, tags on the image or any other types of data. Exif data includes various information stored by the camera that are captured the image such as camera settings, GPS data, timestamps, etc. Caption is a user-entered description of the image. Tags are information that the application enables the user to associate with an image such as marking the image as a favorite, flagged, hidden, etc. 
     One of ordinary skill in the art will recognize that the image data structure  1400  is only one possible data structure that the application might use to store the required information for an image. For example, different embodiments might store additional or less information, store the information in a different order, etc. 
     Returning to  FIG. 13 , the GUI  1300  includes a thumbnail display area  1305 , an image display area  1310 , a first toolbar  1315 , a second toolbar  1320 , and a third toolbar  1325 . The thumbnail display area  1305  displays thumbnails of the images in a selected collection. Thumbnails are small representations of a full-size image, and represent only a portion of an image in some embodiments. For example, the thumbnails in thumbnail display area  1305  are all squares, irrespective of the aspect ratio of the full-size images. In order to determine the portion of a rectangular image to use for a thumbnail, the application identifies the smaller dimension of the image and uses the center portion of the image in the longer direction. For instance, with a 1600×1200 pixel image, the application would use a 1200×1200 square. To further refine the selected portion for a thumbnail, some embodiments identify a center of all the faces in the image (using a face detection algorithm), then use this location to center the thumbnail portion in the clipped direction. Thus, if the faces in the theoretical 1600×1200 image were all located on the left side of the image, the application would use the leftmost 1200 columns of pixels rather than cut off 200 columns on either side. 
     After determining the portion of the image to use for the thumbnail, the image-viewing application generates a low resolution version (e.g., using pixel blending and other techniques) of the image. The application of some embodiments stores the thumbnail for an image as a cached version  1440  of the image. Thus, when a user selects a collection, the application identifies all of the images in the collection (through the collection data structure), and accesses the cached thumbnails in each image data structure for display in the thumbnail display area. 
     The user may select one or more images in the thumbnail display area (e.g., through various touch interactions described above, or through other user input interactions). The selected thumbnails are displayed with a highlight or other indicator of selection. In thumbnail display area  1305 , the thumbnail  1330  is selected. In addition, as shown, the thumbnail display area  1305  of some embodiments indicates a number of images in the collection that have been flagged (e.g., having a tag for the flag set to yes). In some embodiments, this text is selectable in order to display only the thumbnails of the flagged images. 
     The application displays selected images in the image display area  1310  at a larger resolution than the corresponding thumbnails. The images are not typically displayed at the full size of the image, as images often have a higher resolution than the display device. As such, the application of some embodiments stores a cached version  1440  of the image designed to fit into the image display area. Images in the image display area  1310  are displayed in the aspect ratio of the full-size image. When one image is selected, the application displays the image as large as possible within the image display area without cutting off any part of the image. When multiple images are selected, the application displays the images in such a way as to maintain their visual weighting by using approximately the same number of pixels for each image, even when the images have different aspect ratios. 
     The first toolbar  1315  displays title information (e.g., the name of the collection shown in the GUI, a caption that a user has added to the currently selected image, etc.). In addition, the toolbar  1315  includes a first set of GUI items  1335 - 1338  and a second set of GUI items  1340 - 1343 . 
     The first set of GUI items includes a back button  1335 , a grid button  1336 , a help button  1337 , and an undo button  1338 . The back button  1335  enables the user to navigate back to a collection organization GUI, from which users can select between different collections of images (e.g., albums, events, journals, etc.). Selection of the grid button  1336  causes the application to move the thumbnail display area on or off of the GUI (e.g., via a slide animation). In some embodiments, users can also slide the thumbnail display area on or off of the GUI via a swipe gesture. The help button  1337  activates a context-sensitive help feature that identifies a current set of tools active for the user and provides help indicators for those tools that succinctly describe the tools to the user. In some embodiments, the help indicators are selectable to access additional information about the tools. Selection of the undo button  1338  causes the application to remove the most recent edit to the image, whether this edit is a crop, color adjustment, etc. In order to perform this undo, some embodiments remove the most recent instruction from the set of edit instructions  1415  stored with the image. 
     The second set of GUI items includes a sharing button  1340 , an information button  1341 , a show original button  1342 , and an edit button  1343 . The sharing button  1340  enables a user to share an image in a variety of different ways. In some embodiments, the user can send a selected image to another compatible device on the same network (e.g., WiFi or Bluetooth network), upload an image to an image hosting or social media website, and create a journal (i.e., a presentation of arranged images to which additional content can be added) from a set of selected images, among others. 
     The information button  1341  activates a display area that displays additional information about one or more selected images. The information displayed in the activated display area may include some or all of the Exif data stored for an image (e.g., camera settings, timestamp, etc.). When multiple images are selected, some embodiments only display Exif data that is common to all of the selected images. Some embodiments include additional tabs within the information display area for (i) displaying a map showing where the image or images were captured according to the GPS data, if this information is available and (ii) displaying comment streams for the image on any image sharing websites. To download this information from the websites, the application uses the object ID stored for the image with the shared image data and sends this information to the website. The comment stream and, in some cases, additional information, are received from the website and displayed to the user. 
     The show original button  1342  enables the user to toggle between the original version of an image and the current edited version of the image. When a user selects the button, the application displays the original version of the image without any of the editing instructions  1415  applied. In some embodiments, the appropriate size image is stored as one of the cached versions  1440  of the image, making it quickly accessible. When the user selects the button again  1342  again, the application displays the edited version of the image, with the editing instructions  1415  applied. 
     The edit button  1343  allows the user to enter or exit edit mode. When a user has selected one of the sets of editing tools in the toolbar  1320 , the edit button  1343  returns the user to the viewing and organization mode, as shown in  FIG. 13 . When the user selects the edit button  1343  while in the viewing mode, the application returns to the last used set of editing tools in the order shown in toolbar  1320 . That is, the items in the toolbar  1320  are arranged in a particular order, and the edit button  1343  activates the rightmost of those items for which edits have been made to the selected image. 
     The toolbar  1320 , as mentioned, includes five items  1345 - 1349 , arranged in a particular order from left to right. The crop item  1345  activates a cropping and rotation tool that allows the user to align crooked images and remove unwanted portions of an image. The exposure item  1346  activates a set of exposure tools that allow the user to modify the black point, shadows, contrast, brightness, highlights, and white point of an image. In some embodiments, the set of exposure tools is a set of sliders that work together in different combinations to modify the tonal attributes of an image. The color item  1347  activates a set of color tools that enable the user to modify the saturation and vibrancy, as well as color-specific saturations (e.g., blue pixels or green pixels) and white balance. In some embodiments, some of these tools are presented as a set of sliders. The brushes item  1348  activates a set of enhancement tools that enable a user to localize modifications to the image. With the brushes, the user can remove red-eye and blemishes, and apply or remove saturation and other features to localized portions of an image by performing a rubbing action over the image. Finally, the effects item  1349  activates a set of special effects that the user can apply to the image. In some embodiments, these effects include grayscale effects, duotone effect, grainy effect, gradients, tilt shifts, non-photorealistic desaturation effects, various filters, etc. In some embodiments, the application presents these effects as a set of items that fan out from the toolbar  1325 . 
     As stated, the UI items  1345 - 1349  are arranged in a particular order. This order follows the order in which users most commonly apply the five different types of edits. Accordingly, the editing instructions  1415  are stored in this same order, in some embodiments. When a user selects one of the items  1345 - 1349 , some embodiments apply only the edits from the tools to the left of the selected tool to the displayed image (though other edits remain stored within the instruction set  1415 ). 
     The toolbar  1325  includes a set of GUI items  1350 - 1354  as well as a settings item  1355 . The auto-enhance item  1350  automatically performs enhancement edits to an image (e.g., removing apparent red-eye, balancing color, etc.). The rotation button  1351  rotates any selected images. In some embodiments, each time the rotation button is pressed, the image rotates 90 degrees in a particular direction. The auto-enhancement, in some embodiments, comprises a predetermined set of edit instructions that are placed in the instruction set  1415 . Some embodiments perform an analysis of the image and then define a set of instructions based on the analysis. For instance, the auto-enhance tool will attempt to detect red-eye in the image, but if no red-eye is detected then no instructions will be generated to correct it. Similarly, automatic color balancing will be based on an analysis of the image. The rotations generated by the rotation button are also stored as edit instructions. 
     The flag button  1352  tags any selected image as flagged. In some embodiments, the flagged images of a collection can be displayed without any of the unflagged images. The favorites button  1353  allows a user to mark any selected images as favorites. In some embodiments, this tags the image as a favorite and also adds the image to a collection of favorite images. The hide button  1354  enables a user to tag an image as hidden. In some embodiments, a hidden image will not be displayed in the thumbnail display area and/or will not be displayed when a user cycles through the images of a collection in the image display area. As discussed above by reference to  FIG. 14 , many of these features are stored as tags in the image data structure. 
     Finally, the settings button  1355  activates a context-sensitive menu that provides different menu options depending on the currently active toolset. For instance, in viewing mode the menu of some embodiments provides options for creating a new album, setting a key image for an album, copying settings from one image to another, and other options. When different sets of editing tools are active, the menu provides options related to the particular active toolset. 
     One of ordinary skill in the art will recognize that the image viewing and editing GUI  1300  is only one example of many possible graphical user interfaces for an image viewing, editing, and organizing application. For instance, the various items could be located in different areas or in a different order, and some embodiments might include items with additional or different functionalities. The thumbnail display area of some embodiments might display thumbnails that match the aspect ratio of their corresponding full-size images, etc. 
     X. Electronic Systems 
     Many of the above-described features and applications are implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium). When these instructions are executed by one or more computational or processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, random access memory (RAM) chips, hard drives, erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections. 
     In this specification, the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage which can be read into memory for processing by a processor. Also, in some embodiments, multiple software inventions can be implemented as sub-parts of a larger program while remaining distinct software inventions. In some embodiments, multiple software inventions can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software invention described here is within the scope of the invention. In some embodiments, the software programs, when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs. 
     A. Mobile Device 
     The image editing and viewing applications of some embodiments operate on mobile devices.  FIG. 15  is an example of an architecture  1500  of such a mobile computing device. Examples of mobile computing devices include smartphones, tablets, laptops, etc. As shown, the mobile computing device  1500  includes one or more processing units  1505 , a memory interface  1510  and a peripherals interface  1515 . 
     The peripherals interface  1515  is coupled to various sensors and subsystems, including a camera subsystem  1520 , a wireless communication subsystem(s)  1525 , an audio subsystem  1530 , an I/O subsystem  1535 , etc. The peripherals interface  1515  enables communication between the processing units  1505  and various peripherals. For example, an orientation sensor  1545  (e.g., a gyroscope) and an acceleration sensor  1550  (e.g., an accelerometer) is coupled to the peripherals interface  1515  to facilitate orientation and acceleration functions. 
     The camera subsystem  1520  is coupled to one or more optical sensors  1540  (e.g., a charged coupled device (CCD) optical sensor, a complementary metal-oxide-semiconductor (CMOS) optical sensor, etc.). The camera subsystem  1520  coupled with the optical sensors  1540  facilitates camera functions, such as image and/or video data capturing. The wireless communication subsystem  1525  serves to facilitate communication functions. In some embodiments, the wireless communication subsystem  1525  includes radio frequency receivers and transmitters, and optical receivers and transmitters (not shown in  FIG. 15 ). These receivers and transmitters of some embodiments are implemented to operate over one or more communication networks such as a GSM network, a Wi-Fi network, a Bluetooth network, etc. The audio subsystem  1530  is coupled to a speaker to output audio (e.g., to output different sound effects associated with different image operations). Additionally, the audio subsystem  1530  is coupled to a microphone to facilitate voice-enabled functions, such as voice recognition, digital recording, etc. 
     The I/O subsystem  1535  involves the transfer between input/output peripheral devices, such as a display, a touch screen, etc., and the data bus of the processing units  1505  through the peripherals interface  1515 . The I/O subsystem  1535  includes a touch-screen controller  1555  and other input controllers  1560  to facilitate the transfer between input/output peripheral devices and the data bus of the processing units  1505 . As shown, the touch-screen controller  1555  is coupled to a touch screen  1565 . The touch-screen controller  1555  detects contact and movement on the touch screen  1565  using any of multiple touch sensitivity technologies. The other input controllers  1560  are coupled to other input/control devices, such as one or more buttons. Some embodiments include a near-touch sensitive screen and a corresponding controller that can detect near-touch interactions instead of or in addition to touch interactions. 
     The memory interface  1510  is coupled to memory  1570 . In some embodiments, the memory  1570  includes volatile memory (e.g., high-speed random access memory), non-volatile memory (e.g., flash memory), a combination of volatile and non-volatile memory, and/or any other type of memory. As illustrated in  FIG. 15 , the memory  1570  stores an operating system (OS)  1572 . The OS  1572  includes instructions for handling basic system services and for performing hardware dependent tasks. 
     The memory  1570  also includes communication instructions  1574  to facilitate communicating with one or more additional devices; graphical user interface instructions  1576  to facilitate graphic user interface processing; image processing instructions  1578  to facilitate image-related processing and functions; input processing instructions  1580  to facilitate input-related (e.g., touch input) processes and functions; audio processing instructions  1582  to facilitate audio-related processes and functions; and camera instructions  1584  to facilitate camera-related processes and functions. The instructions described above are merely exemplary and the memory  1570  includes additional and/or other instructions in some embodiments. For instance, the memory for a smartphone may include phone instructions to facilitate phone-related processes and functions. The above-identified instructions need not be implemented as separate software programs or modules. Various functions of the mobile computing device can be implemented in hardware and/or in software, including in one or more signal processing and/or application specific integrated circuits. 
     While the components illustrated in  FIG. 15  are shown as separate components, one of ordinary skill in the art will recognize that two or more components may be integrated into one or more integrated circuits. In addition, two or more components may be coupled together by one or more communication buses or signal lines. Also, while many of the functions have been described as being performed by one component, one of ordinary skill in the art will realize that the functions described with respect to  FIG. 15  may be split into two or more integrated circuits. 
     B. Computer System 
       FIG. 16  conceptually illustrates another example of an electronic system  1600  with which some embodiments of the invention are implemented. The electronic system  1600  may be a computer (e.g., a desktop computer, personal computer, tablet computer, etc.), phone, PDA, or any other sort of electronic or computing device. Such an electronic system includes various types of computer readable media and interfaces for various other types of computer readable media. Electronic system  1600  includes a bus  1605 , processing unit(s)  1610 , a graphics processing unit (GPU)  1615 , a system memory  1620 , a network  1625 , a read-only memory  1630 , a permanent storage device  1635 , input devices  1640 , and output devices  1645 . 
     The bus  1605  collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system  1600 . For instance, the bus  1605  communicatively connects the processing unit(s)  1610  with the read-only memory  1630 , the GPU  1615 , the system memory  1620 , and the permanent storage device  1635 . 
     From these various memory units, the processing unit(s)  1610  retrieves instructions to execute and data to process in order to execute the processes of the invention. The processing unit(s) may be a single processor or a multi-core processor in different embodiments. Some instructions are passed to and executed by the GPU  1615 . The GPU  1615  can offload various computations or complement the image processing provided by the processing unit(s)  1610 . In some embodiments, such functionality can be provided using Corelmage&#39;s kernel shading language. 
     The read-only-memory (ROM)  1630  stores static data and instructions that are needed by the processing unit(s)  1610  and other modules of the electronic system. The permanent storage device  1635 , on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the electronic system  1600  is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device  1635 . 
     Other embodiments use a removable storage device (such as a floppy disk, flash memory device, etc., and its corresponding drive) as the permanent storage device. Like the permanent storage device  1635 , the system memory  1620  is a read-and-write memory device. However, unlike storage device  1635 , the system memory  1620  is a volatile read-and-write memory, such a random access memory. The system memory  1620  stores some of the instructions and data that the processor needs at runtime. In some embodiments, the invention&#39;s processes are stored in the system memory  1620 , the permanent storage device  1635 , and/or the read-only memory  1630 . For example, the various memory units include instructions for processing multimedia clips in accordance with some embodiments. From these various memory units, the processing unit(s)  1610  retrieves instructions to execute and data to process in order to execute the processes of some embodiments. 
     The bus  1605  also connects to the input and output devices  1640  and  1645 . The input devices  1640  enable the user to communicate information and select commands to the electronic system. The input devices  1640  include alphanumeric keyboards and pointing devices (also called “cursor control devices”), cameras (e.g., webcams), microphones or similar devices for receiving voice commands, etc. The output devices  1645  display images generated by the electronic system or otherwise output data. The output devices  1645  include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD), as well as speakers or similar audio output devices. Some embodiments include devices such as a touchscreen that function as both input and output devices. 
     Finally, as shown in  FIG. 16 , bus  1605  also couples electronic system  1600  to a network  1625  through a network adapter (not shown). In this manner, the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet, or a network of networks, such as the Internet. Any or all components of electronic system  1600  may be used in conjunction with the invention. 
     Some embodiments include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media may store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter. 
     While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some embodiments are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some embodiments, such integrated circuits execute instructions that are stored on the circuit itself In addition, some embodiments execute software stored in programmable logic devices (PLDs), ROM, or RAM devices. 
     As used in this specification and any claims of this application, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device. As used in this specification and any claims of this application, the terms “computer readable medium,” “computer readable media,” and “machine readable medium” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals. 
     While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. For instance, many of the figures illustrate various touch gestures (e.g., taps, double taps, swipe gestures, press and hold gestures, etc.). However, many of the illustrated operations could be performed via different touch gestures (e.g., a swipe instead of a tap, etc.) or by non-touch input (e.g., using a cursor controller, a keyboard, a touchpad/trackpad, a near-touch sensitive screen, etc.). In addition, a number of the figures (including  FIGS. 3 ,  4 A, and  4 B) conceptually illustrate processes. The specific operations of these processes may not be performed in the exact order shown and described. The specific operations may not be performed in one continuous series of operations, and different specific operations may be performed in different embodiments. Furthermore, the process could be implemented using several sub-processes, or as part of a larger macro process. Thus, one of ordinary skill in the art would understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims. 
     While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. For example, controls for setting the single value used to control the grayscale conversion are shown as slider controls in  FIGS. 2 ,  6 ,  7 ,  8 ,  9 ,  10 , and  12 . The sliders of such embodiments provide a visual indication of a setting value as a knob is slid along the slider to set a value for the slider. However, in some embodiments, the slider controls shown in any of those figures could be replaced with any other control capable of receiving a value (e.g., a single value), such as a vertical slider control, a pull down menu, a value entry box, an incremental tool activated by keyboard keys, other range related UI controls (e.g., dials, buttons, number fields, and the like), etc. Similarly, the slider controls of those figures are either depicted as being set with a finger gesture (e.g., placing, pointing, tapping one or more fingers) on a touch sensitive screen or simply shown in a position without any indication of how they were moved into position. One of ordinary skill in the art will understand that the controls of  FIGS. 2 ,  6 ,  7 ,  8 ,  9 ,  10 , and  12  can also be activated and/or set by a cursor control device (e.g., a mouse or trackball), a stylus, keyboard, a finger gesture (e.g., placing, pointing, tapping one or more fingers) near a near-touch sensitive screen, or any other control system in some embodiments. Thus, one of ordinary skill in the art would understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.

Metadata:
Filing Date: 20141230
Publication Date: 20150728
Grant Date: 20150728
Priority Date: 20120306
Inventors: UBILLOS RANDY
JOHNSON GARRETT M.
WEBB RUSSELL Y.
ROBERTS SAMUEL M.
Assignee: APPLE INC
CPC Classifications: [{"code": "G06F3/0482", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06T11/001", "inventive": true, "first": true, "tree": "[]"}, {"code": "G06F3/04845", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06F3/04847", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04N1/40012", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06T11/001", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04N9/70", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06T11/001", "inventive": true, "first": true, "tree": "[]"}, {"code": "G06F3/0482", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06F3/04847", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06F3/04845", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04N1/40012", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04N9/70", "inventive": true, "first": false, "tree": "[]"}]
Family ID: 49114174