visionhdl.HVCounter

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

Описание

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

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

Считать активные линии на систему координат и активные пиксели на строку пиксельного потока:

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Описание

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

пример

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

Свойства

развернуть все

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

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

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

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

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

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

Описание

пример

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

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

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

развернуть все

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

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

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

развернуть все

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

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

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

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

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

Типы данных: 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);

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

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

Запишите функцию, которая создает и вызывает visionhdl. Система HVCounter 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 accomodate 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