visionhdl.HVCounter

Считает активные размерности пикселей потокового видео

Описание

The visionhdl.HVCounter Системная object™ анализирует видеопоток и возвращает текущее количество линий на систему координат и пикселей на линию. Объект также задерживает управляющие сигналы потока пикселей, чтобы соответствовать результату подсчета. Используйте этот объект для алгоритмов, которые используют расположение пикселя в систему координат или необходимую область.

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

Для подсчета активных строк в относительных кадрах и активных пикселей в относительных линиях потока пикселей:

  1. Создайте visionhdl.HVCounter Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

HVcnt = visionhdl.HVCounter возвращает Системный объект, который подсчитывает местоположение линии и пикселя в пределах представляющего интерес системы координат или необходимые области. Объект, который использует значения по умолчанию для свойств, может подсчитать системы координат до (511 пикселей) -by- (355 линии).

пример

HVcnt = visionhdl.HVCounter(Name,Value) возвращает Системный объект устанавливает свойства с помощью одних или нескольких пар "имя-значение". Заключайте каждое имя свойства в одинарные кавычки. Для примера, HVcnt = visionhdl.HVCounter('ActivePixelsPerLine',1920,'ActiveVideoLines',1080) создает объект, который может подсчитывать системы координат до (2047 пикселей) -by- (2047 линии).

Свойства

расширить все

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Максимальное количество пикселей на линию, заданное как положительное целое число. Объект реализует счетчик пикселей, который имеет ceil (log2 (ActivePixelsPerLine)) биты. Для примера для системы координат с 320 пикселями на строку счетчик имеет 9 биты. Для системы координат с 1024 пикселями на строку счетчик имеет 11 биты.

Максимальное количество линий на систему координат, заданное в виде положительного целого числа. Объект реализует счетчик линий, который имеет ceil (log2 (ActiveVideoLines)) биты. Для примера для системы координат с 240 пикселями на строку счетчик имеет 8 биты. Для системы координат с 1080 пикселями на строку счетчик имеет 11 биты.

Использование

Описание

пример

[hCount,vCount,ctrlOut] = HVcnt(ctrlIn) обновляет горизонтальные и вертикальные счетчики местоположения hCount и vCount на основе управляющих сигналов в пиксельном потоке, ctrlIn. The ctrlOut Выход является задержанной версией ctrlIn который соответствует времени значений счетчика.

Этот Системный объект использует структуру для сигналов управления системой координат, сопоставленных с каждым пикселем потока пикселей. Этот интерфейс позволяет объекту работать независимо от размера и формата изображения. Все объекты Vision HDL Toolbox™ System используют один и тот же потоковый интерфейс. Объект принимает и возвращает структуру, содержащую пять управляющих сигналов. Сигналы управления указывают валидность каждого пикселя и его местоположение в системе координат. Чтобы преобразовать пиксельную матрицу в поток пикселей и сигналы управления, используйте visionhdl.FrameToPixels Системный объект. Полное описание интерфейса см. в разделе Потоковый пиксельный интерфейс.

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

расширить все

Сигналы управления, сопровождающие входной поток пикселей, заданные как pixelcontrol структура, содержащая пять logical сигналы типа данных. Сигналы описывают валидность пикселя и его местоположение в системе координат. Для получения дополнительной информации смотрите Pixel Control Structure.

Типы данных: struct

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

расширить все

Расположение пикселя в линии, возвращаемое как положительное целое число. Объект очищает счетчик пикселей в начале каждой линии. Если входные пиксели на линию превышают размер счетчика, объект возвращает насыщенное значение до начала следующей линии.

Типы данных: fi(0,ceil(log2(ActiveVideoLines)),0)

Расположение линии в системе координат или необходимой области, возвращаемое как положительное целое число. Объект очищает счетчик линий в начале каждой системы координат. Если входные линии на систему координат превышает размер счетчика, объект возвращает насыщенное значение до начала следующей системы координат.

Типы данных: fi(0,ceil(log2(ActiveVideoLines)),0)

