
Flame
Пользователи-
Content count
34 -
Joined
-
Last visited
-
Days Won
1
Everything posted by Flame
-
Ну я так и делал, приведение к одному размеру.
-
Вот хорошая статья с подробным обзором методов
-
Идентификация личности с использованием алгоритмов сравнения изображений. Короче задача типа следить за студентом который проходит тестовое задание. одна камера постоянно находит его лицо и сравнивает с изображением в бд, вторая смотрит чтобы рядом никого небыло
-
JoQeR, поздравляю! скоро тоже защищаюсь, правда у меня диссертация
-
Для борьбы с разной освещенностью иногда помогает функция cvEqualizeHist. JoQeR, свою реализацию придумали или сделали как на хабре? я то что в 56м посте писал плохо работает на других базах, переделал, стало лучше На паспортном контроле вроде используется метод с отношением расстояний между ключевыми точками лица (забыл как называются они); ну типа расстояние между зрачками, носом, ртом, и т п...
-
ага, вроде разобрался. dctSize - Размер окна в котором будем находить коэффициенты ДКП obsSize - Количество значимых коэффициентов. delta - А вот это сдвиг (в пикселях?) только я не совсем понял, в дефолтных параметрах размер сдвига 4 на 4, тоесть всего лишь по 4 пикселя раждый раз? и еще непонятно почему в исходниках #define MAX_DCT_SIZE 32 тоесть максимум окно может быть 32 х 32 пикселя. Тоесть не получится сканировать например прямоугольным окном чисто по вертикали. Видимо создатели библиотеки посчитали 32 максимально оптимальным
-
Кто может примерно обьяснить что и какой из этих параметров значат и что дают для обучения и распознавания? И обязательно ли ставить одинаковые параметры для обучения и распознавания? const int OBS_WIDTH = 12; const int OBS_HEIGHT = 12; const int NO_DCT_COEFF_X = 4; const int NO_DCT_COEFF_Y = 4; const int STEP_X = 4; const int STEP_Y = 4; const int MAX_ITER = 80; const double STOP_STEP_ITER = 0.01;
-
JoQeR, Смотри пост 56, вот примерно так все и будет думаю. только я еще не оттестировал нормально
-
Попробовал так сделать, значения слишком большие получаются Вот для изначальной реализации взятой из вашей программы на билдере: Соответственно минимальные значения для каждой тестовой фотки: Мои: Хабр: 0.0329157 0.49 0.109273 0.85 0.0582627 0.47 0.16966 2.08 Если добавить деление на сумму всех чисел для собсвенных векторов: float summ_eigen = 0; for(int i = 0; i < N_People * N_Samples; i++) { summ_eigen += EigenVals->data.fl[i]; } for(int i = 0; i < N_People * N_Samples; i++) { EigenVals->data.fl[i] = EigenVals->data.fl[i] / summ_eigen; } Получается так: (значения min): Видимо буду тогда делать по своему алгоритму с суммами, там все лучше получается
-
Вы имеете ввиду вот это?
-
я тут другое придумал: 1. Обучаем алгоритм например по 4 фотки для каждого человека. Условие: Фотки одного человека должны идти по порядку. 2. Загружаем тестовое фото любого человека из выборки, которое не использовалось в обучении, например 7. 3. Находим расстояния в пространстве от вектора тестовой фотки до всех других объектов по порядку. 4. Складываем расстояния до обьектов одного человека. 5. Полученную сумму сравниваем с другими такими суммами. Она будет меньше чем другие. А если тестовое фото будет вообще другого человека не из выборки, то сумма будет больше той суммы в пункте 5. таким образом можно и отбрасывать левых человек получается Вроде так алгоритм должен лучше работать, как думаете?
-
Ребята, подскажите, вот у меня получается максимальное расстояние от вектора до других обьектов не превышает 2, а вот в статье на хабре тут получается аж 21, если мы подаем незнакомое лицо. с чем это может быть связано? у меня если даже незнакомое подаешь на проверку всеравно там не больше 2х... Если много фоток взять в обучающую выборку, то соответственно и расстояния уменьшаются до вектора... Никак не могу понять как задать порог для отсеивания неизвестных лиц, может кто нибудь делал? Ну тоесть с увеличением обучающей выборки порог всегда разный..
-
Ога нашел, значит в проге уже Махаланобиса
-
А кто нибудь реализовывал порог отсечения левых лиц в этой проге? по статье на хабре там порог 2.2 у него а у меня что то расстояния редко больше 2х получаются... или в данном коде for (i=0; i < nEigens; i++) { float d_i = projectedTestFace[i] - coeffs[iTrain][i]; distSq += d_i * d_i/EigenVals->data.fl[i]; } считается эвклидово расстояние? а в статье я так понял расстояние Махаланобиса. Кто знает как его посчитать? Я так понял что по PCA проще сделать порог отсечения, чем по марковским моделям
-
C:\opencv\build\include\opencv C:\opencv\build\include\ надо вот такие
-
Да там надо просто директорию указать, там будет что то типа Include files или типа того, указываешь ему директории где заголовочные файлы лежать и все. Либо кинь все заголовочные файлы *.h в директорию где у тебя экзешник будет уже скомпилированый, а в обьявлении заменяешь #include <highgui.h> на #include "highgui.h"
-
Посмотри тут - ссылка Я просто сам на визуале делаю, и на QT, билдер давно не использовал И лучше используй 2.3.1 или 2.4, в 1.1 вроде глюки есть.
-
Надо указать в билдере дополнительные директории исходных файлов. Где то тут на форуме была инструкция как на билдере настроить
-
Smorodov, А почему количество векторов базиса это количество изображений - 1 ?
-
Размеры не вбиты, но там должны быть все одного размера, иначе opencv ругается
-
скомпилил на с++ в студии, скорость сравнима с тем что на линуксе правда не сразу понял как файлы из папки грузить, но вот сделал так, вдруг кому интересно станет: char a[] = "C://faces//s"; char b[] = "//"; char c[] = ".pgm"; char filenames[20]; for (int j=0;j<N_People;j++) // Цикл по разным людям { for (int i=0;i<N_Samples;i++) // Цикл по фотографиям { sprintf(filenames, "%s%d%s%d%s", a, j+1, b, i+1, c); img_load = cvLoadImage(filenames); А я с тем ковырялся добавил тока ему нейм спейс еще чтобы использовать совместно с враппером OpenCVSharp потому как у последнего все удобнее сделано но там нет марковских моделей почему то. а добавить их туда я че-то не осилил. Там есть PCA, он работает быстро. может если туда добавить Марковские модели будет быстрее Вы писали с нуля враппер именно для марковских моделей чтобы использовать их в С#? Кстати по поводу утечек памяти в студии есть такая штука gcnew, для борьбы с утечками
-
А нет вру, вроде тоже динамические
-
Smorodov, щас ваш проект билдеровский скомпилировал под рабочим компом с линуксом (opensuse 12.1 kde 4.8)в консольном QT проекте на чистом C++, и что то оно гораздо быстрее работает с теми же самыми выборками, чем у меня дома в винде на си шарпе с использованием того враппера что ShurikEV предлагал. Прям в разы. А дома комп гораздо быстрее что то тут не то попробую дома скомпилить под C++ в студии. Правда под линем библиотека 2.4 а дома 2.3.1, и и на лине консольный проект а дома виндовый под GUI. Неужели сишный код настолько быстрее может еще дело в том что на винде используются динамические библиотеки а в линухе статические или может то что я под линухом сам библиотеку собрал а в винде уже собраные использую, но это врятли так то
-
Спасибо!
-
Это неважно, главное что в реальных системах про такое не сказано Ну или я не находил таких систем. в основном метод главных компонент везде используется.