Patent Publication Number: US-9405774-B2

Title: Automated image organization techniques

Description:
BACKGROUND 
     Digital image libraries may store images captured by users via user devices. In order to organize a group of images in a digital image library, a user may select particular images to place in a digital album. For example, a user may select “favorite” images associated with a particular event, geographic location, or containing particular individuals. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates an example overview of an implementation described herein; 
         FIG. 2  illustrates an example environment in which systems and/or methods, described herein, may be implemented; 
         FIG. 3  illustrates a flowchart of an example process for automatically generating an album associated with a particular event; 
         FIG. 4  illustrates an example data structure that may store information identifying values for corresponding attributes of an image; 
         FIG. 5  illustrates an example implementation for automatically generating an album associated with a particular event; 
         FIG. 6  illustrates an example implementation for displaying an automatically generated album associated with a particular event; 
         FIG. 7  illustrates an example implementation for automatically generating a “flashback” album; 
         FIG. 8  illustrates an example implementation for displaying a “flashback” album; and 
         FIG. 9  illustrates example components of one or more devices, according to one or more implementations described herein. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     The following detailed description refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements. 
     Manually sorting through an image library can be time consuming and tedious, particularly when the image library contains a substantial quantity of images. Systems and/or methods, as described herein, may automatically identify an event, associated with a group of images in an image library, and generate an album containing images associated with the event. In some implementations, the album may include a subset of images associated with the event. For example, duplicate images, near-duplicate images, and/or low-quality images may be excluded from the album. As a result, images may be automatically organized by event, thereby saving a user time in relation to when the user is required to manually organize the images. 
       FIG. 1  illustrates an example overview of an implementation described herein. As shown in  FIG. 1 , an album generation component may receive images (e.g., from a user device). The album generation component may, for example, include an application running on the user device and/or may be implemented on an external device. An image analysis component may also receive a copy of the images. The image analysis component may also include an application running on the user device and/or may be implemented on an external device. The image analysis component may determine attributes associated with the images, such as object recognition information (e.g., information identifying objects in the image, individuals in the image via facial recognition techniques, and/or some other contents of the image). Additionally, or alternatively, the image analysis component may determine metadata of the images (e.g., geographic locations associated with the image based on geotags included in the images, dates and times in which the images were created, user ratings of the images, etc.). Additionally, or alternatively, the image analysis component may identify text in the images using optical character recognition (OCR) techniques. Additionally, or alternatively, the image analysis component may determine some other attribute of the images. 
     As further shown in  FIG. 1 , the album generation component may receive information regarding the attributes of the images (e.g., as identified by the image analysis component), in addition to information regarding a user associated with the images (e.g., calendar information for the user, call logs associated with the user, messaging activity associated with the user, etc.). Based on receiving the images, the image attributes, and/or the user information, the album generation component may generate albums containing the received images. In some implementations, the album generation component may generate an album by identifying an event based on the user information and/or the image attributes. As an example, the album generation component may identify an event based on the calendar information (e.g., an event identifying a family vacation, a birthday, a wedding, etc.). Additionally, or alternatively, the album generation component may identify an event when a group of images include geotags identifying a geographic location other than a home location of the user. Additionally, or alternatively, the album generation component may identify an event based on information that identifies a geographic location from where telephone calls were made and/or received (e.g., a geographic location other than a home location of the user). Additionally, or alternatively, the album generation component may identify an event based on messaging activity that indicates an event (e.g., the contents of the message indicate an event). 
     Based on identifying an event, the album generation component may identify images associated with the event. For example, if the event is identified based on calendar information, the album generation component may identify images whose metadata identifies dates corresponding to dates of the event as identified in the calendar information. As an example, assume that the calendar information indicates that a family vacation took place between the dates of Jun. 1, 2014 and Jun. 8, 2014. Further, assume that the calendar information indicates a location of the event (e.g., Orlando, Fla.). Given these assumptions, the album generation component may identify the event (e.g., the event “Family Vacation”), and identify images corresponding to the event based on the attributes of the images. For example, the album generation component may identify images having geotags corresponding to the geographic location of Orlando, Fla., and having metadata identifying that the images were captured on dates from Jun. 1, 2014 to Jun. 8, 2014. Once the album generation component has identified images corresponding to the event, the album generation component may select a subset of these images, and create an album including the subset of the images. For example, the album may exclude duplicate images, near-duplicate images, images of relatively low quality, etc. 
       FIG. 2  is a diagram of an example environment  200  in which systems and/or methods described herein may be implemented. As shown in  FIG. 2 , environment  200  may include user device  210 , image analysis component  220 , user information server  230 , album generation component  240 , and network  250 . 
     User device  210  may include a device capable of communicating via a network, such as network  250 . For example, user device  210  may correspond to a mobile communication device (e.g., a smart phone or a personal digital assistant (PDA)), a portable computer device (e.g., a laptop or a tablet computer), a camera device, a gaming device, a desktop computing device, and/or some other type of computing device. In some implementations, user device  210  may be used to capture images, and output images to image analysis component  220  and/or album generation component  240 . When capturing an image, user device  210  may associate a geotag and/or metadata with the image. In some implementations, user device  210  may implement the functions of image analysis component  220  and/or album generation component  240 . For example, one user device  210  may capture images, and output the images to another user device  210  that performs the functions of image analysis component  220  and/or album generation component  240 . Alternatively, a single user device  210  may capture images and perform the functions of image analysis component  220  and/or album generation component  240 . 
     Image analysis component  220  may include one or more computing devices, such as a server device or a collection of server devices. Additionally, or alternatively, image analysis component  220  may be implemented partially or entirely by hardware circuitry and/or processing logic of user device  210 . In some implementations, image analysis component  220  may receive an image from user device  210 , and may identify attributes associated with the image. For example, image analysis component  220  may identify attributes corresponding to metadata associated with the image (e.g., information identifying a date/time in which the image was captured, a type of camera used to capture the image, etc.). Additionally, or alternatively, image analysis component  220  may identify attributes corresponding to a geographic location associated with the image (e.g., based on a geotag associated with the image). Additionally, or alternatively, image analysis component  220  may identify attributes corresponding to object recognition information associated with the image (e.g., objects pictured in the image, individuals pictured in the image based on facial recognition techniques, text pictured in the image based on OCR data, etc.). Additionally, or alternatively, image analysis component  220  may identify some other attribute associated with the image (e.g., resolution, file size, etc.). Image analysis component  220  may output information regarding the attributes to album generation component  240 . 
     User information server  230  may include one or more computing devices, such as a server device or a collection of server devices. In some implementations, user information server  230  may store information regarding user device  210  and/or information regarding a user of user device  210 . For example, user information server  230  may store calling activity of user device  210 , messaging activity of user device  210 , calendar information regarding a user of user device  210 , a user profile of the user (e.g., information relating to the user&#39;s interests), and/or some other information regarding user device  210  and/or the user of user device  210 . In some implementations, user information server  230  may receive calling activity, messaging activity, and/or some other information regarding the user from one or more devices of a cellular network associated with user device  210  (e.g., a call service control function (CSCF) server, a Home Subscriber Server (HSS), or the like). In some implementations, the calling activity may identify a geographic location of user device  210  when placing or receiving calls. In some implementations, user information server  230  may receive calendar information from a calendar service to which the user device is subscribed. In some implementations, user information server  230  may output this information to album generation component  240 . 
     Album generation component  240  may include one or more computing devices, such as a server device or a collection of server devices. Additionally, or alternatively, album generation component  240  may be implemented partially or entirely by hardware circuitry and/or processing logic of user device  210 . In some implementations, album generation component  240  may receive images from user device  210 , image attribute information from image analysis component  220 , and/or user information from user information server  230 . Based on receiving the images, image attribute information, and/or the user information, album generation component  240  may identify an event, identify images associated with the event, and generate an album including a subset of the images. As described above, album generation component  240  may identify the event based on user information and/or image attribute information. In some implementations, album generation component  240  may score image as associated with the event, and exclude images from the album that are below a particular score. As described in greater detail below with respect to  FIG. 3 , album generation component  240  may score images based on image attributes. The scores may be used to select a subset of images that should be included in an album. 
     Network  250  may include one or more wired and/or wireless networks. For example, network  250  may include a cellular network (e.g., a second generation (2G) network, a third generation (3G) network, a fourth generation (4G) network, a fifth generation (5G) network, a long-term evolution (LTE) network, a global system for mobile (GSM) network, a code division multiple access (CDMA) network, an evolution-data optimized (EVDO) network, or the like), a public land mobile network (PLMN), and/or another network. Additionally, or alternatively, network  250  may include a local area network (LAN), a wide area network (WAN), a metropolitan network (MAN), the Public Switched Telephone Network (PSTN), an ad hoc network, a managed Internet Protocol (IP) network, a virtual private network (VPN), an intranet, the Internet, a fiber optic-based network, and/or a combination of these or other types of networks. 
     The quantity of devices and/or networks in environment  200  is not limited to what is shown in  FIG. 2 . In practice, environment  200  may include additional devices and/or networks; fewer devices and/or networks; different devices and/or networks; or differently arranged devices and/or networks than illustrated in  FIG. 2 . Also, in some implementations, one or more of the devices of environment  200  may perform one or more functions described as being performed by another one or more of the devices of environment  200 . Devices of environment  200  may interconnect via wired connections, wireless connections, or a combination of wired and wireless connections. 
       FIG. 3  illustrates a flowchart of an example process  300  for automatically generating an album associated with a particular event. In some implementations, process  300  may be performed by album generation component  240 . In some implementations, some or all of blocks of process  300  may be performed by one or more other devices. 
     As shown in  FIG. 3 , process  300  may include receiving and storing images (block  310 ). For example, album generation component  240  may receive images from user device  210 , and may store the received images. In some implementations, album generation component  240  may receive the images from user device  210  as images are captured using user device  210 . Additionally, or alternatively, album generation component  240  may intermittently or periodically receive the images from user device  210 . For example, album generation component  240  may receive images from user device  210  at off-peak times in order to reduce network congestion in relation to when images are received during peak times. In some implementations, album generation component  240  may receive images from image analysis component  220  and not from user device  210 . In some implementations, album generation component  240  may receive the images from user device  210  when a user of user device  210  manually imports images into an image viewing application associated with album generation component  240 . 
     Process  300  may also include receiving user information (block  320 ). For example, album generation component  240  may receive user information from user information server  230 . In some implementations, the user information may include calling history information for user device  210 , messaging activity of user device  210 , calendar or event information relating to a user of user device  210 , user profile information of the user, etc. In some implementations, the user profile information may identify the user&#39;s interests, usage habits of user device  210  (e.g., web browsing history, application usage patterns, etc.), and/or some other information regarding the user. As described in greater detail below, the user profile information may be used to score an image (e.g., images of relatively higher interest to the user may be scored relatively higher than images of relatively lower interest to the user, as determined by the user profile information). 
     Process  300  may further include receiving image attributes (block  330 ). For example, album generation component  240  may receive image attributes, associated with the received images, from image analysis component  220 . In some implementations, image analysis component  220  may determine the image attributes after receiving the images from user device  210 . For example, image analysis component  220  may determine attributes for an image relating to metadata associated with the image, object recognition information associated with the image, geotags associated with the images, a type of camera used to capture the image (e.g., a model of the camera, a “front-facing” camera, a “rear-facing” camera, etc.), and/or some other attribute associated with the images. In some implementations, image analysis component  220  may output, to album generation component  240 , the images in addition to the image attributes. For example, in some implementations, album generation component  240  may not receive the images from user device  210 , but may receive the images from image analysis component  220  in addition to the image attributes. 
     Process  300  may further include identifying an event based on the user information and/or the image attributes (block  340 ). For example, album generation component  240  may identify an event based on the user information and/or the image attributes. As an example, album generation component  240  may identify an event based on calendar information associated with the user (e.g., a calendar entry entitled “Family Vacation”). 
     In some implementations, album generation component  240  may identify an event based on image attributes. For example, album generation component  240  may identify an event when a group of images are captured by user device  210  and are associated with a geographic location that is different from a home location of the user. In some implementations, album generation component  240  may determine the geographic location of the images based on geotags associated with the images. Additionally, or alternatively, album generation component  240  may use other technique to identify a geographic location associated with the image. For example, album generation component  240  may identify the geographic location associated with the image based on calling activity of user device  210 . As an example, assume that the calling activity of user device  210  indicates that user device  210  was located in the geographic location of Orlando, Fla. when telephone calls were received and/or placed. Further, assume that the image was captured by user device  210  around the time that the telephone calls were received and/or placed by user device  210 . Given these assumptions, album generation component  240  may determine that the image is associated with the geographic location of Orlando, Fla. 
     In some implementations, album generation component  240  may identify the geographic location of the image based on geographic location information received from a social media application. For example, assume that a user of user device  210  provides information regarding the location of user device  210  via the social media application (e.g., using a “check in” process). Further, assume that the image was captured around the same time that the geographic location was captured. Given these assumptions, album generation component  240  may associate the geographic location information, provided by the user via the social media application, with the image. The user may opt in to allow access to the user&#39;s social media profile, and may opt out to remove access to the profile. 
     In some implementations, album generation component  240  may identify the geographic location of the image based on object recognition information and/or OCR data associated with the image. For example, album generation component  240  may use object recognition techniques to identifying an object (e.g., a landmark) in the image that corresponds to a geographic location. Additionally, or alternatively, album generation component  240  may identify the geographic location of the image based on OCR data that indicates the geographic location of the image. For example, if the image includes a sign having text, such as “Welcome to Orlando,” album generation component  240  may determine that the image is associated with the geographic location of Orlando. 
     In some implementations, album generation component  240  may identify an event based on the calling activity of user device  210  (e.g., when the calling activity indicates that user device  210  was used to make and/or receive telephone calls when located in a different geographic location than a home location of the user). For example, album generation component  240  may identify an event when greater than a threshold quantity of telephone calls were placed and/or received from a geographic location other than the home location of the user within a threshold period of time. In some implementations, album generation component  240  may identify an event based on a geographic location associated with telephone calls placed and/or received by user device  210  (e.g., telephone calls associated with telephone numbers having area codes outside of a home location associated with the user). In some implementations, album generation component  240  may identify an event based on messaging activity of user device  210 . For example, album generation component  240  may identify an event when a group of images are sent as messages (e.g., multimedia service (MMS) messages, e-mail messages, etc.). 
     In some implementations, album generation component  240  may identify an event based on some other information. For example, an event may correspond to the importing of images by album generation component  240  from user device  210 . Additionally, or alternatively, an event may be based on a current date. For example, as described in greater detail below, a “Flashback” album may be generated to include images associated with a current day in previous years. Similarly, a “Memories” album may be generated to include images from previous weeks, months, or years from a current date. 
     Process  300  may further include determining event attributes (block  350 ). For example, album generation component  240  may determine event attributes associated with the event. In some implementations, album generation component  240  may determine event attributes, such as a title of the event, a start date/time, an end date/time, a geographic location associated with the event, individuals associated with the event, and/or some other attribute of the event. As an example, album generation component  240  may determine the title of the event, start date/time, end date/time, and/or the geographic location associated with the event based on information included in a calendar entry. 
     As another example, album generation component  240  may determine attributes of an event identified based on calling activity. For example, assume that an event is identified based on calling activity identifying that telephone calls were placed and/or received when user device  210  was located at the geographic location of Orlando, Fla. during the dates of Jun. 1, 2014, to Jun. 8, 2014. Given this assumption, album generation component  240  may determine that the event is associated with the geographic location of Orlando, Fla. Further, album generation component  240  may determine an event title, such as “Trip to Orlando, Fla. —Jun. 1, 2014-Jun. 8, 2014.” Further, album generation component  240  may determine start and end dates for the event of Jun. 1, 2014 and Jun. 8, 2014. 
     As another example, album generation component  240  may determine attributes of an event identified when a group of images are captured by user device  210  and when the group of images is associated with a geographic location that is other than a home location of the user of user device  210  (e.g., the geographic location of Orlando, Fla.). For example, album generation component  240  may determine that the event is associated with the geographic location of Orlando, Fla., and that the event is associated with start and end dates corresponding to metadata in the images identified dates in which the images were captured. Further, album generation component  240  may determine an event title, such as “Trip to Orlando, Fla.” 
     As another example, album generation component  240  may determine attributes of an event identified based on messaging activity (e.g., messaging activity identifying that a message having one or more images has been sent). For example, album generation component  240  may determine an event attribute that identifies recipients of the message. As an example, assume that the recipients include family members of the sender of the message. Given this assumption, album generation component  240  may determine an event title, such as “Images sent to family.” 
     Process  300  may also include identifying images associated with the event (block  360 ). For example, album generation component  240  may identify images associated with the event based on the image attribute information and the event attribute information. As an example, assume that album generation component  240  identifies an event attributes of the event based on calendar information (e.g., calendar information identifying a “Family Vacation” event from the dates of Jun. 1, 2014-Jun. 8, 2014, at Orlando, Fla.). Given this assumption, album generation component  240  may identify images (e.g., based on image attribute information) associated with the geographic location of Orlando, Fla., and having metadata identifying created dates from Jun. 1, 2014 to Jun. 8, 2014. 
     As another example, assume that album generation component  240  identifies an event based on calling history information. Further, assume that album generation component  240  determines attributes of the event. For example, album generation component  240  may determine that the event is associated with the geographic location of Orlando, Fla., and has start and end dates of Jun. 1, 2014 and Jun. 8, 2014. Given these assumptions, album generation component  240  may identify images having the same attributes as the event (e.g., images associated with the geographic location of Orlando, Fla., and having metadata identifying created dates from Jun. 1, 2014 to Jun. 8, 2014). 
     As another example, assume that album generation component  240  identifies an event corresponding to a current date (e.g., a date of Jun. 1, 2014). Given this assumption, album generation component  240  may identify images having metadata identifying created dates (or “taken on” dates) of June 1 from previous years. 
     Process  300  may further include scoring the identified images based on image attributes (block  370 ). For example, album generation component  240  may score the identified images associated with the determined event to identify images that should be included in an album corresponding to the event. For a particular image, a value may be determined for each attribute of the image, and the values may be combined to determine a score for the image. The score for an image may relate to a measure of quality and/or importance of the image. 
     In some implementations, an attribute may relate to a measure of quality of an image (e.g., a resolution, a measure of clarity, etc.). For example, the value of an attribute related to the clarity of an image (e.g., “clarity” attribute) may be proportional to the clarity (e.g., blurry images having relatively lower clarity may have a relatively lower value for the “clarity” attribute). In some implementations, the value of the “clarity” attribute may not be negatively affected for an image when a filter and/or an effect are applied to blur the image. In some implementations, attributes may relate to whether an image is a duplicate or near-duplicate of another image. Attributes relating to whether an image is a duplicates or near-duplicate images may be assigned with a negative value in order to lower the score of duplicate and near-duplicate images. In some implementations, attributes relating to whether an image is an outlier may be assigned with a negative value. For example, an outlier may correspond to an image that is the only image of its kind in a group of images (e.g., a sole image of a particular subject, such as a sole image of a parking lot or other object, which may indicate that the image was accidently captured and/or is otherwise undesirable). The attribute relating whether an image is an outlier may be assigned with a negative value since an outlier may be of less importance than other images. 
     In some implementations, attributes may relate to objects and/or individuals included in an image (e.g., based on object recognition techniques, facial recognition techniques, etc.). For example, a value may be assigned for images having particular individuals (e.g., family members). In some implementations, an individual may be identified in an image by comparing the image with pixel-based data identifying the individual. For example, the pixel-based data may be based on other images in which the individual is identified (e.g., tagged in a social media profile image, a contact image, or other image). The user may enhance facial recognition algorithms by manually identifying an individual in an image so that the facial recognition algorithm may apply the identification of an individual to other images. In some implementations, images having a group of individuals may be scored relatively higher than images that do not have a group of individuals. The score of an image having a number of individuals may be based on a bell curve. For example, a group of five individuals may increase the relative score of the image, whereas a group of 100 individuals may decrease the relative score (e.g., since an image having a relatively smaller group of individuals may be of greater value than an image having a relatively larger group. In some implementations, the score of an image may be proportional to the size of faces in an image. 
     In some implementations, the values associated with attributes may be based on user-defined preference information. For example, a user may indicate that images having particular contents (e.g., images having particular individuals) should be scored relatively higher than images that do not contain the particular contents. Another attribute may relate to whether an image has been edited by a user. The value of this attribute may be relatively higher for images that have been edited (e.g., since edited images may be of more importance than images that have not been edited). For example, the value may be positive for this attribute if the user has applied a filter and/or effect to the image, enhanced the image, cropped the image, resized the image, etc. Another attribute may relate to whether an image has been shared by a user, and a quantity of times that the image has been shared, and how the image was shared (e.g., via social media, via an MMS message, etc.). The value of this attribute may be relatively higher for images that have been shared greater than others, or may be different based on how the image was shared. Some examples attributes and corresponding values are described below with respect to  FIG. 4 . 
     In some implementations, album generation component  240  may score a particular image by combining values for each attribute associated with the particular data file. For example, album generation component  240  may add, average, subtract, multiply, and/or divide the values to obtain a score for the particular image. In some implementations, the values may be weighted. 
     Process  300  may further include generating an album having images exceeding a threshold score (block  380 ). For example, album generation component  240  may generate an album associated with the identified event, and include images in the album associated with identified event. In some implementations, album generation component  240  may include a subset of the images associated with the event. For example, album generation component  240  may include those images that exceed a threshold score. As a result, the album may include images exceeding a particular measure of quality or level and/or importance. The album may exclude images that fall below the particular measure of quality and/or importance, in addition to duplicate and/or near-duplicate images. In some implementations, the album may be generated when a threshold minimum quantity of images are associated with an event and exceed the threshold score. Also, the album may identify the attributes of the images (e.g., individuals in the images, geographic location associated with the images, etc.). In some implementations, the album may be generated when the quantity of images taken by a user have satisfied a threshold or when a rate of the quantity of images satisfies a threshold. For example, the album may be generated when 100 images have been taken by a user. As another example, the album may be generated at the end of a week when the user routinely takes a threshold quantity of images per week or per day. As another example, the album may be generated at the end of the day if the user has taken a threshold number of images in a one-day period. 
     Process  300  may also include storing and/or outputting the album (block  390 ). For example, album generation component  240  may output the album to user device  210 . In some implementations, album generation component  240  may output the album as a data file that includes the images associated with the event and exceeding the threshold score. Additionally, or alternatively, album generation component  240  may output the album in the form of a webpage that includes links to the images (e.g., where each link includes a thumbnail of a corresponding image). In some implementations, album generation component  240  may output the album in the form of a message (e.g., a short message service (SMS) message, an MMS message, an e-mail message, etc.). Additionally, or alternatively, album generation component  240  may output the album in another format. Based on receiving the album, user device  210  may display an option to view the album. For example, user device  210  may display a notification that an album for an event has been generated, and may present a link to the album, a page including the images in the album, an application including the images in the album, or the like. In some implementations, the user may receive a notification when the album has been generated (e.g., via an SMS message, MMS message, e-mail message, etc.). The user may also control whether notifications should be received, and the format in which the notifications should be received. 
     In some implementations, a user of user device  210  may save the album in order to manually add or remove images from the album, or to save the album for future viewing. In some implementations, the images may be sorted based on the score of the images (e.g., higher scored images may be displayed first). Additionally, or alternatively, the user may select to sort the image based on image attributes (e.g., group the images based on individuals included in the image, or group the image based on a geographic location associated with images). In some implementations, the user may modify the view of album using sliders to reorder the arrangement of the images based on date/time, geographic location, individuals in the image, and/or other attributes of the images. 
     In some implementations, some or all of process  300  may be repeated in order to update the album. For example, album generation component  240  may periodically or intermittently update the album as new images are received by album generation component  240  (e.g., as new images are captured by user device  210  and transmitted to album generation component  240 ). In some implementations, album generation component  240  may update the album by receiving attribute information associated with the new images, identifying that the new images are associated with the event of the album, scoring the new images, and including, in the album, the new images that exceed a particular score. 
       FIG. 4  illustrates an example data structure  400  that may store information identifying values for corresponding attributes of an image. In some implementations, data structure  400  may be stored in a memory of album generation component  240 . In some implementations, data structure  400  may be stored in a memory separate from, but accessible by, album generation component  240  (e.g., a “cloud” storage device). In some implementations, data structure  400  may be stored by some other device in environment  200 , such as image analysis component  220  and/or user information server  230 . A particular instance of data structure  400  may contain different information and/or fields than another instance of data structure  400 . 
     Each field in data structure  400  may store information identifying attributes and corresponding values. As an example shown in  FIG. 4 , data structure  400  may store information identifying a value of 20 for images that have been edited or enhanced (e.g., since edited or enhanced images may indicate a higher level of importance to a user than images that have not been edited or enhanced). As another example, data structure  400  may store information identifying a value of 30 for images containing a particular individual (e.g., a family member). As another example, data structure  400  may store information identifying a value of −30 for images that are blurry. As another example, data structure  400  may store information identifying a value of −200 for images that are duplicates. As another example, data structure  400  may store information identifying a value of −100 for images that are near-duplicates. As another example, data structure  400  may store information identifying a value of −200 for images that are outliers. As another example, data structure  400  may store information identifying a fixed value of 20 for images rated as “High” by a user, a fixed value of 10 for images rated as “Medium” by the user, and a fixed value of −10 for images rated as “Low” by the user. 
     Information included in data structure  400  may be used to score an image associated with an event. For example, album generation component  240  may determine the attributes of the image, determine the values of each attribute (e.g., the values specified in data structure  400 ), and combine the values to generate a score for the image. As further shown in  FIG. 4 , data structure  400  may store weighting information for each attribute. For example, the attribute relating to whether an image contains a user&#39;s family member may be weighted higher than the attribute relating to whether the image was edited or enhanced. In some implementations, particular values may not apply when an image has particular attributes. For example, if a “blurry effect” has been added to an image (e.g., if a user has applied a filter that applies a blurry effect, or any filter at all), then the value for the attribute relating to blurry images may not apply. Also, values for attributes relating to duplicate or near-duplicate images may not apply to one of the duplicate or near-duplicate images (e.g., to prevent the scores of all duplicate and near-duplicate images from being adversely affected). 
     While particular fields are shown in a particular format in data structure  400 , in practice, data structure  400  may include additional fields, fewer fields, different fields, or differently arranged fields than are shown in  FIG. 4 . Also,  FIG. 4  illustrates examples of information stored by data structure  400 . In practice, other examples of information stored by data structure  400  are possible. For example, the values may be based on other attributes, such as file metadata (e.g., metadata identifying a date in which an image was created, modified, or accessed, a file size of the image, a geographic location associated with the image, a type of camera used to capture an image or video corresponding to the image, a type of lens use to capture an image or video, etc.). Additionally, or alternatively, the values may be based on whether an image was shared, a quantity of times the image was shared, a method in which the image was shared (e.g., via MMS message, via social media, etc.). In some implementations, the values and weighting factors, stored by data structure  400 , may be modified by a user to adjust the behavior of automatic album generation (e.g., adjust which images may ultimately be included in an album based on image attributes). 
       FIG. 5  illustrates an example implementation for automatically generating an album associated with a particular event. As shown in  FIG. 5 , album generation component  240  may include event identification module  510 , image selection and scoring module  520 , and image sub-selection module  530 . As further shown in  FIG. 5 , album generation component  240  may receive (e.g., from user information server  230 ), user calendar information. For example, event identification module  510  may receive the user calendar information. Based on receiving the user calendar information, event identification module  510  may identify the event “Family Vacation.” Event identification module  510  may also identify attributes of the event (e.g., a geographic location associated with the event, dates associated with the event, etc.). Event identification module  510  may output the event information to image selection and scoring module  520 . 
     Image selection and scoring module  520  may receive images and image attribute information from image analysis component  220 . For example, image analysis component  220  may output the images and the image attribute information based on receiving the images from user device  210 . Based on receiving the images and image attribute information, image selection and scoring module  520  may identify images corresponding to the event (e.g., based on the event attributes and the image attributes). Further, image selection and scoring module  520  may score the identified images. Image selection and scoring module  520  may output the identified images and information regarding the scores of the images to image sub-selection module  530 . Image sub-selection module  530  may generate an album having a subset of the identified images. For example, image sub-selection module  530  may select a subset of the identified images that exceed a threshold score. Image sub-selection module  530  may output the album, including the subset of the images. In some implementations, album generation component may output images associated with an event without scoring the images or selecting a sub-set of the images. 
       FIG. 6  illustrates an example implementation for displaying an album associated with a particular event. As shown in  FIG. 6 , album generation component  240  may output an album to user device  210  (e.g., the album entitled “Family Vacation Album”). For example, album generation component  240  may output the album in the form of a message having a link to the album. User device  210  may receive the message, and may display the message. User device  210  may receive a selection of a link associated with the album, and display the album associated with the link. As a result, images associated with a particular event may be organized and viewed without requiring a user of user device  210  to manually sort through and select images associated with the event. 
       FIG. 7  illustrates an example implementation for automatically generating a “flashback” album. In  FIG. 7 , assume that album generation component  240  has previously stored images associated with a user. Further, assume that album generation component  240  has stored attribute information for the images. Given these assumptions, image selection and scoring module  520  may identify image corresponding to a current date. For example, on Jun. 1, 2014, image selection and scoring module  520  may identify images having metadata identifying that the images were captured on June 1 of previous years (e.g., images captured on Jun. 1, 2013, Jun. 1, 2012, etc.). Additionally, or alternatively, image selection and scoring module  520  may identify images that were captured a particular number of days, weeks, months, or years prior to Jun. 1, 2014. Image selection and scoring module  520  may score the identified images, and output the images and information regarding the scores of the images to image sub-selection module  530 . Image sub-selection module  530  may generate an album having a subset of the identified images. For example, image sub-selection module  530  may select a subset of the identified images that exceed a threshold score. Image sub-selection module  530  may output the album (e.g., the album entitled “Flashback Album”), including the subset of the images. 
       FIG. 8  illustrates an example implementation for displaying a “memories” album. As shown in  FIG. 8 , album generation component  240  may output the “memories” album to user device  210  (e.g., the album entitled “Family Vacation Album”). For example, album generation component  240  may output the album in the form of a message having a link to the album. User device  210  may receive the message, and may display the message. User device  210  may receive a selection of a link associated with the album, and display the album associated with the link. As shown in  FIG. 8 , the flashback album may include images from a year ago from a current date, such as images corresponding to an event entitled “Family Vacation.” Further, the flashback album may include images from five years ago from the current data, such as images corresponding to an event entitled “Bought new house!” In some implementations, images from prior days, weeks, or years, in relation to a current date, may be displayed in the form of a timeline and/or in some other format. In some implementations, events may be identified from the user&#39;s calendar, social networking profile, and/or from some other source. Additionally, or alternatively, the user may manually tag an event to a photo. 
     In some implementations, a notification for the “memories” album may be provided after a user has opted-in to receive notifications for the “memories” album. In some implementations, the notification may include a link to access the album from a web-based client, a desktop computing-based client, or a mobile computing-based client. Further, the user may select the frequency of these notifications (e.g., once a day, once a week once a month, etc.). Also, videos in addition to images may be included in the “memories” album (e.g., videos from a week, a month, a year, or other time prior to a current date). Further, an album may include images and/or videos from a selected date. For example, a user may select a date on a calendar (e.g., a past, current, or future date), and album generation component  240  may identify images and/or videos from prior days, weeks, or years form the selected day. As an example, the user may select (e.g., from a calendar) the date “Dec. 25, 2014,” and album generation component  240  may identify images from the date “Dec. 25, 2014,” and from years prior to this date (e.g., Dec. 25, 2013, Dec. 25, 2012, etc.). If the selected date is a future date, album generation component  240  may identify images from past dates, but not from the selected date. 
     As described, albums may be automatically and dynamically generated to include photos associated with an identified event. In some implementations, videos may also be included in an automatically generated album. For example, events and/or attributes may be determined based on frame analysis of a video. In some implementations, image analysis component  220  may determine the attributes of a video, such as metadata associated with the video, individuals and/or objects included in the video (e.g., using facial recognition and/or pixel-based classification techniques), color variations, and/or other attributes of the video. In accordance with process  300 , videos associated with an event may be identified. Further, videos may be scored based on video attributes, and videos whose scores satisfy a threshold may be included in an album. For example, videos having individuals of family members may be scored relatively higher than those that do not. Additionally, or alternatively, videos having particular objects or color variations may be scored relatively higher than videos having different objects and/or color variations. 
       FIG. 9  is a diagram of example components of device  900 . One or more of the devices described above (e.g., with respect to  FIGS. 1, 2, and 5-8 ) may include one or more devices  900 . Device  900  may include bus  910 , processor  920 , memory  930 , input component  940 , output component  950 , and communication interface  960 . In another implementation, device  900  may include additional, fewer, different, or differently arranged components. 
     Bus  910  may include one or more communication paths that permit communication among the components of device  900 . Processor  920  may include a processor, microprocessor, or processing logic that may interpret and execute instructions. Memory  930  may include any type of dynamic storage device that may store information and instructions for execution by processor  920 , and/or any type of non-volatile storage device that may store information for use by processor  920 . 
     Input component  940  may include a mechanism that permits an operator to input information to device  900 , such as a keyboard, a keypad, a button, a switch, etc. Output component  950  may include a mechanism that outputs information to the operator, such as a display, a speaker, one or more light emitting diodes (LEDs), etc. 
     Communication interface  960  may include any transceiver-like mechanism that enables device  900  to communicate with other devices and/or systems. For example, communication interface  960  may include an Ethernet interface, an optical interface, a coaxial interface, or the like. Communication interface  960  may include a wireless communication device, such as an infrared (IR) receiver, a Bluetooth® radio, or the like. The wireless communication device may be coupled to an external device, such as a remote control, a wireless keyboard, a mobile telephone, etc. In some embodiments, device  900  may include more than one communication interface  960 . For instance, device  900  may include an optical interface and an Ethernet interface. 
     Device  900  may perform certain operations relating to one or more processes described above. Device  900  may perform these operations in response to processor  920  executing software instructions stored in a computer-readable medium, such as memory  930 . A computer-readable medium may be defined as a non-transitory memory device. A memory device may include space within a single physical memory device or spread across multiple physical memory devices. The software instructions may be read into memory  930  from another computer-readable medium or from another device. The software instructions stored in memory  930  may cause processor  920  to perform processes described herein. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software. 
     The foregoing description of implementations provides illustration and description, but is not intended to be exhaustive or to limit the possible implementations to the precise form disclosed. Modifications and variations are possible in light of the above disclosure or may be acquired from practice of the implementations. For example, while a series of blocks has been described with regard to  FIG. 3 , the order of the blocks may be modified in other implementations. Further, non-dependent blocks may be performed in parallel. 
     The actual software code or specialized control hardware used to implement an embodiment is not limiting of the embodiment. Thus, the operation and behavior of the embodiment has been described without reference to the specific software code, it being understood that software and control hardware may be designed based on the description herein. 
     Even though particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the disclosure of the possible implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification. Although each dependent claim listed below may directly depend on only one other claim, the disclosure of the possible implementations includes each dependent claim in combination with every other claim in the claim set. 
     Further, while certain connections or devices are shown (e.g., in  FIGS. 1, 2, and 5-8 ), in practice, additional, fewer, or different, connections or devices may be used. Furthermore, while various devices and networks are shown separately, in practice, the functionality of multiple devices may be performed by a single device, or the functionality of one device may be performed by multiple devices. Further, multiple ones of the illustrated networks may be included in a single network, or a particular network may include multiple networks. Further, while some devices are shown as communicating with a network, some such devices may be incorporated, in whole or in part, as a part of the network. 
     Some implementations are described herein in conjunction with thresholds. The term “greater than” (or similar terms) as used herein to describe a relationship of a value to a threshold, may be used interchangeably with the term “greater than or equal to” (or similar terms). Similarly, the term “less than” (or similar terms), as used herein to describe a relationship of a value to a threshold, may be used interchangeably with the term “less than or equal to” (or similar terms). As used herein, “satisfying” a threshold (or similar terms) may be used interchangeably with “being greater than threshold,” “being greater than or equal to a threshold,” “being less than a threshold,” “being less than or equal to a threshold,” or other similar terms, depending on the context in which the threshold is used. 
     To the extent the aforementioned implementations collect, store, or employ personal information provided by individuals, it should be understood that such information shall be used in accordance with all applicable laws concerning protection of personal information. Additionally, the collection, storage, and use of such information may be subject to consent of the individual to such activity, for example, through “opt-in” or “opt-out” processes as may be appropriate for the situation and type of information. Storage and use of personal information may be in an appropriately secure manner reflective of the type of information, for example, through various encryption and anonymization techniques for particularly sensitive information. 
     No element, act, or instruction used in the present application should be construed as critical or essential unless explicitly described as such. An instance of the use of the term “and, ” as used herein, does not necessarily preclude the interpretation that the phrase “and/or” was intended in that instance. Similarly, an instance of the use of the term “or,” as used herein, does not necessarily preclude the interpretation that the phrase “and/or” was intended in that instance. Also, as used herein, the article “a” is intended to include one or more items, and may be used interchangeably with the phrase “one or more.” Where only one item is intended, the terms “one,” “single,” “only,” or similar language is used. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.