System for providing information relating to points of interest
A digital search system for processing and transmitting data structures comprising information relating to points of interest based on a digital image file containing a photo taken by a device. The digital search system includes a location-based retrieval module and an image matching module for receiving and processing digital image files. The system generates a set of places of interest based on the location and heading of the device and the image-based retrieval module and transmits a final results list to the device.
This application is a continuation of U.S. patent application Ser. No. 14/825,066, filed Aug. 12, 2015, which is a continuation-in-part of U.S. patent application Ser. No. 14/078,108, filed Nov. 12, 2013, and claims the benefit of U.S. Patent Application No. 62/163,919, filed May 19, 2015, which are all herein incorporated by reference in their entireties.
FIELD OF THE INVENTIONThe present invention relates generally to a digital search system for retrieving and providing information relating to points of interest based upon factors including at least one of a device's location, heading, range, or the contents of an image taken by a device.
BACKGROUND OF THE INVENTIONMobile device use has been increasing after the introduction of smartphones, smart-cameras and other “smart” devices connected to a data feed. These machines act as pocket computers for many individuals. With these devices, users are able to access information based upon mobile GPS functionality. Social media applications also hold millions of users captivated on a daily basis with the sharing of photos taken from a mobile device.
The present invention takes the popularity of mobile photo functionality and pairs it with the device's technical capabilities and provides a new experience to users by presenting them with informative content related to the “place” within the captured image by utilizing the location, heading and/or range of the device at the time of the image capture. The process utilized to make this experience possible is based upon the device capabilities and the system architecture. In the preferred embodiment, the mobile device collects the data needed to request relevant “places” information from the server.
SUMMARY OF THE PREFERRED EMBODIMENTSIn accordance with a preferred embodiment of the present invention there is provided a digital search system for processing and transmitting information relating to points of interest based on a location and heading of a device. T digital search system includes a server for receiving and processing the device location and heading information, and a filtering module for filtering a first group of places of interest to provide a first set of places of interest. The filtering module is programmed to: 1) receive at least one place of interest to form the first group of places of interest; 2) exclude places of interest having a location outside of a predetermined radial range from the device location; and 3) if the number of remaining places of interest exceeds a first predetermined quantity, exclude the places of interest having locations that are the greatest distance from the device until the number of remaining places of interest does not exceed the first predetermined quantity, whereby the first set of places of interest is provided. The system also includes a data file comprising at least one confirm count related to a point of interest, and a sorting module for receiving and processing the first set of places of interest to provide a second set of places of interest. The sorting module is programmed to: 1) receive the first set of places of interest; 2) order the places of interest based on the confirm count; and 3) if the number of places of interest exceeds a second predetermined quantity, exclude the places of interest that are ordered last according to step 2, until the number of remaining places of interest does not exceed the second predetermined quantity, whereby the second set of places of interest is provided.
In a preferred embodiment, the server is programmed to search for points of interest within the predetermined radial range from the device. Preferably, the server uses an API to search for points of interest within the predetermined radial range from the device. In a preferred embodiment, the sorting module is further programmed to sort the places of interest based on a category related to a point of interest.
In a preferred embodiment, the filtering module is further programmed to exclude points of interest having a location outside of a first triangle shaped range near the location of the device. The first triangle shaped range starts from the location of the device and spreads out away from the location of the device in the direction of the heading of the device. The first triangle shaped range spreads out at a first angle from the location of the device with respect to the heading of the device. The first triangle shaped range also extends a first distance from the location of the device in the direction of the heading of the device. In a preferred embodiment, the filtering module is further programmed to exclude points of interest having a location outside of a second triangle shaped range near the location of the device, wherein the second triangle shaped range starts from the location of the device and spreads out away from the location of the device in the direction of the heading of the device, and the second triangle shaped range extends further away from the location of the device than the first triangle shaped range. The second triangle shaped range spreads out at a second angle from the location of the device with respect to the heading of the device. The second triangle shaped range also extends a second distance from the location of the device in the direction of the heading of the device. Preferably, the second angle is less than the first angle and the second distance is greater than the first distance.
In a preferred embodiment, the system includes a software application executing on the device for transmitting the location and heading of the device to the server, receiving collected information transmitted from the server, and displaying the collected information to a user. Preferably, the software application provides a user interface, whereby the software application transmits the location and heading of the device to the server, receives collected information transmitted from the server, and displays the collected information in response to a single user interaction. Preferably, the user interface allows a user to confirm a point of interest, and the server increments the confirm count related to a point of interest in response to the user's confirmation.
In accordance with another aspect of the present invention there is provided a digital search system for processing and transmitting data structures comprising information relating to points of interest based on a digital image file. The digital search system includes an image matching module for receiving and processing digital image files. The image matching module is programmed to: 1) receive a digital image file; 2) convert the digital image file to a first data structure having at least one hash value; 3) search for hash values corresponding to images similar to the image in the digital image file; and 4) return a second data structure comprising results from the search in step 3. The digital search system also includes a filtering module for receiving and processing data structures. The filtering module is programmed to: 1) receive a third data structure comprising hash values corresponding to images; and 2) return a fourth data structure comprising metadata related to images to which the hash values in the third data structure correspond, but excluding metadata where the hash values in the third data structure correspond to an image having a location that exceeds a predetermined distance from the location of the device that captured the digital image file. The digital search system also includes a server for receiving and processing a digital image file from a device used to take a photo and returning metadata related to similar images. The server is programmed with one or more software routines executing on the server to: 1) search for images similar to that in the digital image file; 2) filter the results of the search in step 1; 3) transmit a fourth data structure comprising metadata including a title related to the results of step 2.
In a preferred embodiment, step 3 of the image matching module uses multiple searchers that simultaneously search for data structures relating to images similar to the image in the digital image file, and wherein step 4 comprises combining and filtering the results of step 3 to generate the second data structure if more than one searcher of step 3 returns a result. Preferably, the results of the search in step 3 of the image matching module comprise hash values corresponding to images similar to the image in the digital image file and a matching score. In a preferred embodiment, the digital search system also includes an indexing module for indexing digital image files. The indexing module is programmed to: 1) read a digital image file; 2) generate a codebook; 3) read the codebook and at least one digital image file; and 4) generate an image index.
In a preferred embodiment, the digital search system also includes a software application executing on the device to: 1) take a photograph; 2) transmit to the server the digital image file including the photograph; 3) receive a list comprising metadata relating to the contents of the digital image file; and 4) displaying the list to a user. Preferably, the software application provides a user interface, whereby the software application performs the steps above in response to a single user interaction. Preferably, the user interface allows a user to confirm a result on a displayed list, and the server increments a confirm count related to a result in response to the user's confirmation.
In accordance with another aspect of the present invention, there is provided a digital search system for processing and transmitting data structures comprising information relating to points of interest based on a digital image file containing a photo taken by a device and the location and heading of the device. The digital search system includes a location-based retrieval module and an image-based retrieval module. The location-based retrieval module includes a location-based filtering module for filtering a first group of places of interest to provide a first set of places of interest. The filtering module is programmed to: 1) receive at least one place of interest to form the first group of places of interest; 2) exclude places of interest having a location outside of a predetermined radial range from the device location; and 3) if the number of remaining places of interest exceeds a first predetermined quantity, exclude the places of interest having locations that are the greatest distance from the device until the number of remaining places of interest does not exceed the first predetermined quantity, whereby the first set of places of interest is provided. The location-based retrieval module also includes a sorting module for receiving and processing the first set of places of interest to provide a second set of places of interest. The sorting module is programmed to: 1) receive the first set of places of interest; 2) order the places of interest based on the confirm count; and 3) if the number of places of interest exceeds a second predetermined quantity, exclude the places of interest that are ordered last according to step 2, until the number of remaining places of interest does not exceed the second predetermined quantity, whereby the second set of places of interest is provided. The location-based retrieval module also includes a data file that includes at least one confirm count related to a point of interest. The image-based retrieval module includes an image matching module for receiving and processing digital image files. The image matching module programmed to: 1) receive a digital image file; 2) convert the digital image file to a first data structure having at least one hash value; 3) search for hash values corresponding to images similar to the image in the digital image file; and 4) return a second data structure comprising results from the search in step 3. The image-based retrieval module also includes a filtering module for receiving and processing data structures. The filtering module is programmed to: 1) receive a third data structure comprising hash values corresponding to images; and 2) return a fourth data structure comprising metadata related to images to which the hash values in the third data structure correspond, but excluding metadata where the hash values in the third data structure correspond to an image having a location that exceeds a predetermined distance from the location of the device that captured the digital image file. The image-based retrieval module also includes one or more software routines executing to 1) search for images similar to that in the digital image file; 2) filter the results of the search in step 1; 3) generate the fourth data structure comprising metadata including a title related to the results of step 2; and The digital search system also includes a server for receiving and processing a digital image file and the location and heading of a device used to take the image in the digital image file. The server is programmed with one or more software routines executing on the server to: 1) simultaneously use the location-based retrieval module to generate the second set of places of interest based on the location and heading of a device, and the image-based retrieval module to generate the fourth data structure; 2) combine the second set of places of interest and the fourth data structure into a final results list; and 3) transmit the final results list to the device.
In a preferred embodiment, the digital search system also includes a software application executing on the device to: 1) take a photograph; 2) transmit to the server a digital image file comprising the photograph, the location of the device, and the heading of the device; 3) receive a list transmitted from the server; and 4) display the list to a user. Preferably, the software application provides a user interface, whereby the software application performs the steps above in response to a single user interaction. In a preferred embodiment, the user interface allows a user to confirm a result in the displayed list, and wherein the server increments the confirm count related to the result in response to the user's confirmation.
The present invention is directed to a system and method of providing place (e.g., business, landmark, statue, monument, landmark, building, hotel, restaurant, etc.) relevant information based upon a mobile device's location and heading information. Taking a picture of a landmark or business will return results of information for places related to the area and in proximity to the origination of the image. For example, multiple businesses and landmarks including names, descriptions and other related data may be provided as search results based upon the image's location, heading and/or range. In other words, the search criteria may be based upon the mobile device's location, heading and/or defined ranges at the time of the picture being taken by the mobile user. The user may help define the correct result by confirming a result as a match to the “place” within the picture. Future users who capture photos within that same general proximity will receive refined search results based upon past users' “place” confirmation matches to images. Over time the database query factors will provide users with an experienced sense of image recognition due to potentially more accurate results.
In a preferred embodiment, the present invention is comprised of a computer database for storing information, the database configured to store information relating to points of interest including businesses and landmarks, the database adapted to store for each point of interest the location of the point of interest, and its name; a server for receiving device location and heading information from a device used to take the photo, the server programmed with one or more software routines executing on the server to: 1) process the device location and heading information to search for points of interest within a predetermined range of the device location and heading; 2) collect information relating to the points of interest within the predetermined range of the device location and heading; 3) communicate the collected information relating to the points of interest to the device used to take the photo.
In a preferred embodiment, the server is programmed with one or more software routines executing on the server to search for points of interest within a predetermined radial range around the location of the device and conical shaped range near the location of the device. The conical range preferably starts from the location of the device and spreads out towards the direction of the heading of the device.
In one embodiment, the system is programmed with one or more software routines executing on the server to accept confirmations from users for points of interest communicated to the devices, to count the number of user confirmations for each point of interest, and to give the points of interest with the highest user confirmations the highest priority in the displayed results.
The system is also preferably configured to accept registrations from businesses and to allow registered businesses to offer deals. The server collects information relating to businesses nearby the predetermined range of the device location and heading that are offering deals to users and communicates the results to the device for display to the user.
The following description and drawings are illustrative and are not to be construed as limiting. Numerous specific details are described to provide a thorough understanding of the disclosure. However, in certain instances, well-known or conventional details are not described in order to avoid obscuring the description. References to one or an embodiment in the present disclosure can be, but not necessarily are references to the same embodiment; and, such references mean at least one of the embodiments.
Reference in this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the-disclosure. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments. Moreover, various features are described which may be exhibited by some embodiments and not by others. Similarly, various requirements are described which may be requirements for some embodiments but not other embodiments.
The terms used in this specification generally have their ordinary meanings in the art, within the context of the disclosure, and in the specific context where each term is used. Certain terms that are used to describe the disclosure are discussed below, or elsewhere in the specification, to provide additional guidance to the practitioner regarding the description of the disclosure. For convenience, certain terms may be highlighted, for example using italics and/or quotation marks: The use of highlighting has no influence on the scope and meaning of a term; the scope and meaning of a term is the same, in the same context, whether or not it is highlighted.
It will be appreciated that the same thing can be said in more than one way. Consequently, alternative language and synonyms may be used for any one or more of the terms discussed herein. No special significance is to be placed upon whether or not a term is elaborated or discussed herein. Synonyms for certain terms are provided. A recital of one or more synonyms does not exclude the use of other synonyms. The use of examples anywhere in this specification including examples of any terms discussed herein is illustrative only, and is not intended to further limit the scope and meaning of the disclosure or of any exemplified term. Likewise, the disclosure is not limited to various embodiments given in this specification.
Without intent to further limit the scope of the disclosure, examples of instruments, apparatus, methods and their related results according to the embodiments of the present disclosure are given below. Note that titles or subtitles may be used in the examples for convenience of a reader, which in no way should limit the scope of the disclosure. Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure pertains. In the case of conflict, the present document, including definitions, will control.
It will be appreciated that terms such as “front,” “back,” “top,” “bottom,” “side,” “short,” “long,” “up,” “down,” “aft,” “forward,” “inboard,” “outboard” and “below” used herein are merely for ease of description and refer to the orientation of the components as shown in the figures. It should be understood that any orientation of the components described herein is within the scope of the present invention.
The detailed description provides explanations by way of exemplary embodiments. It is to be understood that other embodiments may be used having mechanical and electrical changes that incorporate the scope of the present invention without departing from the spirit of the invention.
While certain embodiments of the present invention are described in detail above, the scope of the invention is not to be considered limited by such disclosure, and modifications are possible without departing from the spirit of the invention as evidenced by the following claims.
Referring now to the drawings, wherein the showings are for purposes of illustrating the present invention and not for purposes of limiting the same, the drawings show a digital search system 100 in accordance with preferred embodiments of the present invention.
The mobile device (200) collects the device's current location (100) and the device's (200) heading (130) (240) which is adjusted based upon the device's (200) orientation then submits to the server (220) (260) the location (100), heading (130), near/radial range (110), near/wide range (120), and far range (140). Preferably, the location (100) is determined using the mobile devices (200) GPS latitude and longitude.
In a preferred embodiment, the heading (130) is determined by the device's (200) orientation and the direction that the camera is pointed. The near/radial range (110) is the circular 360 degree radius directly around the mobile device (200) with it acting as the center point based upon the location (100). The near/wide range (120) is the hard coded cone shaped distance reaching out from the device's (200) location (100) as the base of the cone. The far range (140) begins with the device location as the base of the point and stretches out to a further and thinner cone shaped zone distance than the near/wide range (120). It will be appreciated by those of ordinary skill in the art that the exact distances for each of these ranges can be varied as needed, as long as they are within a range of 1 to 6000 meters. For example, the ranges can be made smaller for more focused results and made larger for a wider range of results.
In a preferred embodiment of the present invention, after the collection of the location (100), near/radial range (110), near/wide range (120), heading (130), and far range (140), the device (200) communicates these data items to the server (220), preferably via a network connection (210) (260). In a preferred embodiment, the server (220) queries the database (230) for points of interest related to the location (100), heading (130) and range (110, 120, 140) criteria (280).
In a preferred embodiment of the present invention, the server (220), and associated processing system, and database (230) system will determine the relevant points of interest based upon 5 factors and present them to the user (300). These points of interest determining factors are sorted based upon a priority level with the highest level factor being more relevant to the user's experience. These preferred factors, with the highest factor listed first are:
1. Business with confirm count>0 (highest to lowest) (0-500 meters from location);
2. Locations with Wikipedia OR Factual category “Landmark” AND confirm count>0 (Highest to lowest) (0-3200 meters);
3. Businesses with confirm count==0 (0-500 meters);
4. Locations with Wikipedia OR Factual category “Landmark” AND confirm count==0 (0-3200 meters);
5. Businesses with Deals (500-3200 meters) sorted by confirm count (Highest to lowest).
In a preferred embodiment, a confirm count is the sum of all users that previously identified a “place” search result as a business or landmark that they were taking a picture of. For example, if a user takes a picture of Alcatraz Island and the results are returned with the Golden Gate Bridge listed first, the user would likely go to the next search result without confirming the result because the Golden Gate Bridge does not match the user's expectation. If the next result is Alcatraz, the user would likely press the “confirm” button displayed by the present invention (in association with the search result) to confirm (i.e., identify) the Alcatraz search result as the place that was the focal point of the user's photo and as the result the user expected.
If within that same general area 100 users take pictures and 70 of them confirm the Alcatraz search result, then the first result listed will be Alcatraz (assuming it has the highest confirm count). If, over time, 500 users take a picture within that same general area and 350 confirm the Golden Gate Bridge search result, and the confirm count for Alcatraz only increased to 100 confirms, then the first result listed by the present invention will now be the Golden Gate Bridge search result. This feature of a preferred embodiment of the present invention allows the users to drive the experience by identifying what they expect as the returned result from their photo. In the preferred embodiment, the server of the present invention will record these confirms and run a calculation after every user photo to then display the sorted results based upon the up-to-date confirm counts.
The first preferred factor queries the database for all points of interest (e.g., business and/or landmark listings) within the database (230) containing a confirm count of greater than zero and that are located within the defined location (100), heading (130) and range (110, 120, 140) and that are no greater than 500 meters from the device's (200) exact location (100). Factor one results are sorted by highest to lowest confirm count. Again, those of ordinary skill in the art will appreciate that the distance of 500 meters can be changed to any distance within the range of 1-6000 meters based on the desired level of focus.
The second preferred factor queries the database (230) for all points of interest listings with a confirm count greater than zero and that are located within the defined location (100), heading (130) and range (110, 120, 140) and that are no greater than 3200 meters from the device's (200) exact location (100). Factor two results are sorted by highest to lowest confirm count. Specifically, in one example embodiment, the server (220) receives content from a third party database or service such as Wikipedia and/or Factual to search for relevant points of interest within the range of the device. For example, the server (220) of a preferred embodiment calls the Wikipedia API and Factual API to receive content from their databases for latitude and longitudes that reside within the three location/heading defined ranges. That content is then pulled into the database (230) that can be queried for relevant points of interest based upon the search priority list discussed above. For places that exist within the database of the present invention, the Wiki content is preferably merged to those places as the description content. In another preferred embodiment, the server (220) can call into the third party services (APIs) or databases and conduct a direct query of those third party databases to retrieve relevant points of interest to merge into the content of the system database (230).
The third preferred factor queries the database (230) for points of interest listings with a confirm count equal to zero and that are located within the defined location (100), heading (130) and range (110, 120, 140) and that are no greater than 500 meters from the device's (200) exact location (100). Factor three results are sorted by highest to lowest confirm count.
The fourth preferred factor queries the database (230) for points of interest listings with a confirm count equal to zero and that are located within the defined location (100), heading (130) and range (110, 120, 140) and that are no greater than 3200 meters from the device's (200) exact location (100). Factor four results are sorted by highest to lowest confirm count.
The fifth preferred factor queries the database for points of interest listings that contain deals and that are located within the defined location (100), heading (130) and range (110, 120, 140) and that are between the distance of 500 to 3200 meters from the device's (200) exact location (100). Factor five results are sorted by highest to lowest confirm count. Deals are defined as discounted promotions that are generated and published to the database by the business for the purpose of incentivizing the user to become a customer of that business. The server (220) then preferably communicates the points of interest to the mobile device (200) via a network internet connection (210).
In a preferred embodiment, image recognition may be used as part of the process of retrieving relevant search results. For example, image recognition could be added as the first item to the search priority list. The priority given to the image recognition is dependent on the accuracy of the image recognition. If it is extremely accurate then it should receive priority but if it is less accurate than it should receive a lower priority. It is also appreciated that image recognition may work better as a hybrid blended into each method on the priority list. E.g., add image recognition as a requirement to each existing item within the priority list. Image recognition results can also be categorized outside of the current 5 step classification where the results are presented to user as a separate category of results.
In a preferred embodiment, information relating to a place that was recognized are preferably retrieved and presented to the user, along with relevant data including, but not limited to, name, address, telephone number, photos of the point of interest, history, facts, shared photos, tours, attractions, top places nearby and user reviews. It is also appreciated that advertisements relating to the business may also be displayed. E.g., a business can register with the system of the present invention to provide deals within the application. For example, if a user creates a deal for business XYZ, then that deal is displayed within the ad tile presented by the present invention for business XYZ.
Separately, the last item within the search priority list may also refer to businesses that have ads but do not match the requirements of the other search priority list items. Those businesses will display last within the search results and are there to act as impressions only because they most likely don't match the user's photo. Nearby places preferably consist of ads placed by registered businesses that have defined category(s). For example a business can create an ad and define categories for the ad. If the business is nearby, their ad can show in “Nearby Places” of other locations that are of a matching category defined within the ad.
The screenshot images of the Figures illustrate the user interactions with the mobile application. These screenshots represent an example embodiment illustrating one type of user interface and user experience. The examples do not limit other design and flow potentials for mobile applications that would use the patented technical process.
In a preferred embodiment, the digital search system can search for points of interest by executing a search against a database, files, or an index. Returning to
In a preferred embodiment of the present invention, the server (220) then filters the data structures comprising collected information relating to points of interest (530) (referred to herein as an “angel search” based on the shape shown in
Returning to
In a preferred embodiment of the present invention, the server (220) then sorts the lists of collected information into an aggregated list 660. Step 660 is performed by a sorting module (60) programmed to: 1) receive at least one data structure; 2) order the data structures based on at least a confirm count related to a point of interest; and 3) if the number of data structures exceeds a second predetermined quantity, exclude the data structures that are ordered last according to step 2 until the number of remaining data structures does not exceed the second predetermined quantity. Preferably, the confirm count related to a point of interest will be stored in a data file (50) accessible to the server (220). In a more preferred embodiment, step 2, which is performed by the filtering module orders the locations according to the following order: 1) businesses with a confirm count greater than zero and within a first predetermined distance from the device location; 2) locations with a confirmation count greater than zero, having a Wikipedia or Factual category of “Landmark,” and located within a second predetermined distance from the device location; 3) businesses with a confirm count of zero and within the first predetermined distance from the device location; 4) locations with a confirm count of zero, having a Wikipedia or Factual category of “Landmark,” and located within the second predetermined distance from the device location; and 5) businesses having deals and located within the region between the first predetermined distance from the device location and the second predetermined distance from the device location, further ordered by greatest to least according to confirm count. In a most preferred embodiment, the second predetermined quantity is about 20, the first predetermined distance is about 500 meters, and the second predetermined distance is about 3200 meters. However, those of ordinary skill in the art will appreciate that these predetermined values are merely exemplary and any positive value can be used. Those of ordinary skill in the art will also appreciate that the described use of specific APIs in a preferred embodiment is merely exemplary and any specifically named API can be replaced by another API or search service. Those of ordinary skill in the art will further appreciate that the use of the “Landmark” category as a factor by which search results are ordered is merely exemplary and that any category can be used to sort the search results.
As shown in
Preferably, the image matching API saves processed images to an in-memory data grid. In a preferred embodiment, the server uses a Hazelcast in-memory data grid, but those of ordinary skill in the art will appreciate that the use of an in-memory data grid is merely exemplary, as is the use of the Hazelcast in-memory data grid specifically. Preferably, the server then publishes a search request to a fanout messages exchange. Then, the server broadcasts a search request to multiple searchers queues. Those of ordinary skill in the art will appreciate that the use of multiple searchers queues and searchers is merely exemplary and a single searcher queue and searcher may also be used. In a preferred embodiment, a searcher is a software component or module that loads an index and performs a search against that index. Next, round-robin request distribution is used to load balance search requests in the searchers queues across the various searchers. Those of ordinary skill in the art will appreciate that the use of round-robin load balancing is merely exemplary and other load balancing techniques can be used. Those of ordinary skill in the art will also appreciate that the use of load balancing is merely exemplary. The searcher(s) then load the image indexes (690) into memory for searching. In a preferred embodiment, the searcher(s) will compare the hash value of images stored in the image index against the hash value of the received digital image file (470). Preferably, the image index (690) will return the hash values of matching images along with a matching score such that a higher matching score indicates that a matching image has more features in common with the digital image file (470). Preferably, the image indexes (690) will be located on an Amazon S3 server, however, it will appreciated by those of ordinary skill in the art that the use of the S3 server to store and retrieve the image indexes (690) is merely exemplary and that any type of digital storage may be used. Next, the search results from the searchers are published to a search results queue. Preferably, the server (220) will use the OpenIMAJ open source library and/or a fork of the open source ImageTerrier library to perform steps 5 and 6. Those of ordinary skill in the art will understand that the use of OpenIMAJ and/or ImageTerrier are merely exemplary and that any image matching library or programming may be used to perform one or both of the steps 5 and 6. In a preferred embodiment, the server (220) then combines and filters the search results from the queue. Preferably, the server (220) uses a searchers master/combiner module that is programmed to combine the results from the search results queue in order of matching score and then exclude search results exceeding a predetermined quantity of search results. In a preferred embodiment, there is provided an images metadata database (720) for storing and retrieving hash values and metadata that correspond to images. Preferably, the metadata stored includes at least one of tags, descriptions, titles, GPS coordinates, and location. In a preferred embodiment, a search against the images metadata database (720) returns hash values and metadata. Preferably, the images metadata database (720) is a MongoDB database. However, this is not a limitation. Next, preferably, the server (220) further filters the search results by excluding search results having a location that is greater than a predetermined distance from the device location (100) (730). Preferably, the server (220) further filters the search results by searching the images metadata database (720) for results having a location only within the predetermined distance from the device location (100). However, it will be appreciated by those of ordinary skill in the art that the server (220) may use a filtering module (80) or software routine that is on the server (220) or on another machine to filter the results prior to searching the images metadata database.
As shown at step 9, in a preferred embodiment of the present invention, the searchers master/combiner sends the results to a notification service. Those of ordinary skill in the art will appreciate that in a preferred embodiment, the notification service can be software or a component of software executing on the server or on a separate server or machine. In a further preferred embodiment, the server can be programmed to send the results directly to the device.
Lastly, the notification service sends the results to the device (200).
Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” As used herein, the terms “connected,” “coupled,” or any variant thereof, means any connection or coupling, either direct or indirect, between two or more elements; the coupling of connection between the elements can be physical, logical, or a combination thereof. Additionally, the words “herein,” “above,” “below,” and words of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description of the Preferred Embodiments using the singular or plural number may also include the plural or singular number respectively. The word “or” in reference to a list of two or more items, covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list.
The above-detailed description of embodiments of the disclosure is not intended to be exhaustive or to limit the teachings to the precise form disclosed above. While specific embodiments of and examples for the disclosure are described above for illustrative purposes, various equivalent modifications are possible within the scope of the disclosure, as those skilled in the relevant art will recognize. Further, any specific numbers noted herein are only examples: alternative implementations may employ differing values, measurements or ranges.
The teachings of the disclosure provided herein can be applied to other systems, not necessarily the system described above. The elements and acts of the various embodiments described above can be combined to provide further embodiments. Any measurements described or used herein are merely exemplary and not a limitation on the present invention. Other measurements can be used. Further, any specific materials noted herein are only examples: alternative implementations may employ differing materials.
Any patents and applications and other references noted above, including any that may be listed in accompanying filing papers, are incorporated herein by reference in their entirety. Aspects of the disclosure can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide yet further embodiments of the disclosure.
These and other changes can be made to the disclosure in light of the above Detailed Description of the Preferred Embodiments. While the above description describes certain embodiments of the disclosure, and describes the best mode contemplated, no matter how detailed the above appears in text, the teachings can be practiced in many ways. Details of the system may vary considerably in its implementation details, while still being encompassed by the subject matter disclosed herein. As noted above, particular terminology used when describing certain features or aspects of the disclosure should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features or aspects of the disclosure with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the disclosures to the specific embodiments disclosed in the specification unless the above Detailed Description of the Preferred Embodiments section explicitly defines such terms. Accordingly, the actual scope of the disclosure encompasses not only the disclosed embodiments, but also all equivalent ways of practicing or implementing the disclosure under the claims.
Accordingly, although exemplary embodiments of the invention have been shown and described, it is to be understood that all the terms used herein are descriptive rather than limiting, and that many changes, modifications, and substitutions may be made by one having ordinary skill in the art without departing from the spirit and scope of the invention.
Claims
1. A digital search system for processing and transmitting data structures comprising information relating to points of interest based on a digital image file, the digital search system comprising:
- an image matching module for receiving and processing digital image files, the image matching module programmed to: 1) receive a digital image file; 2) convert the digital image file to a first data structure having at least one hash value; 3) search for hash values corresponding to images similar to the image in the digital image file; and 4) return a second data structure comprising results from the search in step 3;
- a filtering module for receiving and processing data structures, the filtering module programmed to: 1) receive a third data structure comprising hash values corresponding to images; and 2) return a fourth data structure comprising metadata related to images to which the hash values in the third data structure correspond, but excluding metadata where the hash values in the third data structure correspond to an image having a location that exceeds a predetermined distance from the location of the device that captured the digital image file; and
- a server for receiving and processing a digital image file from a device used to take a photo and returning metadata related to similar images; the server programmed with one or more software routines executing on the server to: 1) search for images similar to that in the digital image file; 2) filter the results of the search in step 1; 3) transmit a fourth data structure comprising metadata including a title related to the results of step 2; and
- a software application executing on the device to: 1) take a photograph; 2) transmit to the server the digital image file including the photograph; 3) receive a list comprising metadata relating to the contents of the digital image file; and 4) display the list to a user.
2. The digital search system of claim 1, wherein step 3 of the image matching module uses multiple searchers that simultaneously search for data structures relating to images similar to the image in the digital image file, and wherein step 4 comprises combining and filtering the results of step 3 to generate the second data structure if more than one searcher of step 3 returns a result.
3. The digital search system of claim 1, wherein the results of the search in step 3 of the image matching module comprise hash values corresponding to images similar to the image in the digital image file and a matching score.
4. The digital search system of claim 1, further comprising an indexing module for indexing digital image files, the indexing module programmed to: 1) read a digital image file; 2) generate a codebook; 3) read the codebook and at least one digital image file; and 4) generate an image index.
5. The digital search system of claim 1, wherein the software application provides a user interface, whereby the software application performs the steps in response to a single user interaction.
6. The digital search system of claim 5, wherein the user interface allows a user to confirm a result on a displayed list, and wherein the server increments a confirm count related to a result in response to the user's confirmation.
7. A digital search system for processing and transmitting information relating to points of interest based on a location and heading of a device, the digital search system comprising:
- a server for receiving and processing the device location and heading information,
- a filtering module for filtering a first group of places of interest to provide a first set of places of interest, wherein the filtering module is programmed to: 1) receive at least one place of interest to form the first group of places of interest; 2) exclude places of interest having a location outside of a predetermined radial range from the device location; and 3) if the number of remaining places of interest exceeds a first predetermined quantity, exclude the places of interest having locations that are the greatest distance from the device until the number of remaining places of interest does not exceed the first predetermined quantity, whereby the first set of places of interest is provided,
- a data file comprising at least one confirm count related to a point of interest;
- a sorting module for receiving and processing the first set of places of interest to provide a second set of places of interest, the sorting module programmed to: 1) receive the first set of places of interest; 2) order the places of interest based on the confirm count; and 3) if the number of places of interest exceeds a second predetermined quantity, exclude the places of interest that are ordered last according to step 2, until the number of remaining places of interest does not exceed the second predetermined quantity, whereby the second set of places of interest is provided.
8. The digital search system of claim 7, wherein the server is programmed to search for points of interest within the predetermined radial range from the device.
9. The digital search system of claim 7, wherein the server uses an API to search for points of interest within the predetermined radial range from the device.
10. The digital search system of claim 7, wherein the sorting module is further programmed to sort the places of interest based on a category related to a point of interest.
11. The digital search system of claim 7, wherein the filtering module is further programmed to exclude points of interest having a location outside of a first triangle shaped range near the location of the device, wherein the first triangle shaped range starts from the location of the device and spreads out away from the location of the device in the direction of the heading of the device.
12. The digital search system of claim 11, wherein the filtering module is further programmed to exclude points of interest having a location outside of a second triangle shaped range near the location of the device, wherein the second triangle shaped range starts from the location of the device and spreads out away from the location of the device in the direction of the heading of the device, and wherein the second triangle shaped range extends further away from the location of the device than the first triangle shaped range.
13. The digital search system of claim 7, further comprising a software application executing on the device for transmitting the location and heading of the device to the server, receiving collected information transmitted from the server, and displaying the collected information to a user.
14. The digital search system of claim 13, wherein the software application provides a user interface, whereby the software application transmits the location and heading of the device to the server, receives collected information transmitted from the server, and displays the collected information in response to a single user interaction.
15. The digital search system of claim 14, wherein the user interface allows a user to confirm a point of interest, and wherein the server increments the confirm count related to a point of interest in response to the user's confirmation.
16. A digital search system for processing and transmitting data structures comprising information relating to points of interest based on a digital image file containing a photo taken by a device and the location and heading of the device, the digital search system comprising:
- a location-based retrieval module, the location-based retrieval module comprising a location-based filtering module for filtering a first group of places of interest to provide a first set of places of interest, wherein the filtering module is programmed to: 1) receive at least one place of interest to form the first group of places of interest; 2) exclude places of interest having a location outside of a predetermined radial range from the device location; and 3) if the number of remaining places of interest exceeds a first predetermined quantity, exclude the places of interest having locations that are the greatest distance from the device until the number of remaining places of interest does not exceed the first predetermined quantity, whereby the first set of places of interest is provided, a sorting module for receiving and processing the first set of places of interest to provide a second set of places of interest, the sorting module programmed to: 1) receive the first set of places of interest; 2) order the places of interest based on a confirm count, wherein the confirm count is the number of times a place of interest has been confirmed by a previous user; and 3) if the number of places of interest exceeds a second predetermined quantity, exclude the places of interest that are ordered last according to step 2, until the number of remaining places of interest does not exceed the second predetermined quantity, whereby the second set of places of interest is provided, and a data file comprising at least one confirm count related to a point of interest; and
- an image-based retrieval module, the image-based retrieval module comprising an image matching module for receiving and processing digital image files, the image matching module programmed to: 1) receive a digital image file; 2) convert the digital image file to a first data structure having at least one hash value; 3) search for hash values corresponding to images similar to the image in the digital image file; and 4) return a second data structure comprising results from the search in step 3, a filtering module for receiving and processing data structures, the filtering module programmed to: 1) receive a third data structure comprising hash values corresponding to images; and 2) return a fourth data structure comprising metadata related to images to which the hash values in the third data structure correspond, but excluding metadata where the hash values in the third data structure correspond to an image having a location that exceeds a predetermined distance from the location of the device that captured the digital image file, and one or more software routines executing to 1) search for images similar to that in the digital image file; 2) filter the results of the search in step 1; 3) generate the fourth data structure comprising metadata including a title related to the results of step 2; and
- a server for receiving and processing a digital image file and the location and heading of a device used to take the image in the digital image file, the server programmed with one or more software routines executing on the server to: 1) simultaneously use the location-based retrieval module to generate the second set of places of interest based on the location and heading of a device, and the image-based retrieval module to generate the fourth data structure; 2) combine the second set of places of interest and the fourth data structure into a final results list; and 3) transmit the final results list to the device.
17. The digital search system of claim 16, further comprising a software application executing on the device to: 1) take a photograph; 2) transmit to the server a digital image file comprising the photograph, the location of the device, and the heading of the device; 3) receive a list transmitted from the server; and 4) display the list to a user.
18. The digital search system of claim 18, wherein the software application provides a user interface, whereby the software application performs the steps in response to a single user interaction.
19. The digital search system of claim 18, wherein the user interface allows a user to confirm a result in the displayed list, and wherein the server increments the confirm count related to the result in response to the user's confirmation.
Type: Application
Filed: Aug 20, 2018
Publication Date: Jan 3, 2019
Inventors: Rishi Jhunjhnuwala (Irvine, CA), Dmitry Semenov (Newport Beach, CA)
Application Number: 15/999,562