О.В. Рогозин, С.А. Кладов
2
(
)
2
1
ρ( , )
n
k
k
k
x y x y
x y
=
= − =
−
∑
,
где
x
,
y
— векторы размерности
n
.
Последовательность обработки изображений с помощью ал-
горитма EigenFace.
1-й шаг
: получение массива фотографий, которое происходит с
помощью признаков Хаара и библиотеки OpenCV. Изображение хра-
нится в базе данных в виде матрицы
I
[
m
,
n
] значений цвета его пик-
селей.
I = _img.HaarDetectObjects(_Cascade, _Storage).
2-й шаг
: Получение матрицы всех изображений. Каждая фото-
графия преобразовывается в вектор построчно:
[
]
[ ]
*
,
ImageVector i m j
Incoming i j
+ =
,
где
Incoming
— исходное изображение в матричном виде, а
ImageVector
— в векторном. Затем полученные векторы изображений
записываются в общую матрицу
Common
по столбцам.
3-й шаг:
вычисление среднего лица для базы данных изображений:
[ ]
[ ]
1
0
1
,
n
j
Avg i
Common i j
N
−
=
=
∑
,
где
Avg
— вектор среднего лица,
N
— общее количество изображе-
ний в базе данных.
// A — изначально заполнена 0
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
A[i,j] += I[i, j];
}
}
for (int i = 0; i < iLength; i++)
{
A[i,j] /= N;
}
4-й шаг
: вычисление матрицы разностных изображений в соот-
ветствии с выражением
Dif
[
i
,
j
] =
Common
[
i
,
j
] –
Avg
[
i
]
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
Dif[i,j] = I[i, j] — A[i,j];