The present disclosure relates to image processing and, more particularly, to overlaying annotations on images. Generally, Internet search results are provided in response to receiving either a text-based query, such as a query regarding the item of interest, or a non-text-based query, such as a query based on an image of the item of interest. Applications for processing a text-based query generally parse one or more key words from the query, conduct a search based on the identified key words, and return one or more search results that include links to applicable resources. Applications for processing image-based queries generally scan the image, identify certain elements within the image, conduct a search of the identified elements, and return one or more search results that include links to applicable resources.
Augmented reality processing refers to augmenting an image of a physically real environment or item with computer generated content. The processing can be performed live or in substantially real-time. In one aspect, images received from mobile devices are augmented in response to requests from mobile device users to receive augmentation of content within an image that is related to a particular context of the image and can further include leveraging features from existing social databases.
In one aspect, a disclosed method includes identifying a first contact identifier appearing in an image, captured by a mobile device, that is indicative of an individual. First user profile results associated with the first contact identifier are then obtained from one or more social databases. The method includes generating annotation information that includes user profile information derived from the first user profile results and providing the annotation information for presentation on the mobile device.
In some implementations, the method includes identifying a second contact identifier indicative of the individual and obtaining, from the social databases, second user profile results associated with the second contact identifier. The annotation information can include user profile information derived from the second user profile results. The second contact identifier can be used to select one or more of the first user profile results. The annotation information can include user profile information derived from the selected first user profile results.
In particular implementations, the annotation information includes overlay information to overlay the image. The first contact identifier can be image text, a facial image, an audio element associated with the image, and/or an optically detectable code. The first contact identifier and the second contact identifier can be different types of contact identifiers. The annotation information can include a link to a social network website page associated with the individual.
In another aspect, a mobile device includes a processor, a display device, a camera for generating image data corresponding to an image, and computer readable media accessible to the processor. The media includes processor executable program instructions to cause the processor to identify a first contact identifier appearing in the image, wherein the first contact identifier is indicative of an individual. First user profile results associated with the first contact identifier are then obtained from one or more social databases. Annotation information that includes at least a portion of user profile information derived from the first user profile results can be generated and provided for presentation on the mobile device.
In some implementations, the annotation information is superimposed on the image as an overlay. In other implementations, the annotation information is displayed separately from the image. The annotation information can include links to a social network website associated with the individual. In particular implementations, a second contact identifier indicative of the individual is identified and used to obtain, from the one or more social databases, second user profile results associated with the second contact identifier and generate annotation information that includes user profile information derived from the second user profile results. The processor can also identify a second contact identifier indicative of the individual and use the second contact identifier to select one or more of the first user profile results and to generate user profile information derived from the selected first user profile results.
In a further aspect, disclosed non-transitory computer readable media includes computer executable program instructions that can be executed by a processor to identify a first contact identifier appearing in an image captured by the mobile device, wherein the first contact identifier is indicative of an individual, to obtain, from one or more social databases, first user profile results associated with the first contact identifier, to generate annotation information that includes user profile information derived from the first user profile results, and to provide the annotation information for presentation on the mobile device.
The program instructions can cause the processor to identify a second contact identifier indicative of the individual, select one or more of the first user profile results based on the second contact identifier, and to generate user profile information derived from the selected first user profile results. The program instructions can cause the processor to format the annotation information in a markup language document format and render the annotation information for display with at least a portion of the image. In other implementations, the program instructions can cause the processor to receive user input indicating selection of an element in the annotation information and access content specified by the user input. The first contact identifier and the second contact identifier can be different types of contact identifiers.
In one aspect, a disclosed method includes detecting a contact identifier of an individual appearing in an image and querying a plurality of social databases for a match with the contact identifier. The method includes retrieving, from one or more of each social database returning a first match, user profile information for the individual, preparing annotation information from the user profile information, and annotating the image with the annotation information.
In some implementations, the contact identifier can be selected from text depicted in the image, a facial image, and/or an optically detectable code. The image can comprise a frame of multimedia content. The user profile information can include an additional contact identifier for the individual and the method can include querying a social database from the plurality of social databases for a second match with the additional contact identifier. Responsive to receiving multiple first matches, the method includes filtering the multiple first matches using the additional contact identifier. Detecting the contact identifier can include obtaining a second contact identifier based on recognition of a first contact identifier in the image. The first contact identifier and the second contact identifier can be different types of contact identifiers. The annotation information can include a link to a user account on a social database website.
In another aspect, a mobile device for providing augmented reality services includes a processor configured to access memory media, a display device, and a camera for generating image data corresponding to an image. The memory media can include processor executable instructions to detect a contact identifier from the image data. The contact identifier can be indicative of a specific individual. Based on a match between the contact identifier and an entry in a social database, the instructions can retrieve user profile information describing the specific individual from the social database and annotate the image on the display device with an annotation, wherein the annotation includes at least a portion of the user profile information.
In some implementations, annotating includes overlaying the annotation on the image and/or displaying the annotation separately from the image. The annotation can include links to social database servers available to a user of the mobile device. The user profile information can include additional contact identifiers for the specific individual.
In a further aspect, disclosed non-transitory computer readable memory media includes application program instructions for providing augmented reality services. The application program can be executed to receive an image annotation request specifying an image captured by a camera or other form of photographic device and to identify a contact identifier in the image. The contact identifier can be associated with an individual and can include an identifier, such as text generated by optical character recognition, a facial pattern identifier, and/or an optically scannable or detectable code. Based on a match between the contact identifier and an entry in a social database, the instructions can be executed to retrieve user profile information describing the individual from the social database and to generate an annotation associated with the image. The annotation can include at least a portion of the user profile information.
In particular implementations, generating the annotation includes formatting the annotation in a markup language document format and rendering the annotation for display with at least a portion of the image. The application program can receive user input indicating selection of an element in the annotation and can retrieve content specified by the user input. The annotation can include a link to a user account on a social network website. The user profile information can include information retrieved from a plurality of social database servers corresponding to different respective social network websites.
In yet another aspect, a disclosed method includes receiving an image annotation request indicating an image, identifying elements of the image, and detecting one or more ensembles, also referred to herein simply as ensembles, in the identified elements. An ensemble includes a group of elements that share one or more attributes. The elements of the image can include pattern elements, scene elements, object elements, landscape elements, architectural elements, text elements, which can be generated by optical character recognition, or location elements.
The method can include filtering, ranking, or otherwise evaluating two or more detected ensembles according to a defined set of criteria to identify a selected ensemble. An annotation schema indicative of types of annotation information suitable for annotating to the image can then be identified for the selected ensemble. The method can further include retrieving annotation information applicable to the selected ensemble and generating an annotation associating the annotation information with the selected ensemble.
The criteria for evaluating the ensembles includes, as examples, the number of elements in an ensemble, the types of elements in an ensemble, the commercial relevance of elements included in an ensemble, and/or user preferences for weighting elements included in an ensemble. The ensembles can be ranked according to the defined set of criteria and the selected ensemble can be chosen based upon the rankings.
The image annotation request can be received from a mobile device and the annotation information for a selected ensemble can be sent to the mobile device for rendering. The image annotation request can also be received from an image server and the annotation information for the ensemble can be sent to the image server. The method operation of retrieving the annotation information includes retrieving content specified by the selected ensemble.
In still another aspect, a disclosed mobile device for providing augmented reality services includes a processor configured to access memory media, a display device, and a camera for generating image data. The memory media includes processor executable application program instructions to detect ensembles from image data generated by the camera. The application program can filter detected ensembles according to a defined set of criteria to identify a selected ensemble. The application program can then determine an annotation schema indicative of types of annotation information suitable for annotating to the image data. The application program can generate annotation information applicable to the selected ensemble based on the annotation schema and render an annotation on the display device, wherein the annotation associates the annotation information with the selected ensemble.
In yet another aspect, disclosed computer readable memory media include application program instructions that implement an application program for providing augmented reality services. The application program, when executed, can receive an image annotation request for an image captured by a photographic device and identify elements from the image. The application program can detect ensembles from the identified elements and filter the ensembles according to a defined set of criteria to identify a selected ensemble. The application program can also determine an annotation schema indicative of types of annotation information suitable for annotating to the image and can generate an annotation associating annotation information with the selected ensemble.
In some implementations, the application program receives user input associated with the annotation and retrieves content specified by the user input. The application program can process an indication of the selected ensemble under an association with a device.
Advantages of the image annotation system described herein include identifying user contact information for an individual associated with an image, accessing information pertaining to the individual in one or more social databases, presenting the information for annotation with the image, and permitting a user to establish one or more social database connections with the individual in a live or substantially real-time manner. Other advantages include detecting ensembles from elements identified in an image and presenting annotation information as an overlay on the image for a selected ensemble in a live or substantially real-time manner.
In the following description, details are set forth by way of example to facilitate discussion of the disclosed subject matter. It should be apparent that the disclosed implementations are examples and are not exhaustive of all possible implementations.
Throughout this disclosure, a hyphenated form of a reference numeral refers to a specific instance of an element and the un-hyphenated form of the reference numeral refers to the element generically or collectively. Thus, for example, widget 12-1 refers to an instance of a widget class, which may be referred to collectively as widgets 12 and any one of which may be referred to generically as a widget 12.
Referring now to
Mobile device 101 as depicted in
Annotation service 120 receives annotation request 107 and performs augmented reality processing on the image data indicated by annotation request 107. Annotation service 120 then sends an annotation response 109 including annotation data 111 for annotating image data 105, to client interface 106 of mobile device 101. Client interface 106 then extracts or otherwise accesses annotation data 111 from annotation response 109 and sends the annotation data 111, together with image data 105, to image rendering feature 108. Image rendering feature 108 processes image data 105 and annotation data 111 to create display data suitable for presentation to the user through display 110. Image rendering feature 108 can, for example, overlay an image corresponding to image data 105 with an annotation indicated by annotation data 111 and generate annotated image 113 in a format suitable for presentation on display 110. Display 110 then displays annotated image 113 to user 112. The annotation data 111 can be represented as an annotation to image data 105 that enables the user to select and to query additional information, as desired.
The annotation itself can include information about the image or elements of the image. If, for example, the image depicts a group of elements that share a set of characteristics, the annotation can provide additional information with respect to each element in the group. For example, if an image depicts five different makes and models of automobiles, the annotation can indicate the manufacturer suggested retail price, user rating, and closest dealership information with respect to each of the five cars depicted in the image. Annotation information can be located or arranged within the image to coincide with the image element to which it pertains and can include active links corresponding to each element of the ensemble.
The annotation can also enhance or supplement information contained in the original image. For example, if an image depicts, identifies, or otherwise indicates an individual, the annotation can include additional information about the individual. The annotation service can include a social database feature that detects, in an image, information identifying an individual. This identifying information is also referred to herein as a contact identifier. The contact identifier can be text-based, e.g., a person's name indicated on an image of a business card or driver's license, pattern-based, e.g., an image of a person's face, or data-based, e.g., an image of a bar code encoded with identifying information. The annotation service can invoke the social interface feature to query one or more social networks, telephone directories, call lists, address books, or other publicly or privately available databases or network resources containing contact or user profile information for individuals, referred to herein as a “social database” or “social databases”, for a match with the individual depicted or otherwise represented in an image. User profile information can be retrieved for the individual from social databases, including applicable servers and websites. The profile information can be used to annotate the image. If, for example, an image indicates an individual who has a profile on SocialNet.com, the annotation can include a selectable element corresponding to the individual's SocialNet.com profile. The selectable element could be positioned on or near the portion of the image identifying the individual. The selectable element can include, as an example, a link to the individual's SocialNet.com profile, a link to a SocialNet.com resource for initiating a contact with the individual, or both.
As described above, an annotation service can include an ensemble detection feature for detecting ensembles of elements appearing in an image and augmenting the image with an annotation that provides additional information about or pertaining to the elements of the ensemble.
Turning now to
In
If an image annotation request 107 (
Image 201 may, however, have other elements and other groups of elements that might constitute ensembles. For example, each character of text depicted in image 201 may constitute an element of image 201 and any two or more characters may constitute an ensemble candidate. Similarly, image 201 depicts words as well as characters and each word might constitute an element of image 201. In the case of characters, each character may have attributes such as language/alphabet, case, script, and so forth. Similarly, each word may have attributes such as part of speech, language, number of characters, number of syllables, and so forth. Annotation service 120 can evaluate multiple different elements and groups of elements to identify various candidate ensembles.
Annotation service 120 can identify the elements of image 201 using optical character recognition, pattern detection, and any other suitable image processing technique. Image 201 as shown in
Using such a technique might, for example, accelerate the ensemble detection process by considering larger and more complex elements of image 201 earlier in the process. Thus, rather than consider each character, each word or each sentence of image 201 can be considered until a set of elements are detected that share a set of attributes. In some implementations, the commercial relevance of the elements is considered. Generally, the attributes of elements that are identified as products or services are considered to be more commercially relevant than attributes of other elements. For example, although individual characters of a text-based image might constitute individual elements of the image, the attributes that individual characters share, e.g., case: [upper/lower], may not have tremendous commercial significance. Attributes or elements in the image that are products or services, however, may have significant commercial significance. Annotation service 120 as depicted in
The domain of NVPs that may be associated with an image element can be open ended or can be limited to a predetermined set. Moreover, the domain of available NVPs may depend on the type of element. To illustrate, if the element is a single character, the domain of NVPs may include a character-type NVP that would be inapplicable to other types of elements, e.g. <character_type:numeral>. Similarly, if the element is a word, the NVP domain may include a word-type NVP, e.g., <word_type:noun>, and, if the element is itself a picture or pattern, an entirely different NVP domain may apply based upon the discerned object in the picture or pattern, e.g., <object_type:wine bottle>. On the other hand, some attributes may be applicable to multiple types of elements or all elements, e.g., <element_type:value>. The domain of recognized element types and the domain of NVPs associated with each recognized element type are implementation details and can change from implementation to implementation and can also change with time.
Regardless of what types of elements annotation service 120 is capable of recognizing and what attributes annotation service 120 might assign to an element, most images of any appreciable complexity, including image 201, may include multiple types of elements and multiple instances of any given element type. Any group of two or more elements of the same type, e.g., elements that share an element-type attribute, can constitute an ensemble candidate. Image 201 as depicted in
When an image contains multiple ensemble candidates, annotation service 120 can select one of the ensemble candidates as the ensemble selected for annotation. The selection of an ensemble for annotation can be based on various factors and criteria. Annotation service 120 can, for example, impose a minimum and/or maximum number of elements criteria. If the number of elements in an ensemble candidate is lower than the minimum or greater than the maximum, the candidate would be discarded.
The ensemble selection process can include evaluating the candidate ensembles and selecting the ensemble candidate having the greatest perceived value. The valuation of any given ensemble can depend on the purpose for which the annotation is being considered. If an annotation indicates an objective characteristic such as the age of each element in an ensemble candidate, ensemble candidates whose constituent elements have no age would be discarded.
When an annotation is intended to provide information that may be of commercial value, the candidates can be evaluated in terms of a commercial relevance. In some implementations, commercial value refers to the value or potential value of the information to a consumer or potential consumer of an item associated with the information. For example, annotation service 120 can identify, in image 201 as shown in
Annotation service 120 can select between these two candidates based, at least in part, on the perceived value of annotating the wineries or annotating the wine names. This valuation can be influenced by which ensemble candidate represents products or services available for purchase for which a consumer is more likely to want to request an annotation. In other implementations, this valuation is influenced by which ensemble candidate has the greatest number of attributes. In this manner, annotation service 120 may conclude that the wine name ensemble candidate is a product and is perceived as having a higher commercial relevance than the winery name ensemble candidate.
After selecting one of the ensembles, annotation service 120 identifies an annotation schema that indicates what type of information the annotation will provide and then initiates one or more searches for the information indicated by the identified schema. When annotation service 120 has received or otherwise has access to the desired information, annotation service 120 generates the annotation. The annotation schema can include, indicate, or otherwise be associated with an annotation template and generating the annotation can include populating the template with the annotation information.
As evident from annotation 204 of
Turning now to
In one implementation, method 300 begins by identifying (operation 304) elements of an image indicated in an image annotation request. The elements of the image can include text that may be generated by optical character recognition or recognition of one of a pattern, a scene, an object, a landscape, an architectural element, a business, a product, a brand, and a location within the image. The image annotation request may have been originated by a user of a mobile device that captured the image. Method 300 further includes detecting (operation 306) ensemble candidates wherein an ensemble candidate includes a group of image elements that share one or more attributes. Detecting ensemble candidates may include identifying image elements, determining attributes associated with the identified image elements, and grouping the identified elements into groups where all of the elements in a group share at least some attributes. These groups constitute ensemble candidates.
The ensemble candidates can be evaluated (operation 308) to identify a selected ensemble. Ensemble candidates can be evaluated based on various factors including, as examples, the number and/or types of elements in the ensemble candidate, a commercial relevance of the elements, user preferences for weighting the elements, or a combination thereof. After selecting an ensemble for annotation, annotation schema are identified (operation 310). The annotation schema determines what type of information will be retrieved. For example, referring to
Based on the identified annotation schema, annotation service 120 retrieves annotation information pertaining to each of the elements of the selected ensemble (operation 312). An annotation such as annotation 204 (
Referring now to
Augmented reality process 400 as shown in
Referring now to
In the implementation depicted in
Referring now to
In the implementation depicted in
In various implementations, mobile device 600, as depicted in
Mobile device 600 is shown in
Turning now to
Method 700 begins by identifying (operation 702) a contact identifier in an image that is indicative of an individual. The contact identifier (not shown) can be text depicted in the image, a facial image, an audio element associated with the image, and/or an optically detectable code. One example of a text that is a contact identifier is an email address. The individual himself or herself may not appear in the image, even though a contact identifier for the individual is detected from the image. In some implementations, the contact identifier can be gleaned from an image present in video content or from multimedia content, such as from an audio element or through text-to-speech processing of a voice utterance. User profile results associated with the contact identifier are obtained from one or more social databases (operation 704). The social databases can include social networks or social networking websites, as well as available address books, telephone directories, or other forms of user contact databases. Annotation information is generated (operation 706) that includes at least a portion of user profile information derived from the user profile results. The user profile information can include private information of the individual.
A second contact identifier indicative of the individual can be identified and can be used to disambiguate the user profile results associated with the initial contact identifier, such as by filtering or eliminating user profile results that are associated with the initial contact identifier, but not associated with the second contact identifier. Different types of contact identifiers can be used to filter or query different social databases. For example, image text and a facial image may be used to filter user profile results. The user profile information can be retrieved and stored as a compilation for the individual. Duplicate entries in the user profile information can be recognized as being redundant and can be removed. User profile results associated with the second contact identifier can also be obtained from the social databases and the annotation information can include user profile information derived from the user profile results associated with the second contact identifier. The first contact identifier and the second contact identifier can be different types of contact identifiers. The second contact identifier can appear in the image, the first user profile results, or both. In this manner, various portions of user profile information for the individual can be retrieved and analyzed.
Next in method 700, annotation information is provided for display on a device (operation 708). At least a portion of the user profile information is included in the annotation information. The device can include a computer and/or a mobile device such as a smart phone or tablet. In some implementations, an annotation schema can be used to define which information is included in the annotation information. The annotation information can be determined by user-defined settings and/or parameters associated with performing method 700. Then, the image can be annotated (not depicted) with the annotation information. In some implementations, annotation of the image includes superimposing the annotation information on the image as an overlay. The annotation information can include a link for the individual to a social network website page associated with the individual. Thus, a user can perform method 700 for enhanced social networking using augmented reality with annotated images.
Referring now to
In augmented reality process 800, contact identifier(s) 802 can be detected from an image. The contact identifiers can be recognized as a logical data element that includes information for an individual. Then, various social databases can be queried for a match with the contact identifier. As shown in
Then, user profile information 806 is collected from social databases 1, 3, and 4. Optionally, annotation schema 808 can be retrieved for presentation and formatting of annotation information 810, which is generated from user profile information 806. The resulting annotation 812 can be overlaid on an image or can be displayed separately from an image. Annotation 812 can include links to social database user profiles for the individual and/or links to social database servers available to a user of the mobile device.
To the maximum extent allowed by law, the scope of the present disclosure is to be determined by the broadest permissible interpretation of the following claims and their equivalents, and shall not be restricted or limited to the specific implementations described in the foregoing detailed description.