Оптический поток

Оцените объектные скорости

Библиотека

Analysis & Enhancement

visionanalysis

Описание

Блок Optical Flow оценивает направление и скорость объектного движения от одного изображения до другого или от одного кадра видео до другого использования или Рог-Schunck или метод Лукаса-Кэнэйда.

ПортВывод Поддерживаемые типы данныхПоддерживаемые комплексные числа

I/I1

Скаляр, вектор или матрица значений интенсивности

  • Плавающая точка двойной точности

  • Плавающая точка с одинарной точностью

  • Фиксированная точка (поддерживаемый, когда параметр Method устанавливается на Lucas-Kanade),

Нет

I2

Скаляр, вектор или матрица значений интенсивности

То же самое, когда я портирую

Нет

|V |^2

Матрица значений скорости

То же самое, когда я портирую

Нет

V

Матрица скоростных компонентов в комплексной форме

То же самое, когда я портирую

Да

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

Ixu+Iyv+It=0

.

  • Ix, Iy, и It пространственно-временные производные яркости изображения.

  • u является горизонтальным оптическим потоком.

  • v является вертикальным оптическим потоком.

Роговой-Schunck метод

Путем предположения, что оптический поток, смягчают целое изображение, Роговой-Schunck метод вычисляет оценку скоростного поля, [uv]T, это минимизирует это уравнение:

E=(Ixu+Iyv+It)2dxdy+α{(ux)2+(uy)2+(vx)2+(vy)2}dxdy

.

В этом уравнении, ux и uy пространственные производные оптического скоростного компонента, u, и α масштабирует глобальный термин гладкости. Роговой-Schunck метод минимизирует предыдущее уравнение, чтобы получить скоростное поле, [u v], для каждого пикселя в изображении. Этот метод дан следующими уравнениями:

ux,yk+1=u¯x,ykIx[Ixu¯kx,y+Iyv¯kx,y+It]α2+Ix2+Iy2vx,yk+1=v¯x,ykIy[Ixu¯kx,y+Iyv¯kx,y+It]α2+Ix2+Iy2

.

В этих уравнениях, [ux,ykvx,yk] оценка скорости для пикселя в (x, y), и [u¯x,ykv¯x,yk] среднее значение окружения [ux,ykvx,yk]. Для k = 0, начальная скорость 0.

Решить u и v использование Рогового-Schunck метода:

  1. Вычислить Ix и Iy использование ядра свертки Sobel, [121;000;121], и его транспонированная форма, для каждого пикселя в первом изображении.

  2. Вычислить It между изображениями 1 и 2 использования [11] ядро.

  3. Примите предыдущую скорость, чтобы быть 0 и вычислить среднюю скорость для каждого пиксельного использования [010;101;010] как ядро свертки.

  4. Итеративно решите для вас и против.

Метод Лукаса-Кэнэйда

Чтобы решить уравнение ограничений оптического потока для вас и v, метод Лукаса-Кэнэйда делит оригинальное изображение на меньшие разделы и принимает постоянную скорость в каждом разделе. Затем это выполняет взвешенный припадок наименьшего квадрата уравнения ограничений оптического потока к постоянной модели для [uv]T в каждом разделе Ω. Метод достигает этой подгонки путем минимизации следующего уравнения:

xΩW2[Ixu+Iyv+It]2

W является функцией окна, которая подчеркивает ограничения в центре каждого раздела. Решение проблемы минимизации

[W2Ix2W2IxIyW2IyIxW2Iy2][uv]=[W2IxItW2IyIt]

.

Фильтр различия Лукаса-Кэнэйда

Когда вы устанавливаете Temporal gradient filter на Difference filter [-1 1], u, и v решены можно следующим образом:

  1. Вычислить Ix и Iy использование ядра [18081]/12 и его транспонированная форма.

    Если вы работаете с типами данных с фиксированной точкой, значения ядра являются подписанными значениями фиксированной точки с размером слова, равным 16 и дробная длина, равная 15.

  2. Вычислить It между изображениями 1 и 2 использования [11] ядро.

  3. Сглаживайте компоненты градиента, Ix, Iy, и It, использование отделимого и изотропного ядра элемента 5 на 5, эффективные 1D коэффициенты которого [14641]/16. Если вы работаете с типами данных с фиксированной точкой, значения ядра являются значениями фиксированной точки без знака с размером слова, равным 8 и дробная длина, равная 7.

  4. Решите линейные уравнения 2 на 2 для каждого пикселя с помощью следующего метода:

    • Если A=[abbc]=[W2Ix2W2IxIyW2IyIxW2Iy2]

      Затем собственные значения A λi=a+c2±4b2+(ac)22;i=1,2

      В схемах фиксированной точки, P=a+c2,Q=4b2+(ac)22

    • Собственные значения сравниваются с порогом, τ, это соответствует значению, вы вводите для порога для шумоподавления. Результаты попадают в один из следующих случаев:

      Случай 1: λ1τ и λ2τ

      A несингулярен, система уравнений решены с помощью Правила Крамера.

      Случай 2: λ1τ и λ2<τ

      A сингулярен (необратимый), поток градиента нормирован, чтобы вычислить u и против.

      Случай 3: λ1<τ и λ2<τ

      Оптический поток, u и v, 0.

