Библиотека AVM SDK simple.NET — различия между версиями
EDV (обсуждение | вклад) (Новая страница: «Реализация алгоритма AVM (Associative Video Memory) под C#») |
EDV (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | Реализация алгоритма AVM ( | + | = Реализация алгоритма AVM (Associative Video Memory) под C# = |
+ | |||
+ | == Возможности алгоритма AVM == | ||
+ | |||
+ | Алгоритм "Associative Video Memory" (AVM) использует принцип многоуровневой | ||
+ | декомпозиции матриц распознавания, устойчив к шумам камеры, хорошо масштабируется, просто и быстро обучается, | ||
+ | показывает приемлемое быстродействие на больших разрешениях входного видео (960x720 и больше). | ||
+ | Алгоритм работает с полутоновыми (черно-белыми) изображениями. | ||
+ | |||
+ | == Структура библиотеки (реализация) == | ||
+ | |||
+ | В состав реализации AVM SDK simple.NET входят две динамических библиотеки: | ||
+ | * avm061.dll – библиотека реализации алгоритма AVM; | ||
+ | * AVM_api.dll – библиотека wrapper, обеспечивающая C# интерфейс. | ||
+ | |||
+ | Исходные файлы проекта интерфейсной библиотеки AVM_api.dll расположены в папке: | ||
+ | .\AVM_SDK_simple.net\AVM_api\AVM_api.csproj | ||
+ | |||
+ | Всё что нужно для подключения алгоритма AVM – это включение библиотек avm061.dll и AVM_api.dll в ваш проект. | ||
+ | В качестве входных данных алгоритм AVM использует изображения в формате Bitmap. | ||
+ | |||
+ | == Быстрый старт == | ||
+ | |||
+ | === Что нужно для обучения? === | ||
+ | 1. Создать экземпляр AVM: _am = new CvAssociativeMemory32S(); | ||
+ | 2. Выполнить инициализацию экземпляра (методы: Create, Load, или ReadPackedData): _am.Load(cRcgDataFileName); | ||
+ | 3. Установить изображение для обработки: _am.SetImage(ref aSrcImage); | ||
+ | 4. Записать новый образ в дерево поиска AVM: _am.Write(InterestArea, ObjIndex, true). | ||
+ | |||
+ | === Что нужно для распознавания? === | ||
+ | 1. Выполнить пункты 1-3 описанные выше; | ||
+ | 2. Прочитать массив описателей объектов (методы: ObjectTracking/ ObjectRecognition): Array SeqObjDsr = _am.ObjectTracking(true, 0.54, 0.45); | ||
+ | 3. Если массив не пуст (объекты найденны), то в цикле обработать массив описателй распознанных объектов. | ||
+ | |||
+ | Более подробно можно посмотреть в папке примеров использования AVM: .\AVM_SDK_simple.net\samples | ||
+ | |||
+ | == Описание методов == | ||
+ | |||
+ | === void Create(Size aKeyImgSize, short aLevelMax, int aTreeTotal, bool aClustering); === | ||
+ | |||
+ | Инициализация экземпляра AVM. | ||
+ | |||
+ | aKeyImgSize – ключевой размер изображения. В большинстве случаев оптимальное значение 80x80 пикселей. | ||
+ | aLevelMax – максимальное количество уровней поискового дерева. Если параметр равен нулю, | ||
+ | то будет установлено оптимальное значение по умолчанию. | ||
+ | aTreeTotal – общее количество поисковых деревьев, при работе с коллекциями деревьев. | ||
+ | По умолчанию равен 1 (одно поисковое дерево). | ||
+ | aClustering – признак использования дополнительных кластерных матриц в дереве поиска (для ускорения поиска). | ||
+ | По умолчания включен (true). | ||
+ | |||
+ | === void Write(Rectangle aInterestArea, int apData, bool aDeepLearning); === | ||
+ | |||
+ | С помощью метода Write происходить "связывание" фрагмента изображения (первый параметр) с данными пользователя | ||
+ | (второй параметры), в случае CvAssociativeMemory32S - это индекс объекта. Затем эти данные можно считать | ||
+ | с помощью метода Read, если просканировать изображение окошком разного размера, и найти объект/объекты, | ||
+ | что собственно и делает метод ObjectTracking/ObjectRecognition. | ||
+ | |||
+ | aInterestArea – область интереса, фрагмент изображения содержащий объект; | ||
+ | apData – данные пользователя; | ||
+ | aDeepLearning – признак «углублённого» обучения (дополнительное сканирование в окрестности объекта). | ||
+ | По умолчанию включен (true). | ||
+ | |||
+ | === bool Read(Rectangle aInterestArea, ref Rectangle apSearchArea, ref IntPtr appData, | ||
+ | ref UInt64 apIndex, ref UInt64 apHitCounter, ref double apSimilarity, bool aTotalSearch); === | ||
+ | |||
+ | Чтение данных из памяти (третий параметр), которые проассоциированы с фрагментом изображения (первый параметр). | ||
+ | |||
+ | aInterestArea – область интереса; | ||
+ | apSearchArea – область изображения, где был найден объект; | ||
+ | appData – указатель на данные пользователя; | ||
+ | apIndex – индекс ассоциативного ядра (откуда прочитаны данные); | ||
+ | apHitCounter – счётчик попаданий в ассоциативное ядро; | ||
+ | apSimilarity – коэффициент схожести с эталоном (если больше 0.5, то объект распознан); | ||
+ | aTotalSearch – признак «тотального» поиска до последнего уровня дерева поиска | ||
+ | (найдёт наиболее похожий образ в дереве поиска, даже если распознавание не произошло). | ||
+ | |||
+ | Метод возвращает значение true если в области интереса найден объект. | ||
+ | |||
+ | === Array ObjectRecognition(); === | ||
+ | |||
+ | Выполняет сканирование изображения методом Read и возвращает массив описателей распознанных объектов. | ||
+ | |||
+ | === Array ObjectTracking(bool aTrainingDuringTracking, double aSimilarityUpTrd, double aSimilarityDnTrd); === | ||
+ | |||
+ | Выполняет поиск и прослеживание объектов. Возвращает массив описателей прослеживаемых объектов. | ||
+ | |||
+ | aTrainingDuringTracking – признак дополнительного обучения в процессе прослеживания объекта. | ||
+ | По умолчанию включен (true). | ||
+ | aSimilarityUpTrd – верхний порог схожести ниже которого будет выполнено дополнительное | ||
+ | обучение на прослеживаемый объект (по умолчанию равен 0.54). | ||
+ | aSimilarityDnTrd – нижний порог схожести выше которого ещё может быть выполнено | ||
+ | дополнительное обучение (по умолчанию равен 0.45). |
Версия 17:04, 31 июля 2010
Содержание
- 1 Реализация алгоритма AVM (Associative Video Memory) под C#
- 1.1 Возможности алгоритма AVM
- 1.2 Структура библиотеки (реализация)
- 1.3 Быстрый старт
- 1.4 Описание методов
- 1.4.1 void Create(Size aKeyImgSize, short aLevelMax, int aTreeTotal, bool aClustering);
- 1.4.2 void Write(Rectangle aInterestArea, int apData, bool aDeepLearning);
- 1.4.3 Array ObjectRecognition();
- 1.4.4 Array ObjectTracking(bool aTrainingDuringTracking, double aSimilarityUpTrd, double aSimilarityDnTrd);
Реализация алгоритма AVM (Associative Video Memory) под C#
Возможности алгоритма AVM
Алгоритм "Associative Video Memory" (AVM) использует принцип многоуровневой декомпозиции матриц распознавания, устойчив к шумам камеры, хорошо масштабируется, просто и быстро обучается, показывает приемлемое быстродействие на больших разрешениях входного видео (960x720 и больше). Алгоритм работает с полутоновыми (черно-белыми) изображениями.
Структура библиотеки (реализация)
В состав реализации AVM SDK simple.NET входят две динамических библиотеки:
* avm061.dll – библиотека реализации алгоритма AVM; * AVM_api.dll – библиотека wrapper, обеспечивающая C# интерфейс.
Исходные файлы проекта интерфейсной библиотеки AVM_api.dll расположены в папке: .\AVM_SDK_simple.net\AVM_api\AVM_api.csproj
Всё что нужно для подключения алгоритма AVM – это включение библиотек avm061.dll и AVM_api.dll в ваш проект. В качестве входных данных алгоритм AVM использует изображения в формате Bitmap.
Быстрый старт
Что нужно для обучения?
1. Создать экземпляр AVM: _am = new CvAssociativeMemory32S(); 2. Выполнить инициализацию экземпляра (методы: Create, Load, или ReadPackedData): _am.Load(cRcgDataFileName); 3. Установить изображение для обработки: _am.SetImage(ref aSrcImage); 4. Записать новый образ в дерево поиска AVM: _am.Write(InterestArea, ObjIndex, true).
Что нужно для распознавания?
1. Выполнить пункты 1-3 описанные выше; 2. Прочитать массив описателей объектов (методы: ObjectTracking/ ObjectRecognition): Array SeqObjDsr = _am.ObjectTracking(true, 0.54, 0.45); 3. Если массив не пуст (объекты найденны), то в цикле обработать массив описателй распознанных объектов.
Более подробно можно посмотреть в папке примеров использования AVM: .\AVM_SDK_simple.net\samples
Описание методов
void Create(Size aKeyImgSize, short aLevelMax, int aTreeTotal, bool aClustering);
Инициализация экземпляра AVM.
aKeyImgSize – ключевой размер изображения. В большинстве случаев оптимальное значение 80x80 пикселей. aLevelMax – максимальное количество уровней поискового дерева. Если параметр равен нулю, то будет установлено оптимальное значение по умолчанию. aTreeTotal – общее количество поисковых деревьев, при работе с коллекциями деревьев. По умолчанию равен 1 (одно поисковое дерево). aClustering – признак использования дополнительных кластерных матриц в дереве поиска (для ускорения поиска). По умолчания включен (true).
void Write(Rectangle aInterestArea, int apData, bool aDeepLearning);
С помощью метода Write происходить "связывание" фрагмента изображения (первый параметр) с данными пользователя (второй параметры), в случае CvAssociativeMemory32S - это индекс объекта. Затем эти данные можно считать с помощью метода Read, если просканировать изображение окошком разного размера, и найти объект/объекты, что собственно и делает метод ObjectTracking/ObjectRecognition.
aInterestArea – область интереса, фрагмент изображения содержащий объект; apData – данные пользователя; aDeepLearning – признак «углублённого» обучения (дополнительное сканирование в окрестности объекта).
По умолчанию включен (true).
=== bool Read(Rectangle aInterestArea, ref Rectangle apSearchArea, ref IntPtr appData,
ref UInt64 apIndex, ref UInt64 apHitCounter, ref double apSimilarity, bool aTotalSearch); ===
Чтение данных из памяти (третий параметр), которые проассоциированы с фрагментом изображения (первый параметр).
aInterestArea – область интереса; apSearchArea – область изображения, где был найден объект; appData – указатель на данные пользователя; apIndex – индекс ассоциативного ядра (откуда прочитаны данные); apHitCounter – счётчик попаданий в ассоциативное ядро; apSimilarity – коэффициент схожести с эталоном (если больше 0.5, то объект распознан); aTotalSearch – признак «тотального» поиска до последнего уровня дерева поиска (найдёт наиболее похожий образ в дереве поиска, даже если распознавание не произошло).
Метод возвращает значение true если в области интереса найден объект.
Array ObjectRecognition();
Выполняет сканирование изображения методом Read и возвращает массив описателей распознанных объектов.
Array ObjectTracking(bool aTrainingDuringTracking, double aSimilarityUpTrd, double aSimilarityDnTrd);
Выполняет поиск и прослеживание объектов. Возвращает массив описателей прослеживаемых объектов.
aTrainingDuringTracking – признак дополнительного обучения в процессе прослеживания объекта.
По умолчанию включен (true).
aSimilarityUpTrd – верхний порог схожести ниже которого будет выполнено дополнительное
обучение на прослеживаемый объект (по умолчанию равен 0.54).
aSimilarityDnTrd – нижний порог схожести выше которого ещё может быть выполнено
дополнительное обучение (по умолчанию равен 0.45).