Собственные лица в OpenCV с использованием С++

Я написал код для создания собственных лиц. В качестве входных данных я взял 3 изображения разных людей. Я вычислил собственные векторы и собственные значения. Поскольку делается всего 3 изображения, я выбираю все три собственных вектора, каждый размером 36000x1, в качестве главных компонент. Когда я изменяю собственные векторы, чтобы увидеть изображение, я получаю собственное лицо только для одного человека. Остальные изображения почти полностью пусты.

Я извлекаю каждый собственный вектор из covevec (матрица собственных векторов ковариационной матрицы)

col1=covevec.col(0);
col2=covevec.col(1);
col3=covevec.col(2);

Я переделываю их следующим образом:

if (!col1.isContinuous() && !col2.isContinuous() && !col3.isContinuous())
{
    col1=col1.clone();
    col2=col2.clone();
    col3=col3.clone();
}
Mat final1,final2,final3;
final1=col1.reshape(0,200);
final2=col2.reshape(0,200);
final3=col3.reshape(0,200);

Вот как выглядит final2: Выходное изображение final2

А два других выглядят так:Выходное изображение final1

Что я делаю неправильно?


person KeenLearner    schedule 10.06.2015    source источник
comment
вам нужно гораздо больше данных, также вы должны нормализовать () ваши изображения перед шагом pca   -  person berak    schedule 11.06.2015
comment
Да.... увеличение данных сработало!   -  person KeenLearner    schedule 13.06.2015


Ответы (1)


Ваш код выглядит нормально, так что же не так?

ДанныеДанныеДанные, это так важно при выполнении таких задач компьютерного зрения. Чтобы получить преимущество, используйте готовый набор данных с соответствующими тестовыми данными — Это сработает

Кроме того, как говорит Берак, поможет нормализация изображений. В Turk & Pentland (которое, если вы не читали вы должны) они заявляют:

Шаг 6.3: вычислить M лучших собственных векторов AAT: ui = Avi

(важно: нормализуйте ui так, чтобы ||ui|| = 1)

Это будет означать, что все ваши тренировочные данные будут иметь одинаковый характер и дадут вашему алгоритму гораздо больше шансов на успех.

person GPPK    schedule 11.06.2015