Сигналы управления, сопровождающие вывод потока пикселей, возвращенные как pixelcontrol структура, содержащая пять logical сигналы типа данных. Сигналы описывают валидность пикселя и его местоположение в системе координат. Для получения дополнительной информации смотрите Pixel Control Structure.

Типы данных: struct

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

расширить все

stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Получите текущее положение пикселя в видимую область (ROI).

Загрузите входной кадр.

frmOrig = imread('coins.png');
[frmActiveLines,frmActivePixels] = size(frmOrig);
imshow(frmOrig)
title 'Input Image'

Создайте объект сериализатора и задайте неактивные пиксельные области.

frm2pix = visionhdl.FrameToPixels(...
      'NumComponents',1,...
      'VideoFormat','custom',...
      'ActivePixelsPerLine',frmActivePixels,...
      'ActiveVideoLines',frmActiveLines,...
      'TotalPixelsPerLine',frmActivePixels+20,...
      'TotalVideoLines',frmActiveLines+20,...
      'StartingActiveLine',3,...
      'FrontPorch',10);

Создайте объект, чтобы выбрать небольшую необходимую область. Задайте прямоугольную область по координатам верхнего левого угла и размерностям.

hPos = 80;
vPos = 60;
hSize = 15;
vSize = 20;
roicoin = visionhdl.ROISelector('Regions',[hPos vPos hSize vSize]);

Сериализуйте тестовое изображение путем вызова объекта сериализатора. pixIn является вектором значений интенсивности. ctrlIn является вектором структур управляющего сигнала.

[pixIn,ctrlIn] = frm2pix(frmOrig);

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

[~,~,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix);
pixROIOut = uint8(zeros(numPixelsPerFrame,1));
ctrlOut = repmat(pixelcontrolstruct,numPixelsPerFrame,1);
ctrlOut2 = repmat(pixelcontrolstruct,numPixelsPerFrame,1);

Написание функции, которая создает и вызывает visionhdl. HVCounter System object™. Этот объект возвращает значения счетчика по горизонтали и по вертикали, которые представляют текущее положение пикселя в необходимую область. Можно сгенерировать HDL-код из этой функции.

function  [hCount,vCount,ctrlOut] = pixelCount(ctrlIn)
%pixelCount 
% Returns the current active pixel count per line, hCount, and the active
% line count, vCount, based on the pixel-stream control signals.
% ctrlIn and ctrlOut are structures that contain control signals associated
% with the pixel.
% The object implements counters that accommodate the next power-of-two above
% each property value. This configuration can count frames up to (512 
% pixels)-by-(256 lines).
% You can generate HDL code from this function.

  persistent hvcount;
  if isempty(hvcount)
    hvcount = visionhdl.HVCounter(...
      'ActivePixelsPerLine',320,...
      'ActiveVideoLines',240);    
  end
  
 [hCount,vCount,ctrlOut] = hvcount(ctrlIn);
end

Для каждого пикселя в заполненной системе координат примените маску области, а затем вызовите счетчик, чтобы указать местоположение активного пикселя. Если входные сигналы управления указывают неактивный пиксель в этом месте, объект возвращается hCount и vCount установите в нуль.

oldvCount = 0;
for p = 1:numPixelsPerFrame
    [pixROIOut(p),ctrlOut(p)] = roicoin(pixIn(p),ctrlIn(p));
    [hCount,vCount,ctrlOut2(p)] = pixelCount(ctrlOut(p));
    if (vCount ~=0 && vCount ~= oldvCount)
        fprintf('\n Valid pixels in line #%d : ',vCount);
        oldvCount = vCount;
    end
    if hCount ~= 0
        fprintf('#%d ',hCount);
    end
end
 Valid pixels in line #1 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #2 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #3 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #4 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #5 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #6 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #7 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #8 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #9 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #10 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #11 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #12 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #13 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #14 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #15 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #16 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #17 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #18 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #19 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 
 Valid pixels in line #20 : #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 

См. также

Блоки

Введенный в R2019a