Traditionally, querying or searching digital image files had been difficult because the digital image files may not contain textual data. However, digital image files may include embedded metadata. Some of the metadata, such as, for example, a date and a time at which an image included in a digital image file is captured, may automatically be included in the digital image file when the digital image is captured by a digital camera or other image capturing device. The metadata may be saved as exchangeable image file format (EXIF) type metadata. This is one of many standard formats in which metadata may be stored within the digital image file. The digital image file may also include other metadata, which may be added by a user. The other metadata may be in an EXIF metadata block, or in another format type, such as International Press Telecommunications Council (IPTC) metadata, or Extensible Metadata platform (XMP), developed by Adobe Systems Incorporated of San Jose, Calif.
A professional or semi-professional photographer may capture thousands of digital images in digital image files. The professional or semi-professional photographer may add IPTC type metadata or other types of metadata to the digital image files to make querying or searching for particular digital image files easier. However, adding IPTC type metadata or other types of metadata to thousands of digital image files may be tedious and very time-consuming. As a result, the professional or semi-professional photographer may avoid adding the IPTC type metadata or other types of metadata to the digital image files.
This Summary is provided to introduce a selection of concepts in a simplified form that is further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
In embodiments consistent with the subject matter of this disclosure, a method and a processing device may be provided. The processing device may have access to a digital image included within a digital image file. The digital image file may include metadata associated with the digital image. An application executing on the processing device may define a policy or may select a policy from among a group of policies. The policy may specify one or more sources of data to be harvested, as well as methods for creating new metadata. The application may define or select the policy via an application programming interface (API). The application may further specify harvesters to be loaded and invoked. The harvesters may harvest data from one or more data sources based on metadata associated with the digital image file, or based on bits of a digital image included in the digital image file. The harvester may create and store new metadata, based on the harvested data, using methods specified by the policy. A harvester manager may determine whether the specified harvesters are to use input from one or more other unloaded harvesters and may load the one or more other unloaded harvesters, accordingly.
In order to describe the manner in which the above-recited and other advantages and features can be obtained, a more particular description is described below and will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments and are not therefore to be considered to be limiting of its scope, implementations will be described and explained with additional specificity and detail through the use of the accompanying drawings.
Embodiments are discussed in detail below. While specific implementations are discussed, it is to be understood that this is done for illustration purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without parting from the spirit and scope of the subject matter of this disclosure.
Embodiments consistent with the subject matter of this disclosure may provide a processing device and a method for creating and storing metadata associated with digital images included within digital image files. A processing device may have access to a digital image included within a digital image file. The digital image file may include metadata associated with the digital image. The metadata may include EXIF type metadata, IPTC type metadata, XMP type metadata, or other types of metadata.
A policy may be specified to indicate data to be harvested with respect to the digital image file. The policy may specify one or more sources of the data to be harvested, such as, for example, image metadata (EXIF type metadata, XMP type metadata, IPTC type metadata or other types of metadata) included in the digital image file, data from one or more applications which may execute on the processing device, data from a remote server or a service accessible via a network, or other data sources. The policy may further include methods for creating new metadata based on the data to be harvested. For example, the digital image file may include a block of EXIF type metadata called “DateTimeOriginal”, which may include a date and a time at which a digital image, included in the digital image file, was captured. The digital image file may also include a block of IPTC type metadata called “DateTimeTaken”, which may similarly include a date and a time associated with the digital image. The policy may specify that new metadata, called “DateTime”, is to be created from the block of EXIF type metadata called “DateTimeOriginal”, if “DateTimeOriginal” exists. If “DateTimeOriginal” does not exist, then “DateTime” is to be created from the block of IPTC type metadata “DateTimeTaken”, if “DateTimeTaken” exists. The newly created metadata may be stored in the digital image file, in a dataset associated with the digital image file, and/or in another location.
The policy may further include methods for creating new metadata based on data harvested from other sources, such as, for example, data from one or more applications, data from one or more servers or network services, and/or other data sources.
The policy may be specified by an application via an application programming interface (API). In some embodiments, the application may select the policy from a group of predefined policies via the API.
A harvester may harvest data from one or more data sources based on metadata associated with a digital image file, or based on a digital image included within the digital image file, as specified by the policy. The harvester may create and store new metadata based on the harvested data, as specified by the policy.
An application may specify, via the API, one or more harvesters to be loaded and invoked. The specified one or more harvesters may be loaded and a harvester manager may determine whether any of the one or more harvesters expect input from one or more other unloaded harvesters. If the harvester manager determines that one or more harvesters expect input from one or more other unloaded harvesters, then the one or more other harvesters may be loaded before invoking the one or more harvesters specified by the application. In some embodiments, the one or more harvesters and the one or more other harvesters may be loaded and invoked automatically when a digital image file is opened.
Network 102 may be a single network or a combination of networks, such as, for example, the Internet or other networks. Network 102 may include a wireless network, a wired network, a packet-switching network, a public switched telecommunications network, a fiber-optic network, other types of networks, or any combination of the above.
Processing device 104 may be a processing device, such as, for example, a desktop personal computer (PC), a laptop PC, a handheld processing device, or other processing device.
In some embodiments, server 106 may include multiple servers configured to work together as a server farm.
Processor 260 may include at least one conventional processor or microprocessor that interprets and executes instructions. Memory 230 may be a random access memory (RAM) or another type of dynamic storage device that stores information and instructions for execution by processor 260. Memory 230 may also store temporary variables or other intermediate information used during execution of instructions by processor 260. ROM 240 may include a conventional ROM device or another type of static storage device that stores static information and instructions for processor 260. Storage device 270 may include a compact disc (CD), digital video disc (DVD), a magnetic medium, or other type of storage device for storing data and/or instructions for processor 260.
Input device 220 may include a keyboard, a joystick, a pointing device or other input device. Output device 250 may include one or more conventional mechanisms that output information, including one or more display monitors, or other output devices. Communication interface 280 may include a transceiver for communicating over one or more networks via a wired, wireless, fiber optic, or other connection.
Processing device 200 may perform such functions in response to processor 260 executing sequences of instructions contained in a tangible machine-readable medium, such as, for example, memory 230, ROM 240, storage device 270 or other medium. Such instructions may be read into memory 230 from another machine-readable medium or from a separate device via communication interface 280.
Application 302 may make calls to API 304 to request or define a policy 306, which may include metadata to be created, methods for creating the metadata from harvested data, one or more data sources for the harvested data, as well as other information. In one embodiment, processing device 104 may include a number of predefined policies 306, one of which may be selected by application 302 by making a call via API 304. Application 302 may further make a call to harvester manager 308, passing harvester manager 308 information regarding one or more harvesters 310-316 to load and invoke.
Harvester manager 308 may load the one or more harvesters 310-316 and may analyze the one or more harvesters 310-316 to determine whether any of the one or more harvesters 310-316 use input from one or more unloaded harvester. Harvest manager 308 may make the determination based on information included in the loaded harvesters 310-316, with reference to the defined or selected policy 306. For example, harvest manager 308 may refer to policy 306 and determine that a loaded harvester may use input provided by an unloaded harvester. If harvest manager 308 determines that input from one or more unloaded harvesters is to be used by any of the one or more harvesters 308-316, then harvester manager 308 may load the determined one or more unloaded harvesters. Harvest manager 308 may then invoke the one or more harvesters 308-316 associated with the information passed from application 302 to harvest manager 308, as well as the determined one or more unloaded harvesters. At least some of harvesters 310-316 may harvest data from metadata included in digital image file 320. Others of harvesters 310-316 may harvest data from one or more other data sources, such as other applications, databases, servers, network services, or other data sources. In exemplary functional block diagram 300, harvesters 310, 312 harvest data based on a digital image file 320 and receive data provided by harvesters 314 and 316. Harvesters 314 and 316 may harvest data from other sources 318.
Functional block diagram 300 is only exemplary. In other embodiments, other arrangements of harvesters and data sources may be implemented. For example, more or fewer harvesters may be employed. In some embodiments, harvesters may access policy 306 and digital image file 320 via an API, such as, for example, API 304, or another API. Of course numerous other arrangements or configurations may be employed.
Processing device 104 may then determine whether application 302 is defining policy 306 (act 406). If application 302 is defining policy 306, then processing device 104 may create or define policy 306 based on the information provided by application 302 during act 404 (act 408) and may activate the policy. If, instead, application 302 is selecting policy 306 from among a group of predefined policies, then selected policy 306 may be activated (act 410).
If additional harvesters are to be loaded, then harvester manager 308 may again perform act 504 to load the additional harvesters. Otherwise, harvester manager 308 may invoke all of the loaded harvesters (act 508).
The harvester may then harvest data and perform the method(s) to create the new metadata (act 606). Some harvesters may harvest data for use by other harvesters and may not, by themselves, create metadata. Such harvesters may not perform act 606. Other harvesters may provide information related to the digital image file, such as, for example, metadata included in the digital image file, bits of a digital image included in the digital image file, or other information, for example, to a second application or a network service, which, in response, may provide data to the harvesters. The harvesters may use the provided data to create metadata or the harvesters may make the provided data available to other harvesters.
The harvester may categorize the newly created metadata, if any (act 608). For example, newly created metadata may be categorized as intrinsic, if the newly created metadata is derived entirely based on data intrinsic to an image file. Newly created metadata derived, at least partly, based on data from one or more external data sources, may be classified as extrinsic. In other embodiments, the newly created metadata may be categorized into additional or different categories.
The harvester may store the newly created metadata, if any (act 610). The newly created metadata may be stored in the digital image file, in a data set or database associated with one or more digital images, or in another location.
The following are data harvesting examples, which may be performed in embodiments consistent with the subject matter of this disclosure. The examples are only exemplary. Data harvesting may be performed in numerous other ways in other embodiments consistent with the subject matter of this disclosure.
In one example, a policy may be defined to create metadata, called “Copyright”, for an image in a digital image file. The policy may specify that metadata for “Copyright” may be created from: a date reference in the image file, such as, for example, metadata called “DateTimeOriginal”; and metadata, called “Author”, in the digital image file, which may contain a name of an author. The policy may specify that a harvester is to harvest the metadata included in “DateTimeOriginal” and “Author” to create the metadata for “Copyright”, which may have a format of “Copyright <author's name>, <year>. All rights reserved.”, where “<author's name>” is the name of the author from “Author” and “<year>” is the year from “DateTimeOriginal”.
In a variation of the above example, the policy may specify that metadata called “Author” may be created from user input, from a currently logged on user's name, or from other sources.
In a second example, digital image files may include a tag for metadata, called “Description”, which may typically be set manually. Many photographers may use a scheduling application, such as Microsoft Outlook® (registered trademark of Microsoft Corporation of Redmond, Wash.), or another scheduling application. The scheduling application may have an appointment field, which may include a description of an appointment. The policy may specify that a harvester is to harvest data with respect to a date and a time that a digital image was captured, such as, for example, “DateTimeOriginal”, or a similar item of metadata. The harvester may interface with the scheduling application and may request information with respect to the appointment field for an appointment coinciding with the date and the time that the digital image was captured. The harvester may receive information from the scheduling application and may copy the information to “Description”, where the information may be stored.
In a third example, a digital image file may contain a metadata field for GPS data or location data. The GPS data may be created by an application when a digital image is captured, or may be manually added at a later time. The location data also may be manually added. Typically, a digital image file may include either GPS data or location data, but not both. A policy may be defined, such that a harvester may determine that location data does not exist with respect to a digital image file, but that GPS data does exist. The harvester may harvest the GPS data from the digital image file, according to the policy, and may use the GPS data to look up information in, for example, an online search engine, to derive corresponding location data. The harvester may then create and store the looked up information in the metadata field for the location data in the digital image file. Conversely, the harvester may determine that GPS data does not exist with respect to the digital image file, but that location data does exist. The harvester may then harvest the location data from the digital image file, according to policy, and may use the location data to look up information in the online search engine to derive corresponding GPS data. The harvester may then create and store the looked up information in the metadata filed for the GPS data in the digital image file.
In a third example, data may be derived from bits of a digital image included in a digital image file. As defined by the policy, a harvester may provide the bits of the digital image to a face recognition application. In response, the face recognition application may provide text, including one or more names corresponding to recognized faces of the digital image. The harvester may then create and store the one or more names into corresponding metadata fields within the digital image file, a corresponding data set, or another location.
In a forth example, a harvester may provide bits of a digital image included in a digital image file to an application, which may determine a tone of an image and whether a scene of the digital image is an outdoor scene. Based on information provided by the application, such as, for example, dark tone and outdoor scene, as well as date and time information, which may be stored in metadata fields of the digital image file, the harvester may determine that the digital image is a sunset scene and may create and store text, such as, “sunset scene” in a description field within metadata stored in the digital image file.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms for implementing the claims.
Although the above descriptions may contain specific details, they are not be construed as limiting the claims in any way. Other configurations of the described embodiments are part of the scope of this disclosure. Further, implementations consistent with the subject matter of this disclosure may have more or fewer acts than as described, or may implement acts in a different order than as shown. Accordingly, the appended claims and their legal equivalents define the invention, rather than any specific examples given.