Я работаю над новым алгоритмом распознавания образов, но как писал уже ранее (начало обсуждения тут), о реализации ничего пока сказать не могу, просто мне хочется извлечь пользу из этой разработки. Если всё получится, то оформлю патент, и тогда можно будет и о подробностях реализации поговорить.
Моё имя - Еремеев Дмитрий Владимирович (EDV). Будем пока называть метод распознавания – чёрным ящиком, а что бы было удобнее, конкретизируем название так:
Associative Video Memory - Yeremeyev method или AVMY.
Честно говоря, я не ожидал, что моя работа вызовет такой активный отклик в среде любителей робототехники, для меня это был приятный сюрприз.
Ну что же, а теперь коротко описание пакета. Файл RcgEDV_Demo.zip содержит демонстрационную версию метода AVMY в бинарном виде (файл RcgExample.exe) и в виде исходного текста программы (файл RcgExample.dsw). Реализация самого метода AVMY представлена в виде статической библиотеки rcg.lib.
По поводу ассоциативной видео памяти вам необходимо знать только одно: входное изображение используется в качестве ключа для доступа к данным для операции чтение/запись. В данной реализации память хранит значения целого типа (int).
Интерфейс с ассоциативной памятью прост:
- Код: Выделить всё
// Associative memory class for integer data
class CvAssociativeMemory16S {
void* p;
public:
CvAssociativeMemory16S();
~CvAssociativeMemory16S();
// Creating of associative memory
bool Create(CvSize aKeyImgSize, CvMemStorage* apMemStorage, short aLevelMax = 0);
// Set an image for processing
void SetImage(const void* apSrcImg);
// Reading from associative memory cell (associative base)
bool Read(CvRect aInterestArea, int** appData,
uint64* apIndex = NULL, uint64* apHitCounter = NULL);
// Writing to associative memory cell
void Write(CvRect aInterestArea, int* apData);
// Object recognition
void Recognition(CvRcgAMFunc16S RcgAMFunc, void *args = NULL);
// Saving of recognition data
bool Save(char* aFileName);
// Loading of recognition data
bool Load(char* aFileName);
// Get current index of associative base
uint64 GetCurIndex();
// Get total number of associative bases
long GetTotalABases();
// Get total number of memory levels
short GetTotalLevels();
};
Ну что же, вот пожалуй и всё. Если будут вопросы, пишите