Здравствуйте, решил,так сказать,окунуться в мир электронных устройств. Задумал смоделировать устройство, состоящее из Arduino nano, ЖКИ - модуля 16x2 или 16х4, внешней памяти,клавиатуры 4х4 и,возможно,Ethernet шилда. Принцип работы таков:на входе будет SD-карта,содержащая данные,симулирующие оцифрованное изображение. Данные с SD-карты можно записать во внешнюю память или сравнить с уже имеющимися "изображениями" во внешней памяти. Если изображения в sd-карте и внешней памяти совпали - вывести соответствующее сообщение на экран,если не совпали - вывести соответствующее сообщение на экран. Функции записи или сравнения выбираются нажатием кнопок на клавиатуре. Вдобавок ко всему,функция записи должна быть доступна только при вводе определенного кода-пароля на клавиатуре. Я в данной сфере человек новый,поэтому прошу вас помочь с алгоритмом сравнения и реализацией. -Думал взять 24lc515 или w27c512 в качестве внешней памяти EEPROM и подключить по SPI. Но из-за незнания теории, не в курсе,хватит ли памяти для хранения нескольких сотен изображений. Если нет, то как выйти из данного положения. -Не могли бы вы подсказать как реализовать функцию записи и сравнения данных с SD-карты с данными во внешней памяти с последующим выводом на ЖКИ-модуль. А выбор записи или сравнения осуществить вводом кода на клавиатуре. Заранее извиняюсь,если кажусь безграмотным и задающим очевидные и глупые вопросы.
Если вас не затруднит,можете объяснить почему?Как я уже писал выше,я в этой сфере человек новый,много не знаю. Появилась идея,смотрел реализации отдельных частей, копал в одном направлении.
В каком формате будут храниться изображения? (jpg. gif, png,pcx,bmp) Какой планируется размер изображения, цвет\градации серого, битность? Первая i2c память, вторая с параллельным доступом, к тому же однократно программируемая. Объясните, что за франкенштейна вы пытаетесь сшить?
Действительно Франкенштейн получается. Изначальная цель - сделать биометрический сканер рисунка вен ладони. По сути ИК-LED облучает ладонь,а отраженный свет попадает на ИК-камеру,которая оцифровывает изображение. На этом этапе я решил опустить ту часть,которая формирует изображение,поэтому решил представить оцифрованное изображение как информацию на SD-карте. Внешняя память же играет роль базы данных,которая хранит "изображения", которые представляются как n-число кодов. Грубо говоря,я разбил всю задачу на несколько частей. На данный момент меня интересует именно программная реализация. Собираюсь писать код в среде Ардуины,компилировать и отправлять в Протеус, чтобы посмотреть как это будет работать. Правда я не имею представления,какого объема должна быть внешняя память,чтобы хранить не менее нескольких сотен "изображений", а также сколько памяти будет занимать хотя бы 1 "изображение". Вопрос о качестве изображения пока не стоит, сейчас главное,чтобы это все заработало. Уже затем займусь вопросами качества. ЖКИ-модуль нужен просто для сообщения о совпадении или несовпадении "изображения" пользователя с другими "изображениями" в базе данных.
Только сейчас понял,насколько глупо выбрал внешнюю память. Если представить изображение на входе как изображение jpg с разрешением 320х240 и глубиной в 24 бита,то занимать 1 такое изображение будет порядка 6 кБайт. А значит для хранения нескольких сотен таких изображений мне никакой eeprom не хватит. Проще взять SD-карту в качестве внешней памяти. Как думаете?
Jpg формат сложный, со сжатием и потерями. Навскидку, можно начать с 256х256 формат bmp (1бит ч/б - вам ведь нужен рисунок вен, а не поиск тромбов и варикоза). Алгоритм сравнения придется писать свой, т.к. на нейросеть не хватит ресурсов. Поэтому вы будете бороться с ограничениями выбранной платформы, а не решать поставленную задачу.
Хм. Не подскажите как приблизительно должен выглядеть алгоритм сравнения? Быть может,похожие проекты Ардуино,где происходит сравнение относительно больших по объему данных внешней памяти с данными поступающими на микроконтроллер. Или где следует копать. Конкретный литературный источник был бы кстати.Я,повторюсь,в этом зеленый как огурец. Алгоритм представляет собой серьезную проблему?Просто вы описали это как довольно трудоемкую задачу.
При сравнении двух изображений недостаточно делать попиксельное сравнение. Изображение может быть повернуто, отмасштабировано и тд. Поэтому - нейросеть, нечеткое сравнение матриц, какая-то своя хэш-свертка (с мат обоснованием) и т.п.
Но если сделать следующее допущение:человек кладет руку на небольшую подставку,закрепленную на корпусе вокруг сканера,тогда вопросы о различном масштабе или положении отпадают,поскольку все пользователи будут иметь изображения в одном и том же положении. Следовательно можно сказать,что вопрос будет стоять только в попиксельном сравнении?Или я не прав?