Производная гауссовых

Если вы устанавливаете временный фильтр градиента к Derivative of Gaussian, u, и v решены с помощью следующих шагов. Вы видите блок-схему для этого процесса в конце этого раздела:

  1. Вычислить Ix и Iy использование следующих шагов:

    1. Используйте Гауссов фильтр, чтобы выполнить временную фильтрацию. Задайте временные характеристики фильтра, такие как стандартное отклонение и количество коэффициентов фильтра с помощью параметра Number of frames to buffer for temporal smoothing.

    2. Используйте Гауссов фильтр и производную Гауссова фильтра, чтобы сглаживать изображение с помощью пространственной фильтрации. Задайте стандартное отклонение и длину изображения, сглаживающего фильтр с помощью параметра Standard deviation for image smoothing filter.

  2. Вычислить It между изображениями 1 и 2 использования следующих шагов:

    1. Используйте производную Гауссова фильтра, чтобы выполнить временную фильтрацию. Задайте временные характеристики фильтра, такие как стандартное отклонение и количество коэффициентов фильтра с помощью параметра Number of frames to buffer for temporal smoothing.

    2. Используйте фильтр, описанный на шаге 1b, чтобы выполнить пространственную фильтрацию на выводе временного фильтра.

  3. Сглаживайте компоненты градиента, Ix, Iy, и It, использование фильтра сглаживания градиента. Используйте параметр Standard deviation for gradient smoothing filter, чтобы задать стандартное отклонение и количество коэффициентов фильтра для фильтра сглаживания градиента.

  4. Решите линейные уравнения 2 на 2 для каждого пикселя с помощью следующего метода:

    • Если A=[abbc]=[W2Ix2W2IxIyW2IyIxW2Iy2]

      Затем собственные значения A λi=a+c2±4b2+(ac)22;i=1,2

    • Когда блок находит собственные значения, он сравнивает их с порогом, τ, это соответствует значению, вы вводите для параметра Threshold for noise reduction. Результаты попадают в один из следующих случаев:

      Случай 1: λ1τ и λ2τ

      A несингулярен, таким образом, блок решает систему уравнений с помощью Правила Крамера.

      Случай 2: λ1τ и λ2<τ

      A сингулярен (необратимый), таким образом, блок нормирует поток градиента, чтобы вычислить u и против.

      Случай 3: λ1<τ и λ2<τ

      Оптический поток, u и v, 0.

Схема типа данных с фиксированной точкой

Следующие схемы показывают типы данных, используемые в блоке Optical Flow для сигналов фиксированной точки. Блок поддерживает типы данных с фиксированной точкой только, когда параметр Method устанавливается на Lucas-Kanade.

Можно установить продукт вывод, аккумулятор, градиенты, порог и типы выходных данных в маске блока.

Параметры

Method

Выберите метод использование блока, чтобы вычислить оптический поток. Вашим выбором является Horn-Schunck или Lucas-Kanade.

Compute optical flow between

Выберите Two images, чтобы вычислить оптический поток между двумя изображениями. Выберите Current frame and N-th frame back, чтобы вычислить оптический поток между двумя кадрами видео, которые являются кадрами N независимо.

Этот параметр видим, если вы устанавливаете параметр Method на Horn-Schunck, или вы устанавливаете параметр Method на Lucas-Kanade и Temporal gradient filter к Difference filter [-1 1].

N

Введите скалярное значение, которое представляет количество кадров между ссылочным кадром и текущим кадром. Этот параметр становится доступным, если вы устанавливаете параметр Compute optical flow between, вы выбираете Current frame and N-th frame back.

Smoothness factor

Если относительное движение между двумя изображениями или кадрами видео является большим, введите большое значение положительной скалярной величины. Если относительное движение является маленьким, введите маленькое значение положительной скалярной величины. Этот параметр становится доступным, если вы устанавливаете параметр Method на Horn-Schunck.

Stop iterative solution

Используйте этот параметр, чтобы управлять, когда итеративный процесс решения блока остановится. Если вы хотите, чтобы он остановился, когда различие скорости ниже значения определенного порога, выберите When velocity difference falls below threshold. Если вы хотите, чтобы он остановился после определенного числа итераций, выбрал When maximum number of iterations is reached. Можно также выбрать Whichever comes first. Этот параметр становится доступным, если вы устанавливаете параметр Method на Horn-Schunck.

Maximum number of iterations

Введите скалярное значение, которое представляет максимальное количество итераций, которые вы хотите, чтобы блок выполнил. Этот параметр только видим, если для параметра Stop iterative solution вы выбираете When maximum number of iterations is reached или Whichever comes first. Этот параметр становится доступным, если вы устанавливаете параметр Method на Horn-Schunck.

Velocity difference threshold

Введите скалярное пороговое значение. Этот параметр только видим, если для параметра Stop iterative solution вы выбираете When velocity difference falls below threshold или Whichever comes first. Этот параметр становится доступным, если вы устанавливаете параметр Method на Horn-Schunck.

Velocity output

