{"id":2128,"date":"2015-10-29T20:32:10","date_gmt":"2015-10-29T19:32:10","guid":{"rendered":"https:\/\/ridgesolutions.ie\/?p=2128"},"modified":"2015-10-29T21:05:40","modified_gmt":"2015-10-29T20:05:40","slug":"image-storage-and-indexing-for-machine-vision-images","status":"publish","type":"post","link":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/","title":{"rendered":"Image Storage and Indexing for Machine Vision Images"},"content":{"rendered":"<p>Every Software Engineer needs a hobby &#8211; to this end I have been toying with an idea for the last while.<\/p>\n<p>There are many machine vision and computer vision applications that capture images from cameras and store them on disk.  These applications can generate so many images that working with them can be quite difficult.  For example consider an application that acquires from two cameras each acquiring at 30 frames per second &#8211; this application will save 216K images per hour, a 5 hour run would generate 1 million images!<\/p>\n<p>Very often the images will be stored on a file system (local or networked) in some sort of hierarchical directory structure.  Using a file system is a very efficient way of storing images, database systems (Relational or NoSQL) don&#8217;t offer many advantages and indeed can have associated disadvantages.<\/p>\n<p>But how can we effectively work with so many images, we have possibly millions of images sitting in a set of directories, how can we interact with them and efficiently and query them based on attributes that are interest to us so the we can perform more analysis?<\/p>\n<p>For example consider this set of (contrived) image queries:<\/p>\n<p>Give me all of the images:<\/p>\n<p>  + from camera 1<br \/>\n  + from camera 1 acquired on Sunday between 13:00 and 13:10<br \/>\n  + whose file size > 1MB<br \/>\n  + acquired within 100 meters of this GPS location<br \/>\n  + that have an average brightness > 63 Grey levels<\/p>\n<p>Some people have attacked this image query problem by using a relational database to store image meta-data, if designed well this can allow for efficient image retrieval, however it seems to me that a schema-less approach is a better fit for images with dynamic attributes and I like the idea of not being tied down to any particular database technology and all of the baggage that comes with it.<\/p>\n<p>So my idea is to start out on the road of implementing (for fun) a simple image indexing system for rather large sets of images, it will have an associated tool set, API and maybe even a query language in the future.<\/p>\n<p>The system will:<\/p>\n<p>Allow indexing of large numbers of images in arbitrary hierarchical directory structures<\/p>\n<p>Index images based on standard attributes such as:<\/p>\n<p>    + Acquisition Date\/Time<br \/>\n    + Name<br \/>\n    + Source (e.g. camera)<br \/>\n    + Type<br \/>\n    + Size<br \/>\n    + Bit Depth<br \/>\n    + Exif Data, e.g.:<br \/>\n    &#8211;> Location<br \/>\n    &#8211;> Author<br \/>\n    &#8211;> Acquisition parameters (aperture, exposure time etc.)<br \/>\n    + Etc.<\/p>\n<p>Index images optionally based on Computer Vision metrics, e.g.<br \/>\n    + Brightness<br \/>\n    + Sharpness<br \/>\n    + Etc.<\/p>\n<p>Allow users to define their own attributes for indexing, e.g.:<br \/>\n    + Define image attributes based on an OpenCV algorithm<br \/>\n    + Define attributes based on the contents of the image fie name. <\/p>\n<p>The system will:<\/p>\n<p>  + Have no dependencies on technologies such as Database systems etc.<br \/>\n  + Be cross platform<\/p>\n<p>To get the ball rolling and so that we can say the first sod has been turned, here is some (naive) python which scans a directory tree of images and creates a flat CSV file of the image name, path and size:<\/p>\n<pre>\r\n#!\/usr\/bin\/python\r\n\r\nimport argparse\r\nimport fnmatch\r\nimport os\r\nimport time\r\n\r\nparser = argparse.ArgumentParser()\r\nparser.add_argument(\"-p\", \"--path\", help=\"The root path to the images directory tree\")\r\nargs = parser.parse_args()\r\n\r\npath = args.path\r\n\r\nprint 'looking in ' + path\r\n\r\nii = 0\r\n\r\nstart = time.time()\r\n\r\nwith open('%s\/.flat' % path, 'w') as out:\r\n    for root, _, filenames in os.walk(path):\r\n        for name in fnmatch.filter(filenames, '*.jpg'):\r\n            p = os.path.relpath(root, path)\r\n            (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(os.path.join(root, name))\r\n            f = {'name': name, 'path': p, 'size': size}\r\n            out.write(\"i,%s,%s,%d\\n\" % (name, p, size))\r\n            ii += 1\r\n            if ii % 1000 == 0:\r\n                print \"Reading %d\" % ii\r\n\r\n\r\nduration = time.time() - start\r\n\r\nprint '%d images indexed in %d seconds, %d images\/s' % (ii, duration, ii \/ duration)\r\n\r\n<\/pre>\n<p>Run it like this:<\/p>\n<pre>\r\nscanner.py --path \"images\\Run1\\ccm17\"\r\n<\/pre>\n<p>Once the directory tree has been walked and the CSV file generated we can use the following script to query images:<\/p>\n<pre>\r\n#!\/usr\/bin\/python\r\n\r\nimport argparse\r\nimport os\r\nimport csv\r\n\r\nparser = argparse.ArgumentParser()\r\nparser.add_argument(\"-p\", \"--path\", help=\"The root path to the images directory tree\")\r\nparser.add_argument(\"-w\", \"--where\", help=\"The where value\")\r\nargs = parser.parse_args()\r\n\r\npath = args.path\r\n\r\nprint 'looking in ' + path\r\n\r\ncode = compile(args.where, '<string>', 'eval')\r\n\r\nimages = []\r\n\r\nindex = (os.path.join(path, '.flat'))\r\njindex = (os.path.join(path, '.flat.json'))\r\n\r\nprint('opening index' + index)\r\n\r\nclass Image:\r\n    def __init__(self, name, size, path):\r\n        self.name = name\r\n        self.size = size\r\n        self.path = path\r\n\r\nwith open(index) as csvfile:\r\n     spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')\r\n     for row in spamreader:\r\n         images.append(Image(row[1], row[3], row[2]))\r\n\r\nprint 'index loaded'\r\n\r\nfor image in images:\r\n    if eval(code):\r\n        print('%s %s' % (image.name, image.size))\r\n\r\n<\/pre>\n<p>This allows us to run queries like this:<\/p>\n<pre>\r\nselect.py --path \"images\\Run1\\ccm17\" --where \"'_43' in image.name and image.size > 76000\"\r\n<\/pre>\n<p>This will quickly list the images whose file size > 76000 bytes and whose name contains &#8216;_43&#8217;<\/p>\n<p>This is a really simple first step but it does demonstrate how even a flat &#8216;index&#8217; of attributes can be of great use.<\/p>\n<p>Next Step:<\/p>\n<p>+ Add more image attributes to the CSV file<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Every Software Engineer needs a hobby &#8211; to this end I have been toying with an idea for the last while. There are many machine vision and computer vision applications that capture images from cameras and store them on disk. These applications can generate so many images that working with them can be quite difficult. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[301,1],"tags":[293,361,78],"class_list":["post-2128","post","type-post","status-publish","format-standard","hentry","category-by-kevin-godden","category-uncategorized","tag-computer-vision","tag-image-storage","tag-machine-vision"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Every Software Engineer needs a hobby - to this end I have been toying with an idea for the last while. There are many machine vision and computer vision applications that capture images from cameras and store them on disk. These applications can generate so many images that working with them can be quite difficult.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Kevin Godden\"\/>\n\t<meta name=\"google-site-verification\" content=\"Kyj52YLp6GOPA44PVBffo9fjW8rgWHYYRF0ZYjfy6ss\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Systems and Embedded Software Engineering, Ireland. | Some thoughts of a busy Computer Engineer\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Image Storage and Indexing for Machine Vision Images\" \/>\n\t\t<meta property=\"og:description\" content=\"Every Software Engineer needs a hobby - to this end I have been toying with an idea for the last while. There are many machine vision and computer vision applications that capture images from cameras and store them on disk. These applications can generate so many images that working with them can be quite difficult.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2015-10-29T19:32:10+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2015-10-29T20:05:40+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Image Storage and Indexing for Machine Vision Images\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Every Software Engineer needs a hobby - to this end I have been toying with an idea for the last while. There are many machine vision and computer vision applications that capture images from cameras and store them on disk. These applications can generate so many images that working with them can be quite difficult.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/#article\",\"name\":\"Image Storage and Indexing for Machine Vision Images\",\"headline\":\"Image Storage and Indexing for Machine Vision Images\",\"author\":{\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/author\\\/kgodden\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/wp-content\\\/uploads\\\/2013\\\/09\\\/ridge_logo1.jpg\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/#articleImage\",\"width\":400,\"height\":81},\"datePublished\":\"2015-10-29T20:32:10+00:00\",\"dateModified\":\"2015-10-29T21:05:40+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/#webpage\"},\"articleSection\":\"By Ridge Solutions, Uncategorized, computer vision, image storage, machine vision\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.ridgesolutions.ie\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/category\\\/uncategorized\\\/#listItem\",\"name\":\"Uncategorized\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/category\\\/uncategorized\\\/#listItem\",\"position\":2,\"name\":\"Uncategorized\",\"item\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/category\\\/uncategorized\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/#listItem\",\"name\":\"Image Storage and Indexing for Machine Vision Images\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/#listItem\",\"position\":3,\"name\":\"Image Storage and Indexing for Machine Vision Images\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/category\\\/uncategorized\\\/#listItem\",\"name\":\"Uncategorized\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/#organization\",\"name\":\"Ridge Solutions, Software Development and Software Engineering, Ireland.\",\"description\":\"Some thoughts of a busy Computer Engineer\",\"url\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/wp-content\\\/uploads\\\/2013\\\/09\\\/ridge_logo1.jpg\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/#organizationLogo\",\"width\":400,\"height\":81},\"image\":{\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/author\\\/kgodden\\\/#author\",\"url\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/author\\\/kgodden\\\/\",\"name\":\"Kevin Godden\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d2833f41e59a25cf2a9741a05ec383bfdd278762a5e0798a90940e7ab0a107a2?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Kevin Godden\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/#webpage\",\"url\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/\",\"name\":\"Image Storage and Indexing for Machine Vision Images\",\"description\":\"Every Software Engineer needs a hobby - to this end I have been toying with an idea for the last while. There are many machine vision and computer vision applications that capture images from cameras and store them on disk. These applications can generate so many images that working with them can be quite difficult.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/2015\\\/10\\\/29\\\/image-storage-and-indexing-for-machine-vision-images\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/author\\\/kgodden\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/index.php\\\/author\\\/kgodden\\\/#author\"},\"datePublished\":\"2015-10-29T20:32:10+00:00\",\"dateModified\":\"2015-10-29T21:05:40+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/#website\",\"url\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/\",\"name\":\"Ridge Solutions, Software Development and Software Engineering, Ireland.\",\"description\":\"Some thoughts of a busy Computer Engineer\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ridgesolutions.ie\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Image Storage and Indexing for Machine Vision Images","description":"Every Software Engineer needs a hobby - to this end I have been toying with an idea for the last while. There are many machine vision and computer vision applications that capture images from cameras and store them on disk. These applications can generate so many images that working with them can be quite difficult.","canonical_url":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"Kyj52YLp6GOPA44PVBffo9fjW8rgWHYYRF0ZYjfy6ss","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/#article","name":"Image Storage and Indexing for Machine Vision Images","headline":"Image Storage and Indexing for Machine Vision Images","author":{"@id":"https:\/\/www.ridgesolutions.ie\/index.php\/author\/kgodden\/#author"},"publisher":{"@id":"https:\/\/www.ridgesolutions.ie\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.ridgesolutions.ie\/wp-content\/uploads\/2013\/09\/ridge_logo1.jpg","@id":"https:\/\/www.ridgesolutions.ie\/#articleImage","width":400,"height":81},"datePublished":"2015-10-29T20:32:10+00:00","dateModified":"2015-10-29T21:05:40+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/#webpage"},"isPartOf":{"@id":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/#webpage"},"articleSection":"By Ridge Solutions, Uncategorized, computer vision, image storage, machine vision"},{"@type":"BreadcrumbList","@id":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.ridgesolutions.ie#listItem","position":1,"name":"Home","item":"https:\/\/www.ridgesolutions.ie","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ridgesolutions.ie\/index.php\/category\/uncategorized\/#listItem","name":"Uncategorized"}},{"@type":"ListItem","@id":"https:\/\/www.ridgesolutions.ie\/index.php\/category\/uncategorized\/#listItem","position":2,"name":"Uncategorized","item":"https:\/\/www.ridgesolutions.ie\/index.php\/category\/uncategorized\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/#listItem","name":"Image Storage and Indexing for Machine Vision Images"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.ridgesolutions.ie#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/#listItem","position":3,"name":"Image Storage and Indexing for Machine Vision Images","previousItem":{"@type":"ListItem","@id":"https:\/\/www.ridgesolutions.ie\/index.php\/category\/uncategorized\/#listItem","name":"Uncategorized"}}]},{"@type":"Organization","@id":"https:\/\/www.ridgesolutions.ie\/#organization","name":"Ridge Solutions, Software Development and Software Engineering, Ireland.","description":"Some thoughts of a busy Computer Engineer","url":"https:\/\/www.ridgesolutions.ie\/","logo":{"@type":"ImageObject","url":"https:\/\/www.ridgesolutions.ie\/wp-content\/uploads\/2013\/09\/ridge_logo1.jpg","@id":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/#organizationLogo","width":400,"height":81},"image":{"@id":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/www.ridgesolutions.ie\/index.php\/author\/kgodden\/#author","url":"https:\/\/www.ridgesolutions.ie\/index.php\/author\/kgodden\/","name":"Kevin Godden","image":{"@type":"ImageObject","@id":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d2833f41e59a25cf2a9741a05ec383bfdd278762a5e0798a90940e7ab0a107a2?s=96&d=mm&r=g","width":96,"height":96,"caption":"Kevin Godden"}},{"@type":"WebPage","@id":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/#webpage","url":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/","name":"Image Storage and Indexing for Machine Vision Images","description":"Every Software Engineer needs a hobby - to this end I have been toying with an idea for the last while. There are many machine vision and computer vision applications that capture images from cameras and store them on disk. These applications can generate so many images that working with them can be quite difficult.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.ridgesolutions.ie\/#website"},"breadcrumb":{"@id":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/#breadcrumblist"},"author":{"@id":"https:\/\/www.ridgesolutions.ie\/index.php\/author\/kgodden\/#author"},"creator":{"@id":"https:\/\/www.ridgesolutions.ie\/index.php\/author\/kgodden\/#author"},"datePublished":"2015-10-29T20:32:10+00:00","dateModified":"2015-10-29T21:05:40+00:00"},{"@type":"WebSite","@id":"https:\/\/www.ridgesolutions.ie\/#website","url":"https:\/\/www.ridgesolutions.ie\/","name":"Ridge Solutions, Software Development and Software Engineering, Ireland.","description":"Some thoughts of a busy Computer Engineer","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.ridgesolutions.ie\/#organization"}}]},"og:locale":"en_US","og:site_name":"Systems and Embedded Software Engineering, Ireland. | Some thoughts of a busy Computer Engineer","og:type":"article","og:title":"Image Storage and Indexing for Machine Vision Images","og:description":"Every Software Engineer needs a hobby - to this end I have been toying with an idea for the last while. There are many machine vision and computer vision applications that capture images from cameras and store them on disk. These applications can generate so many images that working with them can be quite difficult.","og:url":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/","article:published_time":"2015-10-29T19:32:10+00:00","article:modified_time":"2015-10-29T20:05:40+00:00","twitter:card":"summary","twitter:title":"Image Storage and Indexing for Machine Vision Images","twitter:description":"Every Software Engineer needs a hobby - to this end I have been toying with an idea for the last while. There are many machine vision and computer vision applications that capture images from cameras and store them on disk. These applications can generate so many images that working with them can be quite difficult."},"aioseo_meta_data":{"post_id":"2128","title":null,"description":null,"keywords":[{"label":"machine vision","value":"machine vision"},{"label":"image index","value":"image index"},{"label":"computer vision","value":"computer vision"},{"label":"image storage","value":"image storage"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-09-13 21:51:08","updated":"2025-07-15 23:19:03","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ridgesolutions.ie\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ridgesolutions.ie\/index.php\/category\/uncategorized\/\" title=\"Uncategorized\">Uncategorized<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tImage Storage and Indexing for Machine Vision Images\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.ridgesolutions.ie"},{"label":"Uncategorized","link":"https:\/\/www.ridgesolutions.ie\/index.php\/category\/uncategorized\/"},{"label":"Image Storage and Indexing for Machine Vision Images","link":"https:\/\/www.ridgesolutions.ie\/index.php\/2015\/10\/29\/image-storage-and-indexing-for-machine-vision-images\/"}],"_links":{"self":[{"href":"https:\/\/www.ridgesolutions.ie\/index.php\/wp-json\/wp\/v2\/posts\/2128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ridgesolutions.ie\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ridgesolutions.ie\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ridgesolutions.ie\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ridgesolutions.ie\/index.php\/wp-json\/wp\/v2\/comments?post=2128"}],"version-history":[{"count":0,"href":"https:\/\/www.ridgesolutions.ie\/index.php\/wp-json\/wp\/v2\/posts\/2128\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ridgesolutions.ie\/index.php\/wp-json\/wp\/v2\/media?parent=2128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ridgesolutions.ie\/index.php\/wp-json\/wp\/v2\/categories?post=2128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ridgesolutions.ie\/index.php\/wp-json\/wp\/v2\/tags?post=2128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}