Обнаружение лица Viola-Jones требует 180 тыс. Функций

мы осуществляем адаптациюViola-Jones' алгоритм распознавания лиц, Этот метод основан на размещении подкадра 24x24 пикселей на изображении и последующем размещении прямоугольных элементов внутри него в каждой позиции с любым возможным размером.

Эти функции могут состоять из двух, трех или четырех прямоугольников. Следующий пример представлен.

Они утверждают, что исчерпывающий набор составляет более 180 КБ (раздел 2):

Учитывая, что базовое разрешение детектора составляет 24x24, исчерпывающий набор прямоугольных элементов довольно велик - более 180 000. Обратите внимание, что в отличие от основы Хаара, набор элементов прямоугольника является слишком полным.

Следующие утверждения прямо не изложены в документе, поэтому они являются предположениями с моей стороны:

Есть только 2 объекта с двумя прямоугольниками, 2 объекта с тремя прямоугольниками и 1 объект с четырьмя прямоугольниками. Логика этого заключается в том, что мы наблюдаемразница между выделенными прямоугольниками, а не явно цветом или яркостью или чем-то в этом роде.Мы не можем определить тип объекта A как блок пикселей 1x1; он должен быть не менее 1х2 пикселей. Кроме того, тип D должен быть не менее 2x2 пикселей, и это правило соответствует другим функциям.Мы не можем определить тип объекта A как блок пикселей 1x3, так как средний пиксель не может быть разделен, и вычитание его из себя идентично блоку пикселей 1x2; этот тип объекта определен только для четной ширины. Кроме того, ширина типа объекта C должна делиться на 3, и это правило выполняется в соответствии с другими объектами.Мы не можем определить объект с шириной и / или высотой 0. Поэтому мы повторяем x и у до 24 минус размер функции.

Исходя из этих предположений, яМы насчитали исчерпывающий набор:

const int frameSize = 24;
const int features = 5;
// All five feature types:
const int feature[features][2] = {{2,1}, {1,2}, {3,1}, {1,3}, {2,2}};

int count = 0;
// Each feature:
for (int i = 0; i < features; i++) {
    int sizeX = feature[i][0];
    int sizeY = feature[i][1];
    // Each position:
    for (int x = 0; x 

Ответы на вопрос(5)

Ваш ответ на вопрос