Если вы выбираете Magnitude-squared, блок выводит матрицу оптического потока, где каждый элемент имеет форму u2+v2. Если вы выбираете Horizontal and vertical components in complex form, блок выводит матрицу оптического потока, где каждый элемент имеет форму u+jv.

Temporal gradient filter

Задайте, решает ли блок для вас и v использование фильтра различия или производной Гауссова фильтра. Этот параметр становится доступным, если вы устанавливаете параметр Method на Lucas-Kanade.

Number of frames to buffer for temporal smoothing

Используйте этот параметр, чтобы задать временные характеристики фильтра, такие как стандартное отклонение и количество коэффициентов фильтра. Этот параметр становится доступным, если вы устанавливаете параметр Temporal gradient filter на Derivative of Gaussian.

Standard deviation for image smoothing filter

Задайте стандартное отклонение для фильтра сглаживания изображений. Этот параметр становится доступным, если вы устанавливаете параметр Temporal gradient filter на Derivative of Gaussian.

Standard deviation for gradient smoothing filter

Задайте стандартное отклонение для фильтра сглаживания градиента. Этот параметр становится доступным, если вы устанавливаете параметр Temporal gradient filter на Derivative of Gaussian.

Discard normal flow estimates when constraint equation is ill-conditioned

Установите этот флажок, если вы хотите, чтобы блок обнулил вектор движения, когда уравнение ограничений оптического потока плохо обусловлено. Этот параметр становится доступным, если вы устанавливаете параметр Temporal gradient filter на Derivative of Gaussian.

Output image corresponding to motion vectors (accounts for block delay)

Установите этот флажок, если вы хотите, чтобы блок вывел изображение, которое соответствует вектору движения, выводимому блоком. Этот параметр становится доступным, если вы устанавливаете параметр Temporal gradient filter на Derivative of Gaussian.

Threshold for noise reduction

Введите скалярное значение, которое определяет порог движения между каждым фреймом изображения или кадром видео. Чем выше номер, тем менее маленькие перемещения влияют на вычисление оптического потока. Этот параметр становится доступным, если вы устанавливаете параметр Method на Lucas-Kanade.

Rounding mode

Выберите округляющийся режим для операций фиксированной точки.

Overflow mode

Выберите режим переполнения для операций фиксированной точки.

Product output

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

  • Когда вы выбираете Binary point scaling, можно ввести размер слова и дробную длину продукта вывод в битах.

  • Когда вы выбираете Slope and bias scaling, можно ввести размер слова в биты и наклон продукта вывод. Смещение всех сигналов в блоках Computer Vision Toolbox™ 0.

Accumulator

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

  • Когда вы выбираете Same as product output, эти характеристики совпадают с теми из продукта вывод.

  • Когда вы выбираете Binary point scaling, можно ввести размер слова и дробную длину аккумулятора в битах.

  • Когда вы выбираете Slope and bias scaling, можно ввести размер слова в биты и наклон аккумулятора. Смещение всех сигналов в блоках Computer Vision Toolbox 0.

Gradients

Выберите, как задать размер слова и дробную длину типа данных градиентов:

  • Когда вы выбираете Same as accumulator, эти характеристики совпадают с теми из аккумулятора.

  • Когда вы выбираете Same as product output, эти характеристики совпадают с теми из продукта вывод.

  • Когда вы выбираете Binary point scaling, можно ввести размер слова и дробную длину частного в битах.

  • Когда вы выбираете Slope and bias scaling, можно ввести размер слова в биты и наклон частного. Смещение всех сигналов в блоках Computer Vision Toolbox 0.

Threshold

Выберите, как задать размер слова и дробную длину порогового типа данных:

  • Когда вы выбираете Same word length as first input, пороговые соответствия размера слова тот из первого входа.

  • Когда вы выберете Specify word length, введите размер слова порогового типа данных.

  • Когда вы выбираете Binary point scaling, можно ввести размер слова и дробную длину порога в битах.

  • Когда вы выбираете Slope and bias scaling, можно ввести размер слова в биты и наклон порога. Смещение всех сигналов в блоках Computer Vision Toolbox 0.

Output

Выберите, как задать размер слова и дробную длину типа выходных данных:

  • Когда вы выбираете Binary point scaling, можно ввести размер слова и дробная продолжительность вывода в битах.

  • Когда вы выбираете Slope and bias scaling, можно ввести размер слова в биты и наклон вывода. Смещение всех сигналов в блоках Computer Vision Toolbox 0.

Lock data type settings against change by the fixed-point tools

Выберите этот параметр, чтобы препятствовать тому, чтобы Fixed-Point Tool заменили типы данных, которые вы задаете на маске блока. Для получения дополнительной информации смотрите fxptdlg, страницу с описанием на Fixed-Point Tool в документации Simulink®.

Ссылки

[1] Баррон, J.L., Д.Дж. Флит, судно Беокемин и Т.А. Беркитт. Производительность методов оптического потока. CVPR, 1992.

Смотрите также

Блокируйте соответствие

Программное обеспечение Computer Vision Toolbox

Гауссова пирамида

Программное обеспечение Computer Vision Toolbox

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

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

Представлено до R2006a