Этот пост привлекает внимание, поэтому я хотел бы его обновить. Я предоставил библиотеку распознавания лиц, которую я написал для OpenCV, которая включает гистограммы Eigenfaces, Fisherfaces и Local Binary Patterns на момент написания этой статьи. Итак, OpenCV 2.4.2 теперь поставляется со всем, чтобы начать работу, см. Очень подробную документацию:
Теперь первоначальный ответ.
Я являюсь автором статьи, указанной в сообщении Кевина. Обратите внимание, что вам нужно найти собственные значения несимметричной матрицы S_ {W} ^ {- 1} S_ {B} для Fisherfaces, я явно не упоминал об этом в своем блоге. В текущей версии OpenCV есть решатель для симметричных матриц; поскольку собственные значения и сингулярные значения не эквивалентны для несимметричных матриц, вы также не можете использовать SVD. Для своего проекта я адаптировал решатель JAMA к C ++ для решения проблемы собственных значений для несимметричных матриц, поэтому нет необходимости использовать для этого внешнюю библиотеку. CMakeLists.txt настроен, поэтому можно использовать Eigen, так что у вас есть выбор.
Наконец-то я нашел несколько минут для реализации метода Fisherfaces с помощью OpenCV2 C ++ API и подтолкнул код в мою учетную запись github по адресу:
main.cpp показывает, как использовать класс Fisherfaces и как использовать линейный дискриминантный анализ с тем же примером, что и на : http://www.bytefish.de/wiki/pca_lda_with_gnu_octave. Он поставляется как проект CMake, поэтому для компиляции достаточно ввести:
philipp@mango:~/some/dir$ mkdir build; cd build
philipp@mango:~/some/dir/build$ cmake ..
philipp@mango:~/some/dir/build$ make
philipp@mango:~/some/dir/build$ ./lda
Я не знаю, является ли это предпочтительным способом публикации кода в ответе на Stackoverflow, но я думаю, что это слишком долго для публикации.
Обратите внимание на две вещи. (1) Я читаю изображения из файла CSV (точно так же, как этот), вам не нужно заботиться о порядке меток. (2) Я храню собственные векторы по столбцам, а PCA в OpenCV хранит их по строкам. Это просто вопрос личного вкуса, но я никогда не видел этого ни для одного другого решателя, поэтому решил хранить их по столбцам.
person
bytefish
schedule
23.10.2011