Mobile phones and smart mobile phones are becoming extremely common. Many people now carry everywhere a device that includes a powerful processor, a high-resolution video camera, and a connection to the Internet. One possible practical application of these devices is image recognition. When a smart phone user is presented with an item that he desires to know more about, he can photograph the item and use image recognition software to identify it. Depending on his preferences he may simply be given the name of the object, or automatically be connected with search results regarding the object, shopping information regarding the object, or any other appropriate information. A particularly useful application of this technology is for visually impaired people; enabling them to identify objects they are not able to identify themselves without assistance. Frequently, when a user takes a photo with a smart phone for the purposes of object identification, the user does not take the photo that best enables the object to be identified—for instance, the image can be blurry or from an angle that makes recognition difficult. This is particularly a problem when assisting blind users, as they cannot see the photo image themselves to verify its quality.
Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
The invention can be implemented in numerous ways, including as a process; an apparatus; a system; a composition of matter; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.
Real time object scanning using a mobile phone and cloud-based visual search engine is disclosed. A system for tagging an object comprises a processor configured to: determine a key frame, wherein determining a key frame comprises: determining if an image is stable; and in the event that the image is stable: determining if the image has been stable for a predetermined duration; and in the event that the image has been stable for the predetermined duration: identifying the current frame as a key frame; and determine a tag for an item in the key frame. A memory is coupled to the processor and is configured to provide the processor with instructions. An interface is configured to receive an image (e.g., for processing by the processor).
In some embodiments, real time object identification is performed using a mobile phone including a camera and a processor. A mobile phone user performs real time object identification by initiating the object identification process (e.g., by launching an app) and holding their phone steady so the camera captures a steady image of the object of interest. Rather than the user making an indication (e.g., pushing a button, manually triggering, voice triggering, etc.) that the image is of the desired object, the app determines that the image is steady (e.g., features of interest are not blurry), when the image has been steady for a predetermined duration, and when the visual content is sufficiently different from the previous key frames, the image is captured and processed. By analyzing each frame of the image stream, the app is able to ensure that a high quality image is received for image processing (e.g., in focus, within the frame, etc.). If the app requires the user to push a button to indicate that an image should be captured, it is forced to rely on the user to take a good quality image. This is particularly burdensome when the app is used for assisting a blind user, who will likely have difficulty taking a high quality image.
In some embodiments, an image is steady in the event that an object of interest is within a camera view for a predetermined time. In some embodiments, a steady image refers to an image from the perspective of a device with a camera, where the image, or rather stream of images, includes the same subject matter within the view of the camera. In some embodiments, the image is received via an interface to be processed. In some embodiments, the image or stream of images is steady or within the view of the camera for a predetermined period of time. In some embodiments, the predetermined period of time is indicative of a length of time to express the intent of interest in the objects in the view of the camera.
In some embodiments, when the object identification process is initiated, the processor receives an image stream from the camera. Each image frame is analyzed until a key frame is detected. A key frame comprises an image frame where the image is steady and has been held steady over a predetermined duration, and where the visual content is different from the previous key frames. When a key frame is detected, the image is provided to object identification software for identifying an object in the image. In some embodiments, the object is identified by an automated object identification process. In some embodiments, the object is identified by a human object identifier. In some embodiments, it is determined whether the object can be identified by an automated object identification process, and if not, the object is identified by a human object identifier.
In some embodiments, the system comprises a processor for image recognition which performs the expensive computation of analyzing a new object and a key frame processor which performs the less expensive identification of frames that are susceptible frames to having a new object. If the frame is identified as being susceptible by the key frame processor, the frame is sent on to the image recognition processor.
In the example shown, computer vision engines 204 comprises a set of one or more computer vision engines for automatically identifying objects in images received by image tagging system 200. In various embodiments, the computer vision engines use an instance recognition module, a classification module, an optical character recognition module, a face identification module, a barcode recognition module, a clock recognition module, a color detection module, or any other appropriate module. In some embodiments, each different module utilized by computer vision engines 204 is utilized by a separate computer vision engine. In some embodiments, computer vision engines 204 comprise more than one computer vision engine, and the separate computer vision engines execute their modules in parallel. In some embodiments, computer vision engines 204 utilize information stored in object databases 208 as part of executing computer vision modules. In some embodiments, an instance recognition module utilizes object databases 208 as its instance library. In some embodiments, a classification module utilizes object databases 208 as its class representation library.
In the example shown, human computation module(s) 206 comprises one or more human computation modules for image recognition. A human computation module for image recognition comprises one or more humans each capable of recognizing images and providing tags for the images. In some embodiments, a human computation module relays any tags provided by its humans directly to results processor 210. In some embodiments, a human computation module requests tags from human taggers. In some embodiments, a human computation module receives a request for tags from a results processor. In some embodiments, the human computation module provides various processing functionality prior to providing the tags to results processor 210. In various embodiments, processing functionality includes determining a status of a human tagger, determining a validity of a tag based on a status of a human tagger (e.g., valid tag is determined in the event that the tag is received from a tagger indicated as an expert or reliable tagger), confirming a validity of a tag based on receipt from multiple human taggers (e.g., valid tag is determined in the event that the same tag is received from a majority of taggers or a minimum number of taggers or both), marking a tag with a validity status based on a status of a human tagger, or any other appropriate processing functionality. In some embodiments, human computation module(s) 206 comprises more than one human computation module. In various embodiments, human taggers are divided into separate human computation modules based on specialty, experience, age, location, average time to provide results, tagger status, or any other appropriate tagger classification.
Results processor 210 comprises a results processor for receiving and processing tags from computer vision engines 204 and human computation module(s) 206. In the example shown, results processor 210 ranks the received tags according to a predetermined ranking algorithm and provides the highest ranked tag or tags to the image tagging system user (e.g., the user that originally provided the image). In various embodiments, the predetermined ranking algorithm utilizes a module ranking (e.g., tags received from a computer vision instance module rank more highly than tags received from a computer vision classification module), a module score (e.g., tags received from the same module are ranked based on a score assigned to them by the module they are received from), or any other appropriate ranking criteria. In some embodiments, results processor 210 requests tags from computer vision engines 204. In some embodiments, results processor 210 requests tags from human computation module(s) 206. In some embodiments, results processor 210 requests tags from human computation module(s) 206 in the event that computer vision engines 204 are not able to provide tags.
Learning module 212 comprises a module for updating object databases 208 based on the results of an image query. In some embodiments, if an instance recognition module or a classification module are able to determine tags for an image based on information stored in object databases 208 without finding an identical image stored in object databases 208, the learning module then stores the image in object databases 208 associated with the determined tags. In some embodiments, the learning module determines whether adding the image to object databases 208 will broaden the space of images associated with the determined tag. The learning module may then choose to store the image in object databases 208 only if it does broaden the space of images associated with the tag. In some embodiments, if computer vision engines 204 is not able to determine a tag associated with the image but human computation module(s) 206 is, learning module 212 stores the image and associated tag in object databases 208, so that the image can be automatically identified if it is submitted in future queries. In some embodiments, learning module 212 processes an image before storing it and any associated tags in object databases 208. In various embodiments, processing comprises background subtraction, object geometry processing, object class representation creation, or any other appropriate processing.
Dashboard 214 comprises an interface for an image tagging system administrator to gain information about the current status of the image tagging system. In the example shown, the dashboard system can provide information to a system administrator on image queries, tags that have been applied to images, system users, image taggers, and system status, as well as allowing the administrator to train the computer vision module by adding images and tags at his discretion.
In some embodiments, features are extracted at salient locations such as corners or object contours. A local patch centered around the salient location is encoded. The encoding typically captures histograms of oriented edge energy. The features are compared to the features in the previous frame, and are used to compute the optical flow. In some embodiments, optical flow is estimated using a Lukas Kanade algorithm. It is determined which feature(s) is/are locked onto. In some embodiments, feature(s) is/are used to determine an object tag. In some embodiments, determining whether feature(s) is/are locked comprises checking to see if feature(s) have been found in a previous frame. In some embodiments, if feature(s) have been locked, the image is steady and a key frame can be detected. In the event feature(s) is/are locked, it is determined if the frame is a key frame. If it is determined that feature(s) have not been locked, feature(s) is/are looked for. In some embodiments, it is determined whether feature(s) have been found. In the event feature(s) have been found, the lock on to feature(s) is indicated. For example, a software module is informed (e.g., by passing a message or indication) that the feature(s) are locked and that the process may proceed (e.g., to process additional images to determine a key frame). Or for example, the lock is stored or recorded (e.g., in a data structure or in memory location(s)). In some embodiments, after the lock on to feature(s) is indicated, the next time the process is executed (e.g., in response to the next image frame received), it will be determined that feature(s) is/are locked. If it is determined that feature(s) have not been found, the process ends. In some embodiments, a lack of lock on to features is indicated (e.g., stored, recorded, passed as an indication or variable to a software module, etc.).
In some embodiments, an accelerometer measurement is used to determine whether there are stable frames. In some embodiments, the accelerometer is associated with a mobile phone.
In some embodiments, a key frame has different visual content from a previous key frame. In some embodiments, a key frame has the same visual content from a previous key frame.
Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.
Number | Name | Date | Kind |
---|---|---|---|
5309526 | Pappas et al. | May 1994 | A |
5496270 | Nettekoven | Mar 1996 | A |
5913205 | Jain et al. | Jun 1999 | A |
6421690 | Kirk | Jul 2002 | B1 |
6677948 | Wasserman et al. | Jan 2004 | B1 |
7113918 | Ahmad et al. | Sep 2006 | B1 |
7139784 | Knobe et al. | Nov 2006 | B2 |
7148913 | Keaton et al. | Dec 2006 | B2 |
7184100 | Wilf et al. | Feb 2007 | B1 |
7352292 | Alter et al. | Apr 2008 | B2 |
7509353 | Kelkar et al. | Mar 2009 | B2 |
7657100 | Gokturk et al. | Feb 2010 | B2 |
7675461 | McCusker et al. | Mar 2010 | B1 |
7854509 | Johns | Dec 2010 | B2 |
7961117 | Zimmerman et al. | Jun 2011 | B1 |
8050503 | Dekel et al. | Nov 2011 | B2 |
8134614 | Fujii | Mar 2012 | B2 |
8134624 | Solhusvik et al. | Mar 2012 | B2 |
8150216 | Retterath et al. | Apr 2012 | B2 |
8173818 | Singh et al. | May 2012 | B2 |
8214309 | Khosla et al. | Jul 2012 | B1 |
8265866 | Altamura et al. | Sep 2012 | B2 |
8321293 | Lewis et al. | Nov 2012 | B2 |
8438084 | Tesler et al. | May 2013 | B1 |
8478052 | Yee et al. | Jul 2013 | B1 |
8605141 | Dialameh et al. | Dec 2013 | B2 |
8856021 | Carmel | Oct 2014 | B2 |
9182891 | Adarraga | Nov 2015 | B2 |
9396400 | Teichman | Jul 2016 | B1 |
20030048928 | Yavitz | Mar 2003 | A1 |
20060107297 | Toyama et al. | May 2006 | A1 |
20060274978 | Fukuda et al. | Dec 2006 | A1 |
20070005571 | Brewer et al. | Jan 2007 | A1 |
20070033531 | Marsh | Feb 2007 | A1 |
20070110338 | Snavely et al. | May 2007 | A1 |
20070177805 | Gallagher | Aug 2007 | A1 |
20070274978 | Danielson et al. | Nov 2007 | A1 |
20080080745 | Vanhoucke et al. | Apr 2008 | A1 |
20080144943 | Gokturk et al. | Jun 2008 | A1 |
20080152231 | Goturk et al. | Jun 2008 | A1 |
20080317349 | Ishikawa | Dec 2008 | A1 |
20090034782 | Gering | Feb 2009 | A1 |
20090153799 | Johns | Jun 2009 | A1 |
20090257663 | Luo et al. | Oct 2009 | A1 |
20100046842 | Conwell | Feb 2010 | A1 |
20100070483 | Delgo et al. | Mar 2010 | A1 |
20100070523 | Delgo et al. | Mar 2010 | A1 |
20100125605 | Nair et al. | May 2010 | A1 |
20100125805 | Stoos | May 2010 | A1 |
20110016150 | Engstrom et al. | Jan 2011 | A1 |
20110064302 | Ma et al. | Mar 2011 | A1 |
20110145043 | Handel | Jun 2011 | A1 |
20110184972 | Ard et al. | Jul 2011 | A1 |
20110196859 | Mei et al. | Aug 2011 | A1 |
20110216179 | Dialameh et al. | Sep 2011 | A1 |
20110244919 | Aller et al. | Oct 2011 | A1 |
20110264570 | Houseworth et al. | Oct 2011 | A1 |
20110298932 | Gorian et al. | Dec 2011 | A1 |
20120011119 | Baheti et al. | Jan 2012 | A1 |
20120011142 | Baheti et al. | Jan 2012 | A1 |
20120098981 | Ip et al. | Apr 2012 | A1 |
20120102050 | Button et al. | Apr 2012 | A1 |
20120235988 | Karafin et al. | Sep 2012 | A1 |
20120299961 | Ramkumar et al. | Nov 2012 | A1 |
20120308077 | Tseng | Dec 2012 | A1 |
Number | Date | Country |
---|---|---|
201250506 | Dec 2012 | TW |
2011043982 | Apr 2011 | WO |
Entry |
---|
Chen et al., “Streaming mobile augmented reality on mobile phones”, ISMAR 2009. |
Adams et al., “Viewfinder alignment”, Eurographics 2008. |
Herling et al., “Chapter 11 markerless tracking for augmented reality”, Handbook of Augmented Reality 2011. |
Sudol et al., “LookTel—a comprehensive platform for computer-aided visual assistance”, CVPRW 2010. |
Bay et al., “SURF: speeded up robust features”, ECCV 2006, part I, LNCS 3951, pp. 404-417, 2006. |
Bigham et al., “The design of human-powered access technology”, ASSETS 2011, Oct. 2011. |
Nourani-Vatani et al., “A study of feature extraction algorithms for optical flow tracking”, PaCRA Dec. 2012. |
Sorokin et al., “Utility data annotation with Amazon Mechanical Turk”, 2008 IEEE Computer Society Conference on Computer Vision and Pattern Recognition Workshop. |
Lasecki et al., “Real-time crowd control of existing interfaces”, UIST'11, 2011. |
Bigham et al., “VizWiz: nearly real-time answers to visual questions”, UIST'10, 2010. |
Geiger et al., “Managing the Crowd: Towards a Taxonomy of Crowdsourcing Processes”, Proceedings of the Seventeenth Americas Conference on Information Systems, Detroit, Michigan Aug. 4-7, 2011. |
Yan et al., “CrowdSearch: exploiting crowds for accurate real-time image search on mobile phones”, MobiSys' 10, Jun. 15-18, 2010. |
Bigham et al., “VizWiz::Locatelt—enabling blind people to locate objects in their environment”, CVPRW 2010. |
WO patent application No. PCT/US2014/014293, International Search Report and Written Opinion mailed May 30, 2014. |
U.S. Appl. No. 13/016,776, “Any-image labeling engine,” Garrigues et al., filed Jan. 28, 2011. |
U.S. Appl. No. 13/016,779, “Monitoring an any-image labeling engine,” Garrigues et al., filed Jan. 28, 2011. |
U.S. Appl. No. 13/016,776, Office Action mailed Dec. 12, 2012. |
U.S. Appl. No. 13/016,776, Office Action mailed Jul. 2, 2013. |
U.S. Appl. No. 13/016,776, Office Action mailed Aug. 8, 2014. |
U.S. Appl. No. 13/016,779, Office Action mailed Jan. 16, 2013. |
U.S. Appl. No. 13/016,779, Office Action mailed Aug. 8, 2013. |
U.S. Appl. No. 13/016,779, Office Action mailed Aug. 28, 2014. |
Cula, Oana G. et al., “Compact representation of bidirectional texture functions,” 2001 IEEE 0-7695-1272-0/01, 1041-1047. |
Christmas, William J. et al., “Structural matching in computer vision using probabilistic relaxation,” IEEE transactions on pattern analysis and machine intelligence, vol. 17, No. 8, Aug. 1995. |
Chakravarty, Indranil et al., “Characteristic views as a basis for three-dimensional object recognition,” SPIE vol. 336 Robot Vision, 1982. |
Fisher, Matthew et al., “Context-based search for 3D models,” ACM Transactions of Graphics, vol. 29, No. 6, Article 182, Dec. 2010. |
ACM Digital Library results: image tagging with computer vision match and user vision match, Jan. 12, 2013. |
Cucchiara, R. et al., “Intelligent Distributed Surveillance Systems—Computer vision system for in-house video surveillance,” IEE Proc.-Vis. Image Signal Process, vol. 152, No. 2, Apr. 2005. |
Google Scholar results: computer vision match and humans vision match and query of the image, Dec. 7, 2012. |
Toyama, Kentaro et al., “Geographic location tags on digital images,” ACM 1-58113-722-2/03/0011, Nov. 2003. |
U.S. Appl. No. 13/016,776, Notice of Allowance mailed Jan. 21, 2015. |
Google Scholar results: analyze images and determine computer and human vision match, Jan. 9, 2015. |
ACM Digital Library, search results: a computer vision match is determined to be inadequate if/when the computer vision match lacks specificity or a probability associated with the computer vision match indicates that the computer vision match is not a strong match, Jan. 9, 2015. |
IEEE Xplore search results: analyze the image associated with the image query using a human vision analysis system to determine one or more human vision matches, wherein each human vision match includes one or more human vision tags associated with the image, Jan. 9, 2015. |
U.S. Appl. No. 13/016,779, Office Action mailed Apr. 22, 2015. |
U.S. Appl. No. 13/016,779, Notice of Allowance mailed Aug. 14, 2015. |
TW patent application No. 103104388, Office Action mailed Jan. 18, 2016. |
TW patent application No. 103104388, Examination Opinion mailed Aug. 26, 2016. |
Number | Date | Country | |
---|---|---|---|
20140233854 A1 | Aug 2014 | US |