Эффективный способ сравнения изображения с изображениями в базе данных SQL.

Веб-камера захватывает изображение, это изображение сравнивается с доступными изображениями в базе данных SQL, и ближайшее совпадение отображается в графическом интерфейсе. Размер каждого изображения в базе данных составляет около 60 КБ и хранится в формате varbinary.

Прямо сейчас я получаю все изображения в Datatable, перебирая каждую строку данных, получая изображение из столбца строки данных и сравнивая его с моим изображением.

Есть ли более эффективный способ сравнения изображений с изображениями из базы данных? Повышает ли производительность добавление индекса в таблицу?


person lerner1225    schedule 26.07.2017    source источник
comment
Что вы используете для сравнения лиц? Обычно при использовании биометрических SDK для сопоставления лиц вы создаете шаблон из исходного изображения, и программа использует этот шаблон для сравнения. Так что, если вы хотите поговорить об «эффективности», я бы сказал, что это большое соображение. В изображении есть много того, что вам не понадобится для сопоставления лиц.   -  person    schedule 26.07.2017
comment
@АлексК. ближайшее совпадение не равно равному. OP может учитывать панорамирование изображения, коррекцию цвета и т. Д. Что подразумевается, если называть его ближайшим совпадением.   -  person Flater    schedule 26.07.2017
comment
@ JᴀʏMᴇᴇ: я использую стороннюю библиотеку, метод принимает два изображения (в виде массивов байтов) в качестве входных данных и дает оценку. Но для этого мне нужно перебрать каждое изображение в БД.   -  person lerner1225    schedule 26.07.2017
comment
Да, я пропустил это из вопроса.   -  person Alex K.    schedule 26.07.2017
comment
О, хорошо, необычно то, что он не обеспечивает способ создания шаблонов перед идентификацией. Можете ли вы поделиться с нами, что такое сторонняя библиотека? Самым большим узким местом здесь будет извлечение со стола. Индекс определенно поможет, в зависимости от того, по какой колонке вы ищете. Кроме того, я бы сгенерировал массу тестов, чтобы определить, эффективнее ли хранить путь в образе и извлекать образ из этого пути (на диске)? Хороший вопрос, хотя.   -  person    schedule 26.07.2017
comment
Если здесь можно добиться какой-либо эффективности, это, вероятно, во многом зависит от этой сторонней библиотеки и любых ее функций, помимо сравнения двухбайтовых массивов, т. изображение) и будут ли такие подписи более прямыми для сравнения. Самое большее, как есть, вы можете установить его и использовать в SQL Server (из процедуры CLR), чтобы сократить передачу некоторых данных.   -  person Damien_The_Unbeliever    schedule 26.07.2017
comment
Ну, это также зависит от машины, на которой вы работаете, на терабайте оперативной памяти это не так редко, как раньше, или на кластере серверов, чтобы делать то, что вам нужно для повышения производительности. Таким образом, хранение всего в памяти может быть жизнеспособным вариантом. Насколько велика база данных, с которой вы планируете работать? Является ли SQL действительно единственным вариантом? Я уверен, что есть больше бесплатных решений для elasticsearch .   -  person Filip Cordas    schedule 26.07.2017