Users are increasingly using devices, such as smartphones, to capture images that contain information. In some instances, users capture images as keepsakes, for informational purposes, to share with other users, and/or as reminders, among other reasons.
This specification relates to enabling execution of one or more actions based on content provided in image data.
Implementations of the present disclosure are generally directed to providing an action interface in a viewfinder of a camera application executed on a device, the action interface including action elements based on content of a scene.
In general, innovative aspects of the subject matter described in this specification can be embodied in methods that include actions of receiving image data, the image data being provided from a camera and corresponding to a scene viewed by the camera; receiving data describing one or more entities determined from the scene, the one or more entities being determined from the scene; determining one or more actions based on the one or more entities, each action being provided at least partly based on search results from searching the one or more entities; providing instructions to display an action interface comprising one or more action elements, each action element being to induce execution of a respective action, the action interface being displayed in a viewfinder. Other implementations of this aspect include corresponding systems, apparatus, and computer programs, configured to perform the actions of the methods, encoded on computer storage devices.
Particular implementations of the subject matter described in this specification can be implemented so as to realize one or more of the following advantages. In some examples, implementations of the present disclosure enable users to more easily fulfill in original intent when capturing an image. For example, although the user is capturing the image of a scene, the user's intent may actually be using the image as a reminder or as a contribution to a collection of images, e.g., photo album. In some examples, implementations enable users to use computing devices as a physical-to-digital converter, e.g., converting a real-world scene to a reminder. In some examples, implementations enable users to gain knowledge about entities depicted in images, e.g., providing actions based on search results.
The details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.
Like reference numbers and designations in the various drawings indicate like elements.
In some implementations, the device 102 includes a camera that can be used to provide image data. In some examples, the camera is integrated into the device 102. In some examples, the camera is in communication with the device 102. In some examples, the device 102 executes an application, e.g., a camera application provided as a computer-executable program, that enables the device 102 to provide image data based on scenes viewed by the camera. In the example of
In some examples, the device 102 displays a view-finder interface that enables a user 140 to view a scene using the camera. For example, the user 140 can manipulate the device 102 to point the camera toward a scene, e.g., the scenes 122, 124. In response, image data corresponding to the scene can be provided. In some examples, the image data can be processed to provide a graphical representation, e.g., image, of the scene. In some examples, the image data can be provided as pre-capture image data, e.g., as real-time data. In some examples, pre-capture image data includes image data corresponding to a scene and is provided before an image of the scene is captured, e.g., the user “snapping” a picture. In some examples, the image data can be provided as post-capture image data. In some examples, post-capture image data includes image data corresponding to a scene and is provided after an image of the scene is captured, e.g., in an image file provided in response to the user “snapping” a picture.
Implementations of the present disclosure are directed to providing an action interface for display in a viewfinder displayed on a device based on image data. In some examples, the viewfinder is provided by an image capturing application, e.g., camera application, executed on a computing device. More specifically, implementations of the present disclosure are directed to providing one or more annotations based on the image data, determining one or more actions based on the one or more annotations, and providing an action interface based on the one or more annotations. In some implementations the one or more actions are provided based on user-specific information. In some implementations, the action interface includes one or more action elements, each action element being selectable to induce execution of a respective action. Example actions can include a share content action that can be executed to share content, e.g., images, video, with other users, a purchase action that can be executed to purchase one or more items, a download action that can be executed to download content, e.g., music, video, images, an add event action that can be executed to add an event to a calendar, and an add to album action that can be executed to add content, e.g., images, to an album, e.g., photo album. Although example actions are provided herein, it is contemplated that implementations of the present disclosure can include any appropriate actions and respective action elements.
By way of example, a user can use a device, e.g., the device 102 of
Accordingly, implementations of the present disclosure enable action elements to be provided based on content that is represented in image data. This stands in contrast to, for example, functionality based on machine-readable codes that are depicted in image data. For example, image data can include a representation of a machine-readable code, e.g., a QR code, a bar code, which can be processed. In general, the machine-readable code encodes instructions that dictate functionality that can be executed, e.g., display information to a user, navigate to a website, play audio. In contrast, and as described in further detail herein, implementations of the present disclosure determine entities depicted in image data, determine one or more actions that could be executed based on the entities, and provide corresponding action elements in a viewfinder to enable the user to execute the actions.
In some implementations, and as noted above, the image data corresponds to a scene that is viewed by a camera. In some examples, the scene includes one or more entities that are represented in the image data. In some implementations, the image data is processed to identify the one or more entities. In some examples, the image data can be provided to an entity recognition engine, which processes the image data to provide a set of entities that are represented in the image data. In some examples, the entity recognition engine is provided as one or more computer-executable programs that can be executed by one or more computing devices, e.g., the device 102 and/or the server system 104. In some examples, the set of entities can include one or more entities. In some examples, the set of entities includes no entities, e.g., no entities are recognized by the entity recognition engine. In some implementations, entities can include specific entities. For example, an entity can include a hamburger that is depicted in the image data. In some examples, entities can include categories of entities. For example, an entity can include food. As another example, if a hamburger is depicted in the image data, the set of entities can include “hamburger” and “food,” e.g., a specific entity and a corresponding category.
In some examples, one or more annotations are associated with each entity of the one or more entities. In some examples, the set of entities can be provided to an annotation engine, which processes the set of entities to provide a set of annotations. In some examples, the annotation engine is provided as one or more computer-executable programs that can be executed by one or more computing devices, e.g., the device 102 and/or the server system 104. In some implementations, the entity recognition engine and the annotation engine are combined, e.g., are the same engine.
In some examples, the set of annotations can include one or more annotations. In some examples, the set of annotations includes no annotations, e.g., no entities are included in the set of entities. In some examples, if no entities are included in the set of entities, the set of entities is not provided to the annotation engine. In some implementations, each annotation includes annotation data that can be appended to the underlying image data, e.g., the image data that was processed to provide the set of entities.
In some implementations, annotations can be provided based on searching entities using a search engine. In some examples, the annotation engine can provide an entity as a search query to the search engine, and the search engine can provide search results to the annotation engine. In some examples, annotations can be based on search results. For example, an entity can include the text “Best Band Ever,” which is depicted in the image data, and which is the name of a band of musicians. In some examples, the text “Best Band Ever” can be provided as a search query to the search engine, and search results can be provided, which are associated with the particular band. Example search results can include tour dates, albums, and/or merchandise associated with the band, which search results can be provided as annotations.
In some implementations, annotations can relate entities depicted in the image data. For example, an entity can include the text “Best Band Ever,” an entity can include the text “Jan. 30, 2014,” and an entity can include the text “TX State Fair,” e.g., as depicted in the scene 124 of
In some implementations, annotations can be provided based on cross-referencing entities with a structured data graph, e.g., knowledge graph. In some examples, the structured data graph includes a plurality of nodes and edges between nodes. In some examples, a node represents an entity and an edge represents a relationship between entities. Nodes and/or entities of a structured data graph can be provided based on associations that have been determined between entities. In some examples, the structured data graph can be provided based on one or more schemas. In some examples, a schema describes how data is structured in the user-specific knowledge graph.
An example schema structures data based on domains, types and properties. In some examples, a domain includes one or more types that share a namespace. In some examples, a namespace is provided as a directory of uniquely named objects, where each object in the namespace has a unique name, e.g., identifier. In some examples, a type denotes an “is a” relationship about a topic, and is used to hold a collection of properties. In some examples, a topic represents an entity, such as a person, place or thing. In some examples, each topic can have one or more types associated therewith. In some examples, a property is associated with a topic and defines a “has a” relationship between the topic and a value of the property. In some examples, the value of the property can include another topic.
In some implementations, the annotation engine can provide an entity as input to a structured data graph system, e.g., a knowledge graph system, and the structured data graph system can provide one or more annotations as output to the annotation engine. In some examples, the structured data graph system can cross-reference the entity with objects that are captured in the structured data graph, and can provide annotations as objects and/or relationships between objects based on the schema. For example, the entity hamburger can be provided as input, and the annotation “hamburger is a food” can be provided as output.
In some implementations, the one or more actions are determined based on respective entities and/or annotations. In some implementations, the device that provided the image data, e.g., the device 102 of
In some implementations, the device that provided the image data, e.g., the device 102 of
In some implementations, the one or more actions are provided based on mapping entities and/or annotations to actions. For example, an entity and/or annotation that is associated with an event, e.g., a concert, can be mapped to an add event action that can be executed to add an event to a calendar, and/or to a purchase action, e.g., to purchase tickets to the event, purchase albums. Consequently, the add event action and/or the purchase action can be included in the one or more events. As another example, an entity and/or annotation can correspond to an image album of the user, e.g., a Food album, and can be mapped to an add to album action that can be executed to add content, e.g., image, to an album. Accordingly, the action is provided based on user-specific information, e.g., the knowledge that the user has an image album relevant to the entity depicted in the image. As another example, an entity and/or annotation can correspond to one or more contacts of the user, e.g., within a social networking service, and can be mapped to a share image action that can be executed to share the image with the contacts. Accordingly, the action is provided based on user-specific information, e.g., the knowledge that the user typically shares content depicted in the image with the particular contacts.
In accordance with implementations of the present disclosure, an action interface can be displayed based on the one or more actions. In some examples, the action interface is displayed in a viewfinder that displays the image data, e.g., from which the one or more actions were determined. In some examples, the action interface includes one or more action elements, each action element corresponding to an action of the one or more actions. Each action element is selectable to induce execution of the respective action. Accordingly, action elements of the action interface can include content-specific action elements, e.g., action elements provided based on actions, which were determined based on content of the image data.
In some implementations, the action interface can include an information frame that provides information regarding content, e.g., entities, depicted in the image data. For example, if a particular book is represented in the image data, the action interface can include an information frame that depicts information associated with the book, e.g., image of the cover, title, summary, author, publication date, and genre. As another example, if a particular band is represented in the image data, the action interface can include an information frame that depicts information associated with the band, e.g., picture of the band, a list of band members, a list of albums.
In some implementations, the action interface can include content-agnostic action elements. In some examples, a content-agnostic action element corresponds to an action that can be provided regardless of the content of the image data. For example, the image data can correspond to an image that was captured by the camera. Consequently, a share action element can be provided to share the image. In some examples, the share action element is provided in response to the image being captured, and not the content depicted in the image.
Implementations of the present disclosure are described in further detail herein in the context of non-limiting examples. It is contemplated that implementations of the present disclosure can be realized in any appropriate contexts including, and in addition to the examples provided herein.
In accordance with implementations of the present disclosure, image data is provided, which is used to display the scene 124 in the viewfinder 204. In some examples, the image data is processed to identify one or more entities from content of the scene 124. In the depicted example, example content can include artwork 220 provided in the poster 132, and text 222 provided in the poster 132. In the depicted example, the artwork 220 includes an image of a guitarist in a spotlight, and the text 222 includes a name of a band, e.g., “Best Band Ever,” a date, e.g., “January 30, 2014,” a location, e.g., “TX State Fair,” and other information, e.g., “Doors @ 8 PM.” In some implementations, the image data is processed to identify the band “Best Band Ever” as an entity, the date “January 30, 2014” as an entity, the time “8 PM” as an entity, and/or the location “TX State Fair” as an entity.
In some implementations, one or more annotations are provided based on the one or more entities. For example, one or more annotations can be provided based on the entity “Best Band Ever.” Example annotations can include “name,” “band,” “music,” and a category of music, e.g., “rock,” “indie,” “classical.” As another example, one or more annotations can be provided based on the entity “TX State Fair.” Example annotations can include “location,” “venue,” and “concerts.” In some examples, annotations can be provided as image-specific structured data received from a knowledge graph system, as described herein.
In some implementations, one or more actions are provided based on the one or more entities and/or the image-specific structured data. In view of the example of
In some implementations, the action elements 252, 254, 256 include content-specific action elements. Although not depicted in
In some implementations, actions can be executed in response to selection of an action element without requiring any additional user input. For example, in response to user selection of the action item 256, an event corresponding to the concert can be automatically added to a calendar without further user input.
Implementations of the present disclosure can further include one or more actions that are automatically executed without requiring the user to select the action. For example, a reminder action can be automatically executed in response to identifying an event depicted in the image data. Consequently, an event reminder can be provided to the user without the user explicitly requesting that they be reminded about the event. In some examples, the reminder can be enhanced to include content, e.g., images, video, associated with the event. It is contemplated that automatic actions can be provided in any appropriate context, e.g., events, sharing, add to album, and the like.
Referring again to
As another example, the user 140 can use the device 102 to provide image data based on a scene that includes one or more persons, e.g., the user takes a picture of two friends, Michelle and Louise. The image data can be processed, as described herein, and one or more actions can be determined. For example, the image data can be processed, and it can be determined that Michelle and Louise are depicted in the image data. Example actions can include an add image to Friends album action, a share image with Michelle action, a share image with Louise action, and/or a share image with Michelle and Louise action.
Image data is received (302). In some examples, one or more processors of the device 102 and/or of the server system 104 receives the image data. In some examples, the image data is provided from a camera, e.g., of the device 102, and corresponds to a scene viewed by the camera. In some examples, the image data is pre-capture image data. In some examples, the image data is post-capture image data. One or more entities are identified (304). In some examples, the image data is processed by the computing device 102 and/or the server system 104 to identify the one or more entities. In some examples, an entity is provided as a person, place or thing that is represented in the image data.
One or more annotations are received (306). In some examples, the one or more entities and/or structured data are processed by the computing device 102 and/or the server system 104 to provide the one or more annotations. A set of actions are determined (308). In some examples, the one or more annotations are processed by the device 102 and/or the server system 104 to determine actions that can be executed. In some examples, it can be determined that no actions are determined. Consequently, the set of actions can include an empty set. In some examples, it can be determined that one or more actions are determined. Consequently, the set of actions can include one or more actions.
It is determined whether the set of actions includes at least one action (310). In some examples, the device 102 and/or the server system 104 can determine whether the set of actions includes at least one action. If the set of actions includes at least one action, instructions are provided to display an action interface (312). In some examples, the device 102 and/or the server system 104 can provide the instructions. For example, one or more processors of the device 102 can provide instructions to a display processor of the device 102. As another example, the server system 104 can provide instructions to the device 102. If the set of actions does not include at least one action, instructions are not provided to display an action interface (314).
Implementations of the subject matter and the operations described in this specification can be realized in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be realized using one or more computer programs, i.e., one or more modules of computer program instructions, encoded on computer storage medium for execution by, or to control the operation of, data processing apparatus. Alternatively or in addition, the program instructions can be encoded on an artificially generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. A computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be, or be included in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).
The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a standalone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, subprograms, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. Elements of a computer can include a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. Devices suitable for storing computer program instructions and data include all forms of nonvolatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CDROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LED (light-emitting diode) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's client device in response to requests received from the web browser.
Implementations of the subject matter described in this specification can be implemented in a computing system that includes a backend component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a frontend component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such backend, middleware, or frontend components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some implementations, a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interaction) can be received from the client device at the server.
While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any implementation of the present disclosure or of what may be claimed, but rather as descriptions of features specific to example implementations. Certain features that are described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination.
Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
Thus, particular implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.
This application is a continuation application of, and claims priority to, U.S. patent application Ser. No. 15/946,342, titled “SMART CAMERA USER INTERFACE,” filed on Apr. 5, 2018, which application is a continuation application of, and claims priority to, U.S. patent application Ser. No. 15/428,821, now U.S. Pat. No. 9,973,705, titled “SMART CAMERA USER INTERFACE,” filed on Feb. 9, 2017, which application claims priority to U.S. patent application Ser. No. 14/618,962, now U.S. Pat. No. 9,600,724, titled “SMART CAMERA USER INTERFACE,” filed on Feb. 10, 2015, which application claims the benefit of U.S. Provisional Application No. 61/937,833 filed on Feb. 10, 2014. The disclosure of each of the foregoing applications is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61937833 | Feb 2014 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16569273 | Sep 2019 | US |
Child | 16881816 | US | |
Parent | 15946342 | Apr 2018 | US |
Child | 16569273 | US | |
Parent | 15428821 | Feb 2017 | US |
Child | 15946342 | US | |
Parent | 14618962 | Feb 2015 | US |
Child | 15428821 | US |