Среднее значение, отклонение и стандартное отклонение
visionhdlstatistics
Блок Image Statistics вычисляет среднее значение, отклонение и стандартное отклонение данных о потоковом видео. Каждое вычисление выполняется по всем пикселям во входной видимой области (ROI). Блок реализует вычисления с помощью эффективных оборудованием алгоритмов.
Этот блок использует пиксельный интерфейс потоковой передачи с шиной для сигналов управления кадром. Этот интерфейс позволяет блоку действовать независимо от размера изображения и формата. Все блоки Vision HDL Toolbox™ используют тот же интерфейс потоковой передачи. Блок принимает и скалярное пиксельное значение и шину, содержащую пять управляющих сигналов. Управляющие сигналы указывают на валидность каждого пикселя и его местоположения в кадре. Чтобы преобразовать кадр (пиксельная матрица) в пиксельный поток и управляющие сигналы, используйте блок Frame To Pixels. Для полного описания интерфейса смотрите Пиксельный Интерфейс Потоковой передачи.
Чтобы изменить размер и размерности ROI, можно управлять входными управляющими сигналами видеопотока. Смотрите видимые области.
Количество допустимых пикселей во входном изображении влияет на точность среднего приближения. Чтобы избежать ошибки приближения, используйте изображение, которое содержит меньше чем 64 пикселя, кратное 64 пикселей до 642 пикселей, кратное 642 пикселей до 643 пикселей или кратное 643 пикселей до 644 пикселей. Для получения дополнительной информации среднего приближения, см. Алгоритм.
Блок вычисляет статистику по кадрам до 644 (16,777,216) пиксели в размере. Этот размер поддерживает кадры HD.
Порт | Направление | Описание | Тип данных |
---|---|---|---|
pixel | Входной параметр | Один пиксель изображения, заданный как скалярное значение. |
|
ctrl | Входной параметр | Управляющие сигналы, сопровождающие пиксельный поток, заданный как шина | pixelcontrol |
mean | Вывод | Среднее значение нового входного кадра завершается. | То же самое как pixel |
var | Вывод | Отклонение нового входного кадра завершается. | То же самое как pixel |
stdDev | Вывод | Стандартное отклонение нового входного кадра завершается. | То же самое как pixel |
validOut | Вывод | Вычисления завершаются. Блок устанавливает этот вывод на true , когда статистические выходные параметры для кадра готовы. | boolean |
Блок использует арифметику полной точности для внутреннего вычисления. При выводе промежуточные данные брошены к входному типу с помощью следующих настроек фиксированной точки: RoundingMethod
= Nearest
и OverflowAction
= Saturate
. Таблица показывает выходной размер слова для каждого вычисления относительно входного размера слова (IWL).
Среднее значение | Дисперсия | Отклонение станд. |
---|---|---|
IWL | 2×IWL | 2×IWL |
Установите этот флажок, чтобы вычислить среднее значение каждого входного кадра. Если вы снимаете этот флажок, mean
, вывод не показывает на блоке.
Установите этот флажок, чтобы вычислить отклонение каждого входного кадра. Если вы снимаете этот флажок, var
, вывод не показывает на блоке.
Установите этот флажок, чтобы вычислить стандартное отклонение каждого входного кадра. Если вы снимаете этот флажок, stdDev
, вывод не показывает на блоке.
Вычисления среднего значения, отклонения и стандартного отклонения создают друг от друга. Для аппаратной эффективности логика вычисления совместно используется как показано.
Уравнение, чтобы вычислить точное среднее пиксельное значение требует больших внутренних размеров слова и дорогой логики деления.
Вместо того, чтобы использовать это уравнение, блок вычисляет среднее значение серией четырех аккумуляторов, которые вычисляют среднее значение сегмента пикселей. Во-первых, найдите сумму окна 64 пикселей и нормируйте.
Затем накопите 64 из предыдущих окон и нормируйте.
Третий аккумулятор суммирует 64 из 64×64 окна и нормирует тот же путь.
Четвертый аккумулятор суммирует 64 из 64×64×64 окна и нормирует.
Каждый допустимый пиксель накапливается, когда он прибывает. Его местоположение в строке или кадре не влияет на логику накопления.
Когда vEnd
получен, блок продвигает любые остающиеся данные на четырех уровнях среднего вычисления, чтобы вычислить окончательный результат. Если счетчик аккумулятора не в 64, когда vEnd
прибывает, тот уровень нормирует фактическим значением счетчика. Константы для этого умножения находятся в интерполяционной таблице (LUT). Эти четыре аккумулятора совместно используют один LUT и множитель.
Этот метод среднего вычисления точен, когда количество пикселей в кадре выравнивает vEnd
с итоговой трансформацией аккумулятора. Это выравнивание происходит на уровне два, когда кадр содержит кратное 64 пикселей и меньше чем 642 (4096) пиксели. Происходит на уровне три, когда кадр содержит кратное 4 096 пикселей. Происходит на уровне четыре, когда кадр содержит кратное 643 пикселей. Этот метод также точен, когда кадр имеет меньше чем 64 пикселя, потому что только первый аккумулятор необходим.
Однако, когда количество пикселей в кадре не соответствует этим условиям, блок должен нормировать итоговое накопление, прежде чем счетчик достигнет 64. Это вводит ошибку в вычислении нормализации на последующих уровнях. Данные показывают ошибку нормализации, введенную в среднем вычислении размерами изображения менее чем 4 096 пикселей. Скачки происходят, где размер изображения только по кратному 64 пикселей.
Для изображений, больше, чем 4 096 пикселей, тот же эффект происходит во множителях 4 096 пикселей, и во множителях 643 пикселей.
Блок вычисляет отклонение входных пикселей с помощью следующего уравнения.
Среднее значение и среднее значение входа в квадрате вычисляются параллельно. Блок вычисляет, среднее значение квадратов с помощью того же метода приближения раньше вычисляло среднее значение, как описано в предыдущем разделе.
Блок вычисляет квадратный корень из отклонения с помощью конвейерного битного набора и алгоритма проверки. Этот алгоритм вычисляет квадратный корень с помощью сложения и сдвигов, а не множителей. Для N битный вход результат имеет биты N точности.
Этот метод является оборудованием, эффективным для общих входных параметров. Если ваши данные знали характеристики, которые допускают более эффективную реализацию квадратного корня, можно отключить вычисление в этом блоке и создать собственную логику из поддержанных HDL блоков.
Статистические данные часто вычисляются на маленькие видимые области (ROI), а не целый кадр видео. Этот блок выполняет вычисления на всех допустимых пикселях между vStart
и сигналами vEnd
в шине ctrl
, и не отслеживает пиксельное местоположение в кадре. Можно управлять управляющими сигналами потоковой передачи уменьшать размер кадра и формировать рисунок контуров видимой области прежде, чем передать видеопоток этому блоку. Для примера, который выбирает несколько маленьких КОРОЛЕЙ из увеличенного изображения, смотрите Мультизональное Измерение.
Блок Image Statistics вычисляет статистику по кадрам до 644 (16,777,216) пиксели в размере. Если вы предоставляете изображению больше чем 644 пикселя, блок вычисляет требуемую статистику только по первым 16 777 216 пикселям и затем утверждает validOut
. Блок игнорирует дополнительные пиксели, пока он не получает сигнал vEnd
.
Задержка от vEnd
до validOut
зависит от вычислений, которые вы выбираете.
Когда блок получает сигнал vEnd
, который является true
, он комбинирует остающиеся данные на четырех уровнях среднего вычисления, чтобы вычислить окончательный результат. Этот последний шаг берет 4 цикла на уровень, приводящий максимум к 16 циклов задержки между сигналом входа vEnd
и сигналом validOut
. Если среднее значение доступно, вычисление отклонения берет 4 цикла. Логика квадратного корня требует циклов входного размера слова (IWL) задержки.
Если вычисление не выбрано и не нужно для других выбранных вычислений, та логика исключена из сгенерированного HDL-кода.
Таблица показывает логику вычисления и задержку для различных настроек блока.
Среднее значение | Дисперсия | Отклонение станд. | Логика, исключенная из HDL | Задержка (циклы) |
---|---|---|---|---|
✓ | ✓ | ✓ | [4n] +4+IWL, (где n является количеством уровней аккумулятора, требуемых для входного размера), | |
✓ | отклонение и квадратный корень | [4n] | ||
✓ | квадратный корень | [4n] +4 | ||
✓ | [4n] +4+IWL | |||
✓ | ✓ | квадратный корень | [4n] +4 | |
✓ | ✓ | [4n] +4+IWL | ||
✓ | ✓ | [4n] +4+IWL |
Должно быть по крайней мере 16 циклов между сигналами vEnd
на входе. Это ограничение синхронизации позволяет блоку закончить обрабатывать текущий кадр, прежде чем новый прибудет.
Если вы используете пользовательский формат видео, установите горизонтальный интервал гашения с помощью параметров блока Frame To Pixels. Горизонтальный интервал гашения равен Total pixels per line – Active pixels per line, или, эквивалентно, Front porch + Back porch. Стандартные форматы потокового видео используют горизонтальный интервал гашения приблизительно 25% ширины кадра. Этот интервал намного больше, чем задержка операций статистики.
2D стандартное отклонение | 2D Среднее значение | 2D Отклонение | Структурируйте к пикселям | visionhdl.ImageStatistics