integralImage

Интегральное изображение

Синтаксис

J = integralImage(I)
J = integralImage(I,orientation)

Описание

J = integralImage(I) вычисляет интегральное изображение входного изображения интенсивности, I. Функциональные нулевые клавиатуры главная и левая сторона выходного изображения интеграла, J.

J = integralImage(I,orientation) вычисляет интегральное изображение с заданной ориентацией.

integral image позволяет вам быстро вычислить суммирование по подобластям изображений. Использование интегральных изображений было популяризировано алгоритмом Виолы - Джонса [1]. Интегральные изображения упрощают суммирование пикселей и могут быть выполнены в постоянное время, независимо от размера окружения.

Входные параметры

свернуть все

Изображение интенсивности, заданное как M-by-N полутоновое изображение. Это значение может быть любым числовым классом.

Ориентация изображения, заданная как 'upright' или 'rotated'. Если вы устанавливаете ориентацию на 'rotated', integralImage возвращает интегральное изображение для вычисления сумм по прямоугольникам, вращаемым 45 градусами. Чтобы упростить легкое вычисление пиксельных сумм вдоль всех границ изображения, выходные изображения интеграла дополнены можно следующим образом:

Вертикальное интегральное изображение — дополненный Нулем на верхней части и оставленный, приводя к size (J) = size (I) + 1
Вращаемое интегральное изображение — дополненный Нулем наверху, оставленный, и право, приводящее к size (J) = size (I) + [1 2]

Выходные аргументы

J

Интегральное изображение. Функциональные нулевые клавиатуры главная и левая сторона интегрального изображения. Классом вывода является double. Получившийся размер выходного изображения интеграла равняется:

size (J) = size (I) + 1

Такая калибровка упрощает легкое вычисление пиксельных сумм вдоль всех границ изображения. Интегральное изображение, J, является по существу заполненной версией значения cumsum (cumsum (I, 2)).

Примеры

свернуть все

Вычислите интегральное изображение и используйте его, чтобы вычислить сумму пикселей по прямоугольной области изображения интенсивности.

Создайте матрицу изображений.

I = magic(5)
I = 5×5

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

Задайте прямоугольную область как [startingRow, startingColumn, endingRow, endingColumn].

[sR sC eR eC] = deal(1,3,2,4);

Вычислите сумму по области с помощью интегрального изображения.

J = integralImage(I);
regionSum = J(eR+1,eC+1) - J(eR+1,sC) - J(sR,eC+1) + J(sR,sC)
regionSum = 30

Алгоритмы

свернуть все

Как интеграл отображает работы суммирования

Интегральное изображение помогает вам быстро вычислить суммирование по подобластям изображений. Каждый пиксель в интегральном изображении является суммированием пикселей выше и слева от него.

Чтобы вычислить суммирование подобласти изображения, можно использовать соответствующую область его интегрального изображения. Например, во входном изображении ниже, суммирование теневой области становится простым вычислением с помощью четырех ссылочных значений прямоугольной области в соответствующем интегральном изображении. Вычисление становится, 46 – 22 – 20 + 10 = 14. Вычисление вычитает области выше и слева от теневой области. Область перекрытия добавляется назад, чтобы компенсировать двойное вычитание.

Таким образом можно вычислить суммирование в прямоугольных областях быстро, независимо от размера фильтра.

Ссылки

[1] Виола, Пол и Майкл Дж. Джонс, “Быстрое Обнаружение объектов с помощью Повышенного Каскада Простых Функций”, Продолжения 2 001 Конференции Общества эпохи компьютеризации IEEE по Компьютерному зрению и Распознаванию образов, 2001. Объем: 1, pp.511–518.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Представленный в R2012a