Перейти к содержимому
Compvision.ru

Flame

Пользователи
  • Количество публикаций

    34
  • Зарегистрирован

  • Посещение

  • Days Won

    1

Все публикации пользователя Flame

  1. Ну я так и делал, приведение к одному размеру.
  2. Вот хорошая статья с подробным обзором методов
  3. Идентификация личности с использованием алгоритмов сравнения изображений. Короче задача типа следить за студентом который проходит тестовое задание. одна камера постоянно находит его лицо и сравнивает с изображением в бд, вторая смотрит чтобы рядом никого небыло
  4. JoQeR, поздравляю! скоро тоже защищаюсь, правда у меня диссертация
  5. Для борьбы с разной освещенностью иногда помогает функция cvEqualizeHist. JoQeR, свою реализацию придумали или сделали как на хабре? я то что в 56м посте писал плохо работает на других базах, переделал, стало лучше На паспортном контроле вроде используется метод с отношением расстояний между ключевыми точками лица (забыл как называются они); ну типа расстояние между зрачками, носом, ртом, и т п...
  6. ага, вроде разобрался. dctSize - Размер окна в котором будем находить коэффициенты ДКП obsSize - Количество значимых коэффициентов. delta - А вот это сдвиг (в пикселях?) только я не совсем понял, в дефолтных параметрах размер сдвига 4 на 4, тоесть всего лишь по 4 пикселя раждый раз? и еще непонятно почему в исходниках #define MAX_DCT_SIZE 32 тоесть максимум окно может быть 32 х 32 пикселя. Тоесть не получится сканировать например прямоугольным окном чисто по вертикали. Видимо создатели библиотеки посчитали 32 максимально оптимальным
  7. Кто может примерно обьяснить что и какой из этих параметров значат и что дают для обучения и распознавания? И обязательно ли ставить одинаковые параметры для обучения и распознавания? 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;
  8. JoQeR, Смотри пост 56, вот примерно так все и будет думаю. только я еще не оттестировал нормально
  9. Попробовал так сделать, значения слишком большие получаются Вот для изначальной реализации взятой из вашей программы на билдере: Соответственно минимальные значения для каждой тестовой фотки: Мои: Хабр: 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): Видимо буду тогда делать по своему алгоритму с суммами, там все лучше получается
  10. я тут другое придумал: 1. Обучаем алгоритм например по 4 фотки для каждого человека. Условие: Фотки одного человека должны идти по порядку. 2. Загружаем тестовое фото любого человека из выборки, которое не использовалось в обучении, например 7. 3. Находим расстояния в пространстве от вектора тестовой фотки до всех других объектов по порядку. 4. Складываем расстояния до обьектов одного человека. 5. Полученную сумму сравниваем с другими такими суммами. Она будет меньше чем другие. А если тестовое фото будет вообще другого человека не из выборки, то сумма будет больше той суммы в пункте 5. таким образом можно и отбрасывать левых человек получается Вроде так алгоритм должен лучше работать, как думаете?
  11. Ребята, подскажите, вот у меня получается максимальное расстояние от вектора до других обьектов не превышает 2, а вот в статье на хабре тут получается аж 21, если мы подаем незнакомое лицо. с чем это может быть связано? у меня если даже незнакомое подаешь на проверку всеравно там не больше 2х... Если много фоток взять в обучающую выборку, то соответственно и расстояния уменьшаются до вектора... Никак не могу понять как задать порог для отсеивания неизвестных лиц, может кто нибудь делал? Ну тоесть с увеличением обучающей выборки порог всегда разный..
  12. Ога нашел, значит в проге уже Махаланобиса
  13. А кто нибудь реализовывал порог отсечения левых лиц в этой проге? по статье на хабре там порог 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 проще сделать порог отсечения, чем по марковским моделям
  14. C:\opencv\build\include\opencv C:\opencv\build\include\ надо вот такие
  15. Да там надо просто директорию указать, там будет что то типа Include files или типа того, указываешь ему директории где заголовочные файлы лежать и все. Либо кинь все заголовочные файлы *.h в директорию где у тебя экзешник будет уже скомпилированый, а в обьявлении заменяешь #include <highgui.h> на #include "highgui.h"
  16. Посмотри тут - ссылка Я просто сам на визуале делаю, и на QT, билдер давно не использовал И лучше используй 2.3.1 или 2.4, в 1.1 вроде глюки есть.
  17. Надо указать в билдере дополнительные директории исходных файлов. Где то тут на форуме была инструкция как на билдере настроить
  18. Smorodov, А почему количество векторов базиса это количество изображений - 1 ?
  19. Размеры не вбиты, но там должны быть все одного размера, иначе opencv ругается
  20. скомпилил на с++ в студии, скорость сравнима с тем что на линуксе правда не сразу понял как файлы из папки грузить, но вот сделал так, вдруг кому интересно станет: 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, для борьбы с утечками
  21. А нет вру, вроде тоже динамические
  22. Smorodov, щас ваш проект билдеровский скомпилировал под рабочим компом с линуксом (opensuse 12.1 kde 4.8)в консольном QT проекте на чистом C++, и что то оно гораздо быстрее работает с теми же самыми выборками, чем у меня дома в винде на си шарпе с использованием того враппера что ShurikEV предлагал. Прям в разы. А дома комп гораздо быстрее что то тут не то попробую дома скомпилить под C++ в студии. Правда под линем библиотека 2.4 а дома 2.3.1, и и на лине консольный проект а дома виндовый под GUI. Неужели сишный код настолько быстрее может еще дело в том что на винде используются динамические библиотеки а в линухе статические или может то что я под линухом сам библиотеку собрал а в винде уже собраные использую, но это врятли так то
  23. Это неважно, главное что в реальных системах про такое не сказано Ну или я не находил таких систем. в основном метод главных компонент везде используется.
×