Bag of Words databases¶
The visual search is performed using a technique called Bag of Words or Bag of Features.
Examples¶
Basic searching¶
The default visual database class is SiftColornamesWrapper, which is a convenience wrapper for making combined
searches in a SIFT and color names database.
from vsearch.database import SiftColornamesWrapper
# Load the database
database = SiftColornamesWrapper.from_files('my_sift_db.h5',
                                            'my_cname_db.h5')
# Define a region of interest
roi = [x, y, width, height]
# Query by path to image
matches = database.query_path('some_image.jpg', roi, max_result=5)
# Query by image
image = ...
matches = database.query_image(image, roi, max_distance=0.8)
Matches are returned as a list of (key, distance) tuples, sorted by distance (ascending).
Dealing with location data¶
Adding location data to the database is done using the DatabaseWithLocation wrapper class.
It uses a DatabaseEntry   class which contains location in the form of LatLng objects for location data.
Accessing entries is done like any dictionary/mapping:
from vsearch.database import SiftColornamesWrapper, DatabaseWithLocation
visualdatabase = SiftColornamesWrapper.from_files('my_sift_db.h5',
                                            'my_cname_db.h5')
locdatabase = DatabaseWithLocation(visualdatabase)
entry = locdatabase['some_key']
print('{} location is lat={:.6f}, lng={:.6f}'.format(entry.key, entry.latlng.lat, entry.latlng.lng))
We can also update the location:
new_location = LatLng(12.3456, 45.678)
locdatabase['some_key'] = new_location
Visual databases¶
- 
class vsearch.database.SiftColornamesWrapper(sift_db, cname_db)¶
- A database that combines a SIFT and color names databse - For each query, both the SIFT and color names database will be queried. The resulting matches are then sorted using the minimum of the SIFT and color names distance value. - 
combine_matches(sift_matches, cname_matches)¶
- Combine SIFT and colornames matches 
 - 
classmethod from_files(sift_db_path, cname_db_path)¶
- Load the database from a SIFT and color names database 
 - 
query_image(image, roi)¶
- Query using an image array and region of interest - Parameters: - image (np.ndarray) – Image array
- roi (array_like) – Region of interest encoded as [x, y, width, height]
 - Returns: - Return type: - Sorted list of database matches [(key1, distance1), (key2, distance2), ..] where distance1 < distance2. 
 - 
query_path(path, roi)¶
- Query using an image path and region of interest - Parameters: - path (str) – Path to the query image
- roi (array_like) – Region of interest encoded as [x, y, width, height]
 - Returns: - Return type: - Sorted list of database matches [(key1, distance1), (key2, distance2), ..] where distance1 < distance2. 
 
- 
- 
class vsearch.database.SiftFeatureDatabase(vocabulary)¶
- An ANN database for SIFT features - 
query_image(image, roi)¶
- Query using an image array and region of interest - Parameters: - image (np.ndarray) – Image array
- roi (array_like) – Region of interest encoded as [x, y, width, height]
 - Returns: - Return type: - Sorted list of database matches [(key1, distance1), (key2, distance2), ..] where distance1 < distance2. 
 - 
query_path(path, roi)¶
- Query using an image path and region of interest - Parameters: - path (str) – Path to the query image
- roi (array_like) – Region of interest encoded as [x, y, width, height]
 - Returns: - Return type: - Sorted list of database matches [(key1, distance1), (key2, distance2), ..] where distance1 < distance2. 
 
- 
- 
class vsearch.database.ColornamesFeatureDatabase(vocabulary)¶
- An ANN database for color names features - 
query_image(image, roi)¶
- Query using an image array and region of interest - Parameters: - image (np.ndarray) – Image array
- roi (array_like) – Region of interest encoded as [x, y, width, height]
 - Returns: - Return type: - Sorted list of database matches [(key1, distance1), (key2, distance2), ..] where distance1 < distance2. 
 - 
query_path(path, roi)¶
- Query using an image path and region of interest - Parameters: - path (str) – Path to the query image
- roi (array_like) – Region of interest encoded as [x, y, width, height]
 - Returns: - Return type: - Sorted list of database matches [(key1, distance1), (key2, distance2), ..] where distance1 < distance2. 
 
- 
Location database¶
- 
class vsearch.database.DatabaseWithLocation(visualdb)¶
- A database that also contains location data - 
query_image(image, roi)¶
- Query using an image array and region of interest - Parameters: - image (np.ndarray) – Image array
- roi (array_like) – Region of interest encoded as [x, y, width, height]
 - Returns: - Return type: - Sorted list of database matches [(entry1, distance1), (entry2, distance2), ...] where distance1 < distance2 and entryX are - DatabaseEntryinstances.
 - 
query_path(path, roi)¶
- Query using an image path and region of interest - Parameters: - path (str) – Path to the query image
- roi (array_like) – Region of interest encoded as [x, y, width, height]
 - Returns: - Return type: - Sorted list of database matches [(entry1, distance1), (entry2, distance2), ...] where distance1 < distance2 and entryX are - DatabaseEntryinstances.
 
-